From d3450f13c9676c4857e09722656a29b21d5ee6ed Mon Sep 17 00:00:00 2001 From: zzzckck <152148891+zzzckck@users.noreply.github.com> Date: Tue, 3 Sep 2024 14:27:53 +0800 Subject: [PATCH 01/27] log: add some p2p log (#2677) --- eth/downloader/downloader.go | 4 ++-- eth/downloader/downloader_test.go | 2 +- eth/handler.go | 4 ++-- eth/sync.go | 2 +- 4 files changed, 6 insertions(+), 6 deletions(-) diff --git a/eth/downloader/downloader.go b/eth/downloader/downloader.go index 09925d7d66..8338fd9316 100644 --- a/eth/downloader/downloader.go +++ b/eth/downloader/downloader.go @@ -327,7 +327,7 @@ func (d *Downloader) UnregisterPeer(id string) error { // LegacySync tries to sync up our local blockchain with a remote peer, both // adding various sanity checks and wrapping it with various log entries. -func (d *Downloader) LegacySync(id string, head common.Hash, td *big.Int, ttd *big.Int, mode SyncMode) error { +func (d *Downloader) LegacySync(id string, head common.Hash, name string, td *big.Int, ttd *big.Int, mode SyncMode) error { err := d.synchronise(id, head, td, ttd, mode, false, nil) switch err { @@ -337,7 +337,7 @@ func (d *Downloader) LegacySync(id string, head common.Hash, td *big.Int, ttd *b if errors.Is(err, errInvalidChain) || errors.Is(err, errBadPeer) || errors.Is(err, errTimeout) || errors.Is(err, errStallingPeer) || errors.Is(err, errUnsyncedPeer) || errors.Is(err, errEmptyHeaderSet) || errors.Is(err, errPeersUnavailable) || errors.Is(err, errTooOld) || errors.Is(err, errInvalidAncestor) { - log.Warn("Synchronisation failed, dropping peer", "peer", id, "err", err) + log.Warn("Synchronisation failed, dropping peer", "peer", id, "name", name, "td", td, "err", err) if d.dropPeer == nil { // The dropPeer method is nil when `--copydb` is used for a local copy. // Timeouts can occur if e.g. compaction hits at the wrong time, and can be ignored diff --git a/eth/downloader/downloader_test.go b/eth/downloader/downloader_test.go index 3c113b9134..0a007644d2 100644 --- a/eth/downloader/downloader_test.go +++ b/eth/downloader/downloader_test.go @@ -902,7 +902,7 @@ func testBlockHeaderAttackerDropping(t *testing.T, protocol uint) { // Simulate a synchronisation and check the required result tester.downloader.synchroniseMock = func(string, common.Hash) error { return tt.result } - tester.downloader.LegacySync(id, tester.chain.Genesis().Hash(), big.NewInt(1000), nil, FullSync) + tester.downloader.LegacySync(id, tester.chain.Genesis().Hash(), "", big.NewInt(1000), nil, FullSync) if _, ok := tester.peers[id]; !ok != tt.drop { t.Errorf("test %d: peer drop mismatch for %v: have %v, want %v", i, tt.result, !ok, tt.drop) } diff --git a/eth/handler.go b/eth/handler.go index 23dba9e14d..cc3bf382b4 100644 --- a/eth/handler.go +++ b/eth/handler.go @@ -483,13 +483,13 @@ func (h *handler) runEthPeer(peer *eth.Peer, handler eth.Handler) error { h.peersPerIP[remoteIP] = h.peersPerIP[remoteIP] + 1 h.peerPerIPLock.Unlock() } - peer.Log().Debug("Ethereum peer connected", "name", peer.Name()) // Register the peer locally if err := h.peers.registerPeer(peer, snap, trust, bsc); err != nil { peer.Log().Error("Ethereum peer registration failed", "err", err) return err } + peer.Log().Debug("Ethereum peer connected", "name", peer.Name(), "peers.len", h.peers.len()) defer h.unregisterPeer(peer.ID()) p := h.peers.peer(peer.ID()) @@ -632,7 +632,7 @@ func (h *handler) runBscExtension(peer *bsc.Peer, handler bsc.Handler) error { bsc.EgressRegistrationErrorMeter.Mark(1) } } - peer.Log().Error("Bsc extension registration failed", "err", err) + peer.Log().Error("Bsc extension registration failed", "err", err, "name", peer.Name()) return err } return handler(peer) diff --git a/eth/sync.go b/eth/sync.go index 3b04d09920..3489b988ee 100644 --- a/eth/sync.go +++ b/eth/sync.go @@ -233,7 +233,7 @@ func (cs *chainSyncer) startSync(op *chainSyncOp) { // doSync synchronizes the local blockchain with a remote peer. func (h *handler) doSync(op *chainSyncOp) error { // Run the sync cycle, and disable snap sync if we're past the pivot block - err := h.downloader.LegacySync(op.peer.ID(), op.head, op.td, h.chain.Config().TerminalTotalDifficulty, op.mode) + err := h.downloader.LegacySync(op.peer.ID(), op.head, op.peer.Name(), op.td, h.chain.Config().TerminalTotalDifficulty, op.mode) if err != nil { return err } From 094519d0582bac363018b1f2a1ba06624a2f95a0 Mon Sep 17 00:00:00 2001 From: "Dike.w" Date: Wed, 4 Sep 2024 09:39:01 +0800 Subject: [PATCH 02/27] beaconserver: simulated beacon api server for op-stack (#2678) only some necessary apis are implemented. --- beacon/fakebeacon/api_func.go | 87 ++++++++++++++++++++++++++++ beacon/fakebeacon/handlers.go | 88 +++++++++++++++++++++++++++++ beacon/fakebeacon/server.go | 97 ++++++++++++++++++++++++++++++++ beacon/fakebeacon/server_test.go | 90 +++++++++++++++++++++++++++++ beacon/fakebeacon/utils.go | 65 +++++++++++++++++++++ cmd/geth/config.go | 20 +++++-- cmd/geth/main.go | 7 +++ cmd/utils/flags.go | 20 +++++++ 8 files changed, 470 insertions(+), 4 deletions(-) create mode 100644 beacon/fakebeacon/api_func.go create mode 100644 beacon/fakebeacon/handlers.go create mode 100644 beacon/fakebeacon/server.go create mode 100644 beacon/fakebeacon/server_test.go create mode 100644 beacon/fakebeacon/utils.go diff --git a/beacon/fakebeacon/api_func.go b/beacon/fakebeacon/api_func.go new file mode 100644 index 0000000000..674bf7fb39 --- /dev/null +++ b/beacon/fakebeacon/api_func.go @@ -0,0 +1,87 @@ +package fakebeacon + +import ( + "context" + "sort" + + "github.com/ethereum/go-ethereum/common" + "github.com/ethereum/go-ethereum/crypto/kzg4844" + "github.com/ethereum/go-ethereum/internal/ethapi" + "github.com/ethereum/go-ethereum/log" + "github.com/ethereum/go-ethereum/rpc" +) + +type BlobSidecar struct { + Blob kzg4844.Blob `json:"blob"` + Index int `json:"index"` + KZGCommitment kzg4844.Commitment `json:"kzg_commitment"` + KZGProof kzg4844.Proof `json:"kzg_proof"` +} + +type APIGetBlobSidecarsResponse struct { + Data []*BlobSidecar `json:"data"` +} + +type ReducedGenesisData struct { + GenesisTime string `json:"genesis_time"` +} + +type APIGenesisResponse struct { + Data ReducedGenesisData `json:"data"` +} + +type ReducedConfigData struct { + SecondsPerSlot string `json:"SECONDS_PER_SLOT"` +} + +type IndexedBlobHash struct { + Index int // absolute index in the block, a.k.a. position in sidecar blobs array + Hash common.Hash // hash of the blob, used for consistency checks +} + +func configSpec() ReducedConfigData { + return ReducedConfigData{SecondsPerSlot: "1"} +} + +func beaconGenesis() APIGenesisResponse { + return APIGenesisResponse{Data: ReducedGenesisData{GenesisTime: "0"}} +} + +func beaconBlobSidecars(ctx context.Context, backend ethapi.Backend, slot uint64, indices []int) (APIGetBlobSidecarsResponse, error) { + var blockNrOrHash rpc.BlockNumberOrHash + header, err := fetchBlockNumberByTime(ctx, int64(slot), backend) + if err != nil { + log.Error("Error fetching block number", "slot", slot, "indices", indices) + return APIGetBlobSidecarsResponse{}, err + } + sideCars, err := backend.GetBlobSidecars(ctx, header.Hash()) + if err != nil { + log.Error("Error fetching Sidecars", "blockNrOrHash", blockNrOrHash, "err", err) + return APIGetBlobSidecarsResponse{}, err + } + sort.Ints(indices) + fullBlob := len(indices) == 0 + res := APIGetBlobSidecarsResponse{} + idx := 0 + curIdx := 0 + for _, sideCar := range sideCars { + for i := 0; i < len(sideCar.Blobs); i++ { + //hash := kZGToVersionedHash(sideCar.Commitments[i]) + if !fullBlob && curIdx >= len(indices) { + break + } + if fullBlob || idx == indices[curIdx] { + res.Data = append(res.Data, &BlobSidecar{ + Index: idx, + Blob: sideCar.Blobs[i], + KZGCommitment: sideCar.Commitments[i], + KZGProof: sideCar.Proofs[i], + }) + curIdx++ + } + idx++ + } + } + + return res, nil +} diff --git a/beacon/fakebeacon/handlers.go b/beacon/fakebeacon/handlers.go new file mode 100644 index 0000000000..3d3768aa42 --- /dev/null +++ b/beacon/fakebeacon/handlers.go @@ -0,0 +1,88 @@ +package fakebeacon + +import ( + "fmt" + "net/http" + "net/url" + "strconv" + "strings" + + "github.com/prysmaticlabs/prysm/v5/api/server/structs" + field_params "github.com/prysmaticlabs/prysm/v5/config/fieldparams" + "github.com/prysmaticlabs/prysm/v5/network/httputil" +) + +var ( + versionMethod = "/eth/v1/node/version" + specMethod = "/eth/v1/config/spec" + genesisMethod = "/eth/v1/beacon/genesis" + sidecarsMethodPrefix = "/eth/v1/beacon/blob_sidecars/{slot}" +) + +func VersionMethod(w http.ResponseWriter, r *http.Request) { + resp := &structs.GetVersionResponse{ + Data: &structs.Version{ + Version: "", + }, + } + httputil.WriteJson(w, resp) +} + +func SpecMethod(w http.ResponseWriter, r *http.Request) { + httputil.WriteJson(w, &structs.GetSpecResponse{Data: configSpec()}) +} + +func GenesisMethod(w http.ResponseWriter, r *http.Request) { + httputil.WriteJson(w, beaconGenesis()) +} + +func (s *Service) SidecarsMethod(w http.ResponseWriter, r *http.Request) { + indices, err := parseIndices(r.URL) + if err != nil { + httputil.HandleError(w, err.Error(), http.StatusBadRequest) + return + } + segments := strings.Split(r.URL.Path, "/") + slot, err := strconv.ParseUint(segments[len(segments)-1], 10, 64) + if err != nil { + httputil.HandleError(w, "not a valid slot(timestamp)", http.StatusBadRequest) + return + } + + resp, err := beaconBlobSidecars(r.Context(), s.backend, slot, indices) + if err != nil { + httputil.HandleError(w, err.Error(), http.StatusBadRequest) + return + } + httputil.WriteJson(w, resp) +} + +// parseIndices filters out invalid and duplicate blob indices +func parseIndices(url *url.URL) ([]int, error) { + rawIndices := url.Query()["indices"] + indices := make([]int, 0, field_params.MaxBlobsPerBlock) + invalidIndices := make([]string, 0) +loop: + for _, raw := range rawIndices { + ix, err := strconv.Atoi(raw) + if err != nil { + invalidIndices = append(invalidIndices, raw) + continue + } + if ix >= field_params.MaxBlobsPerBlock { + invalidIndices = append(invalidIndices, raw) + continue + } + for i := range indices { + if ix == indices[i] { + continue loop + } + } + indices = append(indices, ix) + } + + if len(invalidIndices) > 0 { + return nil, fmt.Errorf("requested blob indices %v are invalid", invalidIndices) + } + return indices, nil +} diff --git a/beacon/fakebeacon/server.go b/beacon/fakebeacon/server.go new file mode 100644 index 0000000000..91f48a2fbd --- /dev/null +++ b/beacon/fakebeacon/server.go @@ -0,0 +1,97 @@ +package fakebeacon + +import ( + "net/http" + "strconv" + + "github.com/ethereum/go-ethereum/internal/ethapi" + "github.com/gorilla/mux" + "github.com/prysmaticlabs/prysm/v5/api/server" +) + +const ( + DefaultAddr = "localhost" + DefaultPort = 8686 +) + +type Config struct { + Enable bool + Addr string + Port int +} + +func defaultConfig() *Config { + return &Config{ + Enable: false, + Addr: DefaultAddr, + Port: DefaultPort, + } +} + +type Service struct { + cfg *Config + router *mux.Router + backend ethapi.Backend +} + +func NewService(cfg *Config, backend ethapi.Backend) *Service { + cfgs := defaultConfig() + if cfg.Addr != "" { + cfgs.Addr = cfg.Addr + } + if cfg.Port > 0 { + cfgs.Port = cfg.Port + } + + s := &Service{ + cfg: cfgs, + backend: backend, + } + router := s.newRouter() + s.router = router + return s +} + +func (s *Service) Run() { + _ = http.ListenAndServe(s.cfg.Addr+":"+strconv.Itoa(s.cfg.Port), s.router) +} + +func (s *Service) newRouter() *mux.Router { + r := mux.NewRouter() + r.Use(server.NormalizeQueryValuesHandler) + for _, e := range s.endpoints() { + r.HandleFunc(e.path, e.handler).Methods(e.methods...) + } + return r +} + +type endpoint struct { + path string + handler http.HandlerFunc + methods []string +} + +func (s *Service) endpoints() []endpoint { + return []endpoint{ + { + path: versionMethod, + handler: VersionMethod, + methods: []string{http.MethodGet}, + }, + { + path: specMethod, + handler: SpecMethod, + methods: []string{http.MethodGet}, + }, + { + path: genesisMethod, + handler: GenesisMethod, + methods: []string{http.MethodGet}, + }, + { + path: sidecarsMethodPrefix, + handler: s.SidecarsMethod, + methods: []string{http.MethodGet}, + }, + } +} diff --git a/beacon/fakebeacon/server_test.go b/beacon/fakebeacon/server_test.go new file mode 100644 index 0000000000..0b74f565ba --- /dev/null +++ b/beacon/fakebeacon/server_test.go @@ -0,0 +1,90 @@ +package fakebeacon + +import ( + "context" + "fmt" + "strconv" + "testing" + + "github.com/stretchr/testify/assert" +) + +// +//func TestFetchBlockNumberByTime(t *testing.T) { +// blockNum, err := fetchBlockNumberByTime(context.Background(), 1724052941, client) +// assert.Nil(t, err) +// assert.Equal(t, uint64(41493946), blockNum) +// +// blockNum, err = fetchBlockNumberByTime(context.Background(), 1734052941, client) +// assert.Equal(t, err, errors.New("time too large")) +// +// blockNum, err = fetchBlockNumberByTime(context.Background(), 1600153618, client) +// assert.Nil(t, err) +// assert.Equal(t, uint64(493946), blockNum) +//} +// +//func TestBeaconBlobSidecars(t *testing.T) { +// indexBlobHash := []IndexedBlobHash{ +// {Hash: common.HexToHash("0x01231952ecbaede62f8d0398b656072c072db36982c9ef106fbbc39ce14f983c"), Index: 0}, +// {Hash: common.HexToHash("0x012c21a8284d2d707bb5318e874d2e1b97a53d028e96abb702b284a2cbb0f79c"), Index: 1}, +// {Hash: common.HexToHash("0x011196c8d02536ede0382aa6e9fdba6c460169c0711b5f97fcd701bd8997aee3"), Index: 2}, +// {Hash: common.HexToHash("0x019c86b46b27401fb978fd175d1eb7dadf4976d6919501b0c5280d13a5bab57b"), Index: 3}, +// {Hash: common.HexToHash("0x01e00db7ee99176b3fd50aab45b4fae953292334bbf013707aac58c455d98596"), Index: 4}, +// {Hash: common.HexToHash("0x0117d23b68123d578a98b3e1aa029661e0abda821a98444c21992eb1e5b7208f"), Index: 5}, +// //{Hash: common.HexToHash("0x01e00db7ee99176b3fd50aab45b4fae953292334bbf013707aac58c455d98596"), Index: 1}, +// } +// +// resp, err := beaconBlobSidecars(context.Background(), 1724055046, []int{0, 1, 2, 3, 4, 5}) // block: 41494647 +// assert.Nil(t, err) +// assert.NotNil(t, resp) +// assert.NotEmpty(t, resp.Data) +// for i, sideCar := range resp.Data { +// assert.Equal(t, indexBlobHash[i].Index, sideCar.Index) +// assert.Equal(t, indexBlobHash[i].Hash, kZGToVersionedHash(sideCar.KZGCommitment)) +// } +// +// apiscs := make([]*BlobSidecar, 0, len(indexBlobHash)) +// // filter and order by hashes +// for _, h := range indexBlobHash { +// for _, apisc := range resp.Data { +// if h.Index == int(apisc.Index) { +// apiscs = append(apiscs, apisc) +// break +// } +// } +// } +// +// assert.Equal(t, len(apiscs), len(resp.Data)) +// assert.Equal(t, len(apiscs), len(indexBlobHash)) +//} + +type TimeToSlotFn func(timestamp uint64) (uint64, error) + +// GetTimeToSlotFn returns a function that converts a timestamp to a slot number. +func GetTimeToSlotFn(ctx context.Context) (TimeToSlotFn, error) { + genesis := beaconGenesis() + config := configSpec() + + genesisTime, _ := strconv.ParseUint(genesis.Data.GenesisTime, 10, 64) + secondsPerSlot, _ := strconv.ParseUint(config.SecondsPerSlot, 10, 64) + if secondsPerSlot == 0 { + return nil, fmt.Errorf("got bad value for seconds per slot: %v", config.SecondsPerSlot) + } + timeToSlotFn := func(timestamp uint64) (uint64, error) { + if timestamp < genesisTime { + return 0, fmt.Errorf("provided timestamp (%v) precedes genesis time (%v)", timestamp, genesisTime) + } + return (timestamp - genesisTime) / secondsPerSlot, nil + } + return timeToSlotFn, nil +} + +func TestAPI(t *testing.T) { + slotFn, err := GetTimeToSlotFn(context.Background()) + assert.Nil(t, err) + + expTx := uint64(123151345) + gotTx, err := slotFn(expTx) + assert.Nil(t, err) + assert.Equal(t, expTx, gotTx) +} diff --git a/beacon/fakebeacon/utils.go b/beacon/fakebeacon/utils.go new file mode 100644 index 0000000000..cc6fe889b9 --- /dev/null +++ b/beacon/fakebeacon/utils.go @@ -0,0 +1,65 @@ +package fakebeacon + +import ( + "context" + "errors" + "fmt" + "math/rand" + "time" + + "github.com/ethereum/go-ethereum/core/types" + "github.com/ethereum/go-ethereum/internal/ethapi" + "github.com/ethereum/go-ethereum/rpc" +) + +func fetchBlockNumberByTime(ctx context.Context, ts int64, backend ethapi.Backend) (*types.Header, error) { + // calc the block number of the ts. + currentHeader := backend.CurrentHeader() + blockTime := int64(currentHeader.Time) + if ts > blockTime { + return nil, errors.New("time too large") + } + blockNum := currentHeader.Number.Uint64() + estimateEndNumber := int64(blockNum) - (blockTime-ts)/3 + // find the end number + for { + header, err := backend.HeaderByNumber(ctx, rpc.BlockNumber(estimateEndNumber)) + if err != nil { + time.Sleep(time.Duration(rand.Int()%180) * time.Millisecond) + continue + } + if header == nil { + estimateEndNumber -= 1 + time.Sleep(time.Duration(rand.Int()%180) * time.Millisecond) + continue + } + headerTime := int64(header.Time) + if headerTime == ts { + return header, nil + } + + // let the estimateEndNumber a little bigger than real value + if headerTime > ts+8 { + estimateEndNumber -= (headerTime - ts) / 3 + } else if headerTime < ts { + estimateEndNumber += (ts-headerTime)/3 + 1 + } else { + // search one by one + for headerTime >= ts { + header, err = backend.HeaderByNumber(ctx, rpc.BlockNumber(estimateEndNumber-1)) + if err != nil { + time.Sleep(time.Duration(rand.Int()%180) * time.Millisecond) + continue + } + headerTime = int64(header.Time) + if headerTime == ts { + return header, nil + } + estimateEndNumber -= 1 + if headerTime < ts { //found the real endNumber + return nil, fmt.Errorf("block not found by time %d", ts) + } + } + } + } +} diff --git a/cmd/geth/config.go b/cmd/geth/config.go index 5c829a2f76..3e0da27edd 100644 --- a/cmd/geth/config.go +++ b/cmd/geth/config.go @@ -33,6 +33,7 @@ import ( "github.com/ethereum/go-ethereum/accounts/keystore" "github.com/ethereum/go-ethereum/accounts/scwallet" "github.com/ethereum/go-ethereum/accounts/usbwallet" + "github.com/ethereum/go-ethereum/beacon/fakebeacon" "github.com/ethereum/go-ethereum/cmd/utils" "github.com/ethereum/go-ethereum/common" "github.com/ethereum/go-ethereum/core/rawdb" @@ -92,10 +93,11 @@ type ethstatsConfig struct { } type gethConfig struct { - Eth ethconfig.Config - Node node.Config - Ethstats ethstatsConfig - Metrics metrics.Config + Eth ethconfig.Config + Node node.Config + Ethstats ethstatsConfig + Metrics metrics.Config + FakeBeacon fakebeacon.Config } func loadConfig(file string, cfg *gethConfig) error { @@ -242,6 +244,16 @@ func makeFullNode(ctx *cli.Context) (*node.Node, ethapi.Backend) { utils.RegisterEthStatsService(stack, backend, cfg.Ethstats.URL) } + if ctx.IsSet(utils.FakeBeaconAddrFlag.Name) { + cfg.FakeBeacon.Addr = ctx.String(utils.FakeBeaconAddrFlag.Name) + } + if ctx.IsSet(utils.FakeBeaconPortFlag.Name) { + cfg.FakeBeacon.Port = ctx.Int(utils.FakeBeaconPortFlag.Name) + } + if cfg.FakeBeacon.Enable || ctx.IsSet(utils.FakeBeaconEnabledFlag.Name) { + go fakebeacon.NewService(&cfg.FakeBeacon, backend).Run() + } + git, _ := version.VCS() utils.SetupMetrics(ctx, utils.EnableBuildInfo(git.Commit, git.Date), diff --git a/cmd/geth/main.go b/cmd/geth/main.go index d4ac750d5b..264f7cb64b 100644 --- a/cmd/geth/main.go +++ b/cmd/geth/main.go @@ -232,6 +232,12 @@ var ( utils.MetricsInfluxDBBucketFlag, utils.MetricsInfluxDBOrganizationFlag, } + + fakeBeaconFlags = []cli.Flag{ + utils.FakeBeaconEnabledFlag, + utils.FakeBeaconAddrFlag, + utils.FakeBeaconPortFlag, + } ) var app = flags.NewApp("the go-ethereum command line interface") @@ -286,6 +292,7 @@ func init() { consoleFlags, debug.Flags, metricsFlags, + fakeBeaconFlags, ) flags.AutoEnvVars(app.Flags, "GETH") diff --git a/cmd/utils/flags.go b/cmd/utils/flags.go index 049908857f..1a0f0a040f 100644 --- a/cmd/utils/flags.go +++ b/cmd/utils/flags.go @@ -37,6 +37,7 @@ import ( "github.com/ethereum/go-ethereum/accounts" "github.com/ethereum/go-ethereum/accounts/keystore" + "github.com/ethereum/go-ethereum/beacon/fakebeacon" "github.com/ethereum/go-ethereum/common" "github.com/ethereum/go-ethereum/common/fdlimit" "github.com/ethereum/go-ethereum/core" @@ -1146,6 +1147,25 @@ Please note that --` + MetricsHTTPFlag.Name + ` must be set to start the server. Value: params.DefaultExtraReserveForBlobRequests, Category: flags.MiscCategory, } + + // Fake beacon + FakeBeaconEnabledFlag = &cli.BoolFlag{ + Name: "fake-beacon", + Usage: "Enable the HTTP-RPC server of fake-beacon", + Category: flags.APICategory, + } + FakeBeaconAddrFlag = &cli.StringFlag{ + Name: "fake-beacon.addr", + Usage: "HTTP-RPC server listening addr of fake-beacon", + Value: fakebeacon.DefaultAddr, + Category: flags.APICategory, + } + FakeBeaconPortFlag = &cli.IntFlag{ + Name: "fake-beacon.port", + Usage: "HTTP-RPC server listening port of fake-beacon", + Value: fakebeacon.DefaultPort, + Category: flags.APICategory, + } ) var ( From 0dab664d98d4249dcf6cc41168ff291423ac3952 Mon Sep 17 00:00:00 2001 From: zzzckck <152148891+zzzckck@users.noreply.github.com> Date: Wed, 4 Sep 2024 16:02:27 +0800 Subject: [PATCH 03/27] txpool: apply miner's gasceil to txpool (#2680) apply `Eth.Miner.GasCeil` to TxPool even the node did not enable `--mine` option Otherwise, there could be accmulated pending transactions in txpool. Take an example: - Currently, BSC testnet's block gaslimit is 70M, as 20M gas is reserved for SystemTxs, the maximum acceptable GasLimit for transaction is 50M. - TxPool recevied a transaction with GasLimit 60M, it would be accepted in TxPool but it will never be accepted by validators. Such kinds of transactions will be kept in txpool and gradually make the txpool overflowed --- cmd/geth/main.go | 11 ++++++----- eth/api_miner.go | 2 +- 2 files changed, 7 insertions(+), 6 deletions(-) diff --git a/cmd/geth/main.go b/cmd/geth/main.go index 264f7cb64b..e2c277b64f 100644 --- a/cmd/geth/main.go +++ b/cmd/geth/main.go @@ -450,22 +450,23 @@ func startNode(ctx *cli.Context, stack *node.Node, backend ethapi.Backend, isCon } // Start auxiliary services if enabled + ethBackend, ok := backend.(*eth.EthAPIBackend) + gasCeil := ethBackend.Miner().GasCeil() + if gasCeil > params.SystemTxsGas { + ethBackend.TxPool().SetMaxGas(gasCeil - params.SystemTxsGas) + } if ctx.Bool(utils.MiningEnabledFlag.Name) { // Mining only makes sense if a full Ethereum node is running if ctx.String(utils.SyncModeFlag.Name) == "light" { utils.Fatalf("Light clients do not support mining") } - ethBackend, ok := backend.(*eth.EthAPIBackend) + if !ok { utils.Fatalf("Ethereum service not running") } // Set the gas price to the limits from the CLI and start mining gasprice := flags.GlobalBig(ctx, utils.MinerGasPriceFlag.Name) ethBackend.TxPool().SetGasTip(gasprice) - gasCeil := ethBackend.Miner().GasCeil() - if gasCeil > params.SystemTxsGas { - ethBackend.TxPool().SetMaxGas(gasCeil - params.SystemTxsGas) - } if err := ethBackend.StartMining(); err != nil { utils.Fatalf("Failed to start mining: %v", err) } diff --git a/eth/api_miner.go b/eth/api_miner.go index b8d571a475..56db9e94b1 100644 --- a/eth/api_miner.go +++ b/eth/api_miner.go @@ -73,7 +73,7 @@ func (api *MinerAPI) SetGasPrice(gasPrice hexutil.Big) bool { // SetGasLimit sets the gaslimit to target towards during mining. func (api *MinerAPI) SetGasLimit(gasLimit hexutil.Uint64) bool { api.e.Miner().SetGasCeil(uint64(gasLimit)) - if api.e.Miner().Mining() && uint64(gasLimit) > params.SystemTxsGas { + if uint64(gasLimit) > params.SystemTxsGas { api.e.TxPool().SetMaxGas(uint64(gasLimit) - params.SystemTxsGas) } return true From f85d19aa8f7247dc049806df35e67702a5f1b692 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 4 Sep 2024 16:12:07 +0800 Subject: [PATCH 04/27] build(deps): bump actions/download-artifact in /.github/workflows (#2679) Bumps [actions/download-artifact](https://github.com/actions/download-artifact) from 3 to 4.1.7. --- .github/workflows/pre-release.yml | 8 ++++---- .github/workflows/release.yml | 8 ++++---- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/.github/workflows/pre-release.yml b/.github/workflows/pre-release.yml index 60c3951a62..b8658f732b 100644 --- a/.github/workflows/pre-release.yml +++ b/.github/workflows/pre-release.yml @@ -125,25 +125,25 @@ jobs: # ============================== - name: Download Artifacts - uses: actions/download-artifact@v3 + uses: actions/download-artifact@v4.1.7 with: name: linux path: ./linux - name: Download Artifacts - uses: actions/download-artifact@v3 + uses: actions/download-artifact@v4.1.7 with: name: macos path: ./macos - name: Download Artifacts - uses: actions/download-artifact@v3 + uses: actions/download-artifact@v4.1.7 with: name: windows path: ./windows - name: Download Artifacts - uses: actions/download-artifact@v3 + uses: actions/download-artifact@v4.1.7 with: name: arm64 path: ./arm64 diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 304d6f5d0a..b0b57e8d90 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -124,25 +124,25 @@ jobs: # ============================== - name: Download Artifacts - uses: actions/download-artifact@v3 + uses: actions/download-artifact@v4.1.7 with: name: linux path: ./linux - name: Download Artifacts - uses: actions/download-artifact@v3 + uses: actions/download-artifact@v4.1.7 with: name: macos path: ./macos - name: Download Artifacts - uses: actions/download-artifact@v3 + uses: actions/download-artifact@v4.1.7 with: name: windows path: ./windows - name: Download Artifacts - uses: actions/download-artifact@v3 + uses: actions/download-artifact@v4.1.7 with: name: arm64 path: ./arm64 From 5c4096fffad24d6d86d7283fd1a1c71f78591998 Mon Sep 17 00:00:00 2001 From: zzzckck <152148891+zzzckck@users.noreply.github.com> Date: Wed, 4 Sep 2024 16:19:01 +0800 Subject: [PATCH 05/27] faucet: with mainnet balance check, 0.002BNB at least (#2672) --- cmd/faucet/faucet.go | 191 +++++++++++++++++++++++++------------------ 1 file changed, 113 insertions(+), 78 deletions(-) diff --git a/cmd/faucet/faucet.go b/cmd/faucet/faucet.go index 7c8963dc69..e83a32835a 100644 --- a/cmd/faucet/faucet.go +++ b/cmd/faucet/faucet.go @@ -53,9 +53,10 @@ import ( ) var ( - genesisFlag = flag.String("genesis", "", "Genesis json file to seed the chain with") - apiPortFlag = flag.Int("apiport", 8080, "Listener port for the HTTP API connection") - wsEndpoint = flag.String("ws", "http://127.0.0.1:7777/", "Url to ws endpoint") + genesisFlag = flag.String("genesis", "", "Genesis json file to seed the chain with") + apiPortFlag = flag.Int("apiport", 8080, "Listener port for the HTTP API connection") + wsEndpoint = flag.String("ws", "http://127.0.0.1:7777/", "Url to ws endpoint") + wsEndpointMainnet = flag.String("ws.mainnet", "", "Url to ws endpoint of BSC mainnet") netnameFlag = flag.String("faucet.name", "", "Network name to assign to the faucet") payoutFlag = flag.Int("faucet.amount", 1, "Number of Ethers to pay out per user request") @@ -82,6 +83,7 @@ var ( resendBatchSize = 3 resendMaxGasPrice = big.NewInt(50 * params.GWei) wsReadTimeout = 5 * time.Minute + minMainnetBalance = big.NewInt(2 * 1e6 * params.GWei) // 0.002 bnb ) var ( @@ -92,11 +94,17 @@ var ( //go:embed faucet.html var websiteTmpl string +func weiToEtherStringFx(wei *big.Int, prec int) string { + etherValue := new(big.Float).Quo(new(big.Float).SetInt(wei), big.NewFloat(params.Ether)) + // Format the big.Float directly to a string with the specified precision + return etherValue.Text('f', prec) +} + func main() { // Parse the flags and set up the logger to print everything requested flag.Parse() - log.SetDefault(log.NewLogger(log.NewTerminalHandlerWithLevel(os.Stderr, log.FromLegacyLevel(*logFlag), true))) - + log.SetDefault(log.NewLogger(log.NewTerminalHandlerWithLevel(os.Stderr, log.FromLegacyLevel(*logFlag), false))) + log.Info("faucet started") // Construct the payout tiers amounts := make([]string, *tiersFlag) for i := 0; i < *tiersFlag; i++ { @@ -175,7 +183,7 @@ func main() { log.Crit("Failed to unlock faucet signer account", "err", err) } // Assemble and start the faucet light service - faucet, err := newFaucet(genesis, *wsEndpoint, ks, website.Bytes(), bep2eInfos) + faucet, err := newFaucet(genesis, *wsEndpoint, *wsEndpointMainnet, ks, website.Bytes(), bep2eInfos) if err != nil { log.Crit("Failed to start faucet", "err", err) } @@ -202,9 +210,10 @@ type bep2eInfo struct { // faucet represents a crypto faucet backed by an Ethereum light client. type faucet struct { - config *params.ChainConfig // Chain configurations for signing - client *ethclient.Client // Client connection to the Ethereum chain - index []byte // Index page to serve up on the web + config *params.ChainConfig // Chain configurations for signing + client *ethclient.Client // Client connection to the Ethereum chain + clientMainnet *ethclient.Client // Client connection to BSC mainnet for balance check + index []byte // Index page to serve up on the web keystore *keystore.KeyStore // Keystore containing the single signer account accounts.Account // Account funding user faucet requests @@ -233,7 +242,7 @@ type wsConn struct { wlock sync.Mutex } -func newFaucet(genesis *core.Genesis, url string, ks *keystore.KeyStore, index []byte, bep2eInfos map[string]bep2eInfo) (*faucet, error) { +func newFaucet(genesis *core.Genesis, url string, mainnetUrl string, ks *keystore.KeyStore, index []byte, bep2eInfos map[string]bep2eInfo) (*faucet, error) { bep2eAbi, err := abi.JSON(strings.NewReader(bep2eAbiJson)) if err != nil { return nil, err @@ -242,6 +251,11 @@ func newFaucet(genesis *core.Genesis, url string, ks *keystore.KeyStore, index [ if err != nil { return nil, err } + clientMainnet, err := ethclient.Dial(mainnetUrl) + if err != nil { + // skip mainnet balance check if it there is no available mainnet endpoint + log.Warn("dail mainnet endpoint failed", "mainnetUrl", mainnetUrl, "err", err) + } // Allow 1 request per minute with burst of 5, and cache up to 1000 IPs limiter, err := NewIPRateLimiter(rate.Limit(1.0), 5, 1000) @@ -250,16 +264,17 @@ func newFaucet(genesis *core.Genesis, url string, ks *keystore.KeyStore, index [ } return &faucet{ - config: genesis.Config, - client: client, - index: index, - keystore: ks, - account: ks.Accounts()[0], - timeouts: make(map[string]time.Time), - update: make(chan struct{}, 1), - bep2eInfos: bep2eInfos, - bep2eAbi: bep2eAbi, - limiter: limiter, + config: genesis.Config, + client: client, + clientMainnet: clientMainnet, + index: index, + keystore: ks, + account: ks.Accounts()[0], + timeouts: make(map[string]time.Time), + update: make(chan struct{}, 1), + bep2eInfos: bep2eInfos, + bep2eAbi: bep2eAbi, + limiter: limiter, }, nil } @@ -387,7 +402,7 @@ func (f *faucet) apiHandler(w http.ResponseWriter, r *http.Request) { // if user did not give response for too long, then the routine will be stuck. conn.SetReadDeadline(time.Now().Add(wsReadTimeout)) if err = conn.ReadJSON(&msg); err != nil { - log.Info("read json message failed", "err", err, "ip", ip) + log.Debug("read json message failed", "err", err, "ip", ip) return } if !*noauthFlag && !strings.HasPrefix(msg.URL, "https://twitter.com/") && !strings.HasPrefix(msg.URL, "https://www.facebook.com/") { @@ -407,7 +422,7 @@ func (f *faucet) apiHandler(w http.ResponseWriter, r *http.Request) { } log.Info("Faucet funds requested", "url", msg.URL, "tier", msg.Tier, "ip", ip) - // If captcha verifications are enabled, make sure we're not dealing with a robot + // check #1: captcha verifications to exclude robot if *captchaToken != "" { form := url.Values{} form.Add("secret", *captchaSecret) @@ -484,88 +499,108 @@ func (f *faucet) apiHandler(w http.ResponseWriter, r *http.Request) { } continue } - log.Info("Faucet request valid", "url", msg.URL, "tier", msg.Tier, "user", username, "address", address, "ip", ip) - // Ensure the user didn't request funds too recently + // check #2: check IP and ID(address) to ensure the user didn't request funds too recently, f.lock.Lock() - var ( - fund bool - timeout time.Time - ) if ipTimeout := f.timeouts[ips[len(ips)-2]]; time.Now().Before(ipTimeout) { + f.lock.Unlock() if err = sendError(wsconn, fmt.Errorf("%s left until next allowance", common.PrettyDuration(time.Until(ipTimeout)))); err != nil { // nolint: gosimple log.Warn("Failed to send funding error to client", "err", err) + return } + log.Info("too frequent funding(ip)", "TimeLeft", common.PrettyDuration(time.Until(ipTimeout)), "ip", ips[len(ips)-2], "ipsStr", ipsStr) + continue + } + if idTimeout := f.timeouts[id]; time.Now().Before(idTimeout) { f.lock.Unlock() + // Send an error if too frequent funding, otherwise a success + if err = sendError(wsconn, fmt.Errorf("%s left until next allowance", common.PrettyDuration(time.Until(idTimeout)))); err != nil { // nolint: gosimple + log.Warn("Failed to send funding error to client", "err", err) + return + } + log.Info("too frequent funding(id)", "TimeLeft", common.PrettyDuration(time.Until(idTimeout)), "id", id) continue } - - if timeout = f.timeouts[id]; time.Now().After(timeout) { - var tx *types.Transaction - if msg.Symbol == "BNB" { - // User wasn't funded recently, create the funding transaction - amount := new(big.Int).Div(new(big.Int).Mul(big.NewInt(int64(*payoutFlag)), ether), big.NewInt(10)) - amount = new(big.Int).Mul(amount, new(big.Int).Exp(big.NewInt(5), big.NewInt(int64(msg.Tier)), nil)) - amount = new(big.Int).Div(amount, new(big.Int).Exp(big.NewInt(2), big.NewInt(int64(msg.Tier)), nil)) - - tx = types.NewTransaction(f.nonce+uint64(len(f.reqs)), address, amount, 21000, f.price, nil) + // check #3: minimum mainnet balance check, internal error will bypass the check to avoid blocking the faucet service + if f.clientMainnet != nil { + mainnetAddr := address + balanceMainnet, err := f.clientMainnet.BalanceAt(context.Background(), mainnetAddr, nil) + if err != nil { + log.Warn("check balance failed, call BalanceAt", "err", err) + } else if balanceMainnet == nil { + log.Warn("check balance failed, balanceMainnet is nil") } else { - tokenInfo, ok := f.bep2eInfos[msg.Symbol] - if !ok { + if balanceMainnet.Cmp(minMainnetBalance) < 0 { f.lock.Unlock() - log.Warn("Failed to find symbol", "symbol", msg.Symbol) - continue - } - input, err := f.bep2eAbi.Pack("transfer", address, &tokenInfo.Amount) - if err != nil { - f.lock.Unlock() - log.Warn("Failed to pack transfer transaction", "err", err) + log.Warn("insufficient BNB on BSC mainnet", "address", mainnetAddr, + "balanceMainnet", balanceMainnet, "minMainnetBalance", minMainnetBalance) + // Send an error if failed to meet the minimum balance requirement + if err = sendError(wsconn, fmt.Errorf("insufficient BNB on BSC mainnet (require >=%sBNB)", + weiToEtherStringFx(minMainnetBalance, 3))); err != nil { + log.Warn("Failed to send mainnet minimum balance error to client", "err", err) + return + } continue } - tx = types.NewTransaction(f.nonce+uint64(len(f.reqs)), tokenInfo.Contract, nil, 420000, f.price, input) } - signed, err := f.keystore.SignTx(f.account, tx, f.config.ChainID) - if err != nil { + } + log.Info("Faucet request valid", "url", msg.URL, "tier", msg.Tier, "user", username, "address", address, "ip", ip) + + // now, it is ok to send tBNB or other tokens + var tx *types.Transaction + if msg.Symbol == "BNB" { + // User wasn't funded recently, create the funding transaction + amount := new(big.Int).Div(new(big.Int).Mul(big.NewInt(int64(*payoutFlag)), ether), big.NewInt(10)) + amount = new(big.Int).Mul(amount, new(big.Int).Exp(big.NewInt(5), big.NewInt(int64(msg.Tier)), nil)) + amount = new(big.Int).Div(amount, new(big.Int).Exp(big.NewInt(2), big.NewInt(int64(msg.Tier)), nil)) + + tx = types.NewTransaction(f.nonce+uint64(len(f.reqs)), address, amount, 21000, f.price, nil) + } else { + tokenInfo, ok := f.bep2eInfos[msg.Symbol] + if !ok { f.lock.Unlock() - if err = sendError(wsconn, err); err != nil { - log.Warn("Failed to send transaction creation error to client", "err", err) - return - } + log.Warn("Failed to find symbol", "symbol", msg.Symbol) continue } - // Submit the transaction and mark as funded if successful - if err := f.client.SendTransaction(context.Background(), signed); err != nil { + input, err := f.bep2eAbi.Pack("transfer", address, &tokenInfo.Amount) + if err != nil { f.lock.Unlock() - if err = sendError(wsconn, err); err != nil { - log.Warn("Failed to send transaction transmission error to client", "err", err) - return - } + log.Warn("Failed to pack transfer transaction", "err", err) continue } - f.reqs = append(f.reqs, &request{ - Avatar: avatar, - Account: address, - Time: time.Now(), - Tx: signed, - }) - timeout := time.Duration(*minutesFlag*int(math.Pow(3, float64(msg.Tier)))) * time.Minute - grace := timeout / 288 // 24h timeout => 5m grace - - f.timeouts[id] = time.Now().Add(timeout - grace) - f.timeouts[ips[len(ips)-2]] = time.Now().Add(timeout - grace) - fund = true + tx = types.NewTransaction(f.nonce+uint64(len(f.reqs)), tokenInfo.Contract, nil, 420000, f.price, input) } - f.lock.Unlock() - - // Send an error if too frequent funding, otherwise a success - if !fund { - if err = sendError(wsconn, fmt.Errorf("%s left until next allowance", common.PrettyDuration(time.Until(timeout)))); err != nil { // nolint: gosimple - log.Warn("Failed to send funding error to client", "err", err) + signed, err := f.keystore.SignTx(f.account, tx, f.config.ChainID) + if err != nil { + f.lock.Unlock() + if err = sendError(wsconn, err); err != nil { + log.Warn("Failed to send transaction creation error to client", "err", err) return } continue } + // Submit the transaction and mark as funded if successful + if err := f.client.SendTransaction(context.Background(), signed); err != nil { + f.lock.Unlock() + if err = sendError(wsconn, err); err != nil { + log.Warn("Failed to send transaction transmission error to client", "err", err) + return + } + continue + } + f.reqs = append(f.reqs, &request{ + Avatar: avatar, + Account: address, + Time: time.Now(), + Tx: signed, + }) + timeoutInt64 := time.Duration(*minutesFlag*int(math.Pow(3, float64(msg.Tier)))) * time.Minute + grace := timeoutInt64 / 288 // 24h timeout => 5m grace + + f.timeouts[id] = time.Now().Add(timeoutInt64 - grace) + f.timeouts[ips[len(ips)-2]] = time.Now().Add(timeoutInt64 - grace) + f.lock.Unlock() if err = sendSuccess(wsconn, fmt.Sprintf("Funding request accepted for %s into %s", username, address.Hex())); err != nil { log.Warn("Failed to send funding success to client", "err", err) return From 24a46de5b27bea4ff1dbb6580bbe02c122a68c27 Mon Sep 17 00:00:00 2001 From: Nicolas Gotchac Date: Wed, 4 Sep 2024 10:22:07 +0200 Subject: [PATCH 06/27] eth: Add sidecars when available to broadcasted current block (#2675) --- eth/sync.go | 3 +++ 1 file changed, 3 insertions(+) diff --git a/eth/sync.go b/eth/sync.go index 3b04d09920..3768422566 100644 --- a/eth/sync.go +++ b/eth/sync.go @@ -248,6 +248,9 @@ func (h *handler) doSync(op *chainSyncOp) error { // degenerate connectivity, but it should be healthy for the mainnet too to // more reliably update peers or the local TD state. if block := h.chain.GetBlock(head.Hash(), head.Number.Uint64()); block != nil { + if h.chain.Config().IsCancun(block.Number(), block.Time()) { + block = block.WithSidecars(h.chain.GetSidecarsByHash(block.Hash())) + } h.BroadcastBlock(block, false) } } From 1bcdad851f9146756dd9d6d52a635ddf0833f642 Mon Sep 17 00:00:00 2001 From: galaio <12880651+galaio@users.noreply.github.com> Date: Wed, 4 Sep 2024 16:37:43 +0800 Subject: [PATCH 07/27] metrics: add some extra feature flags as node stats; (#2662) --- cmd/geth/config.go | 1 + cmd/utils/flags.go | 63 ++++++++++++++++++++++++++++++++++++++++++++++ core/blockchain.go | 5 ++++ 3 files changed, 69 insertions(+) diff --git a/cmd/geth/config.go b/cmd/geth/config.go index 3e0da27edd..10d2224a14 100644 --- a/cmd/geth/config.go +++ b/cmd/geth/config.go @@ -259,6 +259,7 @@ func makeFullNode(ctx *cli.Context) (*node.Node, ethapi.Backend) { utils.EnableBuildInfo(git.Commit, git.Date), utils.EnableMinerInfo(ctx, &cfg.Eth.Miner), utils.EnableNodeInfo(&cfg.Eth.TxPool, stack.Server().NodeInfo()), + utils.EnableNodeTrack(ctx, &cfg.Eth, stack), ) return stack, backend } diff --git a/cmd/utils/flags.go b/cmd/utils/flags.go index 1a0f0a040f..f26ce3881e 100644 --- a/cmd/utils/flags.go +++ b/cmd/utils/flags.go @@ -35,6 +35,8 @@ import ( "strings" "time" + "github.com/ethereum/go-ethereum/internal/version" + "github.com/ethereum/go-ethereum/accounts" "github.com/ethereum/go-ethereum/accounts/keystore" "github.com/ethereum/go-ethereum/beacon/fakebeacon" @@ -2317,6 +2319,67 @@ func EnableNodeInfo(poolConfig *legacypool.Config, nodeInfo *p2p.NodeInfo) Setup } } +func EnableNodeTrack(ctx *cli.Context, cfg *ethconfig.Config, stack *node.Node) SetupMetricsOption { + nodeInfo := stack.Server().NodeInfo() + return func() { + // register node info into metrics + metrics.NewRegisteredLabel("node-stats", nil).Mark(map[string]interface{}{ + "NodeType": parseNodeType(), + "ENR": nodeInfo.ENR, + "Mining": ctx.Bool(MiningEnabledFlag.Name), + "Etherbase": parseEtherbase(cfg), + "MiningFeatures": parseMiningFeatures(ctx, cfg), + "DBFeatures": parseDBFeatures(cfg, stack), + }) + } +} + +func parseEtherbase(cfg *ethconfig.Config) string { + if cfg.Miner.Etherbase == (common.Address{}) { + return "" + } + return cfg.Miner.Etherbase.String() +} + +func parseNodeType() string { + git, _ := version.VCS() + version := []string{params.VersionWithMeta} + if len(git.Commit) >= 7 { + version = append(version, git.Commit[:7]) + } + if git.Date != "" { + version = append(version, git.Date) + } + arch := []string{runtime.GOOS, runtime.GOARCH} + infos := []string{"BSC", strings.Join(version, "-"), strings.Join(arch, "-"), runtime.Version()} + return strings.Join(infos, "/") +} + +func parseDBFeatures(cfg *ethconfig.Config, stack *node.Node) string { + var features []string + if cfg.StateScheme == rawdb.PathScheme { + features = append(features, "PBSS") + } + if stack.CheckIfMultiDataBase() { + features = append(features, "MultiDB") + } + return strings.Join(features, "|") +} + +func parseMiningFeatures(ctx *cli.Context, cfg *ethconfig.Config) string { + if !ctx.Bool(MiningEnabledFlag.Name) { + return "" + } + var features []string + if cfg.Miner.Mev.Enabled { + features = append(features, "MEV") + } + if cfg.Miner.VoteEnable { + features = append(features, "FFVoting") + } + return strings.Join(features, "|") +} + func SetupMetrics(ctx *cli.Context, options ...SetupMetricsOption) { if metrics.Enabled { log.Info("Enabling metrics collection") diff --git a/core/blockchain.go b/core/blockchain.go index c50520b203..b2a56d74bf 100644 --- a/core/blockchain.go +++ b/core/blockchain.go @@ -100,6 +100,8 @@ var ( blockReorgAddMeter = metrics.NewRegisteredMeter("chain/reorg/add", nil) blockReorgDropMeter = metrics.NewRegisteredMeter("chain/reorg/drop", nil) + blockRecvTimeDiffGauge = metrics.NewRegisteredGauge("chain/block/recvtimediff", nil) + errStateRootVerificationFailed = errors.New("state root verification failed") errInsertionInterrupted = errors.New("insertion is interrupted") errChainStopped = errors.New("blockchain is stopped") @@ -2055,6 +2057,9 @@ func (bc *BlockChain) insertChain(chain types.Blocks, setHead bool) (int, error) return 0, nil } + if len(chain) > 0 { + blockRecvTimeDiffGauge.Update(time.Now().Unix() - int64(chain[0].Time())) + } // Start a parallel signature recovery (signer will fluke on fork transition, minimal perf loss) signer := types.MakeSigner(bc.chainConfig, chain[0].Number(), chain[0].Time()) go SenderCacher.RecoverFromBlocks(signer, chain) From 03069a7703c6a7330647cab31802ac576fce24fa Mon Sep 17 00:00:00 2001 From: Nicolas Gotchac Date: Wed, 4 Sep 2024 11:29:17 +0200 Subject: [PATCH 08/27] fetcher: Sleep after marking block as done when requeuing Otherwise the node will be waiting for 500ms before the block fetcher keeps processing. --- eth/fetcher/block_fetcher.go | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/eth/fetcher/block_fetcher.go b/eth/fetcher/block_fetcher.go index fa5a324984..19f8c1ffb8 100644 --- a/eth/fetcher/block_fetcher.go +++ b/eth/fetcher/block_fetcher.go @@ -868,9 +868,9 @@ func (f *BlockFetcher) importHeaders(op *blockOrHeaderInject) { parent := f.getHeader(header.ParentHash) if parent == nil { log.Debug("Unknown parent of propagated header", "peer", peer, "number", header.Number, "hash", hash, "parent", header.ParentHash) - time.Sleep(reQueueBlockTimeout) // forget block first, then re-queue f.done <- hash + time.Sleep(reQueueBlockTimeout) f.requeue <- op return } @@ -909,9 +909,9 @@ func (f *BlockFetcher) importBlocks(op *blockOrHeaderInject) { parent := f.getBlock(block.ParentHash()) if parent == nil { log.Debug("Unknown parent of propagated block", "peer", peer, "number", block.Number(), "hash", hash, "parent", block.ParentHash()) - time.Sleep(reQueueBlockTimeout) // forget block first, then re-queue f.done <- hash + time.Sleep(reQueueBlockTimeout) f.requeue <- op return } From e7e5d508b5c8934f527869c06d1b9149bec02cf4 Mon Sep 17 00:00:00 2001 From: zzzckck <152148891+zzzckck@users.noreply.github.com> Date: Thu, 5 Sep 2024 22:01:24 +0800 Subject: [PATCH 09/27] txpool: set default GasCeil from 30M to 0 (#2688) This PR tries to improve https://github.com/bnb-chain/bsc/pull/2680 If the node did not set `Eth.Miner` in config.toml, the default GasCeil will be 30000000, it is not an accurate number for both BSC mainnet and testnet. Set it to 0 means disable the transaction GasLimit check, i.e. the TxPool will accept transactions with any GasLimit size. --- miner/miner.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/miner/miner.go b/miner/miner.go index aaef07932d..ebf53199e9 100644 --- a/miner/miner.go +++ b/miner/miner.go @@ -62,7 +62,7 @@ type Config struct { // DefaultConfig contains default settings for miner. var DefaultConfig = Config{ - GasCeil: 30000000, + GasCeil: 0, GasPrice: big.NewInt(params.GWei), // The default recommit time is chosen as two seconds since From 7de27ca9e94e08af4a0b8aa35fa94e29c12607d0 Mon Sep 17 00:00:00 2001 From: buddho Date: Tue, 10 Sep 2024 11:27:04 +0800 Subject: [PATCH 10/27] CI: nancy ignore CVE-2024-8421 (#2695) --- .nancy-ignore | 1 + 1 file changed, 1 insertion(+) diff --git a/.nancy-ignore b/.nancy-ignore index 0b64e763db..6d058384b6 100644 --- a/.nancy-ignore +++ b/.nancy-ignore @@ -1,2 +1,3 @@ CVE-2024-34478 # "CWE-754: Improper Check for Unusual or Exceptional Conditions." This vulnerability is BTC only, BSC does not have the issue. CVE-2024-6104 # "CWE-532: Information Exposure Through Log Files" This is caused by the vulnerabilities go-retryablehttp@v0.7.4, it is only used in cmd devp2p, impact is limited. will upgrade to v0.7.7 later +CVE-2024-8421 # "CWE-400: Uncontrolled Resource Consumption (Resource Exhaustion)" This vulnerability is caused by issues in the golang.org/x/net package. Even the latest version(v0.29.0) has not yet addressed it, but we will continue to monitor updates closely. \ No newline at end of file From a28262b3ecefd12909538795cf8f5b0a5dd476a2 Mon Sep 17 00:00:00 2001 From: buddho Date: Tue, 10 Sep 2024 16:24:29 +0800 Subject: [PATCH 11/27] miner: limit block size to eth protocol msg size (#2696) --- eth/protocols/eth/protocol.go | 3 ++- miner/bid_simulator.go | 9 +++++++++ miner/worker.go | 19 +++++++++++++++++++ params/protocol_params.go | 2 ++ 4 files changed, 32 insertions(+), 1 deletion(-) diff --git a/eth/protocols/eth/protocol.go b/eth/protocols/eth/protocol.go index d1e07df25c..46bc97fbb8 100644 --- a/eth/protocols/eth/protocol.go +++ b/eth/protocols/eth/protocol.go @@ -25,6 +25,7 @@ import ( "github.com/ethereum/go-ethereum/common" "github.com/ethereum/go-ethereum/core/forkid" "github.com/ethereum/go-ethereum/core/types" + "github.com/ethereum/go-ethereum/params" "github.com/ethereum/go-ethereum/rlp" ) @@ -46,7 +47,7 @@ var ProtocolVersions = []uint{ETH68} var protocolLengths = map[uint]uint64{ETH68: 17} // maxMessageSize is the maximum cap on the size of a protocol message. -const maxMessageSize = 10 * 1024 * 1024 +var maxMessageSize = params.MaxMessageSize const ( StatusMsg = 0x00 diff --git a/miner/bid_simulator.go b/miner/bid_simulator.go index f96d3c1a8a..498f1ec2b2 100644 --- a/miner/bid_simulator.go +++ b/miner/bid_simulator.go @@ -692,6 +692,14 @@ func (b *bidSimulator) simBid(interruptCh chan int32, bidRuntime *BidRuntime) { return } + // check bid size + if bidRuntime.env.size+blockReserveSize > params.MaxMessageSize { + log.Error("BidSimulator: failed to check bid size", "builder", bidRuntime.bid.Builder, + "bidHash", bidRuntime.bid.Hash(), "env.size", bidRuntime.env.size) + err = errors.New("invalid bid size") + return + } + bestBid := b.GetBestBid(parentHash) if bestBid == nil { log.Info("[BID RESULT]", "win", "true[first]", "builder", bidRuntime.bid.Builder, "hash", bidRuntime.bid.Hash().TerminalString()) @@ -858,6 +866,7 @@ func (r *BidRuntime) commitTransaction(chain *core.BlockChain, chainConfig *para } r.env.tcount++ + r.env.size += uint32(tx.Size()) return nil } diff --git a/miner/worker.go b/miner/worker.go index 8f09819d7d..8513b6a9b6 100644 --- a/miner/worker.go +++ b/miner/worker.go @@ -70,6 +70,12 @@ const ( // the default to wait for the mev miner to finish waitMEVMinerEndTimeLimit = 50 * time.Millisecond + + // Reserve block size for the following 3 components: + // a. System transactions at the end of the block + // b. Seal in the block header + // c. Overhead from RLP encoding + blockReserveSize = 100 * 1024 ) var ( @@ -89,6 +95,7 @@ type environment struct { signer types.Signer state *state.StateDB // apply state changes here tcount int // tx count in cycle + size uint32 // almost accurate block size, gasPool *core.GasPool // available gas used to pack transactions coinbase common.Address @@ -105,6 +112,7 @@ func (env *environment) copy() *environment { signer: env.signer, state: env.state.Copy(), tcount: env.tcount, + size: env.size, coinbase: env.coinbase, header: types.CopyHeader(env.header), receipts: copyReceipts(env.receipts), @@ -895,6 +903,13 @@ LOOP: txs.Pop() continue } + // If we don't have enough size left for the next transaction, skip it. + if env.size+uint32(tx.Size())+blockReserveSize > params.MaxMessageSize { + log.Trace("Not enough size left for transaction", "hash", ltx.Hash, + "env.size", env.size, "needed", uint32(tx.Size())) + txs.Pop() + continue + } // Error may be ignored here. The error has already been checked // during transaction acceptance is the transaction pool. from, _ := types.Sender(env.signer, tx) @@ -920,6 +935,7 @@ LOOP: // Everything ok, collect the logs and shift in the next transaction from the same account coalescedLogs = append(coalescedLogs, logs...) env.tcount++ + env.size += uint32(tx.Size()) // size of BlobTxSidecar included txs.Shift() default: @@ -1055,6 +1071,9 @@ func (w *worker) prepareWork(genParams *generateParams) (*environment, error) { vmenv := vm.NewEVM(context, vm.TxContext{}, env.state, w.chainConfig, vm.Config{}) core.ProcessBeaconBlockRoot(*header.ParentBeaconRoot, vmenv, env.state) } + + env.size = uint32(env.header.Size()) + return env, nil } diff --git a/params/protocol_params.go b/params/protocol_params.go index 65b2d942c1..a032f2759e 100644 --- a/params/protocol_params.go +++ b/params/protocol_params.go @@ -29,6 +29,8 @@ const ( GenesisGasLimit uint64 = 4712388 // Gas limit of the Genesis block. PayBidTxGasLimit uint64 = 25000 // Gas limit of the PayBidTx in the types.BidArgs. + MaxMessageSize uint32 = 10 * 1024 * 1024 // MaxMessageSize is the maximum cap on the size of a eth protocol message. + MaximumExtraDataSize uint64 = 32 // Maximum size extra data may be after Genesis. ForkIDSize uint64 = 4 // The length of fork id ExpByteGas uint64 = 10 // Times ceil(log256(exponent)) for the EXP instruction. From 8bbd8fbf484ef03606cb749ca0184609a8580b66 Mon Sep 17 00:00:00 2001 From: buddho Date: Wed, 11 Sep 2024 10:14:11 +0800 Subject: [PATCH 12/27] consensus/parlia: wait more time when processing huge blocks (#2689) --- consensus/parlia/parlia.go | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/consensus/parlia/parlia.go b/consensus/parlia/parlia.go index 4a79ec344b..79ff3f93af 100644 --- a/consensus/parlia/parlia.go +++ b/consensus/parlia/parlia.go @@ -68,7 +68,6 @@ const ( wiggleTime = uint64(1) // second, Random delay (per signer) to allow concurrent signers initialBackOffTime = uint64(1) // second - processBackOffTime = uint64(1) // second systemRewardPercent = 4 // it means 1/2^4 = 1/16 percentage of gas fee incoming will be distributed to system @@ -1616,12 +1615,15 @@ func (p *Parlia) Seal(chain consensus.ChainHeaderReader, block *types.Block, res copy(header.Extra[len(header.Extra)-extraSeal:], sig) if p.shouldWaitForCurrentBlockProcess(chain, header, snap) { - log.Info("Waiting for received in turn block to process") + highestVerifiedHeader := chain.GetHighestVerifiedHeader() + // including time for writing and committing blocks + waitProcessEstimate := math.Ceil(float64(highestVerifiedHeader.GasUsed) / float64(100_000_000)) + log.Info("Waiting for received in turn block to process", "waitProcessEstimate(Seconds)", waitProcessEstimate) select { case <-stop: log.Info("Received block process finished, abort block seal") return - case <-time.After(time.Duration(processBackOffTime) * time.Second): + case <-time.After(time.Duration(waitProcessEstimate) * time.Second): if chain.CurrentHeader().Number.Uint64() >= header.Number.Uint64() { log.Info("Process backoff time exhausted, and current header has updated to abort this seal") return From 44e91bba238b2841723cb703edddfe12225174ed Mon Sep 17 00:00:00 2001 From: zzzckck <152148891+zzzckck@users.noreply.github.com> Date: Thu, 12 Sep 2024 15:10:37 +0800 Subject: [PATCH 13/27] faucet: support customized token (#2687) --- cmd/faucet/customized/README.md | 10 ++++++++++ cmd/faucet/faucet.go | 2 +- 2 files changed, 11 insertions(+), 1 deletion(-) create mode 100644 cmd/faucet/customized/README.md diff --git a/cmd/faucet/customized/README.md b/cmd/faucet/customized/README.md new file mode 100644 index 0000000000..e6f167c9b8 --- /dev/null +++ b/cmd/faucet/customized/README.md @@ -0,0 +1,10 @@ +# 1.Background +This is to support some projects with customized tokens that they want to integrate into the BSC faucet tool. + +## 1.1. How to Integrate Your Token +- Step 1: Fund the faucet address by sending a specific amount of your BEP-20 token to the faucet address (0xaa25aa7a19f9c426e07dee59b12f944f4d9f1dd3) on the BSC testnet. +- Step 2: Update this README.md file and create a Pull Request on [bsc github](https://github.com/bnb-chain/bsc) with relevant information. + +We will review the request, and once it is approved, the faucet tool will start to support the customized token and list it on https://www.bnbchain.org/en/testnet-faucet. + +# 2.Token List \ No newline at end of file diff --git a/cmd/faucet/faucet.go b/cmd/faucet/faucet.go index e83a32835a..918b60a586 100644 --- a/cmd/faucet/faucet.go +++ b/cmd/faucet/faucet.go @@ -500,7 +500,7 @@ func (f *faucet) apiHandler(w http.ResponseWriter, r *http.Request) { continue } - // check #2: check IP and ID(address) to ensure the user didn't request funds too recently, + // check #2: check IP and ID(address) to ensure the user didn't request funds too frequently f.lock.Lock() if ipTimeout := f.timeouts[ips[len(ips)-2]]; time.Now().Before(ipTimeout) { From 282aee5856a1ecc31b90d8978c3d585cd5d95766 Mon Sep 17 00:00:00 2001 From: zzzckck <152148891+zzzckck@users.noreply.github.com> Date: Thu, 12 Sep 2024 15:48:11 +0800 Subject: [PATCH 14/27] faucet: add example for custimized token (#2698) --- cmd/faucet/customized/README.md | 8 +++++++- cmd/faucet/customized/demotoken.png | Bin 0 -> 29228 bytes 2 files changed, 7 insertions(+), 1 deletion(-) create mode 100644 cmd/faucet/customized/demotoken.png diff --git a/cmd/faucet/customized/README.md b/cmd/faucet/customized/README.md index e6f167c9b8..c53fa3b33c 100644 --- a/cmd/faucet/customized/README.md +++ b/cmd/faucet/customized/README.md @@ -7,4 +7,10 @@ This is to support some projects with customized tokens that they want to integr We will review the request, and once it is approved, the faucet tool will start to support the customized token and list it on https://www.bnbchain.org/en/testnet-faucet. -# 2.Token List \ No newline at end of file +# 2.Token List +## 2.1.DemoToken +- symbol: DEMO +- amount: 10000000000000000000 +- icon: ./demotoken.png +- addr: https://testnet.bscscan.com/address/0xe15c158d768c306dae87b96430a94f884333e55d +- fundTx: [0xa499dc9aaf918aff0507538a8aa80a88d0af6ca15054e6acc57b69c651945280](https://testnet.bscscan.com/tx/0x2a3f334b6ca756b64331bdec9e6cf3207ac50a4839fda6379e909de4d9a194ca) diff --git a/cmd/faucet/customized/demotoken.png b/cmd/faucet/customized/demotoken.png new file mode 100644 index 0000000000000000000000000000000000000000..1eff3f32d8a8bf567bb94d8611d0c78ff177b504 GIT binary patch literal 29228 zcmZ^~1C%Je(l$D?$F{l0wr$(CZQHhO+r}Q-wr%_F_ndRT|J;9lw|k{iU8yIP>QvTB zCFyWE8BrKWOh^C#02pyGA%(wr$=_52{_F2Ef#44%001<h zfLM64Dwvw$7;27YLL8r2z9d991cAaYF^GJSI2~Yl2ys6-1886rPjw|b>awr^7;O~! zOD3oYGE~%|Z8Rvz@eZ{*N?QfK74IX@2XDud-k+?unRG|f>uw;wb@3Rnq`(TGILb-1 z5#W!75mMp>ac)20Fg^@50Bu-S*}|SSSEQ z5PMA8*i5K9eSlku8nG-m0QvDu*$Fgp`YJw2XrLgsaAea_`(otMu{)o1X)S1|eHDNt zB{pn(P=Jcm-?Fs3CVVhUK4IBGT>kI?%p8L}?d^(g@TCG)K-NO=l1~`syr)K=(u~$> zi34Nk!}sl@5ek0zvPlE!cfKVDzNwqoV{velYRU{lzv<`M2fDV#a}Y^}DBxcp76=G_ zF9*E_`jIwtFy$@z-2;Ct#+2ew*Yti3(p##Tj*$kz z0CEr&Bp?VpO!>FV(W6S{O0?{3|tn%pO$W*U`Hge+L_xh`w%CCM%P! zm1Kz@PJSQQ1LJ|f;ak5(JGT0#9nGq7PaFns(ZCEA9uE^5E-$_uk84#ZZB(rCsTcgw z$H?f&KC-+_(jQ#bgA-s$cg8U7dq@Km!@D4_HvFS^w+=F13K?8dowOl{=!B8LTHrlD zkY4~eVtUd*ihQW>PLE43{haQy@Vfx?qX1sJd3qrtMB^Sox0q0n{kiaW{M)x|zUs7i z$b8=ybdL9q^$o!YLdQT#ab$s>m&%yo_|`b0`fv+X3zRb@K5_ZK8R&1XD>Ov@%gX z<~IGX1mfj{{E4{~5*h0-;%%6kAymFn(hgNFYX7F^y;oZZd6>eyep}DYSu5UdswBf!kw)*sRFbdiIKd!J@+8c)E3+}FuF4m#Ode#gyB{&qa>_>F30bi9y$8`)Rd7_2oC?_^49iUv@$gZ6fDA>DM@>3`bfdxH86 z=;!*dySqDgqh-bj0JgdJZ2LLAMz>okh~eiLtrgzJH@!Cx1=vHpxGS>&Hr$83+V{o= z#JUUe$%hXP5|0l{f|fJq3Co}UWAa}YxxpGOQIF=h~7T#O>Y9~=RK0ZKhA z3BPz0)QD0c8k-L@UUAgD2&p}qOUNUBWt0?IP+5+85xiMIG#@%CJS5-#REP;EI|8*J za`woKT_gCK|6*40RQQo&J-CMtjLwhTkRy%!*pHqL6*ZjL@GK2IGZ4klSPexblDYrH z3+3X^dtEFWLg}8DwxNFE|I#51t$uS~j} zIQ}#dGJ+%o7x)AvnoX*W?KMCY(&A=fsv#4z>2^g-jn=t1wn#6g*T!+n5op?T7^ z#4ho8B3SZVB_R#jbwLXf?cdIcJY?jQ>16DbAmqf95Xq=y$>dim9QjVdXX*2%4IFC; zm*O!*52K8ul%pGC(ub0VHut6xphFq^(&2?h^2dtfw#2n$yM!!P3okY- z8(12fC!1X@ozI@HEHApu$;{@|Xy`TkFQhAS=1|cE5|nHFmH6sb_~Dgz$^`~m{dq7Pcds2 zP!F(dxD;L)b1qIV(Ja*bxlZ7=xG|xv+cDc=PoSGOEV46N8qI{IfRzgU6^a=e8p9E@ z7XyWTfukGKfS$}{u~gO~zmuhv?U2>NxrI~B&f)YJFehE8%elesm`#~g8=W5mfywA9 zHISxC^GxHFDoxX>WnOcjh1S{9=Hu+>iqyH(@zkN&R@$N3v14RLUw}S=e!>Ng`;F_! z9pmox==3o8!gczVni{CuvSL%4Q@?EZX4o3*eQA9>b+>)KbtL#A{hII^XPhy_JMcjJ9BR|Ws(iu_bUJ>0*K=mGtdDLD=-f@1JpQp z1;ja=3rr4%7ef#{B5DK0A<0JAl(A~#hv1f=X=qDGdC*XZHMl3T4H^xsEoNv86i%zh zW;gf*xW14#QJ9fvO-vV_F%C2Hxfv5Z2So?LyZPj4nmWC8ebee#eW&5h(A!9LSSOY( z5^cDxxSXVzc$th_E_$3=#wxSV;_KQ0EeQq@L;_}l_!z_(X95@ru#6gKKIaf~G1<|u z&_(zHX-=*Y9l7cJ-Izrpdm>yhq5_hlYpKtkkV6F8Gp?7mHptsV+jevCOoUxLOe3!wq7V1YIIHC@)9~NFFK4 zG#9guVW+*vXABp{lxa5=bfwn~DK8RNlL@K?^#@b#tf{PSXIKVOYnchHhxW*0ml>#> zR!bgZpXbjVG&X87?OPZ9{XZqbB9X_`9-or8w9LX4!uti8k=>}aIsvo@RA*`&CTH)( zI}z?fXcAcx;}Sho2Q;0x7pJ-tzBpPrJza*u8xhi!;grFYwpI7q&6P@pO?8iV=k}Es z%d;!UweFoR_v;VFG{%`L^2_4O&dH&vtW~XQy$)ZgFzHw|s;{b-l}uGy8gD*?wg<`5 zKA9G*Sk^RapXQNz6V=uInimyS72_=ktteKW9o+h!8@5q96|U%)WNUZMrFNz(HEG(_ zOV>+FoiMJoW&D;z%-x;}&sy79b*=f!`7Rec+1|t-{XS#gCtwP2n{4PVbw}_Aa##8j z1IeOhq7fHy9T?7EPw7wEFyb)T(fQHT(mK+jF&wyC?vsydL-tn(lrnNMR2=lHTB}@k z3Qi3-O2g$N)QOtcIk>*>8kSC$Bk6UFC)1$W+*`v|mOLlk*Q@R`57B7oXy>#Y+EtdW z*1Y$f7dN6Dn;hpf?Yb6im-g-Dj#ek(ls&34+AwV%&zK+ULl+1uoVJ5IZO)8GCM(q2 z)j1pNt-4#}Z4YnPU7kUnLoZ7=soZp4a!;XGcpn{`9WlJnZmZv9&vRQNnr$Z+_1-#7PRbJ)~_qVz}zRfSOH#a`SKFqHk zYgk{boI4#|))--!ZnrcqTPH6=c#pi7@1w7)&*XOtjWY{9aXm@C&0p(})R!CG{hR&# z2%?kmUyyor1!rdfUE2@<%n$&WT)FZjqcgq@0i!cj48Y$=DY*#7Loj|CuRpk3U_UlC zzv_HBxqSG&n~?zu$^Zu40h}h&_BfnW60<3bgTZG2H4A!5j!OJ}6%S3P@%F#lK@^nH zZXG{pvrD{mFUYN%|Hc$<#%kgw($WAFe`#<45I{r#puZI0-x~lB69D92Gys4EAlCoT z3V>w)k@*{wgqi~Y|3^mSZ~o5}_c#4T|0n;I_v?QoO7ejIhc5a@RIYIr;%^3FC#LQQ z0DwyTPXZKIAi4zr_?2U>q~@e1EyZDIYfYnXWNTnd<7RF54+?SQj)9hef%>lmwWGU@lfE0ZjU(Z|EBSxx z5i)i(bTGGbGPkwC|EFGk16yY&ZUTaT6#dWj?{+$woBSV5Hje)>>#u>d|CG?u)6miW zZ!lvw^Zy^%KPCT${mZU@tK<5oG7dEbV@F#n=YN{TL(jy-^)D6wAMXEY;J*>-|109Z zx&Jpp*1_EP???H!j{j)*Z{Ghc|9=!H+n77?F#HGdf3g1y^^biVa^`NvR_a3L*2XrD z|FVYVuQmT`$^VK}`)?%6en|74rk`lO`gTU$hawYMD~Wb;)IC?43;Sb(qe& ztM{~O-AHLx#}W=FXan30=zjK4ww-Y1*}+P$)d2+gB^*XaPDnwiYhpAQjpZ7NB`NZ5 ztnQIpx?6V#LtJx(itKDB>gE0FqUzBjsVu5GqdhD>RMFMp8duUMg-Cv#7^vS!E3VwJ zixuLp8$tuv#xdEJjo(T;UfgM$|1thSxcQpPnxfjpAi&15!*8k!jC>QF;3~Hye7>ec zBkF}_>Q&~ZiPT9U*?vx@y~7BgaYiC6OX?J$2AENV?+)S)S(CBZ{>ai{@qH?>eD%COvWav-_N6$x=x*qyoYO(cq*p~fQZ9j_AV>gZQ&vG# zPMKpstyCQ2x+5atq#wzV&j=>0kr9+PVIx{9ak; zz#mE(a$g&Hu!g@AIOSma5VR~n*dbA1OJ$a-)RSwBT)cryM#5xG3jwK0izhYyqC&g^ zk-H;zCO;+8q(D+S6GD9}*mC45-%K-cntO3gdx;2HKiLhDv%L)WHjS)wyy&om#*L#e z*@8~{y8^|Ieq2}GDgtVhm;Kz~Lg7VEQzaWVEQ9NViiSs5LubiuW|ZPr0(w71Mf!BR z8^SVo!)U?d{rmx!H(T7ijY0xHG(uOzh)aJnU;1~Xsmm$LZNMxXo941P5Wfc?{pt0k zT*dTa9wH)&DEwzPc0_q2C4aKmT(0-4S3Nevp@lV0do-emEFn~UjLbW=WUePJYO+WF zantSmrlf;ymd5~&t)<+v$3S(znQI#K@R?aw%mUXQSwt6E5-s>2y08Pfm;ez<8`cAt zQu+n!85fPlY`c;J=L{Xrdye=O=N4GfV&FxgTY%2(`EcS(9-%(V1&opfObr}$+}2jHY@(KzTWxKh zR#^UymVsz0^pkJ4hmqji=TJ{}TU#Wp$Qt_p$#YQf)*xDNlLg|22NRdcPK@;*oS`n6f# zH7Pd;|E`v(B_D3tgb|qTeqe3;bbfpktFo=T(arqmlHev6lwQ@Pd+eT(%03BENH>98 z?xv>qi3+A4G(?ub`yyAblaj!LZ>PdSR7NHN9nnChfT${>za7@7LU@st<-Wgp-zZD1 zopyIDsQw*N3!7>sG9+YruUrzIK}%l3!{scxOQBk<(jbb&V@nkZeVdx7Asmb!It65F zdU@5;`4#$N)78wZLH-9JLI)YbLyPY)!h($E@;7U=Gpg|KERjSf7BQ_PqgnmtzR9mq+Yt3dDvpUQ#hI+vdBq2`elUEZ+i3R1-H2Of%zG_HWSD} zVaFk(GGVc~MReH#YaZN&g8+2WgvcWapjaGM=R&GmO>zqGln_!G13DZnhqNnJ{#oU? zq3AB0SWO(;>&dy&>1>Z{rw6aoW`bJ(ZO4$i!8$9>BOVybv@A50^;cY9W7D3iua6&j~p3JBnb6J@}9|)nc{SJl6`sX#!hI6Mr zdwxXBz~Q{07&DZ2piQ$kRo~xNm9~#xPfY7LADli}C&m>asM#W(cNM2}AE&Ke)Q!Uy zq0y9WI&47tG)UBj<7@P>ZpfLBbU9{*W$4vL%z@6FPg3ba9$FmX0g?~^rG?9Vid-}u z?bqbxvtO}p+_dE3ITividT0LtyY?yQ+6=eqOt= zY@gpV`3s4Lp&Ici&ZG(@oYRo$h2!4W4qJzc`}ZYHb-m5^uyAba_nP&)j+6)XFVj5;5{S=9+5<>bvNR~L zf2npPOU1*ILS)*xh25U1$&_aVIH{?fEjP}g#FB)1>KvT!*-cQ2fQXA$-DS$GkS)-= z**@&s^1i;Qcv+)A&YFsd+YN|~ImGf!L?kk0*Vqk)^1Ul%doT8Q`YMnycwAD^kxey+8j4yCZ79l{LT2b=HG zX8>a{qcWA_O~Ll~s}ns6Nae_>7P+lb;HgXmqw80wq3PG7UR{&c4;!Zff}l@SB9=O0 zn|tVb+kQP+@_v1d^p0u*^`?^^rO_jN5?mmql5rfv%EENhrF1HgoRCwI*#B+Dxs998 z<${}GmP34y4H2`LX0_Ax+mULI{qe`cwu4*?0q?S-^Sd2|AaHP$#Ek~$n~R5$REn3H zb^gV`^1B^XDc^`>g!0&O1V%hetOQ*p6RhM(Eixd53>U_&Vz{Kp_A_Vq&iDR3?@L6o zNUHrD0!`bS7K1$*E1(ZjS-ZAu(J16+R}LTZ1mjyWW?w8MQ%})&Mh-+IokS+%cf9J% z&+gk=Ey%XkMrOZHd`OU7V_!kx;Iw+cL_q`Du@T?-_brDFJ{nXTpzVWc>dy&ScO>VW1tM$&15}|H#L`=Q+QK6H*YNk;b7TOV z^(=05oE-P}A2lF;^@O2}mhc9qVo$(d!YVCa?RK-=u8+kx*&lmRu0f!2TI?n^ z_!(`q>*Rc(_Bdt0&T3H=9dC<(ZlG8F0AYzKh~B6Y9rQ~qpJ5E-X>AVAi*+Wuff2J{ z6J1+y!@WOm8$XVXZRtaWMPdOaY9hu7#G{;!c=G7Kmrw%Ft}1f1OU%!+cql&~JR30e zD(mMbXXtJM1{p0w)#2jQIUJ>G4j~d58Rao&LKt^Ep21GAbZy-u!#JCa{zkrFPtH~Q){oPzQsmMA;gW5c#I#YHx41H?rYQ8`8+205kM*I2E-&y}%1 z?u(n_1%S&uk63X;Pxo{QJA$3j{C(lwg7DI3*>&FI9y}RV2JK;lp^@u!*iyxZ8GRm? zD2bF(_`nF$9_c34WERmUJ$HkawA8+&&&N!Hg(i6Iv+9>9^L3ki=hJKNq1EGiYBq>q zptma#tjb^@K8*!MzZ)bOg%JUla7;m2Jhp9SI^PZ?e+~k#S{J6x)E>7+(-AQ!(}zX{ zE}H15eHiEYC0?$HC+_{kj_x_BP=Wse^GUoatI}-QfLl~M&`dr$$ ztNy&X`Z{uUa#=j~!W)NLMO!sNLx zD02QroO~M+F3g_ByUTr#to>{Sv0WoEGR$;9vm{^|FcLFl^g|NIOQFaOIHF6GgDF)T z!lwBZEL|c2PCQA3?8ETPV&j(jv)Ag|h-Foz-wUl6GLJbW62eI8j%F?dNEp-5k%jtE zmy8rAia97#QNXWF59xyhZ+UGcmHSTdXH*e_iQ4;e=&p=jlj`Rd>*s|2=4|wWr3MtV)QZ$?_;P}-rwA{IfS!GZ1*b8G z7~ZQg?W?DFAN>O4KzjuXxVC!M+EAuOUFAxib+l5wU4BbZQRyN{A zMcS{4d-RX@cE9v)Z@wP=-46K@@IKC!`${vJf5eo0BA^v(Y+8$O6~X#(dDBh9^D+504l!vS zgq#4E+vFo(EnS%BUiXGf8PEw>lH}D|1yrDde@ef-*1r6@UrGI8w!ZSP7a_)AEY`(k zHXIaSp~{;bzfRXiVKxs&((Y||XQWc8rK79$K zGfjrUtg%hE`hM2=1K*3?Gi%ct;9lKpr9>i>#qlswqC5>&m=!LU`x3Cdl9 zi{loaRsR|kBHmEYzy}cDY=PpF;f8hd==(Ku^R-o0KlPX&)os7PJkwFt(2k9?h+>^m zSQ16hlcq25nt`Oa)E0<9grcui#qQn$2?#Zsuu5eWji%%I_R}`|X)%x)IZkqBg@}ll z9!nW%QGmZJC`*oPx>YVoip1c2sc)}F>A$H#uR@>2G-9iNfL0~eb*=qAw(%3k;%QEI zYn5E5zb{wh;F31@tE>ecg$3UOAo*GDD?m&7)C-`88DtQ%FmFCg)1`2I!&e@-d_@BP zAlB#Q1<&-x9EVl17ZSaEu7*=Ex%Zb^AP0W_gqvFmp}I~H1WlUwz))<+_Wb;Xt^3ON zUi6RY>blJEKwAI3UwZu@(Txld-p&g0E%S2?&{s(IsYw5*_NbauM7-3;+D`0v$ctu#xg(stII7moG8TbgPx7GV@n90K6VlY5Yn5*w zOjvc4k&c5&+1nZGkRv~Z8@_$s`|8H0{iZfx&M3kt4Iu>D&8U2%N?%K-Gt<;>pG)i1 zZ?z@|tB?~<>)-O84ZDbB=lJ73m?@P+RU(J?f8MTkw0>6LT6Qp)F=UOsHUC@)gBMuw zGI+_A#~zfB?Y1e;K~N7D5{^5YH+gVko8C<~U%Be`zAePBP?{f?no+!u3kED3?SnRY z;N@(e+##DNrefO0M`SMH>Wce(Wm^7Fnv!ms$WsP$vP~k^?9TeQ`~gQYCv{P z;z&M?AqCsXfSLP6U9Dl1a(R;aU9VbG+z-x+D1QVKh`-Bi6`r?N22^yZ*Y_iDXbhq3 zN=U^zEMOnM4UdaG5rCdL02w6Ad-_!HD_x(3a z@HQ8b&>rFScDzu9fXB4Fr1+YmRGp9dWmGYJiTM95*v>sX@(U!_Q#5c;4!Cs^n`@BAm z$dDv}61FX@B+=y5w#WX+bYmNm+u3r4{<9|bB+I91PRJj7o^OSDNA-PA?b-_B24;@( z<0+JP`)+xGZSEd51i?uCF{?leB7|b~pW)yqKd#lPAuT*?QI8CFG__WMiErkOPV|I% zCR6`>LCGsJhZM`rKvmiW2*O-a(0kDF8I*zbyeboF*lwSszdY9&$hxiVUKo{zZ8(G( zD3C!pk6tI$hx<69`cmx2(Ijz*X~?{H%IHxm&$4w$ME01}FSRfK9yBDJy0X*7^e$N7 z>W#>7;awWBK$irB5Bik14>#fv1?srh2G`qr|IpRVIXp=R1KG=rP8QF^jx>C~OF?>_ zXMi`t4p|1`WF?{~)h%s4X~EGP!hcLi&Ml$5OAypWHXxYQ%!{7!cg=Dnt@7bY7S|t9m7P|PM z?1W&_aNo(BjM@T8HlCB~+hU=Ix! zVG=_Zng{8qstn5GAyUw-S9R$lSCK%yrL7TFddYdIsDm#ZU%TN(dwi7*U>|qM@&F{t z`3(cfESxEv63Z5{kRts}<`F_5kgSQ6t=rpAERMc;{myKEc*~o~mLIEssi5iimK=Fh z{Hlg2v!lx_=;uYB=~O71=*o^{^=afhm#5(OY)o5hXDxo=_x5_gkoR-dRnsKBjxg;a zV-R!M?t1G$)~46MK6@n%u2ML2<&c8rj3=t#=Ds$XFeW-o5VvcvzFGEM@kMKHqJ#oZL;@^U|z(r=pXfiqDXXN#eSaiOk}HTLm(QHtHHmC9gsot zNgPkGfKoDS(1iTq60)Y4|a={JG>FpzPw{cpVtAO`2Mab${`lbRk17 z3)#$K+c-JXx#dmF_z?xA_>n54Y1&{I>RP~H4jjbO>2OD28Dq1IM1^V?1iKYRy2bVs zNr^sS~i&dW%oQ zIbLa@X{1Z&Y0@wpzQra1ds7>?(n2jX-l1NFi3+|llBKoo%4PwJD%dD-axS2_I>;53 z0DM1Kh8?Jikn}JPhr!4Qd|BBxkfg7h(~Hh*OgZo&?S&7gDCOSo=pm+@@p5@W*XntC zCOd6B3Z{1LL>lb2?7~~`Uf}k*_e1u3WLVz!Kxxz4M2a>gOp$D@yDAho$XRb#4Khfm zo5mMLjV)cR5?!L+V(c)&8oJ6hqJ|Sm64b5sX#?BGRdwy_60I1S3oY?GNL`#GCkB|E zq(Z+c!m>P~c9}q)NS|c+dAGT(%gW1VHH^&oQrf zEKHs#PNmz=08%tOdx4?3@gLe^y*U8Rl>#iQ=tm`H@QFM+&!44Pt)aZ#T{0nzZYQZsT(!XIAhj#InfTt915E|6U!ptk!0a^(D`-PAFz z&;I;DS%}p%D&n~(kii*%<((M4isjF`&j2_<8KTNs6IIAFQSLsH#ww57SA&H~F}pW_ z4B*p~V&?z{8HU#hJ-Z=DK^{+xpCwGS21lU}6S}M!mv!eYy9JEnBEQfXX4) z{j>=bOonlSpK6-@(L)8khB*R7sly-Xcos^{ zGf_%aHAC265ld&&@X|)YaDZ0k(1t?9Yp1pM{q$B4p0oE#GI`@1LUee){1Grl&%FRi zcJGBA-o&s`RJ@~j8i@UQr1CvpFU=~38rLm>RR_1d?TsUeDq7lvl#_ShRSozsqP4We zYC}_`2UM8%MUKX_aW3xXDKu178_0^Dk`jSx45-^Vu}Ek*#gkTEHfao$Zx*_yI)ZVjkv9d~rnV(QhrphKpTHRmzr%<7a4s zn@M&fv~5j8r7<+kH1pA>tf~i@?ic)Edr&=^xTKmbs$#mVU$pVV&;hWCI4ugkp z<;0#zO=V})7$yePwj>+gd;+=QgcWPlafdsXl;Yb#K2X-V1T(7>^kQK6UW4VQ@XdeG z>OO#(nNf5lY0=?qS#Q)pRHti|v8W+a7tt*BYY&qG`ay|RB^i&LqhHaZD71##KzwVlpjaazJA_J#nr?&wWKg;iip7>IYMTfp z83@8qS2>H^G9Xe-f38&t1^};QL%KA2mN!}BRvG`wG&t)sd=(=lIK z(g^~pVpOJqJoW#m3jH3=pt1s#)kkI%$LPf=Vp&iY&ft%FcLlQEDv_xTro8Qtcf^+9wzXxkD&M!3TUr$6Gd4&&##Y|EZqSr zYOA3siYS3JAZT*G8vUpm(uwz3%#JGF!kS@pOrH$Bg$t)jtnhpVn-oyL16eh$5sV8l z2ldf1{4Kes4A%>FwzJ#*;PVoS4uQ$iNeebx{|%78x+V1%LY@O)U2|P}1OiI+9Z(%M zO5kuqzp_BGB!H7gm!5atOW~`%r9mp zRPAcsp$<6Ps2U)ZRK3>4c>C6EGs4(aPk1vqoqU-KhP5ryoIK9+O)ZS6@5^;0&3Q{v zSC+^>jUf0OU;vszrNuewm&Mt3XJf^en{(NUjIF3x7d&4Wuf^$&Ld{Cobucq82tlb7hcwsTvRg$Ox5^zt(Y;w!Vv+fR^(Q z=eBf<+Rz~GO~?VVlcXoWL~xL*)nR2juff+4o8+5PkVM0>z=?OU_dJYvIad?7J>{Y$ zcu2HEwdV613DxamSb>^5l2c?J=j4I?_Vd0O>CJN>e{Zk*)qcIL4!EvXTl-<`TAPjs zMgKsnn7oH+MKl2uufq)yuZWN`;7onq#0cr*>2dg?M^N*^KCJW0(-&-uWnaiRFKP|| zD{K59$wmXJ-=OQ_3z8RaF^dyM9taX_Q-*yK-8jbXt(kp7MW8=@&up;~r3FXodr?HX zc@E+pumCXAaeSIu7RnP*A0og0u2zHaTm?9N1$b~^Vt5HYHgeL$o-oe76LBX!R<@kZ zl9w)<-%(M%l*&ZI5L|-<@$Xq}j2Hg5A}nh=@uR!9JH2tMmbJI%bSDG{)5XvV4viQv z@rF4l*7u?6Z39G_qPagcyc@E$Uyoly(+|Q-tt@EIZx&793Qw1OQGKJlcviD2LJ^@Q zEt5zZ23ZW6fMg=~*_J&lxG`7G6g^Iete9S1g==O+;)p}_sAh&Hvk2ae;+AZCsA=|@ z#_og>jYRRgEtyq>DZs!8vTG(>b+%<*b+F;ZOZlQ1Qi$OBW)H1fb8xujaX4&XEi!j z4jT2j+(;>%p9TTpO6`oBCTX}Sm0xK9sV2Ate7zwj4;slN-U2*Wsn%dar|m?{e%=TlQ7+{fz{EvI_~c(Eo{3FyL0<8EU#moq*$~uxo6OiBrRHQ7o27w zyn~D@^Rvg2L3~9YrAPd1e@~dA_3v-7^@6BJdSyioy=o0kopLI~(%(4HuZ%)%@k61O zz8}NM5Lbxg3QWotHzOm*#b-Oep;9iHH#N{pBO!Q!ieQeC0X*j++^%7Fp!>uZtrnKJ zg%^2B_oO5jd8vY(9Zuf7lu@4Q7)osWB__U@e zJU1AmLZz3nfrsd{%#rh0HA=ej3$G<%uBI_zAoiY;e1~7p6*g{78ZZ_IMD9Da+rv&Muasy1~06Xm7kxcFSXcqcp!rF%p(yY z(w};zp*KmYA3@TYV;ufFNFE_GJ%$Vl8mJQq%nNNCE^$kq)rw_U7-~_HHuz!nz07|+ zHo|Ij-tIO?29X65)?1e{B6F0?S$;wxaT5krnJQ_ib=Qae!k-yZZyMLX@XC{3l1gx$_#=Ce?o ziIrmDN}osK(?n~!rA5=H_Nv-20n2zSreBF_>U1zr&`=Irx==4GIXX|2kS8$tMaC)_ zYG5AgK1TPrdEX(wap_Lw%_q|dNY)|3jql4 z*&Ho`;7^;+s7SUI8{I1HuzI|t6)H7BMF{h9OWgUu9Rw&uGH$~u#jx~5n%G!Os3UDQ zc9mC}4Kel34Q%9`QJgdknkLjtt_`oFks-^b zv605d+yd;a`bYzUNcCVY9*AT&S7%p(ch{WeM)KeoB8EsWM|rXtAWNDMj5ZPXGaiE~}s^w{-l0o}B4#SxW zen6f}b|)AdKHYe8FXb@JtzipEQFY{aUAjG-KeQry<-M|oVjSWroj8%P!#zyJu6~4~qG}_e4`@=q0+NZZ)k67X;Uq@i*S8TrPOoRB+v}^V9qqGg)W$kQUZyDwCd{bNXq=k^xSi+ibnc%M+8$pH?3OnT zZ$mN39dnPb&%rwP{b9176<3p*t7#&gKo)S%{2FrD&|I6tfsO7dSCs%X+16ek5{@PH z@CHCbq$2pSQnF~1NF|PINE#Um8OBl>hg>6sH*?s^uyg$) zMlvb$+LQ31qr1u3-uW{UE?51*{yjm2DXQ!DIL^DY*Nr|8C)EtA2A;0g1zc^Lb7*0+t}okPcbQ@_;S}suH}jyfY@*%9{M;{W zY;7c-gthi9n`XGeYzXh}|2Zw%o~!$N(jKdG;O>%j8aC%VrVp1R((84G+OA zJ1xJt`l{~RIg^7C)fpRR4)HZxcRXt3v2^#JLF^j-_9Zx;ZLV$wDx$ma?7rT%W=t=q z{SUNZ(E}dc^*TqTA`LTQm-=sxw~w=ukNR3xO+2|54TxiO?1!^Tj&8i zUG~mv=Mf*o_rGU#9C@UssgNVBSJA7kX}s#XXDN^GUsv-kd$xM#dL8zCed*azVb9zm zhEZzuoGpMcW_g2on~Ib<*ms67$9EcnIhd zaNqw%!>kFTUIH4rxc3h<%mE(b(w__#f$B@rta(&ZsNxV)DHl0v!q)^Jbt5TA6rGUu z=2*?brPgz0vB6%Oyx-B~?LM0!-E$%B^`^4=+HJoaOPBt1;#dhhJXD>2@%ipQ&2DBa zd=B5TnymO{)ZBVYmk%^oVBDb>t3ubxY8_Vur| zqf>_;F;v=PgaJ`j&4J6c1E?LIR)!N&oa5q!;&|RhuHKJ>Sj|d|Hfkby+rk~Lb?W^* zZD84`%mLk=uT7aYy1v?nmGz_N;NW3OS(MTaOQYwB!ZoD+d=O315)1*7`k}TCnjX`2a`YX746_{(Luu+-n2+?c#CR9aIF{q5Msr7O6~2 zwAXA1sqCB9r9^45X}=fR;n2Q*+t^=53;I&ZqH%7K#&p*`wW4vdGGtUdFE7K_~vEGJyz7iQoL>sZcvEz%SQN72E3|rD` zb#S;OuA2lX07uXuAVkl4wB?UqI`a0tB_EXk1fZegb=x*VeRdLZV@)aTs~c}CCSg+j z6*D7_`f0aL&%^IWTqKI@VkovTbhd*%V+?J{XX5)7zRNdxQ$%4TRaNdFT6+y^__rNOLZNC?jx#?l>w`QW0N>*4EaZ!#>$sP4G*08Pd= zJ1PXnSz*zbI*??kkPr#^tA^Fls~3-5^*xK*KLD$oeGqk zaKj#(u3}x!C=;-5a|h#fXsX#T1G1sxZG4Zve# zJ0)Qj5O)U=*D3DrXO~0xRqYdHcPv7w)4@ay z7_Ig7p1rV@#Q|3M?23|6SkI*MAa5wjTH*rpFwkC+d7ck`3OGhsVvSx=Cu0d8(IC9s zXZ06)@q)P#N)B4oJn)r~QrDOpW#Q3Onr#og&CVQKTXU2i^tjhORn)rr95&J3b>3NX z(`hY=QR7|M3?_jLMqqW+M?kRb{}T@|@Xw)Qd=Tsg>5-+G!rP8eOAzM|u}IE4rb~>MAqjm3h^d5vC1%?a z1}@QTK1acfNE=F~WwQu6Ud%{)%MY2($;xy)7&D~5H6Ltu*>852!EFM30uUUMQwxWq z$b`)v0gw4Nrd~+H!b?U8F&DTL_y}<{OvY#`2^bm089+d|Mpn$bB?X^!WwB35ThPHq zGL#Mvpd4KUJ18XvJH)E=<3>|*4h)>_1}}9N?YMy?CW8@=L4|)u4kMK`!Evr;kgydI z-G9X&o0ybKjD?nCEU6C$9DI$0<| z5GEx{H8iJ(`;8G)i>hfVjl4oQSk6!lT{ng@Sn@oRMA^q{v+QP;=VOL8XJVg?=9-9a zShnKb&2i8Ox1;RVa=6`)ki$B7g@cVD*Rn52gzCd9tW#O+%!TUmCxleMI0@CM! zS5h_PTKy2whYm9A>BlFuPjQqcbVL|;XD|x=XHtFC1PToSyr+xA4jr0^aUPDbyr!&E zlKM`+*hbTOVa`7{1Wn)u4K~W}wz{N|MBEkjI%y_8dTyctVG%>kF=GjdvzabAlGXFO z038@1P*hL)EyGA1HL`>W!E$2sFm5P7gUJrHuf(GSMN%@OHHWKxWi8$qw(=HOq)>0E zHK553yrXm71ZKuyPP*2q*S_p8pfJq(L2yV91GQ{{%6I&@IVjsWTSd7MCCwAzR+Q5s zSpQaNP#3OgpJ@duBWTqV35B-|3=uq1gat0B&*avsrtIRP%oHm&nStr#aX8E~1PgmZ zOVmEn$~zHb&-fd#76s7ULYB?2U*c}z@38)Z@#ruKXzz(h0$a6Ip!H#L6Iglme8Q|NPyOvOTYL|Szb+MBNfz!gMa`r>odft&vgcCBS{krLDmLG z&n+hTSfj2`6jsP}fv-hWMvGZIzP%0Pevu6M;^BOoz6cuPq^drvNVO5W+Uw zbobmU6}sAP%(`){3Xrg?LdEh*q?DO#96`G=qec2OLb|0eWJvU|QtI6I`&BkTb7&Y3 z8fkfJ1NP!N(TZX5Bgi15#$tqq7j@W@cI2PjD#ky4cX=h7NtrjxcH4e_YSug29ncgm3D|O$|&NJ1r-$gX)(lRok?yf@esni87B*!@oYh7 zvXzF#d$*U)9bZ3E#>x~&=IxGM{3rj%Iqc1bt~-S#ZzlM7YVvg%@AIdyrT_^TEH zqF8hNR=rK>l7qc0w^AM?UR2&^QpWKL!zp?SH zweGVk;i+L`wmE~dj&?RR9w4MBn|6yzQFR(%NNa4ziJwDtCXG-*;sb-d@^tw!D^}Mthj_CffTo5+qnj7u#-N%h#e0@88>+0gl zXb~2c^lidx%~AM`bAzWBc7rjl4F-J&-|m^CgAZbH%1~-565xw>2zj9_b<`d6a zlhzm&i-Rcp)uk4bDaxK*5H9WWohY4i>aQ z;cN%PzAt^9?+%tvqG7o|hx5iuMAX~qcMW+j(F0tSG}W}nEe1+M*z5)UB>d6a3sH(q z$Kj$HbZ&eWqUUphWq zzqYtpo-8`+Z*BHg-aP;8scfm4w+1YDN^Y(Mm)5&0$y^o=JHhpttbFeHkeSV}pcjIN zAlnM7P^F?oH95G2$1H`iYI0H0k9xo{$AUF49ee?>9`2si}t3O=){&G@4w z@6@-R-n{YqqeZiw`)4-??{1trf3oa0#J%1qdGAJRb$EoS9==q=s~XGQ?8TE; zXCW4IuVWi?g~{eS%K}yIf@7mYS4cU&3nJYMxJ?$km9!Eez+mq7?tL0Vo%R=@m^ zt>eww!uQGv7EF8YNK$9N?=Ma`{2P)P2OXEXTZYMpTg#gH5jo|jFrx(#a~vf)ZOm8u zJ7vOabWA9vUpg6n^QoO9=~fd@i;gZE(FJVzzdlp6Up%>Sb<4}Q89!(Ga%L?bY<`e1 zNZ#f?kz^8qe^OX{Wiw=P)k9 zb#>45ZE3NVT+$pdS`C2`6L0>$T`7@P*bT#ct?RW;Hyd9$dHIbS3qdej#4W7O&Y*Yu z@<{X5C8J3vhfM8DQ-cRSI=)8jkX$E7NkZ{%rvwr8jJc?ve4Ee`&BHg(G7Be zr!TLG?rg`KL%*u5`+pdgqw)loS1`GPAEDP+npqx>*KPd*i}YB9fE-zWcRz?vx?@<( zhO=0JKu?%XD(Y^Z=a$Dy*B76K?6_qhJ7^Rf{YJXpDTik|;Y()*XBJkQVtD@*Ycd#(KXY&LxUSn-{+ z8^?kj4TUwOy;>uQh-t`yRufrtV=^Ly91fH|(CQGjO)-8VD2$mf9K*UtIX8?4+TaU< zfeGft4$vb7v}PUvhC#c5pRO!4I)DCDW4W{Q#?{5!<70gvL5%xagMirK|Falk6c;zT z!`<_X<5$o0o?2LC)kL6)A6uVmZ`Ok?MQWZ!;w3f_p%aTCB^MCW4X5K5;=|+x0$(h2 zj>aBugINw$Y9EWx@*0qyaji0B9K6PSXX*M_l0psXZ8B<9XWkEEAHaP#s0OOL*~msm z%OnC8fLS(*JeCca!*axmAdjVF0Rzq~aUZi3^wdK4(Y`sL-N#qRp=ua0gFnmhRAc;hlNNE9Q7 z$!sG#zg)hsyn4EQBO20`#rG^3UKATDds@-jxMaj7!XCja2?S@+6|h>zZPPZ3?V|x+ z>^)j-r~sWzb{tSEiOmG~CezzHzy7E9|L>&DQlgAOAuT(TD<<$(_We&_#USE>7td^^ z3rs9g7y}XF3+jWu;~lC3=n6HYf6T#X8RN)k#Q)x$CA#xX{-m~d>5 z{MMN1wZI>wqm7+xl(4|GG1Kw8jomOGcUa(7GW*HuT6QR4u(nl3GkG}EFS>XtX__=c zj7ksBkEwKP-H|HRo8thowhs4@QhR>7H6QNa1DNG!Avz4>&5Ldx9vS+rq+|*6Zl189 z12~$t@e0P2P`-Sew#%5};(j`pN6|1(cZQ?E5DGMBx{bLmtEq=^+HaMc%@TvBF}O5i ziiY9jv5mW`LqWAgBiEKg1^q!X(S(*#OhBr z^yU#PoQkIivP;X4&7RQA5D6qt_h<0kDa1$`HrB2m3qLG|)B-|iy=&kxKY@j;?UgEp z5FiDNN3kpc>wxIOU3J@eq~^y&#M$5|Lgg(1kUanZB3DU7K~&N_-((cM8~Kc|`&i>f zbYe+WEXo9rkvF2~^kX2DRmP95Fy2j46dR$p+N6Y}iOrGdAq){C_LPS)!&>7C^}K9w zB)kbmsyL&x+J6Ts(e@{Ny4mwuyugr`w-|}}*bh*;{5ZO-Xp?3Vcs z9rbQ=mBCjcvTjhaj6$=hDevCWUU@8}9&1Vt7lQ9$VPlwLAmvtAI*moXRpDITqoJm3#7nxV-RCb6KB z1RnX2#4?tX;xo$*(L8Ix5b~u3cYr1#Ww0#O-u_a@lT_hDmQlG^SD*)t~9C?%=YlTRp$X-Zv7r4ecVD3TTkJoTCytB^6{B;a9(1ast0mPh}@U-{h@D(t{8ir}oJmeguUQ&T$dR+~B&Rh(D zSp|d_Mi%q|4Hj=y^}S%MuWq@vTO~qHXdKGy=)ss9Z=qbF4WTSda(G#t$G9i5#G{ zu#Ju+D=vjBR$6Q%8FHcZ7n(EF-qv{QypyKa;bNR@Gy=h4c^{lpw6#tzdJE0*L+7BW5AhcS0#;R6rQ|X&z4#6Ji~a$iD2h^vDi* z$8?;vZikl!5h1yTvaDpr&WhsVD~Vk|{FvvK1tXS6dWlfz(RyOZ4Gq$A%eog}$>%`h zao>&8@Rf!Z%_k%JM0#PN1eB*@NlX(C_PBp2D5VQL#hZVwd3QCpw!|BqMkCGUt6Vh} zR%PP`G(tR)Q)7gYsBX6Fny5a;pFOt92j-2dZ05wwlgerwcMz)T*FO_2chHnZi6JZ9 z881HKEzgBZgK`DxBBafT$zMIIv)|_zj>@`eMx1QaU9BEOK?^XgkWaGK} zHsYGfQO!*jDc2#VENU!?R!ZauE#Vo!i9mz-Q59^Go&*pY6!?WbXsA$-;@b2!4A31# zRq@CfuAd~U)Ju)dOsM50Xw8$BNs$5g!rA;~lpD`OP=ry1vuZ0utx}XPR;wEFmN|qd zcT|a&dj(F0&RSVH->R~~cj*L1!L{hlwn*5FK%#?{3@B{oVsz|?cUdBJ7%6R^^f} zBzDg%oNsz8jzCioQ(k6tXbR>ez;eg$3G$OiNIp(R^W5=ge!KD$%qq?WD>(P?nk2mU z1z1+RG-?<#)cumPYREXDRx4iNzo!HaDiEx46@l(#r+8`f65}P-RL0e$k|fKHe?=q# zB0FgH*{Dvu<9C(SCFGHwO8+=aUYssY=m;`WBhDt$t_p&zdl`0ZiVfa4G2Si!x>E&l)t+{gm9BnMm)Ct3`2ZoXZ z=pNd&`myoR_{40qnEHL*(-!VVh$#r4bV+Kfp=u69-MXVvMVT*geXn?{fu#X%b>oV( z8>$Ed7bX|nR;a5g_4QP$3ch89x+ErMk_i&qpG6rmTvbN}w}NH4bPd`-acNuD2iT=8v?FGwzmY zo&ic3IjY=yKUG^!ohe9wgqs71TcWN)!*4%z{F&|Rs|5@H%`@7|eZMOJsR`AHil8#Q ztol*IN^G@uU4wtLyhdvtK{%VFax~(J64MY06a*D8x%gmdh$7y4BsDS65YZK3EuWIW z3<(^bgdVAnKq)MS;z#xdDjQ0chJqZFJ*GOuES}sVGXFvwEmXnk3^{bbfXu3{s$mQ> zq^M2>)Nl|eOJbE3ttBXC4n+!Mzbh1)Ir}tG7(o_n%cT=FlJ>~;O`1=ieoj_hPOZAT zbs;X(-dPD?(?BCsvsZZhfg+g2T{Jj1rZSAX=z= zs~Px*bgZ5^@d85(JY?;gxwDj3CAU1)Y2vY~v|2z_jI|%&NFIO5TRuK_@@Ce<<5h?1 z!Go$;Pw64Qz%u;?DAW;4>_R`)g{~-_s_2oTF%v?~$%K)`VtGIs=Uz>Wgi(~o#4G#c zR(&hnF%jKCGaDcXw)RnJC&a9aFcC1Ed1!*Q2NTo4Y_A33UbVZ`JpfcOE1VOS-h#zU zL<%%Wr?^SrroIC`61ambG9(lOusVS$0XO=^F~zW-m_N11Y77HtY@0MNlLD%X+OE~{ zs=Xa5UIpNY@{UON=@ZXKMUy!vQyirxnF|y%L0wnE%ML?O#Ht8gXRu$(Zb>DH^`R04 zK^2*TOFA7Uv{kuQq$S@2>)0ls7L>z+zh^w5Sc6IA?I&Q&*ZG+r6u@ZVf#b=~B8hqJZdW7|U(Iq{DFrB^pm3 zf3D$m^eIEsKzdbEp)P6iYb}wxbJk7#69(jP;z?^BdUNL&Uw-q0AD3Z24cJv%LlulA zP$)guS~!t)kWnTYUn>*o)0KlJ5`%J$NmT?t7VM#}L@rBHC6vHS9&)vp!5J--fS|;b zqqLI}94wb!oX`W^IThrB8>M!FV)==zf<1GHC}zS$6=cD9>{1z46TGbqm80N(l}QCn zNHzVyr7^hEHK#V1Q)O}TWH3|(4FkGq^^h5!C}^^9vRTf3Y4NME*KxJ5{vsJkT_a-H zxKm|yWN^)8nLKhvmn;;_QmwAH`23kKmjh<+Y2FzaQy)Sj7}SLUQImS{*6xjtHKYl( z^l0x8K7w2w?nYIzc$c|;x|h$zS7%GPFNZLwj=HER_*{zhRg7IZrKzx*JaA|@$VxWJ zT7lr=ZtJ!X6-7S(1H9VpfS!NRl#HB_1*2mUo^x z`C=p$XU4W_cK6}453s3YjW5Yu5w7mEU}~=bODr=p7mmKz^yXt$X0jrip<=xQpf^r5 z6QvPyd}EmzHIw9#06h+WEDA`f2#}U>JO)-X-lY$D(M5|6;$iD6C%#VKOb^u%!!IWu zOr14FY;4d#+{SEE%ri;J3v5G1ncZ z?t89C{)y?}kr+=)%7iQn!e~)Z#-MDTUw&c1JBEsL3m{_gRWJuNBkzO?%UzqOQeDYa z`PTe7WhGIAH38oIi%)(d7&T{_bD9{@OPT@8hxFo_fi-@M@3p1E7F8YaJBxjMzej<6 zRNsp}_zE>dmEpO(sL*T2`OGWlz8$kzTphET@M1ZKY$u1$ayf4uogY? z+DE<9&zyQG-O)se^jxkTFBWOC()B26S4jD%cwfPL{PVCBfa)y4NK^EUX~MD}KYi>= zi{1%*^+_v!-y*QxQ(>Z?ibEP?*()w;(J?Ely01L(?U`~(<2$If%_QQ)k%n=idhmz= z4L294CgpMXV^V<8L)>+E!jNPZ%oiuV_T=|i!)>j&xTPSPa|!zh)4HsC0@nXvwpiy# zBYpD6X{N1RrooV+AAbqnTQ@C8Z7*DUV+>@fPi6yHl%~ta;g3lH*d$KD4lNnvrT4V; z!pW~5^`3~>zEgILRT!)PRA!DsfgB?g|W~Pd%AR=01Gu30)h8zIHKJNXuO#s!huVJXgKq=bKjlume?VbB{lB5 zwxYfrb$L_ltfTlv5nZbNiKkNVfc`fNdW`Gbu}ZW3mBsIzYF%KhxyCZs`P3GO$eve4 z3L1`Ot>{zW9$!8f1@sP$R{LqurN+Kki3qcClX8D1T3n8wdU^3%?$ap@pSU4Tv#{dl z!Ae}0Yb>vCrc>V`A$n9v2cBDlF_~{Z^MiQYZFw{HKBxRO^~zmoYRN6fRN-|YkAEMC z0;o7ExGNWm51nYuBuhG3iPj1Ft?$10R}GJ@vW%z};!V-{4#wSG*u?OvrKlKHXX2SV zq^|<%4$8*7cTP9Yzx?F4o5_No*h0oVZX3hR%HLhyV`EfDTsqpflU?4bOL`v7O? zM?RX@eD%Z+7K4*bcFEUHFXmpL>vHz0xz1YG?=JUo%rpgzaeExlEmobagy8T zGY&wqkO>@b>H9DLu*GKv^cJTz>z3a@!Fa{&gIYs>{5wT~DXLG!TKlbq((qgBta zj9$26Cp52pGC2G7bKjwL33I-0q(%8QbTcW;RDVCf{dl-y-T46g?#%ipcW*urdSTph zCe=E(yzgWS;jny_u+XL!ru{AO3CD zbbq|@#2(9hFmc95jyhkS``*Ul?#1ob%hpcHH!kcw4(gy;bKqz}HBe+uBoBLX2ORpE zE)DVOR@zgGv2wqdC)KtNqSd_vY}V+7Ra|{wXB8bEU?jcqahmXzCEi%<6tidNp8MMD z4;W6@3squ}g7)nsLv?2jxXZ7HF1C862n$-vV4>3T`Z>P`lb#10dJRK?mLzU_OW!^B z+H&)(KWH|BCb(vK!jnpnDhlXF=BGY{oqIIho*2+C{)viJ)xLLKTmmzTq_$=D7Nw34 zhc;ZH31?$KUSmp{^WL$)JpbR@-eR@2hqw$e?;8$CBjr0}kUHYQNiE6EEBx#U;LZKn z^RFHApNs|}uUoN=A#aK^)x&!v48w8MoJOtLH-mkfczaA;3l{BYn$In4R~-(PvqNI| z`A>qjUmA~$KOL5t@xs8Xa;Ne&fvxOBR z460i0in7y9Z?Q%0so?zgU-+xpe5qA*nPAbYdW;`vZKSve>UK6Ary7c^q|}t%k-)$| zRCPWlnVpD#GBQR%qXJh_BPqIkX1H#X&b+P8W}xj>I`?NU{^fD+3_UbfrilCx7Y@hr z3PWDaB9N6AxP?N*EDQ5@=i4uQ`g`s}w#+6m?1snJgP>f@E@^|A?>zU~xd!uC zb1Y1{e{=Bw=pUNpnkiLxz!->crdKN^oH4IXd#xAdzy9LsZ_Sm*`~mYVTK`EsY=%vp zHQmdX(~nKVI0V%!x#Iy4{!>fh6u~BzVqY{+0Wy>wKs}lh(k{olN1c#X#7UI z*uZ-7!Fo07vh-4Q0s2!7xUx)(Q9H&@pcyujYYnT}hDSz6xyFoW&1B0@FTDJppZecg z-U2gNaG4j~Ne!oE@gJH>hh;fMi{+-B;*N1iZYD8!=*;#sLcSc$*MsN3f9Aj7v%SCe zyHVO3l|$A*v$-1|B(YgQZKq{^1Xa*%yDGy^Ri6oX74fGL;5Rd4)J4puu3{p*w9QCt z^9x=O;C&!I0{Ps@uYLFQYvOld?Kc#npZiB?#*LJRWw~Pt=vG|UmH1@Sc%X&-VGl;6 zmvK37@q17F*LFDb#z()2Z1M~Hz=eSWeS@`gc3xEFd(s!}v(r<#PlsY@&I>G3zi%%aa3-iDLC{jh! zm>UMx!%z%-QlCqnrdereu%>vDU2o%^t>6Fb-G3T&dgDfKTn^fe7GG3v^F0&<#9ViC z=`kI05Cmt>i0J-LBd8rit=XSdy3Q9W?V~JiryABHCqX>we)swR^3wb_Tiz01O=t5o zqqNn&rZvAtqK6{Mr(-!hQPBwS=1{FmST-Ke#Z z#=B|O=X-N(2Zm;gy?6%Bu&W|6?oO)o`vne;OM4ZtH7%+f7dHQ`F9PXpue`ykhi*R4 zc+2_L%i5ArE7Ex(A5v&ALsWLaY!uAsvj_H5TpgC>lY?hL70DM zgo%JprmAXnoKT{@jK?wqs6J)tu`xD`-~Olf{`RAtw?~cbEav;@tc2DkYgQF(9HaF} z6n5_m&2^E+!sLQGqnWza+Odv}>)<7$+)qdheNgI$c+M{jOxQoSUycKz?qQgxk7bQQNqRDd3MI=&RFjE13n8M({y#Al$%Y^H$xkI#UroI- z2S-E|Ts?t4L}C{oN+k}*atf}hU`W`VyQxtT;IpFMxbJOkcsKv$&A;sx zw?@HM77S_AHU6sQADUjHy0+F!jFlCX2x+k_Ak2aghjnoSRirTavSQpxB~|>s8!Pv~ zVKtTKlP>EjRHQd7lzsxl;b>2E&wgVXUj z=D(2ujj>E*RF#|nH?OZkk4TOQ0-uERCp?@{fl1N2 z67lz9CXd{O3C$gG_q+vAZBfVv^{2t=p;bxMvH+vSZS}#-cp<@PcAh7^H3+}ipmZi$ z2>R_WoqF}#r~h-)TVRMhnVGtDhXYB(<@zaN?XxfV7?#6#?OUb1OeGe4K7@~bMZ@lLc=mfQ zzjiWunyyX5K8(N?n)@Z`9;p8DqCabvLmNlKn(88u8(#Gi`E((M7Sakr)GPq^@Bw#@ZUJa`S=&GRDZ1>8>{~@2vo-K}k?fiFNUZmSS&r8D0 zI3o?@wqpwS&;IhWWx4Rz2#vKmgXqmi8LXXYXx3uOfxBe9#wTE=|%cU$d3ES7DEzju#d^iKMogz^xFmANhsGTb)&a z?Dt+EJ&YlcP6-T!Du7)ny25%@Hmf11IdV^%{h$Oy$QdAycreU3n#wx(&?`(drvgH z8C!FXH3F)>4xt81?Kgz5GOf}o=n;m`mgNxAoD`$2tCa|<3LBXfCE6hb#LJuEq4>|o zGR><`dfvvR)r;@nxVV|zO5;Hh^92$Vgr#B1%J80RV_^;e)bSM$)y3x;71V{`V@GvO z;GrJzhf827mDlwLG=yZq0Rt8j1*B3^vg?t4dG8wIt?z5_>Hs^IxBPJHKi)mfRt_k%xnkNc*A9VDh3eqs+eEwaKJ-+j*-ien+ z5yW0sZzbTVDXqncZi;asV0@Zy_6<>bc)#l1ys>rl#>Pim{S7`ihr?jsvgUg?`ZzCV zX}`6%DniRpBy(yCv@c-=(!mA;1VZd4hh$AoB13<0opuI?3qhg7$nN$>x+l&ayKrj$ z%&F)sd#Dg&d+hOvG)V}anFDA}i($^aH5ZQMlcy$6hC@~L3ZF;t^Vzc8D&VTAIubb7 z)YfgyVfX=IG(zX$sF`oeGmW$pCF)yF+3}Rtmm-u=9dngyrkq0M48U5x-p0~hKIQZOw|6!y4FfS4p16;0 zIQJna1ONYz69hM=g$e5OzUf^HmceAL3|6E~b4hwhF1e4@D;@BVSIHIL>}&ruS{3U> zv3^``Hmm1{(G$Oa#Majee9sbTN3Z}B+-fjBP{sq4_|H%}G9#j_d9KKtsLtW8U5<`&I!YSi@0PxBOJ*qI0HUXNPAK8-w(F0 z<;%xmw=3WF<+l8MXQI#7F8M^H-{Eiq$3NP7nEjR5Zsm45xf|V#i{Y#o&*szn<$Sp) zR`bDvZ8H3`2Lmz4CcO8dx>E~PU6~^~CaSESUek~$L=k!f8V;oRo7~2^aU?w&sGh(c zTpm7@!U6e8JBS8gb0lRUV4*cFuLjm8)!Kzk28BXDd`}Vg&cyV(-^g`OcBadYQAMp~sWVm|?+ovl)+~!`53!_}S)BeusIc*v3_v6d52_AJ z2%^ALb#Q}d;uAw>*REYo#luRqR<<~vKxdFndWpn7tSNzrM-97u0DE8+GR-5GyZ@}2 z+zJv)Fy^*a-Nr>Mu!}xd(qcF{`(!i#2;;(0rf{-0vjk8OVGPDnvWz5LRBmKk_1uJq zEf_@5!_kAwe`^tTigQ@6rU`7^AGJg#v@4F1*3w&`EGL&WWaUER@?A^yC=0#}WO?mC z7S?!NJLQ?N|Kjp9>u?o!k_93eoy2k_zHAFzU4GgA`$O%20H3^2;>Gu-K>z>%07*qo IM6N<$f&p_+IsgCw literal 0 HcmV?d00001 From 3e44dcaa558a0722b1f0447bf2ebde6e5637f3e9 Mon Sep 17 00:00:00 2001 From: tiaoxizhan Date: Sat, 14 Sep 2024 09:12:56 +0800 Subject: [PATCH 15/27] chore: add missing symbols in comment (#2704) --- crypto/bn256/cloudflare/gfp12.go | 2 +- crypto/bn256/cloudflare/gfp2.go | 2 +- crypto/bn256/cloudflare/gfp6.go | 2 +- crypto/bn256/google/gfp12.go | 2 +- crypto/bn256/google/gfp2.go | 2 +- crypto/bn256/google/gfp6.go | 2 +- 6 files changed, 6 insertions(+), 6 deletions(-) diff --git a/crypto/bn256/cloudflare/gfp12.go b/crypto/bn256/cloudflare/gfp12.go index 93fb368a7b..4e080f3ad3 100644 --- a/crypto/bn256/cloudflare/gfp12.go +++ b/crypto/bn256/cloudflare/gfp12.go @@ -1,7 +1,7 @@ package bn256 // For details of the algorithms used, see "Multiplication and Squaring on -// Pairing-Friendly Fields, Devegili et al. +// Pairing-Friendly Fields", Devegili et al. // http://eprint.iacr.org/2006/471.pdf. import ( diff --git a/crypto/bn256/cloudflare/gfp2.go b/crypto/bn256/cloudflare/gfp2.go index 90a89e8b47..094fb1460e 100644 --- a/crypto/bn256/cloudflare/gfp2.go +++ b/crypto/bn256/cloudflare/gfp2.go @@ -1,7 +1,7 @@ package bn256 // For details of the algorithms used, see "Multiplication and Squaring on -// Pairing-Friendly Fields, Devegili et al. +// Pairing-Friendly Fields", Devegili et al. // http://eprint.iacr.org/2006/471.pdf. // gfP2 implements a field of size p² as a quadratic extension of the base field diff --git a/crypto/bn256/cloudflare/gfp6.go b/crypto/bn256/cloudflare/gfp6.go index a42734911c..72f552cd35 100644 --- a/crypto/bn256/cloudflare/gfp6.go +++ b/crypto/bn256/cloudflare/gfp6.go @@ -1,7 +1,7 @@ package bn256 // For details of the algorithms used, see "Multiplication and Squaring on -// Pairing-Friendly Fields, Devegili et al. +// Pairing-Friendly Fields", Devegili et al. // http://eprint.iacr.org/2006/471.pdf. // gfP6 implements the field of size p⁶ as a cubic extension of gfP2 where τ³=ξ diff --git a/crypto/bn256/google/gfp12.go b/crypto/bn256/google/gfp12.go index f084eddf21..39b407e80a 100644 --- a/crypto/bn256/google/gfp12.go +++ b/crypto/bn256/google/gfp12.go @@ -5,7 +5,7 @@ package bn256 // For details of the algorithms used, see "Multiplication and Squaring on -// Pairing-Friendly Fields, Devegili et al. +// Pairing-Friendly Fields", Devegili et al. // http://eprint.iacr.org/2006/471.pdf. import ( diff --git a/crypto/bn256/google/gfp2.go b/crypto/bn256/google/gfp2.go index 3981f6cb4f..9cc854e3f6 100644 --- a/crypto/bn256/google/gfp2.go +++ b/crypto/bn256/google/gfp2.go @@ -5,7 +5,7 @@ package bn256 // For details of the algorithms used, see "Multiplication and Squaring on -// Pairing-Friendly Fields, Devegili et al. +// Pairing-Friendly Fields", Devegili et al. // http://eprint.iacr.org/2006/471.pdf. import ( diff --git a/crypto/bn256/google/gfp6.go b/crypto/bn256/google/gfp6.go index 218856617c..3fe3d344ca 100644 --- a/crypto/bn256/google/gfp6.go +++ b/crypto/bn256/google/gfp6.go @@ -5,7 +5,7 @@ package bn256 // For details of the algorithms used, see "Multiplication and Squaring on -// Pairing-Friendly Fields, Devegili et al. +// Pairing-Friendly Fields", Devegili et al. // http://eprint.iacr.org/2006/471.pdf. import ( From 34059cb14408d93314adab51ab40d67a36377f2b Mon Sep 17 00:00:00 2001 From: WMQ <46511820+wangminqi@users.noreply.github.com> Date: Wed, 18 Sep 2024 11:51:59 +0800 Subject: [PATCH 16/27] faucet: update DIN token faucet support (#2706) --- cmd/faucet/customized/DIN.png | Bin 0 -> 10695 bytes cmd/faucet/customized/README.md | 7 +++++++ 2 files changed, 7 insertions(+) create mode 100644 cmd/faucet/customized/DIN.png diff --git a/cmd/faucet/customized/DIN.png b/cmd/faucet/customized/DIN.png new file mode 100644 index 0000000000000000000000000000000000000000..be36433308690060c6663c244d21a96c4ae8f547 GIT binary patch literal 10695 zcmd5?hc}zw|3_)98uc-1R((oQR8{R=)uP%W)JRnAy%Q@@wLYyDt=hY4M(kKYirOpo zNKi$@h%H8pU;6zke$P42dCqgsz3+SP`@YY8kJszNOC!DOjJ%9gR8-fWJ$-CUMMZr; zdGFC*rL@SSw0bBX2Jfd9epFOU9DiSGs`N}AN+Y$Ov7R$w&cRaHFG znJpa^mALh@$6BU=)WkWage)iM!tUjMHqh3p+QKT?tom7VU0YI1bu(D_k<^t3|1du9 zC?Ni$J^SVbBlYUrM)62PgL{dX`*#pTqr^wz#}BScGZ5cEjBgo6I5?-jOAEa7FZN9Y zS8+koCz_P-VnneX2O$7Y2f#`<`q+5XmR`z}z%)X?1# zQtS3NUD>hG2O1AY!`B(yG}na zC?;_*`+=s{ZA`deWx&Qb7|}1zkzFCHkz`Wnn4K{1s116a!FrSRF2HbmPNl_ws!W1L z;5A)hqKRm2KM}9DBlZ2jv|e&M$x$+hZwDXI1ASY13?&y9(P^5q6EssICC;P@qb?@Z zi+{dIx|wK>`eqCFK;yukU)9Ms4!^ zVbc)g*z(;bIQx(f4h}w1y_Tg_uG9{dFZY`KUeA=Bf|%9qLmd&xr$CzD-`EL1#dCRW z*umG&r1J9-KvUw+UJ*=qqGp0Z`)6c)T&Wd3`1dbLFNRw^s18~(kXFU}ExrG5x?4Tw z*V*CikWBoZ#mM-`}D<=vg15D-7jaG0a@x{QRi71V_+2VXa&{XUtn6<=Wq}rm6qLCeD|caJ6V8?upm4+xE&b*UmPEutTd1!5r`i3}$LXn+KVRp4P@LV%F}EiZ$bom= zxwgjqSM^hSjZ&AoF(yp0r!X=^_Z_u%R9yI%sFO&l;dloRp1ZWlS7~hH5+4`ay9qceged0qU zaj=eikOR&Te3>!I$1nF)ltlR)3KE<`1%0onx9}#2x5*tg=Ice4Hm z4^=!{8%))IATgw0u5VQZ)Z&v>g3|>Q#0EyL-~yYd)IL%E&8AiH2%3ZF=X?rr@q>c` zr*hQ6Y*LVeAC-?i&{S&Chie3Y2+cumWhFbo!qDVdmk2+PV2f z_wMI=Y5mN)~2IOB9ua}0|&&e~&W+}tS^FRsZ-87n6$CW9XOL02;y&^)Sv7jF_d zKCJG>Rc!@Y-2wb`65>@xn=x-6G?|<_%cc(G%#aLZa{g>f244-2%g)oiKFF03lnXZ2 zcQ`58nAnvCnMa3gB2^~8N^c4LsR~*ME+E>7%*4E3(XzQL2b^6bpTnZ%_5c?1eV}au zC#`aD`+dX6ew`OlocV`+%5E+(0|&PJ*cIWj6&~XDw?DTJod>hC#9CNvROZITm(L6Q zuOV64c0;~wo{XM+u_GAXyZ23nmOxFbYz9oFhh#C|pJNZ41)u=MDM*Qvz-?i5Ld_e} z3Bqk6Bou8)C=I4hc~rSS^`kOw*!XJ!^w2^Wc76(3DL3t|^Sg}vtoD4Pj{#{uda zioKF;Ul$hI8JbCXlzjHt_~*kTYlAuVu{`6W?t&22C`jl4Zo8D^P4vV%MQ#|U2oEgT zosd&zAm3~1pogz+0SF~-FE1}P0AvhLzP_H!ElgFZdw}P~F52j7CL9FNi&b+&bi*L7 z2m?L7X0F+pCD{g@%I=@wMJbP?1&N-qnjf2Gt9G4R>Q8^U&fzNj1A%}%8M0a=ImJsg z4XSzb;J+e$J=VWswFA@}{GB$G>Spdl+5zayWlGwIuQ|$R0}JWvsOMPfXBQjFU~6%u zxRz=ldf`F>J9CXD4E>|x_S%&vXXSm>r2}?ut-M_o%Jef{VVHc?@A}=PBA6=I=se|$ z^o_-*WHa#UaxG7`L+L1-u*HmhP&ZM-6)dI{0rA zb<476eSltS26=7+w_me5eFO#s7vlm{_^gIY4;8s&CY;!NXD?^GYD#;c)G|8X)=bx4 z12WY);q7LtMC0v;F;{>is^U9w@Gc)5vM|eOZ0DpUadfiL@@)Rhh^P6wsI68DU_6T(! zS4Z^qSsIeg1TYS+D_`|s_F5}WFwlqqc9LfSx!p6HvJLTvsVrJKqCFo7?gKbj{H~7n z>ju%2Ky>6%D2+Aag}ae8E)<^_<{ys>TzX#ZG(6?-G;`8(V-=5QA>PRCR}@k<>vTxO zlKR=QUlE)4hZ5r#c4P3teoYm#2r2kiJFH5@keltcq#IVbBDsAH^QXLPQ$!=bwOIK= z+B^2OU5xxP9$m_IDT;5XJmOmO2`T#%(ojz?0=BFspSxc~yx{-F3MDw6%tq+EOp;N! z+-X&FV!}9>5(vumPUHmB)hu_Wc{4=aIqakkVf_4d|D)iM346uf$@n2f>ocf<}rn?tt{w zZ$39~BhD@hr;e5RlNSnRKati0OM+prs(8361`hlUg|`f}bPT7wLjpkkaHH@zpb*>GfucU4ezy%+$_bj)}o+9(f6}dhEKJ z1*v-qcK1dMBNyt!JL)x7C$}U*`??TV4~{`+08jAnEj5W(~~H zm1BBOex)R-^&4QxVDUyA5)A|p@UM|3e61j4OmBd#xOM4hM_uK~!a8jMx5Pa9HcxdTdO8lEf-IN4;9ep_H)hp9Nelq3R z{lG9zhY}hR(h*igbtz5FHr|Gh#xKu>F3PP#dn11(fG6ts3~U$y0Szqmz!d~s*5`v& zXA_bzS_O|~_0Q7A)#GB>aI?`t^!^(8(0^5B=52m-Gy0t!D>yBiFF+F+_C?;?$%PqB zZT*c`-%01L#Ffuf+MYT3$=^{FRr#_xjIJ~Q?e>W)kuz(w|HFdGZzn9>lY zgYG{$DcLq5Sy^nWVk6H|jm1tjj~;H!F>c_-K0$yPXO3zYgI@g=t*cW532m?1c3luT z4?K>BnJ{z|>*k#$$_!An)h86Xx6s%1+$n}pjZX#=&foRRj!wvOr|JQB7Q%eEu)VR* z8eVy|#kD5ZH42+|BZWN-Yf6Yx0!sz@5wS!O-{ap$D{2}L5!;J)3|MdKWnR9dJ8F)W znQV=wVq%Kj<3_dKt_U4W^6hGp&l@FibK`^CB5PVaQld{J=71U45@Q8K&?|$jlN;*H z|G7FP67~+)P99Y$-!mDTkr@UJ3##6``~yXcYaFX5*4x~g{E_cQ@9$4XBysp1^vLZ= z$vruTz)si8vRVlpsz8~@1RKLC38p{>A*#nGH+ODyEiJi2K9E~t9K26N z&Y@_j1u~1lm=Uc9#GffVu6(-E=j_qV9geE9TAgb--$eA{dXmi1_o5&r@SQE@0EVUY zRtXz_4#J+qT>T0Z3o0qo-A*n`nz5Ly_OP#EJkNfC6SFzBvEj_Tbtl6xcR^aSgWmt4 zr>}3HDgHF#JqPJ?i(K_#DU*GNXh>ll#_Al`Xgcp~~ZhMF53ox(3@D(M{ zH#b!GQXo3#Zi+StAos@(3u=#{5|EzwbV8@(|NB|vWeqEX(dV1Zzn!Q)i(p3XqOCvo zdP^>jLC#iWC3bWb3d^+>;XJ<=EuX0`sR@PIl!1haDzPV$NAzaDQqL{e za-A%9y}KI{}OQVm&7Y0XDW?a0vq7_W&8=Z!<{iN*g;OkeVlx9#IeqDo;WT^&mv;tZKJ0{X#r)IavNn0w23&K$6P5wP1b zx>v`xm(#kW)zbTJSN)Au zKS;XNd}#yUf+S%N8@&zA&*Jb$p`ApS5L)*vGoE(_-+vC#&X`m+7 zAP>7XZIg_vCW&*njru+3xIdpF z{wfLYEc#1+EjA}(U(2(@53s@$&2o|CVgN@piwOw=Ih+#$;klRjySus$n4e>Jl7hNedD3)r?f3+ z#_+f&_d8mG^x|uQ#RjfrzezDV z+b+8kJvdYA-bzr(kW)6`_u|v`06|i#u8`I4L?WeGh_NZxdEb`%^DWHCf7PZO@4JX$ zn`sh_1z^IjKh~>|21(91xIPRoJDClMIGOp~A6qw4iZADb(&*-mrsfTdPNj`l0_}$f1*;xiH^Ubi$8MYyqI?8ur;QUAZ z!zwj3tAbw;KnRacJtD+E<^-)nSsEQ9esGIS)Dh z?MIV~W+ymDe)v$u{b+%=Xx*9d;5PG*lqb|xC7ak8Asm`i&9+~G!16a!vc95R}u{fyqvBV$_~x5U$=LIN}* z)`11(Ry4VnlyVG}GwP!i>ZMFgO{sWq`nGMF<;@CUDtDg#HOw|e%JxiY$S))=ARPsY z?mi2`z~xuJ&Jtn#b2d~58Z-g~Kc_Ojq&k-jNrm_2=RrfyCy2w4>HdW5C>GqYzF8tR5SwDU+uTQ zEiRu9-BpstcxZAf8-DalYD(hDEfQ^>)D5ilo@f&A(g-=bM~zvaxXSP2rz!&(TXC`+ zT?V3<^Cu7LlD4Ib+YV;r7H%%PEw}BFOT4nF(uweZPhC#?hs^3W?e|rm-dsbJDibE$8HurEK74dJ4-B;ANF@YKc`EB)yj!LAfrwb$8e&x5!+kWlw$6|%#8hr>xb&Az{e z6BJSm%7fB!gYbUb8B0Hb6NLUB4# zHRVxeD9)71nGHV~ocsL#L%Fz%vRow*k@gti!}p8=p92p@)^65?c}%_lU2v2)kvN0d z>jIJ8h?ha+KAibx9&dfOEy~o4{R&Q8Q=Mkv(6{h%PZOsKHjiIObIorJ#`JmuI zu6iL9HUoGDBYMg}Za(t}gt+Ti{ef*w?CT%llCc*PXg%S?3Y0d6|51`wBISe&$E&R{ zsj<& z-97k}%bwCol0e6)MpsE2H<%|u6f-QFfI#bvx#mf9j7?MF;Q1_IErl`t)zd12|M|0l zKer90(!D3UYF3&N+|k~on(=;BoX1NP`HA)l=m!!nyNt}>wE6LS%C->Il8HXN?brCS zaxZl;PLy(oeac#s-n44@Qx5CisHP&3t2WsBZj`zcXSa0`5;6gjbf^jpyafmUd9?a0 z=QPcn!7M%9Hd-b9ac;ha{;Mx#x2&?ff`|+M^lDpoOUzllD_OJmG zQc~kOe?AQ_?TcUBQuxftFx+_RWFzxh2_M!bP0dT0`jtMXDM50%?DJ|*K?SrCod-Rh z)R{Hk`1&3c#o%>l_vJR3?IrqY!`=Pkf~kvd&Gs9e?~_LUI8k4x1Z%}DAw`fXJ6zv! zj8IU{`MYJ&noj-Mc{7RVT6D5M5dG_C+(c+FD6mC897N;^IUH`)s=SRS4!@_mej78Q z+BNcG#-So4DpMY2L_f#Vg*W3N$7x9+y(`Q&jG26QE8@4mv{dw|-=)mjzucD-g#108 zssW%xn~Hy<%~SQZXCYNCNc5h7mmz1ZZ;|dHC$gN*hjUAU>0ILHzC^R&*~QI8HPcYY zCGuiYW#O*OBOy^r)Vt_JHAq=KoqM5=L>+q7L-gfT%)3J^EBjSt2z5p2{UOO6(LJaba06mM5Hd#sc4tj(>Dqs{ z185n8&Ox-;jR; zBITd-xvYq6O3KqZi)`5J&^$yYHJ=pbKoBQ52ey~vc|tv5X9Wvio#NF+0@Ypdi%^uzKeM8uKjf{Xb>c*xJNqmN>UaiMsz>F4V z;^Al=c2F1Y?IE+6g7&aMj1772KJ8X9oqt~e!vPv(9xcG1`5L=57O`Hp$gQugI*VAi z$Ud8|IFCCc^t{p%np9m@&KmXC-9o9gU4ERzC z;x(OWD9b zTA4yEERf94M`;^RzanpEelOVB7zC(Cw3IfSKStd)#RGIbyQi0kW@VEd4XBnD&pG9w ziG>h^>Ul)bGAe#M#n$P<6r#4*vxTMmU$so3)n^}Kco>+)T!M5ePlBBN8Scj}kY70X z5Av2gsn#J|S91kVN^=7$($Aln?&VetTfZRg*9t#hboy2F2(^Gmrr+bnZuHTCGnuC> z!LN|_LrvGaL{ zwi8N?>HJ|AXk4@xS>1O*uJNnhPtmv=L#dxFcGxSHu}JureYDNsub(tUY&R`(FSiIC zb6TK05onXn5)TmjWybJR^Oi4H)G*~)qc*xsgGmf9PN9sCi39kKo0)7>FVq2ri9m=U|-yyw~b*ur3VUU z=V;08*0rlj9kf9zMqnm`(a@x9^YtvwVCVzuP@FkIAgQUxN35rlMr~s0gsXD#iS>8K z0_2A7NEJH7=aa>bF7l3tI!Q2F!Kw5hME$~MnJG+}nWJ^WaK>!v!A%x;xMp{0qx(i( zmZ-gFGWDa@pv1G0%VSf(Q7AEpYf~K4@9$o4bK4d*&n%4Xqn#2=4XE?>-_fz#CPOGZ4ObC@MgF;y}?p?!VF z?a4>1VG?ZVmigMrzY3@{19k(u5PO>0=z=03fS6O!u|J6X-~qwv)?CLZMoVv1z0T|2 znG{YAm{xicQ>`lf3f@}5vpn;lt~OGtj`*Bs!~IEU>8}F2{ImugAQwKWRLaLh$51cEa$*i($7rSJ1U$LQX?6Sv5U+xGpI~EvK90fMC7djL4ciqOvXaK~5L( zTx!25&_=R32CV^#|1S*94ggx(iiY%uIZaHN?uIy@tacs&L=JuYd#yHRwu^Rbv+KSN z&hAGnu$e+eT)SPrYj>COo=MD^H%aZvjm$YYo4-o=YQ82>i-ms%`SUJGyTj*9aZ#px z1Jk23S?)w0zJXuss)Mc&B})xDE6b~576tRNC^f05{uET>l6THi%Zteyy^d|%0>slw z+rfAF%H6K{f9HsnP(xPi_d3X)eKhN4-Yb=Ok<_T-8HJU)DOJsA379}Z;}945)fw2I{exdiP6rXK2?ADV$He7trbW&`aGgT$BqFv{L+`q8CMu0cG4=q8 zu?Iwe3e1ZnuBUu|T670V&g0fyP2V*q8&fcTB=MdB4Bsv^C|3cK=vPb|J&`2vrG2Mcdn>LmmkiVt`h!MRT=8^ZC;OW zKe$vj>Up8Achl`cMP^hn1d5so)yX*Eyq1t2bi6pHLiZOG z41SLol|hHD7lKPPM6PrphjdciG6o(MdysK-l{pftp4g|X#K245g|`r7<4@GTx65)UhEfzruxNmkX~pvmG;F^FPz!bc8gmc)U^Rx9!@~POR~u)_ z$6LrGqlG(~@svu5$*jTpshNSs!>1g}Z=(eLChG?P=?#u>Fp%)DKSk+l^X#X6VefbvEVe8?ZEy1jQb3f;46jSrbf7HZ!0Q(+&v5TFZYq5$gua?nquST4vww|<6S@txq5;bvwDc_dFk z+gEk;UMPnKf*m`Kk7w{Zywt%_E=UcEy9}WtXkAe{`6t58ckg3NEkT^xEXxJCjfLh> zsePmX{Iy`Kmch{VOzt&lPcylAH2 z{hE5iA-y5#Y5CJew8pXT&2i{^luMgZEjbvP8L z+|-}NbvT=r=5jHVCqs$V_`pum1t04fFmzxUT5yDphAp!Iw6pw$24o3el=^SX6PHGZ zh1NL;14fU+e#pB2Y-lU568J93u{{$39Eqp26*P9lfIV=Eo(d;##%`AJ?2GSua^NXg zxz4A&e6P=OTq>z2aY^}wM?|b&78Ud(g%wdPx1gstfs9l(%1Vdf@2a%rp{r6$L;Gw5UZ)DxWFe?@(jM+(9m^*{8< za-o;`c=7wUbo1}?b&%}?Y3i%|;c)S6vCgDVXCJ19>Yn|Izc`Y}2 zJZY7q=N+u-i4Ub_Gw9CyYp0dsm7)d0S?DK%FOB7*jHl#c1#V%&c}ov3-gNgN30R?d zlv5FvH>Cs?0iV=6Kzu*6qEqXRJSiuAZOX3l&5hH%7H8+{yRK|PH*d(-YF>O3SehXi zWPb{xu4E2pQDt3-Hs8KIZLa5Dq2c$V;d5dsRkvR56`6M)9dNTo6CYAtxo}T7hfeMl zv3GC01hrT)`Dp|c832{=Da=Qko3u*at`v6EKhtl#koGExt45R_Wy}=nmoV6@`R=(i z;t<@nU)?`!7_-FnD2m$bYB)>T{i!&aJ^|6ndF=_1o;=IL7|mVnCBdoS!&iYJ zS8I(I<|ICblyv>AjccYbn>WC3${lzM3A6aKQUuV*&8s_<*Ja2;#*$OSIbcvI2y7LV z0e2Z$SNCgiTWDQ#p~e6xmCq~ghvi5HaDj~ozUfFZP~Pt1FxAXbEq6d3pjdfI(b=`< zhK8RJR$?Xv->`%6Yn=FN0qyg1M16JB`9i2?yVdyC_k^@g-8B5KyPDg=m~izQ5%Z>< zb`Ihk1=3=Mgw|=N?ot#w!=>CoU3D0Q#exUOCEA>F#;IieG|zg6?B9Pm gkpI7)H}Yp;x87+fuPTc@`Ma`bx<-%7wcot|KVz0j$N&HU literal 0 HcmV?d00001 diff --git a/cmd/faucet/customized/README.md b/cmd/faucet/customized/README.md index c53fa3b33c..65a5a9b64c 100644 --- a/cmd/faucet/customized/README.md +++ b/cmd/faucet/customized/README.md @@ -14,3 +14,10 @@ We will review the request, and once it is approved, the faucet tool will start - icon: ./demotoken.png - addr: https://testnet.bscscan.com/address/0xe15c158d768c306dae87b96430a94f884333e55d - fundTx: [0xa499dc9aaf918aff0507538a8aa80a88d0af6ca15054e6acc57b69c651945280](https://testnet.bscscan.com/tx/0x2a3f334b6ca756b64331bdec9e6cf3207ac50a4839fda6379e909de4d9a194ca) +- +## 2.2.DIN token +- symbol: DIN +- amount: 10000000000000000000 +- icon: ./DIN.png +- addr: https://testnet.bscscan.com/address/0xb8b40FcC5B4519Dba0E07Ac8821884CE90BdE677 +- fundTx: [0x17fc4c1db133830c7c146a0d41ca1df31cb446989ec11b382d58bb6176d6fde3](https://testnet.bscscan.com/tx/0x17fc4c1db133830c7c146a0d41ca1df31cb446989ec11b382d58bb6176d6fde3) From 21faa2de3f7d11bfa6e0913c54dc2705abb660b1 Mon Sep 17 00:00:00 2001 From: zzzckck <152148891+zzzckck@users.noreply.github.com> Date: Wed, 18 Sep 2024 14:34:01 +0800 Subject: [PATCH 17/27] release: prepare for release v1.4.15 (#2700) --- CHANGELOG.md | 22 ++++++++++++++++++++++ params/version.go | 2 +- 2 files changed, 23 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 5907ec247c..513ffbc2ff 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,4 +1,26 @@ # Changelog +## v1.4.15 +### BUGFIX +* [\#2680](https://github.com/bnb-chain/bsc/pull/2680) txpool: apply miner's gasceil to txpool +* [\#2688](https://github.com/bnb-chain/bsc/pull/2688) txpool: set default GasCeil from 30M to 0 +* [\#2696](https://github.com/bnb-chain/bsc/pull/2696) miner: limit block size to eth protocol msg size +* [\#2684](https://github.com/bnb-chain/bsc/pull/2684) eth: Add sidecars when available to broadcasted current block + +### FEATURE +* [\#2672](https://github.com/bnb-chain/bsc/pull/2672) faucet: with mainnet balance check, 0.002BNB at least +* [\#2678](https://github.com/bnb-chain/bsc/pull/2678) beaconserver: simulated beacon api server for op-stack +* [\#2687](https://github.com/bnb-chain/bsc/pull/2687) faucet: support customized token +* [\#2698](https://github.com/bnb-chain/bsc/pull/2698) faucet: add example for custimized token +* [\#2706](https://github.com/bnb-chain/bsc/pull/2706) faucet: update DIN token faucet support + +### IMPROVEMENT +* [\#2677](https://github.com/bnb-chain/bsc/pull/2677) log: add some p2p log +* [\#2679](https://github.com/bnb-chain/bsc/pull/2679) build(deps): bump actions/download-artifact in /.github/workflows +* [\#2662](https://github.com/bnb-chain/bsc/pull/2662) metrics: add some extra feature flags as node stats +* [\#2675](https://github.com/bnb-chain/bsc/pull/2675) fetcher: Sleep after marking block as done when requeuing +* [\#2695](https://github.com/bnb-chain/bsc/pull/2695) CI: nancy ignore CVE-2024-8421 +* [\#2689](https://github.com/bnb-chain/bsc/pull/2689) consensus/parlia: wait more time when processing huge blocks + ## v1.4.14 ### BUGFIX diff --git a/params/version.go b/params/version.go index 4327f17d11..4fc05b1ed8 100644 --- a/params/version.go +++ b/params/version.go @@ -23,7 +23,7 @@ import ( const ( VersionMajor = 1 // Major version component of the current release VersionMinor = 4 // Minor version component of the current release - VersionPatch = 14 // Patch version component of the current release + VersionPatch = 15 // Patch version component of the current release VersionMeta = "" // Version metadata to append to the version string ) From 9cbac8436305b8c5d2518284e8e84ec88d473922 Mon Sep 17 00:00:00 2001 From: zzzckck <152148891+zzzckck@users.noreply.github.com> Date: Wed, 18 Sep 2024 16:56:10 +0800 Subject: [PATCH 18/27] doc: update readme to remove Beacon chain part (#2697) others changes: - remove bsc-docker, as it is broken - remove light client, as it is no longer supported --- README.md | 26 ++++++-------------------- 1 file changed, 6 insertions(+), 20 deletions(-) diff --git a/README.md b/README.md index 360ba0d7ba..d26fec81c4 100644 --- a/README.md +++ b/README.md @@ -9,16 +9,15 @@ https://pkg.go.dev/badge/github.com/ethereum/go-ethereum )](https://pkg.go.dev/github.com/ethereum/go-ethereum?tab=doc) [![Discord](https://img.shields.io/badge/discord-join%20chat-blue.svg)](https://discord.gg/z2VpC455eU) -But from that baseline of EVM compatible, BNB Smart Chain introduces a system of 21 validators with Proof of Staked Authority (PoSA) consensus that can support short block time and lower fees. The most bonded validator candidates of staking will become validators and produce blocks. The double-sign detection and other slashing logic guarantee security, stability, and chain finality. +But from that baseline of EVM compatible, BNB Smart Chain introduces a system of 21 validators with Proof of Staked Authority (PoSA) consensus that can support short block time and lower fees. The most bonded validator candidates of staking will become validators and produce blocks. The double-sign detection and other slashing logic guarantee security, stability, and chain finality. -Cross-chain transfer and other communication are possible due to native support of interoperability. Relayers and on-chain contracts are developed to support that. BNB Beacon Chain DEX remains a liquid venue of the exchange of assets on both chains. This dual-chain architecture will be ideal for users to take advantage of the fast trading on one side and build their decentralized apps on the other side. **The BNB Smart Chain** will be: +**The BNB Smart Chain** will be: - **A self-sovereign blockchain**: Provides security and safety with elected validators. - **EVM-compatible**: Supports all the existing Ethereum tooling along with faster finality and cheaper transaction fees. -- **Interoperable**: Comes with efficient native dual chain communication; Optimized for scaling high-performance dApps that require fast and smooth user experience. - **Distributed with on-chain governance**: Proof of Staked Authority brings in decentralization and community participants. As the native token, BNB will serve as both the gas of smart contract execution and tokens for staking. -More details in [White Paper](https://www.bnbchain.org/en#smartChain). +More details in [White Paper](https://github.com/bnb-chain/whitepaper/blob/master/WHITEPAPER.md). ## Key features @@ -34,18 +33,8 @@ To combine DPoS and PoA for consensus, BNB Smart Chain implement a novel consens 1. Blocks are produced by a limited set of validators. 2. Validators take turns to produce blocks in a PoA manner, similar to Ethereum's Clique consensus engine. -3. Validator set are elected in and out based on a staking based governance on BNB Beacon Chain. -4. The validator set change is relayed via a cross-chain communication mechanism. -5. Parlia consensus engine will interact with a set of [system contracts](https://docs.bnbchain.org/bnb-smart-chain/staking/overview/#system-contracts) to achieve liveness slash, revenue distributing and validator set renewing func. - - -### Light Client of BNB Beacon Chain - -To achieve the cross-chain communication from BNB Beacon Chain to BNB Smart Chain, need introduce a on-chain light client verification algorithm. -It contains two parts: - -1. [Stateless Precompiled contracts](https://github.com/bnb-chain/bsc/blob/master/core/vm/contracts_lightclient.go) to do tendermint header verification and Merkle Proof verification. -2. [Stateful solidity contracts](https://github.com/bnb-chain/bsc-genesis-contract/blob/master/contracts/TendermintLightClient.sol) to store validator set and trusted appHash. +3. Validator set are elected in and out based on a staking based governance on BNB Smart Chain. +4. Parlia consensus engine will interact with a set of [system contracts](https://docs.bnbchain.org/bnb-smart-chain/staking/overview/#system-contracts) to achieve liveness slash, revenue distributing and validator set renewing func. ## Native Token @@ -53,7 +42,6 @@ BNB will run on BNB Smart Chain in the same way as ETH runs on Ethereum so that BNB will be used to: 1. pay `gas` to deploy or invoke Smart Contract on BSC -2. perform cross-chain operations, such as transfer token assets across BNB Smart Chain and BNB Beacon Chain. ## Building the source @@ -247,9 +235,7 @@ running web servers, so malicious web pages could try to subvert locally availab APIs!** ### Operating a private network -- [BSC-Deploy](https://github.com/bnb-chain/node-deploy/): deploy tool for setting up both BNB Beacon Chain, BNB Smart Chain and the cross chain infrastructure between them. -- [BSC-Docker](https://github.com/bnb-chain/bsc-docker): deploy tool for setting up local BSC cluster in container. - +- [BSC-Deploy](https://github.com/bnb-chain/node-deploy/): deploy tool for setting up BNB Smart Chain. ## Running a bootnode From d141ff06c36b0ddc8469d75f82344f2ece2f5853 Mon Sep 17 00:00:00 2001 From: buddh0 Date: Wed, 4 Sep 2024 16:36:37 +0800 Subject: [PATCH 19/27] Revert "eth/handler: check lists in body before broadcast blocks (#2461)" This reverts commit 0c0958ff8709eab1d5d4d0adaa81c09a89ec75d9. --- core/block_validator.go | 46 ++++++++++++++++++----------------------- eth/handler.go | 34 ++++++++++++++++-------------- 2 files changed, 39 insertions(+), 41 deletions(-) diff --git a/core/block_validator.go b/core/block_validator.go index b82965a99d..d15e2cd786 100644 --- a/core/block_validator.go +++ b/core/block_validator.go @@ -66,31 +66,6 @@ func NewBlockValidator(config *params.ChainConfig, blockchain *BlockChain, engin return validator } -// ValidateListsInBody validates that UncleHash, WithdrawalsHash, and WithdrawalsHash correspond to the lists in the block body, respectively. -func ValidateListsInBody(block *types.Block) error { - header := block.Header() - if hash := types.CalcUncleHash(block.Uncles()); hash != header.UncleHash { - return fmt.Errorf("uncle root hash mismatch (header value %x, calculated %x)", header.UncleHash, hash) - } - if hash := types.DeriveSha(block.Transactions(), trie.NewStackTrie(nil)); hash != header.TxHash { - return fmt.Errorf("transaction root hash mismatch: have %x, want %x", hash, header.TxHash) - } - // Withdrawals are present after the Shanghai fork. - if header.WithdrawalsHash != nil { - // Withdrawals list must be present in body after Shanghai. - if block.Withdrawals() == nil { - return errors.New("missing withdrawals in block body") - } - if hash := types.DeriveSha(block.Withdrawals(), trie.NewStackTrie(nil)); hash != *header.WithdrawalsHash { - return fmt.Errorf("withdrawals root hash mismatch (header value %x, calculated %x)", *header.WithdrawalsHash, hash) - } - } else if block.Withdrawals() != nil { // Withdrawals turn into empty from nil when BlockBody has Sidecars - // Withdrawals are not allowed prior to shanghai fork - return errors.New("withdrawals present in block body") - } - return nil -} - // ValidateBody validates the given block's uncles and verifies the block // header's transaction and uncle roots. The headers are assumed to be already // validated at this point. @@ -108,12 +83,31 @@ func (v *BlockValidator) ValidateBody(block *types.Block) error { if err := v.engine.VerifyUncles(v.bc, block); err != nil { return err } + if hash := types.CalcUncleHash(block.Uncles()); hash != header.UncleHash { + return fmt.Errorf("uncle root hash mismatch (header value %x, calculated %x)", header.UncleHash, hash) + } validateFuns := []func() error{ func() error { - return ValidateListsInBody(block) + if hash := types.DeriveSha(block.Transactions(), trie.NewStackTrie(nil)); hash != header.TxHash { + return fmt.Errorf("transaction root hash mismatch: have %x, want %x", hash, header.TxHash) + } + return nil }, func() error { + // Withdrawals are present after the Shanghai fork. + if header.WithdrawalsHash != nil { + // Withdrawals list must be present in body after Shanghai. + if block.Withdrawals() == nil { + return errors.New("missing withdrawals in block body") + } + if hash := types.DeriveSha(block.Withdrawals(), trie.NewStackTrie(nil)); hash != *header.WithdrawalsHash { + return fmt.Errorf("withdrawals root hash mismatch (header value %x, calculated %x)", *header.WithdrawalsHash, hash) + } + } else if block.Withdrawals() != nil { // Withdrawals turn into empty from nil when BlockBody has Sidecars + // Withdrawals are not allowed prior to shanghai fork + return errors.New("withdrawals present in block body") + } // Blob transactions may be present after the Cancun fork. var blobs int for i, tx := range block.Transactions() { diff --git a/eth/handler.go b/eth/handler.go index cc3bf382b4..f65515166d 100644 --- a/eth/handler.go +++ b/eth/handler.go @@ -320,22 +320,26 @@ func newHandler(config *handlerConfig) (*handler, error) { } broadcastBlockWithCheck := func(block *types.Block, propagate bool) { + // All the block fetcher activities should be disabled + // after the transition. Print the warning log. + if h.merger.PoSFinalized() { + log.Warn("Unexpected validation activity", "hash", block.Hash(), "number", block.Number()) + return + } + // Reject all the PoS style headers in the first place. No matter + // the chain has finished the transition or not, the PoS headers + // should only come from the trusted consensus layer instead of + // p2p network. + if beacon, ok := h.chain.Engine().(*beacon.Beacon); ok { + if beacon.IsPoSHeader(block.Header()) { + log.Warn("unexpected post-merge header") + return + } + } if propagate { - checkErrs := make(chan error, 2) - - go func() { - checkErrs <- core.ValidateListsInBody(block) - }() - go func() { - checkErrs <- core.IsDataAvailable(h.chain, block) - }() - - for i := 0; i < cap(checkErrs); i++ { - err := <-checkErrs - if err != nil { - log.Error("Propagating invalid block", "number", block.Number(), "hash", block.Hash(), "err", err) - return - } + if err := core.IsDataAvailable(h.chain, block); err != nil { + log.Error("Propagating block with invalid sidecars", "number", block.Number(), "hash", block.Hash(), "err", err) + return } } h.BroadcastBlock(block, propagate) From 5289ecdfe2185a76c310e1c424b2177f3de43034 Mon Sep 17 00:00:00 2001 From: buddh0 Date: Wed, 4 Sep 2024 16:39:15 +0800 Subject: [PATCH 20/27] eth/protocols: add Withdrawals check before broadcastBlock --- eth/handler.go | 19 ++++--------------- 1 file changed, 4 insertions(+), 15 deletions(-) diff --git a/eth/handler.go b/eth/handler.go index f65515166d..f26162024b 100644 --- a/eth/handler.go +++ b/eth/handler.go @@ -320,23 +320,12 @@ func newHandler(config *handlerConfig) (*handler, error) { } broadcastBlockWithCheck := func(block *types.Block, propagate bool) { - // All the block fetcher activities should be disabled - // after the transition. Print the warning log. - if h.merger.PoSFinalized() { - log.Warn("Unexpected validation activity", "hash", block.Hash(), "number", block.Number()) - return - } - // Reject all the PoS style headers in the first place. No matter - // the chain has finished the transition or not, the PoS headers - // should only come from the trusted consensus layer instead of - // p2p network. - if beacon, ok := h.chain.Engine().(*beacon.Beacon); ok { - if beacon.IsPoSHeader(block.Header()) { - log.Warn("unexpected post-merge header") + if propagate { + if !(block.Header().WithdrawalsHash == nil && block.Withdrawals() == nil) && + !(block.Header().EmptyWithdrawalsHash() && block.Withdrawals() != nil && len(block.Withdrawals()) == 0) { + log.Error("Propagated block has invalid withdrawals") return } - } - if propagate { if err := core.IsDataAvailable(h.chain, block); err != nil { log.Error("Propagating block with invalid sidecars", "number", block.Number(), "hash", block.Hash(), "err", err) return From 8c1acb0b22204f100c15732762577be475db0fa5 Mon Sep 17 00:00:00 2001 From: Ethan Date: Mon, 23 Sep 2024 16:17:06 +0800 Subject: [PATCH 21/27] feat: add pascal hardfork (#2692) * feat: add pascal hardfork * config: fix default value for PascalTime and add OverridePascal (#2693) * chores: rename some contract name * feat: update bytecode on dev env --- cmd/geth/chaincmd.go | 5 + cmd/geth/config.go | 4 + cmd/geth/main.go | 1 + cmd/utils/flags.go | 7 +- core/genesis.go | 4 + .../pascal/chapel/CrossChainContract | 1 + .../pascal/chapel/GovHubContract | 1 + .../pascal/chapel/GovTokenContract | 1 + .../pascal/chapel/GovernorContract | 1 + .../pascal/chapel/LightClientContract | 1 + .../pascal/chapel/RelayerHubContract | 1 + .../pascal/chapel/RelayerIncentivizeContract | 1 + .../pascal/chapel/SlashContract | 1 + .../pascal/chapel/StakeCreditContract | 1 + .../pascal/chapel/StakeHubContract | 1 + .../pascal/chapel/StakingContract | 1 + .../pascal/chapel/SystemRewardContract | 1 + .../pascal/chapel/TimelockContract | 1 + .../pascal/chapel/TokenHubContract | 1 + .../pascal/chapel/TokenManagerContract | 1 + .../pascal/chapel/TokenRecoverPortalContract | 1 + .../pascal/chapel/ValidatorContract | 1 + .../pascal/mainnet/CrossChainContract | 1 + .../pascal/mainnet/GovHubContract | 1 + .../pascal/mainnet/GovTokenContract | 1 + .../pascal/mainnet/GovernorContract | 1 + .../pascal/mainnet/LightClientContract | 1 + .../pascal/mainnet/RelayerHubContract | 1 + .../pascal/mainnet/RelayerIncentivizeContract | 1 + .../pascal/mainnet/SlashContract | 1 + .../pascal/mainnet/StakeCreditContract | 1 + .../pascal/mainnet/StakeHubContract | 1 + .../pascal/mainnet/StakingContract | 1 + .../pascal/mainnet/SystemRewardContract | 1 + .../pascal/mainnet/TimelockContract | 1 + .../pascal/mainnet/TokenHubContract | 1 + .../pascal/mainnet/TokenManagerContract | 1 + .../pascal/mainnet/TokenRecoverPortalContract | 1 + .../pascal/mainnet/ValidatorContract | 1 + .../pascal/rialto/CrossChainContract | 1 + .../pascal/rialto/GovHubContract | 1 + .../pascal/rialto/GovTokenContract | 1 + .../pascal/rialto/GovernorContract | 1 + .../pascal/rialto/LightClientContract | 1 + .../pascal/rialto/RelayerHubContract | 1 + .../pascal/rialto/RelayerIncentivizeContract | 1 + .../pascal/rialto/SlashContract | 1 + .../pascal/rialto/StakeCreditContract | 1 + .../pascal/rialto/StakeHubContract | 1 + .../pascal/rialto/StakingContract | 1 + .../pascal/rialto/SystemRewardContract | 1 + .../pascal/rialto/TimelockContract | 1 + .../pascal/rialto/TokenHubContract | 1 + .../pascal/rialto/TokenManagerContract | 1 + .../pascal/rialto/TokenRecoverPortalContract | 1 + .../pascal/rialto/ValidatorContract | 1 + core/systemcontracts/pascal/types.go | 168 +++++++++++ core/systemcontracts/upgrade.go | 280 ++++++++++++++++++ eth/backend.go | 4 + eth/ethconfig/config.go | 3 + eth/ethconfig/gen_config.go | 10 +- params/config.go | 33 ++- 62 files changed, 566 insertions(+), 4 deletions(-) create mode 100644 core/systemcontracts/pascal/chapel/CrossChainContract create mode 100644 core/systemcontracts/pascal/chapel/GovHubContract create mode 100644 core/systemcontracts/pascal/chapel/GovTokenContract create mode 100644 core/systemcontracts/pascal/chapel/GovernorContract create mode 100644 core/systemcontracts/pascal/chapel/LightClientContract create mode 100644 core/systemcontracts/pascal/chapel/RelayerHubContract create mode 100644 core/systemcontracts/pascal/chapel/RelayerIncentivizeContract create mode 100644 core/systemcontracts/pascal/chapel/SlashContract create mode 100644 core/systemcontracts/pascal/chapel/StakeCreditContract create mode 100644 core/systemcontracts/pascal/chapel/StakeHubContract create mode 100644 core/systemcontracts/pascal/chapel/StakingContract create mode 100644 core/systemcontracts/pascal/chapel/SystemRewardContract create mode 100644 core/systemcontracts/pascal/chapel/TimelockContract create mode 100644 core/systemcontracts/pascal/chapel/TokenHubContract create mode 100644 core/systemcontracts/pascal/chapel/TokenManagerContract create mode 100644 core/systemcontracts/pascal/chapel/TokenRecoverPortalContract create mode 100644 core/systemcontracts/pascal/chapel/ValidatorContract create mode 100644 core/systemcontracts/pascal/mainnet/CrossChainContract create mode 100644 core/systemcontracts/pascal/mainnet/GovHubContract create mode 100644 core/systemcontracts/pascal/mainnet/GovTokenContract create mode 100644 core/systemcontracts/pascal/mainnet/GovernorContract create mode 100644 core/systemcontracts/pascal/mainnet/LightClientContract create mode 100644 core/systemcontracts/pascal/mainnet/RelayerHubContract create mode 100644 core/systemcontracts/pascal/mainnet/RelayerIncentivizeContract create mode 100644 core/systemcontracts/pascal/mainnet/SlashContract create mode 100644 core/systemcontracts/pascal/mainnet/StakeCreditContract create mode 100644 core/systemcontracts/pascal/mainnet/StakeHubContract create mode 100644 core/systemcontracts/pascal/mainnet/StakingContract create mode 100644 core/systemcontracts/pascal/mainnet/SystemRewardContract create mode 100644 core/systemcontracts/pascal/mainnet/TimelockContract create mode 100644 core/systemcontracts/pascal/mainnet/TokenHubContract create mode 100644 core/systemcontracts/pascal/mainnet/TokenManagerContract create mode 100644 core/systemcontracts/pascal/mainnet/TokenRecoverPortalContract create mode 100644 core/systemcontracts/pascal/mainnet/ValidatorContract create mode 100644 core/systemcontracts/pascal/rialto/CrossChainContract create mode 100644 core/systemcontracts/pascal/rialto/GovHubContract create mode 100644 core/systemcontracts/pascal/rialto/GovTokenContract create mode 100644 core/systemcontracts/pascal/rialto/GovernorContract create mode 100644 core/systemcontracts/pascal/rialto/LightClientContract create mode 100644 core/systemcontracts/pascal/rialto/RelayerHubContract create mode 100644 core/systemcontracts/pascal/rialto/RelayerIncentivizeContract create mode 100644 core/systemcontracts/pascal/rialto/SlashContract create mode 100644 core/systemcontracts/pascal/rialto/StakeCreditContract create mode 100644 core/systemcontracts/pascal/rialto/StakeHubContract create mode 100644 core/systemcontracts/pascal/rialto/StakingContract create mode 100644 core/systemcontracts/pascal/rialto/SystemRewardContract create mode 100644 core/systemcontracts/pascal/rialto/TimelockContract create mode 100644 core/systemcontracts/pascal/rialto/TokenHubContract create mode 100644 core/systemcontracts/pascal/rialto/TokenManagerContract create mode 100644 core/systemcontracts/pascal/rialto/TokenRecoverPortalContract create mode 100644 core/systemcontracts/pascal/rialto/ValidatorContract create mode 100644 core/systemcontracts/pascal/types.go diff --git a/cmd/geth/chaincmd.go b/cmd/geth/chaincmd.go index 870527434d..0433c9d051 100644 --- a/cmd/geth/chaincmd.go +++ b/cmd/geth/chaincmd.go @@ -64,6 +64,7 @@ var ( utils.CachePreimagesFlag, utils.OverridePassedForkTime, utils.OverrideBohr, + utils.OverridePascal, utils.OverrideVerkle, utils.MultiDataBaseFlag, }, utils.DatabaseFlags), @@ -262,6 +263,10 @@ func initGenesis(ctx *cli.Context) error { v := ctx.Uint64(utils.OverrideBohr.Name) overrides.OverrideBohr = &v } + if ctx.IsSet(utils.OverridePascal.Name) { + v := ctx.Uint64(utils.OverridePascal.Name) + overrides.OverridePascal = &v + } if ctx.IsSet(utils.OverrideVerkle.Name) { v := ctx.Uint64(utils.OverrideVerkle.Name) overrides.OverrideVerkle = &v diff --git a/cmd/geth/config.go b/cmd/geth/config.go index 10d2224a14..44f57f5d95 100644 --- a/cmd/geth/config.go +++ b/cmd/geth/config.go @@ -195,6 +195,10 @@ func makeFullNode(ctx *cli.Context) (*node.Node, ethapi.Backend) { v := ctx.Uint64(utils.OverrideBohr.Name) cfg.Eth.OverrideBohr = &v } + if ctx.IsSet(utils.OverridePascal.Name) { + v := ctx.Uint64(utils.OverridePascal.Name) + cfg.Eth.OverridePascal = &v + } if ctx.IsSet(utils.OverrideVerkle.Name) { v := ctx.Uint64(utils.OverrideVerkle.Name) cfg.Eth.OverrideVerkle = &v diff --git a/cmd/geth/main.go b/cmd/geth/main.go index e2c277b64f..47b7b99e81 100644 --- a/cmd/geth/main.go +++ b/cmd/geth/main.go @@ -74,6 +74,7 @@ var ( utils.RialtoHash, utils.OverridePassedForkTime, utils.OverrideBohr, + utils.OverridePascal, utils.OverrideVerkle, utils.OverrideFullImmutabilityThreshold, utils.OverrideMinBlocksForBlobRequests, diff --git a/cmd/utils/flags.go b/cmd/utils/flags.go index f26ce3881e..ff16a6b0f4 100644 --- a/cmd/utils/flags.go +++ b/cmd/utils/flags.go @@ -310,7 +310,7 @@ var ( } OverridePassedForkTime = &cli.Uint64Flag{ Name: "override.passedforktime", - Usage: "Manually specify the hard fork timestamp except the last one, overriding the bundled setting", + Usage: "Manually specify the hard fork timestamps which have passed on the mainnet, overriding the bundled setting", Category: flags.EthCategory, } OverrideBohr = &cli.Uint64Flag{ @@ -318,6 +318,11 @@ var ( Usage: "Manually specify the Bohr fork timestamp, overriding the bundled setting", Category: flags.EthCategory, } + OverridePascal = &cli.Uint64Flag{ + Name: "override.pascal", + Usage: "Manually specify the Pascal fork timestamp, overriding the bundled setting", + Category: flags.EthCategory, + } OverrideVerkle = &cli.Uint64Flag{ Name: "override.verkle", Usage: "Manually specify the Verkle fork timestamp, overriding the bundled setting", diff --git a/core/genesis.go b/core/genesis.go index 60d45f86ae..e88f4120fc 100644 --- a/core/genesis.go +++ b/core/genesis.go @@ -218,6 +218,7 @@ func (e *GenesisMismatchError) Error() string { type ChainOverrides struct { OverridePassedForkTime *uint64 OverrideBohr *uint64 + OverridePascal *uint64 OverrideVerkle *uint64 } @@ -256,6 +257,9 @@ func SetupGenesisBlockWithOverride(db ethdb.Database, triedb *triedb.Database, g if overrides != nil && overrides.OverrideBohr != nil { config.BohrTime = overrides.OverrideBohr } + if overrides != nil && overrides.OverridePascal != nil { + config.PascalTime = overrides.OverridePascal + } if overrides != nil && overrides.OverrideVerkle != nil { config.VerkleTime = overrides.OverrideVerkle } diff --git a/core/systemcontracts/pascal/chapel/CrossChainContract b/core/systemcontracts/pascal/chapel/CrossChainContract new file mode 100644 index 0000000000..ea4c9f9f22 --- /dev/null +++ b/core/systemcontracts/pascal/chapel/CrossChainContract @@ -0,0 +1 @@ +608060405234801561001057600080fd5b50600436106102695760003560e01c806375d47a0a11610151578063c81b1662116100c3578063e1c7392a11610087578063e1c7392a14610839578063e3b0480514610841578063e6400bbe14610861578063f7a251d714610869578063f9a2bbc7146108e1578063fd6a6879146108e957610269565b8063c81b1662146107ea578063ccc108d7146107f2578063d31f968d146107fa578063dc927faf14610829578063df8079e91461083157610269565b8063a78abc1611610115578063a78abc16146106d3578063aa82dce1146106db578063aad56063146106e3578063ab51bb96146106eb578063ac4317511461070c578063c27cdcfb146107ca57610269565b806375d47a0a146105d85780637e434d54146105e057806384013b6a146105e85780639dc09262146106c3578063a1a11bf5146106cb57610269565b80633a648b15116101ea57806351e80672116101ae57806351e806721461052a5780635f832177146105325780636bacff2c146105605780636e47a51a146105a85780636e47b482146105c857806374f079b8146105d057610269565b80633a648b15146104b6578063422f9050146104f257806343756e5c14610512578063493279b11461051a57806351b4dce31461052257610269565b806328087028116102315780632808702814610434578063299b533d1461043c5780632af6f399146104705780632ff32aea1461048d578063308325f4146104ae57610269565b80630e2374a51461026e57806314b3023b146102925780631d130935146102ac5780631e275ae1146102c857806322556cdc1461042c575b600080fd5b6102766108f1565b604080516001600160a01b039092168252519081900360200190f35b61029a6108f7565b60408051918252519081900360200190f35b6102b46108fd565b604080519115158252519081900360200190f35b61042a60048036036101008110156102df57600080fd5b81018160a081016080820135600160201b8111156102fc57600080fd5b82018360208201111561030e57600080fd5b803590602001918460018302840111600160201b8311171561032f57600080fd5b919390929091602081019035600160201b81111561034c57600080fd5b82018360208201111561035e57600080fd5b803590602001918460018302840111600160201b8311171561037f57600080fd5b919390929091602081019035600160201b81111561039c57600080fd5b8201836020820111156103ae57600080fd5b803590602001918460018302840111600160201b831117156103cf57600080fd5b919390929091602081019035600160201b8111156103ec57600080fd5b8201836020820111156103fe57600080fd5b803590602001918460018302840111600160201b8311171561041f57600080fd5b509092509050610906565b005b61029a610ba7565b610276610bac565b6104596004803603602081101561045257600080fd5b5035610bb2565b6040805161ffff9092168252519081900360200190f35b6102b46004803603602081101561048657600080fd5b5035610bc8565b610495610bdd565b60408051600792830b90920b8252519081900360200190f35b61029a610be6565b6104d6600480360360208110156104cc57600080fd5b503560ff16610bec565b604080516001600160401b039092168252519081900360200190f35b6102b46004803603602081101561050857600080fd5b503560ff16610c07565b610276610c1c565b610459610c22565b610276610c27565b610276610c2d565b61042a6004803603604081101561054857600080fd5b506001600160a01b0381358116916020013516610c33565b61057d6004803603602081101561057657600080fd5b5035610dac565b6040805161ffff90941684526001600160801b03909216602084015282820152519081900360600190f35b610276600480360360208110156105be57600080fd5b503560ff16610ddb565b610276610df6565b61029a610dfc565b610276610e02565b610276610e08565b61042a600480360360a08110156105fe57600080fd5b810190602081018135600160201b81111561061857600080fd5b82018360208201111561062a57600080fd5b803590602001918460018302840111600160201b8311171561064b57600080fd5b919390929091602081019035600160201b81111561066857600080fd5b82018360208201111561067a57600080fd5b803590602001918460018302840111600160201b8311171561069b57600080fd5b919350915080356001600160401b03908116916020810135909116906040013560ff16610e0e565b6102766111c2565b6102766111c8565b6102b46111ce565b6102766111d7565b6102766111dd565b6106f36111e3565b6040805163ffffffff9092168252519081900360200190f35b61042a6004803603604081101561072257600080fd5b810190602081018135600160201b81111561073c57600080fd5b82018360208201111561074e57600080fd5b803590602001918460018302840111600160201b8311171561076f57600080fd5b919390929091602081019035600160201b81111561078c57600080fd5b82018360208201111561079e57600080fd5b803590602001918460018302840111600160201b831117156107bf57600080fd5b5090925090506111e8565b6104d6600480360360208110156107e057600080fd5b503560ff16611228565b610276611243565b61042a611249565b6102b46004803603604081101561081057600080fd5b5080356001600160a01b0316906020013560ff16611409565b610276611429565b61027661142f565b61042a611435565b6104d66004803603602081101561085757600080fd5b503560ff166114c7565b61042a6114e2565b61042a6004803603606081101561087f57600080fd5b60ff8235169190810190604081016020820135600160201b8111156108a357600080fd5b8201836020820111156108b557600080fd5b803590602001918460018302840111600160201b831117156108d657600080fd5b91935091503561165b565b6102766116fd565b610276611703565b61200181565b60015481565b600b5460ff1681565b60005460ff1661094b576040805162461bcd60e51b81526020600482015260196024820152600080516020611769833981519152604482015290519081900360640190fd5b604080516337d7f9c160e21b81526001600160401b038b35166004820181905291516110039163df5fe704916024808301926020929190829003018186803b15801561099657600080fd5b505afa1580156109aa573d6000803e3d6000fd5b505050506040513d60208110156109c057600080fd5b50516109fd5760405162461bcd60e51b81526004018080602001828103825260238152602001806117896023913960400191505060405180910390fd5b604080516337d7f9c160e21b815260208c8101356001600160401b03166004830181905292516110039263df5fe704926024808301939192829003018186803b158015610a4957600080fd5b505afa158015610a5d573d6000803e3d6000fd5b505050506040513d6020811015610a7357600080fd5b5051610ab05760405162461bcd60e51b81526004018080602001828103825260238152602001806117896023913960400191505060405180910390fd5b60608b013560ff81166000908152600560205260409020546001600160401b03909116906001600160a01b0316610b29576040805162461bcd60e51b815260206004820152601860248201527718da185b9b995b081a5cc81b9bdd081cdd5c1c1bdc9d195960421b604482015290519081900360640190fd5b600b5460ff1615610b6d576040805162461bcd60e51b81526020600482015260096024820152681cdd5cdc195b99195960ba1b604482015290519081900360640190fd5b6040805162461bcd60e51b815260206004820152600a60248201526919195c1c9958d85d195960b21b604482015290519081900360640190fd5b603281565b61200581565b600d6020526000908152604090205461ffff1681565b600e6020526000908152604090205460ff1681565b60045460070b81565b60025481565b600a602052600090815260409020546001600160401b031681565b60096020526000908152604090205460ff1681565b61100181565b606181565b61200681565b61200081565b60005460ff16610c78576040805162461bcd60e51b81526020600482015260196024820152600080516020611769833981519152604482015290519081900360640190fd5b6040805163569e4ed360e11b815233600482015290516000916110009163ad3c9da691602480820192602092909190829003018186803b158015610cbb57600080fd5b505afa158015610ccf573d6000803e3d6000fd5b505050506040513d6020811015610ce557600080fd5b505160408051633d42651560e11b8152905191925060009161100091637a84ca2a916004808301926020929190829003018186803b158015610d2657600080fd5b505afa158015610d3a573d6000803e3d6000fd5b505050506040513d6020811015610d5057600080fd5b5051905080610d5d575060155b600082118015610d6d5750808211155b610b6d576040805162461bcd60e51b815260206004820152600b60248201526a1b9bdd0818d8589a5b995d60aa1b604482015290519081900360640190fd5b600c602052600090815260409020805460019091015461ffff8216916201000090046001600160801b03169083565b6005602052600090815260409020546001600160a01b031681565b61100581565b60035481565b61100881565b61200381565b60005460ff16610e53576040805162461bcd60e51b81526020600482015260196024820152600080516020611769833981519152604482015290519081900360640190fd5b60408051630a83aaa960e31b815233600482015290516110069163541d5548916024808301926020929190829003018186803b158015610e9257600080fd5b505afa158015610ea6573d6000803e3d6000fd5b505050506040513d6020811015610ebc57600080fd5b5051610f0f576040805162461bcd60e51b815260206004820152601f60248201527f746865206d73672073656e646572206973206e6f7420612072656c6179657200604482015290519081900360640190fd5b60ff8116600090815260086020526040902054829082906001600160401b039081169083168114610f7f576040805162461bcd60e51b815260206004820152601560248201527439b2b8bab2b731b2903737ba1034b71037b93232b960591b604482015290519081900360640190fd5b60ff8216600090815260086020908152604091829020805467ffffffffffffffff1916600185016001600160401b039081169190911790915582516337d7f9c160e21b81529089166004820152915188926110039263df5fe70492602480840193829003018186803b158015610ff457600080fd5b505afa158015611008573d6000803e3d6000fd5b505050506040513d602081101561101e57600080fd5b505161105b5760405162461bcd60e51b81526004018080602001828103825260238152602001806117896023913960400191505060405180910390fd5b60ff851660009081526005602052604090205485906001600160a01b03166110c5576040805162461bcd60e51b815260206004820152601860248201527718da185b9b995b081a5cc81b9bdd081cdd5c1c1bdc9d195960421b604482015290519081900360640190fd5b60ff86166000908152600a6020526040902054889087906001600160401b03908116908316101561112e576040805162461bcd60e51b815260206004820152600e60248201526d3a37b79037b632103432b0b232b960911b604482015290519081900360640190fd5b60ff81166000908152600a60205260409020546001600160401b03838116911614610b295760ff8181166000908152600a60205260409020805467ffffffffffffffff19166001600160401b038516179055600b541615610b6d576040805162461bcd60e51b81526020600482015260096024820152681cdd5cdc195b99195960ba1b604482015290519081900360640190fd5b61100781565b61100681565b60005460ff1681565b61200281565b61300081565b600081565b3361100714610b295760405162461bcd60e51b815260040180806020018281038252602e81526020018061173b602e913960400191505060405180910390fd5b6008602052600090815260409020546001600160401b031681565b61100281565b60005460ff1661128e576040805162461bcd60e51b81526020600482015260196024820152600080516020611769833981519152604482015290519081900360640190fd5b6040805163569e4ed360e11b815233600482015290516000916110009163ad3c9da691602480820192602092909190829003018186803b1580156112d157600080fd5b505afa1580156112e5573d6000803e3d6000fd5b505050506040513d60208110156112fb57600080fd5b505160408051633d42651560e11b8152905191925060009161100091637a84ca2a916004808301926020929190829003018186803b15801561133c57600080fd5b505afa158015611350573d6000803e3d6000fd5b505050506040513d602081101561136657600080fd5b5051905080611373575060155b6000821180156113835750808211155b6113c2576040805162461bcd60e51b815260206004820152600b60248201526a1b9bdd0818d8589a5b995d60aa1b604482015290519081900360640190fd5b600b5460ff16610b6d576040805162461bcd60e51b815260206004820152600d60248201526c1b9bdd081cdd5cdc195b991959609a1b604482015290519081900360640190fd5b600660209081526000928352604080842090915290825290205460ff1681565b61100381565b61200481565b60005460ff161561148d576040805162461bcd60e51b815260206004820152601960248201527f74686520636f6e747261637420616c726561647920696e697400000000000000604482015290519081900360640190fd5b603260019081556004805467ffffffffffffffff19166001600160401b03179055600060028190556003819055805460ff19169091179055565b6007602052600090815260409020546001600160401b031681565b60005460ff16611527576040805162461bcd60e51b81526020600482015260196024820152600080516020611769833981519152604482015290519081900360640190fd5b6040805163569e4ed360e11b815233600482015290516000916110009163ad3c9da691602480820192602092909190829003018186803b15801561156a57600080fd5b505afa15801561157e573d6000803e3d6000fd5b505050506040513d602081101561159457600080fd5b505160408051633d42651560e11b8152905191925060009161100091637a84ca2a916004808301926020929190829003018186803b1580156115d557600080fd5b505afa1580156115e9573d6000803e3d6000fd5b505050506040513d60208110156115ff57600080fd5b505190508061160c575060155b60008211801561161c5750808211155b610b29576040805162461bcd60e51b815260206004820152600b60248201526a1b9bdd0818d8589a5b995d60aa1b604482015290519081900360640190fd5b60005460ff166116a0576040805162461bcd60e51b81526020600482015260196024820152600080516020611769833981519152604482015290519081900360640190fd5b33600090815260066020908152604080832060ff8089168552925290912054859116610b6d5760405162461bcd60e51b815260040180806020018281038252603181526020018061170a6031913960400191505060405180910390fd5b61100081565b6110048156fe74686520636f6e747261637420616e64206368616e6e656c2068617665206e6f74206265656e2072656769737465726564746865206d6573736167652073656e646572206d75737420626520676f7665726e616e636520636f6e747261637474686520636f6e7472616374206e6f7420696e697420796574000000000000006c6967687420636c69656e74206e6f742073796e632074686520626c6f636b20796574a164736f6c6343000604000a \ No newline at end of file diff --git a/core/systemcontracts/pascal/chapel/GovHubContract b/core/systemcontracts/pascal/chapel/GovHubContract new file mode 100644 index 0000000000..67aa4ec500 --- /dev/null +++ b/core/systemcontracts/pascal/chapel/GovHubContract @@ -0,0 +1 @@ +608060405234801561001057600080fd5b506004361061018e5760003560e01c80639ab1a373116100de578063ab51bb9611610097578063dc927faf11610071578063dc927faf146104b1578063df8079e9146104b9578063f9a2bbc7146104c1578063fd6a6879146104c95761018e565b8063ab51bb96146104a1578063c81b1662146104a9578063c8509d811461031c5761018e565b80639ab1a3731461045d5780639dc0926214610465578063a1a11bf51461046d578063a78abc1614610475578063aa82dce114610491578063aad56063146104995761018e565b806351b4dce31161014b57806375d47a0a1161012557806375d47a0a1461030c5780637e434d5414610314578063831d65d11461031c57806388e4194e146103965761018e565b806351b4dce3146102f457806351e80672146102fc5780636e47b482146103045761018e565b80630e2374a5146101935780631182b875146101b757806328087028146102a45780633a21baae146102ac57806343756e5c146102cd578063493279b1146102d5575b600080fd5b61019b6104d1565b604080516001600160a01b039092168252519081900360200190f35b61022f600480360360408110156101cd57600080fd5b60ff8235169190810190604081016020820135600160201b8111156101f157600080fd5b82018360208201111561020357600080fd5b803590602001918460018302840111600160201b8311171561022457600080fd5b5090925090506104d7565b6040805160208082528351818301528351919283929083019185019080838360005b83811015610269578181015183820152602001610251565b50505050905090810190601f1680156102965780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b61019b610553565b6102b4610559565b6040805163ffffffff9092168252519081900360200190f35b61019b61055e565b6102dd610564565b6040805161ffff9092168252519081900360200190f35b61019b610569565b61019b61056f565b61019b610575565b61019b61057b565b61019b610581565b6103946004803603604081101561033257600080fd5b60ff8235169190810190604081016020820135600160201b81111561035657600080fd5b82018360208201111561036857600080fd5b803590602001918460018302840111600160201b8311171561038957600080fd5b509092509050610587565b005b610394600480360360608110156103ac57600080fd5b810190602081018135600160201b8111156103c657600080fd5b8201836020820111156103d857600080fd5b803590602001918460018302840111600160201b831117156103f957600080fd5b919390929091602081019035600160201b81111561041657600080fd5b82018360208201111561042857600080fd5b803590602001918460018302840111600160201b8311171561044957600080fd5b9193509150356001600160a01b03166105c7565b6102b46106b2565b61019b6106b7565b61019b6106bd565b61047d6106c3565b604080519115158252519081900360200190f35b61019b6106cc565b61019b6106d2565b6102b46106d8565b61019b6106dd565b61019b6106e3565b61019b6106e9565b61019b6106ef565b61019b6106f5565b61200181565b606033612000146105195760405162461bcd60e51b815260040180806020018281038252602f815260200180610ace602f913960400191505060405180910390fd5b6040805162461bcd60e51b815260206004820152600a60248201526919195c1c9958d85d195960b21b604482015290519081900360640190fd5b61200581565b606681565b61100181565b606181565b61200681565b61200081565b61100581565b61100881565b61200381565b33612000146105195760405162461bcd60e51b815260040180806020018281038252602f815260200180610ace602f913960400191505060405180910390fd5b33612006146106075760405162461bcd60e51b8152600401808060200182810382526031815260200180610afd6031913960400191505060405180910390fd5b61060f610aa3565b604051806060016040528087878080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250505090825250604080516020601f8801819004810282018101909252868152918101919087908790819084018382808284376000920191909152505050908252506001600160a01b03841660209091015290506106a9816106fb565b50505050505050565b606581565b61100781565b61100681565b60005460ff1681565b61200281565b61300081565b600081565b61100281565b61100381565b61200481565b61100081565b61100481565b600061070a8260400151610a9d565b61077657604080516020808252601c908201527f74686520746172676574206973206e6f74206120636f6e7472616374000000008183015290517f70e72399380dcfb0338abc03dc8d47f9f470ada8e769c9a78d644ea97385ecb29181900360600190a1506065610a98565b81604001516001600160a01b031663ac431751836000015184602001516040518363ffffffff1660e01b8152600401808060200180602001838103835285818151815260200191508051906020019080838360005b838110156107e35781810151838201526020016107cb565b50505050905090810190601f1680156108105780820380516001836020036101000a031916815260200191505b50838103825284518152845160209182019186019080838360005b8381101561084357818101518382015260200161082b565b50505050905090810190601f1680156108705780820380516001836020036101000a031916815260200191505b50945050505050600060405180830381600087803b15801561089157600080fd5b505af19250505080156108a2575060015b610a94576040516000815260443d10156108be5750600061095b565b60046000803e60005160e01c6308c379a081146108df57600091505061095b565b60043d036004833e81513d602482011167ffffffffffffffff8211171561090b5760009250505061095b565b808301805167ffffffffffffffff81111561092d57600094505050505061095b565b8060208301013d860181111561094b5760009550505050505061095b565b601f01601f191660405250925050505b806109665750610a09565b7f70e72399380dcfb0338abc03dc8d47f9f470ada8e769c9a78d644ea97385ecb2816040518080602001828103825283818151815260200191508051906020019080838360005b838110156109c55781810151838201526020016109ad565b50505050905090810190601f1680156109f25780820380516001836020036101000a031916815260200191505b509250505060405180910390a16066915050610a98565b3d808015610a33576040519150601f19603f3d011682016040523d82523d6000602084013e610a38565b606091505b5060408051602080825283518183015283517f1279f84165b4fd69c35e1f338ff107231b036c655cd1688851e011ce617c4e8d9385939283929183019190850190808383600083156109c55781810151838201526020016109ad565b5060005b919050565b3b151590565b6040518060600160405280606081526020016060815260200160006001600160a01b03168152509056fe746865206d6573736167652073656e646572206d7573742062652063726f737320636861696e20636f6e7472616374746865206d73672073656e646572206d75737420626520676f7665726e6f722074696d656c6f636b20636f6e7472616374a164736f6c6343000604000a \ No newline at end of file diff --git a/core/systemcontracts/pascal/chapel/GovTokenContract b/core/systemcontracts/pascal/chapel/GovTokenContract new file mode 100644 index 0000000000..313af63673 --- /dev/null +++ b/core/systemcontracts/pascal/chapel/GovTokenContract @@ -0,0 +1 @@ +608060405234801561001057600080fd5b50600436106101f05760003560e01c806370a082311161010f5780639ab24eb0116100a2578063d505accf11610071578063d505accf14610479578063dd62ed3e1461048c578063e5ed5b1e1461049f578063f1127ed8146104b257600080fd5b80639ab24eb01461042d578063a457c2d714610440578063a9059cbb14610453578063c3cda5201461046657600080fd5b806384b0196e116100de57806384b0196e146103d85780638e539e8c146103f357806391ddadf41461040657806395d89b411461042557600080fd5b806370a082311461038657806379cc6790146103af5780637ecebe00146103bd5780638129fc1c146103d057600080fd5b806339509351116101875780634bf5d7e9116101565780634bf5d7e9146102ff578063587cde1e146103075780635c19a95c1461034b5780636fcfff451461035e57600080fd5b806339509351146102b35780633a46b1a8146102c657806342966c68146102d957806344840775146102ec57600080fd5b806323b872dd116101c357806323b872dd146102745780633041949b14610287578063313ce5671461029c5780633644e515146102ab57600080fd5b8063039c91fc146101f557806306fdde0314610234578063095ea7b31461024957806318160ddd1461026c575b600080fd5b61022161020336600461209b565b61013060209081526000928352604080842090915290825290205481565b6040519081526020015b60405180910390f35b61023c6104ef565b60405161022b9190612114565b61025c610257366004612127565b610581565b604051901515815260200161022b565b603554610221565b61025c610282366004612151565b61059b565b61029a61029536600461209b565b6105bf565b005b6040516012815260200161022b565b6102216105f8565b61025c6102c1366004612127565b610607565b6102216102d4366004612127565b610629565b61029a6102e736600461218d565b6106ae565b61029a6102fa3660046121a6565b6106c7565b61023c610740565b61033361031536600461222a565b6001600160a01b03908116600090815260fe60205260409020541690565b6040516001600160a01b03909116815260200161022b565b61029a61035936600461222a565b6107d8565b61037161036c36600461222a565b6107e5565b60405163ffffffff909116815260200161022b565b61022161039436600461222a565b6001600160a01b031660009081526033602052604090205490565b61029a6102e7366004612127565b6102216103cb36600461222a565b610807565b61029a610825565b6103e0610a05565b60405161022b9796959493929190612245565b61022161040136600461218d565b610aa3565b61040e610b0b565b60405165ffffffffffff909116815260200161022b565b61023c610b16565b61022161043b36600461222a565b610b25565b61025c61044e366004612127565b610ba7565b61025c610461366004612127565b610c22565b61029a6104743660046122ec565b610c30565b61029a610487366004612344565b610d66565b61022161049a36600461209b565b610eca565b61029a6104ad36600461209b565b610ef5565b6104c56104c03660046123ae565b610f25565b60408051825163ffffffff1681526020928301516001600160e01b0316928101929092520161022b565b6060603680546104fe906123ee565b80601f016020809104026020016040519081016040528092919081815260200182805461052a906123ee565b80156105775780601f1061054c57610100808354040283529160200191610577565b820191906000526020600020905b81548152906001019060200180831161055a57829003601f168201915b5050505050905090565b60003361058f818585610fa9565b60019150505b92915050565b6000336105a9858285610fc2565b6105b485858561103c565b506001949350505050565b33612002146105ea57604051630f22c43960e41b815261200260048201526024015b60405180910390fd5b6105f48282611055565b5050565b6000610602611185565b905090565b60003361058f81858561061a8383610eca565b6106249190612438565b610fa9565b6000610633610b0b565b65ffffffffffff1682106106855760405162461bcd60e51b815260206004820152601960248201527804552433230566f7465733a20667574757265206c6f6f6b757603c1b60448201526064016105e1565b6001600160a01b038316600090815260ff602052604090206106a7908361118f565b9392505050565b60405163e5d8776760e01b815260040160405180910390fd5b33612002146106ed57604051630f22c43960e41b815261200260048201526024016105e1565b8160005b818110156107395761072985858381811061070e5761070e61244b565b9050602002016020810190610723919061222a565b84611055565b61073281612461565b90506106f1565b5050505050565b60604361074b610b0b565b65ffffffffffff16146107a05760405162461bcd60e51b815260206004820152601d60248201527f4552433230566f7465733a2062726f6b656e20636c6f636b206d6f646500000060448201526064016105e1565b5060408051808201909152601d81527f6d6f64653d626c6f636b6e756d6265722666726f6d3d64656661756c74000000602082015290565b6107e23382611278565b50565b6001600160a01b038116600090815260ff6020526040812054610595906112f2565b6001600160a01b038116600090815260cb6020526040812054610595565b600054610100900460ff16158080156108455750600054600160ff909116105b8061085f5750303b15801561085f575060005460ff166001145b6108c25760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084016105e1565b6000805460ff1916600117905580156108e5576000805461ff0019166101001790555b3341146109055760405163022d8c9560e31b815260040160405180910390fd5b3a15610924576040516383f1b1d360e01b815260040160405180910390fd5b610978604051806040016040528060148152602001732129a19023b7bb32b93730b731b2902a37b5b2b760611b8152506040518060400160405280600681526020016533b7bb21272160d11b81525061135b565b61098061138c565b6109b5604051806040016040528060148152602001732129a19023b7bb32b93730b731b2902a37b5b2b760611b8152506113b5565b6109bd61138c565b80156107e2576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a150565b6000606080600080600060606097546000801b148015610a255750609854155b610a695760405162461bcd60e51b81526020600482015260156024820152741152540dcc4c8e88155b9a5b9a5d1a585b1a5e9959605a1b60448201526064016105e1565b610a716113ff565b610a7961140e565b60408051600080825260208201909252600f60f81b9b939a50919850469750309650945092509050565b6000610aad610b0b565b65ffffffffffff168210610aff5760405162461bcd60e51b815260206004820152601960248201527804552433230566f7465733a20667574757265206c6f6f6b757603c1b60448201526064016105e1565b6105956101008361118f565b60006106024361141d565b6060603780546104fe906123ee565b6001600160a01b038116600090815260ff60205260408120548015610b94576001600160a01b038316600090815260ff6020526040902080546000198301908110610b7257610b7261244b565b60009182526020909120015464010000000090046001600160e01b0316610b97565b60005b6001600160e01b03169392505050565b60003381610bb58286610eca565b905083811015610c155760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b60648201526084016105e1565b6105b48286868403610fa9565b60003361058f81858561103c565b83421115610c805760405162461bcd60e51b815260206004820152601d60248201527f4552433230566f7465733a207369676e6174757265206578706972656400000060448201526064016105e1565b604080517fe48329057bfd03d55e49b547132e39cffd9c1820ad7b9d4c5307691425d15adf60208201526001600160a01b038816918101919091526060810186905260808101859052600090610cfa90610cf29060a00160405160208183030381529060405280519060200120611484565b8585856114b1565b9050610d05816114d9565b8614610d535760405162461bcd60e51b815260206004820152601960248201527f4552433230566f7465733a20696e76616c6964206e6f6e63650000000000000060448201526064016105e1565b610d5d8188611278565b50505050505050565b83421115610db65760405162461bcd60e51b815260206004820152601d60248201527f45524332305065726d69743a206578706972656420646561646c696e6500000060448201526064016105e1565b60007f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c9888888610de58c6114d9565b6040805160208101969096526001600160a01b0394851690860152929091166060840152608083015260a082015260c0810186905260e0016040516020818303038152906040528051906020012090506000610e4082611484565b90506000610e50828787876114b1565b9050896001600160a01b0316816001600160a01b031614610eb35760405162461bcd60e51b815260206004820152601e60248201527f45524332305065726d69743a20696e76616c6964207369676e6174757265000060448201526064016105e1565b610ebe8a8a8a610fa9565b50505050505050505050565b6001600160a01b03918216600090815260346020908152604080832093909416825291909152205490565b3361200214610f1b57604051630f22c43960e41b815261200260048201526024016105e1565b6105f48282611278565b60408051808201909152600080825260208201526001600160a01b038316600090815260ff60205260409020805463ffffffff8416908110610f6957610f6961244b565b60009182526020918290206040805180820190915291015463ffffffff8116825264010000000090046001600160e01b0316918101919091529392505050565b604051632028747160e01b815260040160405180910390fd5b6000610fce8484610eca565b9050600019811461103657818110156110295760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e636500000060448201526064016105e1565b6110368484848403610fa9565b50505050565b604051638cd22d1960e01b815260040160405180910390fd5b604051630913db4760e01b81526001600160a01b03828116600483015260009190841690630913db4790602401602060405180830381865afa15801561109f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110c39190612490565b6001600160a01b03808516600090815261013060209081526040808320938716835292905220549091508181101561113c57600061110182846124a9565b6001600160a01b0380871660009081526101306020908152604080832093891683529290522084905590506111368482611501565b50611036565b8181111561103657600061115083836124a9565b6001600160a01b038087166000908152610130602090815260408083209389168352929052208490559050610739848261150b565b6000610602611515565b8154600090818160058111156111e95760006111aa84611589565b6111b490856124a9565b600088815260209020909150869082015463ffffffff1611156111d9578091506111e7565b6111e4816001612438565b92505b505b808210156112365760006111fd8383611671565b600088815260209020909150869082015463ffffffff16111561122257809150611230565b61122d816001612438565b92505b506111e9565b8015611262576000868152602090208101600019015464010000000090046001600160e01b0316611265565b60005b6001600160e01b03169695505050505050565b6001600160a01b03828116600081815260fe6020818152604080842080546033845282862054949093528787166001600160a01b03198416811790915590519190951694919391928592917f3134e8a2e6d97e929a7e54011ea5485d7d196dd5f0ba4d4ef95803e8e3fc257f9190a461103682848361168c565b600063ffffffff8211156113575760405162461bcd60e51b815260206004820152602660248201527f53616665436173743a2076616c756520646f65736e27742066697420696e203360448201526532206269747360d01b60648201526084016105e1565b5090565b600054610100900460ff166113825760405162461bcd60e51b81526004016105e1906124bc565b6105f482826117ca565b600054610100900460ff166113b35760405162461bcd60e51b81526004016105e1906124bc565b565b600054610100900460ff166113dc5760405162461bcd60e51b81526004016105e1906124bc565b6107e281604051806040016040528060018152602001603160f81b81525061180a565b6060609980546104fe906123ee565b6060609a80546104fe906123ee565b600065ffffffffffff8211156113575760405162461bcd60e51b815260206004820152602660248201527f53616665436173743a2076616c756520646f65736e27742066697420696e203460448201526538206269747360d01b60648201526084016105e1565b6000610595611491611185565b8360405161190160f01b8152600281019290925260228201526042902090565b60008060006114c287878787611859565b915091506114cf8161191d565b5095945050505050565b6001600160a01b038116600090815260cb602052604090208054600181018255905b50919050565b6105f48282611a67565b6105f48282611af2565b60007f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f611540611b0b565b611548611b64565b60408051602081019490945283019190915260608201524660808201523060a082015260c00160405160208183030381529060405280519060200120905090565b60008160000361159b57506000919050565b600060016115a884611b95565b901c6001901b905060018184816115c1576115c1612507565b048201901c905060018184816115d9576115d9612507565b048201901c905060018184816115f1576115f1612507565b048201901c9050600181848161160957611609612507565b048201901c9050600181848161162157611621612507565b048201901c9050600181848161163957611639612507565b048201901c9050600181848161165157611651612507565b048201901c90506106a78182858161166b5761166b612507565b04611c29565b6000611680600284841861251d565b6106a790848416612438565b816001600160a01b0316836001600160a01b0316141580156116ae5750600081115b156117c5576001600160a01b0383161561173c576001600160a01b038316600090815260ff6020526040812081906116e990611c3f85611c4b565b91509150846001600160a01b03167fdec2bacdd2f05b59de34da9b523dff8be42e5e38e818c82fdb0bae774387a7248383604051611731929190918252602082015260400190565b60405180910390a250505b6001600160a01b038216156117c5576001600160a01b038216600090815260ff60205260408120819061177290611dc085611c4b565b91509150836001600160a01b03167fdec2bacdd2f05b59de34da9b523dff8be42e5e38e818c82fdb0bae774387a72483836040516117ba929190918252602082015260400190565b60405180910390a250505b505050565b600054610100900460ff166117f15760405162461bcd60e51b81526004016105e1906124bc565b60366117fd838261258d565b5060376117c5828261258d565b600054610100900460ff166118315760405162461bcd60e51b81526004016105e1906124bc565b609961183d838261258d565b50609a61184a828261258d565b50506000609781905560985550565b6000807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a08311156118905750600090506003611914565b6040805160008082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa1580156118e4573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b03811661190d57600060019250925050611914565b9150600090505b94509492505050565b60008160048111156119315761193161264d565b036119395750565b600181600481111561194d5761194d61264d565b0361199a5760405162461bcd60e51b815260206004820152601860248201527f45434453413a20696e76616c6964207369676e6174757265000000000000000060448201526064016105e1565b60028160048111156119ae576119ae61264d565b036119fb5760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e6774680060448201526064016105e1565b6003816004811115611a0f57611a0f61264d565b036107e25760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b60648201526084016105e1565b611a718282611dcc565b6035546001600160e01b031015611ae35760405162461bcd60e51b815260206004820152603060248201527f4552433230566f7465733a20746f74616c20737570706c79207269736b73206f60448201526f766572666c6f77696e6720766f74657360801b60648201526084016105e1565b611036610100611dc083611c4b565b611afc8282611e95565b611036610100611c3f83611c4b565b600080611b166113ff565b805190915015611b2d578051602090910120919050565b6097548015611b3c5792915050565b7fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a4709250505090565b600080611b6f61140e565b805190915015611b86578051602090910120919050565b6098548015611b3c5792915050565b600080608083901c15611baa57608092831c92015b604083901c15611bbc57604092831c92015b602083901c15611bce57602092831c92015b601083901c15611be057601092831c92015b600883901c15611bf257600892831c92015b600483901c15611c0457600492831c92015b600283901c15611c1657600292831c92015b600183901c156105955760010192915050565b6000818310611c3857816106a7565b5090919050565b60006106a782846124a9565b82546000908190818115611c985760008781526020902082016000190160408051808201909152905463ffffffff8116825264010000000090046001600160e01b03166020820152611cad565b60408051808201909152600080825260208201525b905080602001516001600160e01b03169350611ccd84868863ffffffff16565b9250600082118015611cf75750611ce2610b0b565b65ffffffffffff16816000015163ffffffff16145b15611d3c57611d0583611fd0565b60008881526020902083016000190180546001600160e01b03929092166401000000000263ffffffff909216919091179055611db6565b866040518060400160405280611d60611d53610b0b565b65ffffffffffff166112f2565b63ffffffff168152602001611d7486611fd0565b6001600160e01b0390811690915282546001810184556000938452602093849020835194909301519091166401000000000263ffffffff909316929092179101555b5050935093915050565b60006106a78284612438565b6001600160a01b038216611e225760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f20616464726573730060448201526064016105e1565b8060356000828254611e349190612438565b90915550506001600160a01b0382166000818152603360209081526040808320805486019055518481527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a36105f460008383612039565b6001600160a01b038216611ef55760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b60648201526084016105e1565b6001600160a01b03821660009081526033602052604090205481811015611f695760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e604482015261636560f01b60648201526084016105e1565b6001600160a01b03831660008181526033602090815260408083208686039055603580548790039055518581529192917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a36117c583600084612039565b60006001600160e01b038211156113575760405162461bcd60e51b815260206004820152602760248201527f53616665436173743a2076616c756520646f65736e27742066697420696e20326044820152663234206269747360c81b60648201526084016105e1565b6117c58383836001600160a01b03808416600090815260fe60205260409020546117c591166001600160a01b03808516600090815260fe6020526040902054168361168c565b80356001600160a01b038116811461209657600080fd5b919050565b600080604083850312156120ae57600080fd5b6120b78361207f565b91506120c56020840161207f565b90509250929050565b6000815180845260005b818110156120f4576020818501810151868301820152016120d8565b506000602082860101526020601f19601f83011685010191505092915050565b6020815260006106a760208301846120ce565b6000806040838503121561213a57600080fd5b6121438361207f565b946020939093013593505050565b60008060006060848603121561216657600080fd5b61216f8461207f565b925061217d6020850161207f565b9150604084013590509250925092565b60006020828403121561219f57600080fd5b5035919050565b6000806000604084860312156121bb57600080fd5b833567ffffffffffffffff808211156121d357600080fd5b818601915086601f8301126121e757600080fd5b8135818111156121f657600080fd5b8760208260051b850101111561220b57600080fd5b602092830195509350612221918601905061207f565b90509250925092565b60006020828403121561223c57600080fd5b6106a78261207f565b60ff60f81b881681526000602060e08184015261226560e084018a6120ce565b8381036040850152612277818a6120ce565b606085018990526001600160a01b038816608086015260a0850187905284810360c0860152855180825283870192509083019060005b818110156122c9578351835292840192918401916001016122ad565b50909c9b505050505050505050505050565b803560ff8116811461209657600080fd5b60008060008060008060c0878903121561230557600080fd5b61230e8761207f565b9550602087013594506040870135935061232a606088016122db565b92506080870135915060a087013590509295509295509295565b600080600080600080600060e0888a03121561235f57600080fd5b6123688861207f565b96506123766020890161207f565b95506040880135945060608801359350612392608089016122db565b925060a0880135915060c0880135905092959891949750929550565b600080604083850312156123c157600080fd5b6123ca8361207f565b9150602083013563ffffffff811681146123e357600080fd5b809150509250929050565b600181811c9082168061240257607f821691505b6020821081036114fb57634e487b7160e01b600052602260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b8082018082111561059557610595612422565b634e487b7160e01b600052603260045260246000fd5b60006001820161247357612473612422565b5060010190565b634e487b7160e01b600052604160045260246000fd5b6000602082840312156124a257600080fd5b5051919050565b8181038181111561059557610595612422565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b634e487b7160e01b600052601260045260246000fd5b60008261253a57634e487b7160e01b600052601260045260246000fd5b500490565b601f8211156117c557600081815260208120601f850160051c810160208610156125665750805b601f850160051c820191505b8181101561258557828155600101612572565b505050505050565b815167ffffffffffffffff8111156125a7576125a761247a565b6125bb816125b584546123ee565b8461253f565b602080601f8311600181146125f057600084156125d85750858301515b600019600386901b1c1916600185901b178555612585565b600085815260208120601f198616915b8281101561261f57888601518255948401946001909101908401612600565b508582101561263d5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b634e487b7160e01b600052602160045260246000fdfea164736f6c6343000811000a \ No newline at end of file diff --git a/core/systemcontracts/pascal/chapel/GovernorContract b/core/systemcontracts/pascal/chapel/GovernorContract new file mode 100644 index 0000000000..615329506d --- /dev/null +++ b/core/systemcontracts/pascal/chapel/GovernorContract @@ -0,0 +1 @@ +6080604052600436106103dd5760003560e01c80637b3c71d3116101fd578063c170ec0b11610118578063deaaa7cc116100ab578063ece40cc11161007a578063ece40cc114610de9578063f23a6e6114610e09578063f8ce560a14610e35578063fc0c546a14610e55578063fe0d94c114610e7657600080fd5b8063deaaa7cc14610caa578063e23a9a5214610cde578063ea0217cf14610da9578063eb9019d414610dc957600080fd5b8063d33219b4116100e7578063d33219b414610c05578063da95691a14610c24578063dd4e2ba514610c44578063ddf0b00914610c8a57600080fd5b8063c170ec0b14610b97578063c28bc2fa14610bb2578063c59057e414610bc5578063d07f91e914610be557600080fd5b8063a7713a7011610190578063b187bd261161015f578063b187bd2614610b18578063b58131b014610b36578063bc197c8114610b4b578063c01f9e3714610b7757600080fd5b8063a7713a7014610aa3578063a890c91014610ab8578063ab58fb8e14610ad8578063ac43175114610af857600080fd5b806384b0196e116101cc57806384b0196e14610a1b57806391ddadf414610a4357806397c3d33414610a6f5780639a802a6d14610a8357600080fd5b80637b3c71d3146109b15780637d5e81e2146109d15780638129fc1c146109f15780638456cb5914610a0657600080fd5b806332b8113e116102f85780634838d1651161028b57806354fd4d501161025a57806354fd4d501461090757806356781388146109315780635f398a141461095157806360c4247f1461097157806370b0f6601461099157600080fd5b80634838d165146108715780634a49ac4c146108a15780634bf5d7e9146108c1578063533ddd14146108d657600080fd5b806340e58ee5116102c757806340e58ee5146107c6578063417c73a7146107e65780634385963214610806578063452115d61461085157600080fd5b806332b8113e1461073a5780633932abb1146107635780633bccf4fd146107795780633e4f49e61461079957600080fd5b8063150b7a02116103705780632656227d1161033f5780632656227d1461068c5780632d63f6931461069f5780632fe3e261146106d6578063328dd9821461070a57600080fd5b8063150b7a02146105e5578063160cbed71461062957806317977c611461064957806324bc1a641461067757600080fd5b8063046f7da2116103ac578063046f7da21461053857806306f3f9e61461054d57806306fdde031461056d578063143489d01461058f57600080fd5b8063013cf08b1461044d57806301ffc9a7146104c857806302a251a3146104f8578063034201811461051857600080fd5b3661044857306103eb610e89565b6001600160a01b0316146104465760405162461bcd60e51b815260206004820152601f60248201527f476f7665726e6f723a206d7573742073656e6420746f206578656375746f720060448201526064015b60405180910390fd5b005b600080fd5b34801561045957600080fd5b5061046d610468366004615c38565b610ea3565b604080519a8b526001600160a01b0390991660208b0152978901969096526060880194909452608087019290925260a086015260c085015260e084015215156101008301521515610120820152610140015b60405180910390f35b3480156104d457600080fd5b506104e86104e3366004615c51565b610f5e565b60405190151581526020016104bf565b34801561050457600080fd5b50610195545b6040519081526020016104bf565b34801561052457600080fd5b5061050a610533366004615d97565b610f6f565b34801561054457600080fd5b50610446611067565b34801561055957600080fd5b50610446610568366004615c38565b6110f7565b34801561057957600080fd5b50610582611182565b6040516104bf9190615e8d565b34801561059b57600080fd5b506105cd6105aa366004615c38565b60009081526101636020526040902054600160401b90046001600160a01b031690565b6040516001600160a01b0390911681526020016104bf565b3480156105f157600080fd5b50610610610600366004615eb5565b630a85bd0160e11b949350505050565b6040516001600160e01b031990911681526020016104bf565b34801561063557600080fd5b5061050a61064436600461608c565b611215565b34801561065557600080fd5b5061050a61066436600461611b565b6102c36020526000908152604090205481565b34801561068357600080fd5b5061050a611300565b61050a61069a36600461608c565b611326565b3480156106ab57600080fd5b5061050a6106ba366004615c38565b600090815261016360205260409020546001600160401b031690565b3480156106e257600080fd5b5061050a7fb3b3f3b703cd84ce352197dcff232b1b5d3cfb2025ce47cf04742d0651f1af8881565b34801561071657600080fd5b5061072a610725366004615c38565b611419565b6040516104bf9493929190616201565b34801561074657600080fd5b5061028f546040516001600160401b0390911681526020016104bf565b34801561076f57600080fd5b506101945461050a565b34801561078557600080fd5b5061050a61079436600461624e565b6116ab565b3480156107a557600080fd5b506107b96107b4366004615c38565b611721565b6040516104bf91906162b2565b3480156107d257600080fd5b506104466107e1366004615c38565b61172c565b3480156107f257600080fd5b5061044661080136600461611b565b611757565b34801561081257600080fd5b506104e86108213660046162da565b60008281526101c6602090815260408083206001600160a01b038516845260080190915290205460ff1692915050565b34801561085d57600080fd5b5061050a61086c36600461608c565b6117d8565b34801561087d57600080fd5b506104e861088c36600461611b565b60016020526000908152604090205460ff1681565b3480156108ad57600080fd5b506104466108bc36600461611b565b6117e6565b3480156108cd57600080fd5b50610582611861565b3480156108e257600080fd5b506104e86108f136600461611b565b6102c16020526000908152604090205460ff1681565b34801561091357600080fd5b506040805180820190915260018152603160f81b6020820152610582565b34801561093d57600080fd5b5061050a61094c36600461630a565b61190e565b34801561095d57600080fd5b5061050a61096c366004616336565b611937565b34801561097d57600080fd5b5061050a61098c366004615c38565b611981565b34801561099d57600080fd5b506104466109ac366004615c38565b611a36565b3480156109bd57600080fd5b5061050a6109cc3660046163b9565b611abe565b3480156109dd57600080fd5b5061050a6109ec366004616412565b611b10565b3480156109fd57600080fd5b50610446611c2b565b348015610a1257600080fd5b50610446611e5c565b348015610a2757600080fd5b50610a30611ef2565b6040516104bf97969594939291906164b2565b348015610a4f57600080fd5b50610a58611f90565b60405165ffffffffffff90911681526020016104bf565b348015610a7b57600080fd5b50606461050a565b348015610a8f57600080fd5b5061050a610a9e366004616514565b612004565b348015610aaf57600080fd5b5061050a61201b565b348015610ac457600080fd5b50610446610ad336600461611b565b612048565b348015610ae457600080fd5b5061050a610af3366004615c38565b6120d0565b348015610b0457600080fd5b50610446610b1336600461656c565b61216c565b348015610b2457600080fd5b5060005462010000900460ff166104e8565b348015610b4257600080fd5b5061050a6128b1565b348015610b5757600080fd5b50610610610b663660046165cb565b63bc197c8160e01b95945050505050565b348015610b8357600080fd5b5061050a610b92366004615c38565b6128bd565b348015610ba357600080fd5b506102c2546104e89060ff1681565b610446610bc036600461665e565b6128c8565b348015610bd157600080fd5b5061050a610be036600461608c565b6129d8565b348015610bf157600080fd5b50610446610c003660046166a1565b612a12565b348015610c1157600080fd5b5061022b546001600160a01b03166105cd565b348015610c3057600080fd5b5061050a610c3f3660046166ca565b612a9a565b348015610c5057600080fd5b5060408051808201909152601a81527f737570706f72743d627261766f2671756f72756d3d627261766f0000000000006020820152610582565b348015610c9657600080fd5b50610446610ca5366004615c38565b612b21565b348015610cb657600080fd5b5061050a7f150214d74d59b7d1e90c73fc22ef3d991dd0a76b046543d4d80ab92d2a50328f81565b348015610cea57600080fd5b50610d79610cf93660046162da565b60408051606081018252600080825260208201819052918101919091525060009182526101c6602090815260408084206001600160a01b0393909316845260089092018152918190208151606081018352905460ff8082161515835261010082041693820193909352620100009092046001600160601b03169082015290565b6040805182511515815260208084015160ff1690820152918101516001600160601b0316908201526060016104bf565b348015610db557600080fd5b50610446610dc4366004615c38565b612b44565b348015610dd557600080fd5b5061050a610de436600461676b565b612bcc565b348015610df557600080fd5b50610446610e04366004615c38565b612bed565b348015610e1557600080fd5b50610610610e24366004616797565b63f23a6e6160e01b95945050505050565b348015610e4157600080fd5b5061050a610e50366004615c38565b612c75565b348015610e6157600080fd5b506101f8546105cd906001600160a01b031681565b610446610e84366004615c38565b612d04565b6000610e9e61022b546001600160a01b031690565b905090565b8060008080808080808080610eb78a6120d0565b60008c815261016360205260409020549098506001600160401b03169650610ede8b6128bd565b60008c81526101c66020526040812080546005820154600683015460078401546001600160a01b039093169e50949a509850929650919450610f1f8d611721565b90506002816007811115610f3557610f3561629c565b1493506007816007811115610f4c57610f4c61629c565b14925050509193959799509193959799565b6000610f6982612d27565b92915050565b60008061101361100b7fb3b3f3b703cd84ce352197dcff232b1b5d3cfb2025ce47cf04742d0651f1af888c8c8c8c604051610fab9291906167ff565b60405180910390208b80519060200120604051602001610ff0959493929190948552602085019390935260ff9190911660408401526060830152608082015260a00190565b60405160208183030381529060405280519060200120612d4c565b868686612d79565b90506110598a828b8b8b8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152508d9250612d97915050565b9a9950505050505050505050565b600054630100000090046001600160a01b03163314611099576040516306fbb1e360e01b815260040160405180910390fd5b60005462010000900460ff166110c257604051636cd6020160e01b815260040160405180910390fd5b6000805462ff0000191681556040517f62451d457bc659158be6e6247f56ec1df424a5c7597f71c20c2bc44e0965c8f99190a1565b6110ff610e89565b6001600160a01b0316336001600160a01b03161461112f5760405162461bcd60e51b815260040161043d9061680f565b30611138610e89565b6001600160a01b03161461117657600080366040516111589291906167ff565b604051809103902090505b8061116f610164612e00565b0361116357505b61117f81612e7f565b50565b6060610162805461119290616846565b80601f01602080910402602001604051908101604052809291908181526020018280546111be90616846565b801561120b5780601f106111e05761010080835404028352916020019161120b565b820191906000526020600020905b8154815290600101906020018083116111ee57829003601f168201915b5050505050905090565b6000805462010000900460ff161561124057604051631785c68160e01b815260040160405180910390fd5b3360009081526001602052604090205460ff16156112715760405163b1d02c3d60e01b815260040160405180910390fd5b60005b85518110156112ea576102c1600087838151811061129457611294616880565b6020908102919091018101516001600160a01b031682528101919091526040016000205460ff166112d857604051630b094f2760e31b815260040160405180910390fd5b806112e2816168ac565b915050611274565b506112f785858585612ff0565b95945050505050565b6000610e9e600161130f611f90565b61131991906168c5565b65ffffffffffff16612c75565b600080611335868686866129d8565b9050600061134282611721565b905060048160078111156113585761135861629c565b1480611375575060058160078111156113735761137361629c565b145b6113915760405162461bcd60e51b815260040161043d906168eb565b6000828152610163602052604090819020600201805460ff19166001179055517f712ae1383f79ac853f8d882153778e0260ef8f03b504e2866e0593e04d2b291f906113e09084815260200190565b60405180910390a16113f582888888886131f5565b6114028288888888613296565b61140f8288888888613378565b5095945050505050565b60608060608060006101c660008781526020019081526020016000209050806001018160020182600301836004018380548060200260200160405190810160405280929190818152602001828054801561149c57602002820191906000526020600020905b81546001600160a01b0316815260019091019060200180831161147e575b50505050509350828054806020026020016040519081016040528092919081815260200182805480156114ee57602002820191906000526020600020905b8154815260200190600101908083116114da575b5050505050925081805480602002602001604051908101604052809291908181526020016000905b828210156115c257838290600052602060002001805461153590616846565b80601f016020809104026020016040519081016040528092919081815260200182805461156190616846565b80156115ae5780601f10611583576101008083540402835291602001916115ae565b820191906000526020600020905b81548152906001019060200180831161159157829003601f168201915b505050505081526020019060010190611516565b50505050915080805480602002602001604051908101604052809291908181526020016000905b8282101561169557838290600052602060002001805461160890616846565b80601f016020809104026020016040519081016040528092919081815260200182805461163490616846565b80156116815780601f1061165657610100808354040283529160200191611681565b820191906000526020600020905b81548152906001019060200180831161166457829003601f168201915b5050505050815260200190600101906115e9565b5050505090509450945094509450509193509193565b604080517f150214d74d59b7d1e90c73fc22ef3d991dd0a76b046543d4d80ab92d2a50328f602082015290810186905260ff8516606082015260009081906116f99061100b90608001610ff0565b9050611716878288604051806020016040528060008152506133b3565b979650505050505050565b6000610f69826133d6565b60008060008061173b85613523565b935093509350935061174f848484846117d8565b505050505050565b600054630100000090046001600160a01b03163314611789576040516306fbb1e360e01b815260040160405180910390fd5b6001600160a01b0381166000818152600160208190526040808320805460ff1916909217909155517f7fd26be6fc92aff63f1f4409b2b2ddeb272a888031d7f55ec830485ec61941869190a250565b60006112f7858585856137b4565b600054630100000090046001600160a01b03163314611818576040516306fbb1e360e01b815260040160405180910390fd5b6001600160a01b038116600081815260016020526040808220805460ff19169055517fe0db3499b7fdc3da4cddff5f45d694549c19835e7f719fb5606d3ad1a5de40119190a250565b6101f85460408051634bf5d7e960e01b815290516060926001600160a01b031691634bf5d7e99160048083019260009291908290030181865afa9250505080156118cd57506040513d6000823e601f3d908101601f191682016040526118ca919081019061692c565b60015b611909575060408051808201909152601d81527f6d6f64653d626c6f636b6e756d6265722666726f6d3d64656661756c74000000602082015290565b919050565b60008033905061192f848285604051806020016040528060008152506133b3565b949350505050565b60008033905061171687828888888080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152508a9250612d97915050565b61025e5460009080820361199a57505061025d54919050565b600061025e6119aa600184616999565b815481106119ba576119ba616880565b60009182526020918290206040805180820190915291015463ffffffff8116808352600160201b9091046001600160e01b03169282019290925291508410611a1057602001516001600160e01b03169392505050565b611a25611a1c8561387f565b61025e906138e8565b6001600160e01b0316949350505050565b611a3e610e89565b6001600160a01b0316336001600160a01b031614611a6e5760405162461bcd60e51b815260040161043d9061680f565b30611a77610e89565b6001600160a01b031614611ab55760008036604051611a979291906167ff565b604051809103902090505b80611aae610164612e00565b03611aa257505b61117f8161399b565b600080339050611b0686828787878080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506133b392505050565b9695505050505050565b6000805462010000900460ff1615611b3b57604051631785c68160e01b815260040160405180910390fd5b3360009081526001602052604090205460ff1615611b6c5760405163b1d02c3d60e01b815260040160405180910390fd5b611b746139de565b3360009081526102c360205260409020548015611be9576000611b9682611721565b90506001816007811115611bac57611bac61629c565b1480611bc957506000816007811115611bc757611bc761629c565b145b15611be75760405163867f3ee560e01b815260040160405180910390fd5b505b825160208401206000611bfe888888856129d8565b3360009081526102c3602052604090208190559050611c1f88888888613a89565b98975050505050505050565b600054610100900460ff1615808015611c4b5750600054600160ff909116105b80611c655750303b158015611c65575060005460ff166001145b611cc85760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b606482015260840161043d565b6000805460ff191660011790558015611ceb576000805461ff0019166101001790555b334114611d0b5760405163022d8c9560e31b815260040160405180910390fd5b3a15611d2a576040516383f1b1d360e01b815260040160405180910390fd5b611d566040518060400160405280600b81526020016a2129a1a3b7bb32b93737b960a91b815250613af1565b611d82611d65600360006169c2565b611d736003620151806169c2565b68056bc75e2d63100000613b48565b611d8a613b7f565b611d95612005613ba6565b611da0612006613bd6565b611daa600a613c06565b611dbf611dba6003610e106169c2565b613c36565b6110076000526102c16020527f2f832952f0ef896b8c8edd6d16a2e4f2591a90375e33021e3b9ff197f3793fc0805460ff19166001179055611e147330151da466ec8ab345bef3d6983023e050fb0673613c66565b801561117f576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a150565b600054630100000090046001600160a01b03163314611e8e576040516306fbb1e360e01b815260040160405180910390fd5b60005462010000900460ff1615611eb857604051631785c68160e01b815260040160405180910390fd5b6000805462ff00001916620100001781556040517f9e87fac88ff661f02d44f95383c817fece4bce600a3dab7a54406878b965e7529190a1565b6000606080600080600060606098546000801b148015611f125750609954155b611f565760405162461bcd60e51b81526020600482015260156024820152741152540dcc4c8e88155b9a5b9a5d1a585b1a5e9959605a1b604482015260640161043d565b611f5e613cb9565b611f66613cc8565b60408051600080825260208201909252600f60f81b9b939a50919850469750309650945092509050565b6101f854604080516324776b7d60e21b815290516000926001600160a01b0316916391ddadf49160048083019260209291908290030181865afa925050508015611ff7575060408051601f3d908101601f19168201909252611ff4918101906169e4565b60015b61190957610e9e43613cd7565b6000612011848484613d3e565b90505b9392505050565b61025e54600090156120405761203261025e613db5565b6001600160e01b0316905090565b5061025d5490565b612050610e89565b6001600160a01b0316336001600160a01b0316146120805760405162461bcd60e51b815260040161043d9061680f565b30612089610e89565b6001600160a01b0316146120c757600080366040516120a99291906167ff565b604051809103902090505b806120c0610164612e00565b036120b457505b61117f81613de5565b61022b54600082815261022c602052604080822054905163d45c443560e01b81526004810191909152909182916001600160a01b039091169063d45c443590602401602060405180830381865afa15801561212f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121539190616a0c565b9050806001146121635780612014565b60009392505050565b336110071461219257604051630f22c43960e41b8152611007600482015260240161043d565b6121f86040518060400160405280600b81526020016a766f74696e6744656c617960a81b81525085858080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509293925050613e509050565b156122ad57602081146122265783838383604051630a5a604160e01b815260040161043d9493929190616a4e565b604080516020601f8401819004810282018101909252828152600091612267918585808385018382808284376000920191909152509293925050613ea99050565b905080158061227857506201518081115b1561229e5784848484604051630a5a604160e01b815260040161043d9493929190616a4e565b6122a78161399b565b5061286e565b6123146040518060400160405280600c81526020016b1d9bdd1a5b99d4195c9a5bd960a21b81525085858080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509293925050613e509050565b156123c357602081146123425783838383604051630a5a604160e01b815260040161043d9493929190616a4e565b604080516020601f8401819004810282018101909252828152600091612383918585808385018382808284376000920191909152509293925050613ea99050565b9050801580612394575062278d0081115b156123ba5784848484604051630a5a604160e01b815260040161043d9493929190616a4e565b6122a781613eae565b61242f604051806040016040528060118152602001701c1c9bdc1bdcd85b151a1c995cda1bdb19607a1b81525085858080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509293925050613e509050565b156124e5576020811461245d5783838383604051630a5a604160e01b815260040161043d9493929190616a4e565b604080516020601f840181900481028201810190925282815260009161249e918585808385018382808284376000920191909152509293925050613ea99050565b90508015806124b6575069021e19e0c9bab240000081115b156124dc5784848484604051630a5a604160e01b815260040161043d9493929190616a4e565b6122a781613f51565b61254f6040518060400160405280600f81526020016e38bab7b93ab6a73ab6b2b930ba37b960891b81525085858080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509293925050613e509050565b156125fe576020811461257d5783838383604051630a5a604160e01b815260040161043d9493929190616a4e565b604080516020601f84018190048102820181019092528281526000916125be918585808385018382808284376000920191909152509293925050613ea99050565b905060058110806125cf5750601481115b156125f55784848484604051630a5a604160e01b815260040161043d9493929190616a4e565b6122a781612e7f565b61266d604051806040016040528060148152602001736d696e506572696f64416674657251756f72756d60601b81525085858080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509293925050613e509050565b15612733576008811461269b5783838383604051630a5a604160e01b815260040161043d9493929190616a4e565b60006126e1600884848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509293925050613ea99050565b90506001600160401b038116158061270457506202a300816001600160401b0316115b1561272a5784848484604051630a5a604160e01b815260040161043d9493929190616a4e565b6122a781613f94565b61279f6040518060400160405280601181526020017033b7bb32b93737b9283937ba32b1ba37b960791b81525085858080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509293925050613e509050565b1561284d57601481146127cd5783838383604051630a5a604160e01b815260040161043d9493929190616a4e565b6000612813601484848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509293925050613ea99050565b90506001600160a01b0381166128445784848484604051630a5a604160e01b815260040161043d9493929190616a4e565b6122a781614000565b838383836040516325ee20d560e21b815260040161043d9493929190616a4e565b7ff1ce9b2cbf50eeb05769a29e2543fd350cab46894a7dd9978a12d534bb20e633848484846040516128a39493929190616a4e565b60405180910390a150505050565b6000610e9e6101965490565b6000610f698261406c565b6128d0610e89565b6001600160a01b0316336001600160a01b0316146129005760405162461bcd60e51b815260040161043d9061680f565b30612909610e89565b6001600160a01b03161461294757600080366040516129299291906167ff565b604051809103902090505b80612940610164612e00565b0361293457505b600080856001600160a01b03168585856040516129659291906167ff565b60006040518083038185875af1925050503d80600081146129a2576040519150601f19603f3d011682016040523d82523d6000602084013e6129a7565b606091505b50915091506129cf8282604051806060016040528060288152602001616eab602891396140aa565b50505050505050565b6000848484846040516020016129f19493929190616a75565b60408051601f19818403018152919052805160209091012095945050505050565b612a1a610e89565b6001600160a01b0316336001600160a01b031614612a4a5760405162461bcd60e51b815260040161043d9061680f565b30612a53610e89565b6001600160a01b031614612a915760008036604051612a739291906167ff565b604051809103902090505b80612a8a610164612e00565b03612a7e57505b61117f81613f94565b60008251845114612afe5760405162461bcd60e51b815260206004820152602860248201527f476f7665726e6f72427261766f3a20696e76616c6964207369676e61747572656044820152670e640d8cadccee8d60c31b606482015260840161043d565b612b0c3387878787876140c3565b611b068686612b1b8787614181565b85611b10565b600080600080612b3085613523565b935093509350935061174f84848484611215565b612b4c610e89565b6001600160a01b0316336001600160a01b031614612b7c5760405162461bcd60e51b815260040161043d9061680f565b30612b85610e89565b6001600160a01b031614612bc35760008036604051612ba59291906167ff565b604051809103902090505b80612bbc610164612e00565b03612bb057505b61117f81613eae565b60006120148383612be860408051602081019091526000815290565b613d3e565b612bf5610e89565b6001600160a01b0316336001600160a01b031614612c255760405162461bcd60e51b815260040161043d9061680f565b30612c2e610e89565b6001600160a01b031614612c6c5760008036604051612c4e9291906167ff565b604051809103902090505b80612c65610164612e00565b03612c5957505b61117f81613f51565b60006064612c8283611981565b6101f854604051632394e7a360e21b8152600481018690526001600160a01b0390911690638e539e8c90602401602060405180830381865afa158015612ccc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612cf09190616a0c565b612cfa9190616ac0565b610f6991906169c2565b600080600080612d1385613523565b935093509350935061174f84848484611326565b60006001600160e01b03198216636e665ced60e01b1480610f695750610f69826142b3565b6000610f69612d5961434f565b8360405161190160f01b8152600281019290925260228201526042902090565b6000806000612d8a87878787614359565b9150915061140f8161441d565b6000805462010000900460ff1615612dc257604051631785c68160e01b815260040160405180910390fd5b3360009081526001602052604090205460ff1615612df35760405163b1d02c3d60e01b815260040160405180910390fd5b611b068686868686614567565b6000612e1b8254600f81810b600160801b909204900b131590565b15612e3957604051631ed9509560e11b815260040160405180910390fd5b508054600f0b6000818152600180840160205260408220805492905583546fffffffffffffffffffffffffffffffff191692016001600160801b03169190911790915590565b6064811115612f025760405162461bcd60e51b815260206004820152604360248201527f476f7665726e6f72566f74657351756f72756d4672616374696f6e3a2071756f60448201527f72756d4e756d657261746f72206f7665722071756f72756d44656e6f6d696e616064820152623a37b960e91b608482015260a40161043d565b6000612f0c61201b565b90508015801590612f1e575061025e54155b15612f8357604080518082019091526000815261025e9060208101612f428461466a565b6001600160e01b039081169091528254600181018455600093845260209384902083519490930151909116600160201b0263ffffffff909316929092179101555b612fb1612f9e612f91611f90565b65ffffffffffff1661387f565b612fa78461466a565b61025e91906146d3565b505060408051828152602081018490527f0553476bf02ef2726e8ce5ced78d63e26e602e4a2257b1f559418e24b4633997910160405180910390a15050565b600080612fff868686866129d8565b9050600461300c82611721565b600781111561301d5761301d61629c565b1461303a5760405162461bcd60e51b815260040161043d906168eb565b61022b546040805163793d064960e11b815290516000926001600160a01b03169163f27a0c929160048083019260209291908290030181865afa158015613085573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906130a99190616a0c565b61022b5460405163b1c5f42760e01b81529192506001600160a01b03169063b1c5f427906130e4908a908a908a906000908b90600401616ad7565b602060405180830381865afa158015613101573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906131259190616a0c565b600083815261022c60205260408082209290925561022b5491516308f2a0bb60e41b81526001600160a01b0390921691638f2a0bb091613172918b918b918b91908b908990600401616b25565b600060405180830381600087803b15801561318c57600080fd5b505af11580156131a0573d6000803e3d6000fd5b505050507f9a2e42fd6722813d69113e7d0079d3d940171428df7373df9c7f7617cfda28928282426131d29190616b7d565b604080519283526020830191909152015b60405180910390a15095945050505050565b306131fe610e89565b6001600160a01b03161461328f5760005b845181101561174f57306001600160a01b031685828151811061323457613234616880565b60200260200101516001600160a01b03160361327f5761327f83828151811061325f5761325f616880565b6020026020010151805190602001206101646146ee90919063ffffffff16565b613288816168ac565b905061320f565b5050505050565b60005462010000900460ff16156132c057604051631785c68160e01b815260040160405180910390fd5b3360009081526001602052604090205460ff16156132f15760405163b1d02c3d60e01b815260040160405180910390fd5b60005b845181101561336a576102c1600086838151811061331457613314616880565b6020908102919091018101516001600160a01b031682528101919091526040016000205460ff1661335857604051630b094f2760e31b815260040160405180910390fd5b80613362816168ac565b9150506132f4565b5061328f858585858561472a565b30613381610e89565b6001600160a01b03161461328f5761016454600f81810b600160801b909204900b131561328f5760006101645561328f565b60006112f7858585856133d160408051602081019091526000815290565b612d97565b6000806133e28361479f565b905060048160078111156133f8576133f861629c565b146134035792915050565b600083815261022c60205260409020548061341f575092915050565b61022b54604051632ab0f52960e01b8152600481018390526001600160a01b0390911690632ab0f52990602401602060405180830381865afa158015613469573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061348d9190616b90565b1561349c575060079392505050565b61022b54604051632c258a9f60e11b8152600481018390526001600160a01b039091169063584b153e90602401602060405180830381865afa1580156134e6573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061350a9190616b90565b15613519575060059392505050565b5060029392505050565b60608060606000806101c66000878152602001908152602001600020905080600101816002016136f583600301805480602002602001604051908101604052809291908181526020016000905b8282101561361c57838290600052602060002001805461358f90616846565b80601f01602080910402602001604051908101604052809291908181526020018280546135bb90616846565b80156136085780601f106135dd57610100808354040283529160200191613608565b820191906000526020600020905b8154815290600101906020018083116135eb57829003601f168201915b505050505081526020019060010190613570565b50505060048601805460408051602080840282018101909252828152935060009084015b828210156136ec57838290600052602060002001805461365f90616846565b80601f016020809104026020016040519081016040528092919081815260200182805461368b90616846565b80156136d85780601f106136ad576101008083540402835291602001916136d8565b820191906000526020600020905b8154815290600101906020018083116136bb57829003601f168201915b505050505081526020019060010190613640565b50505050614181565b600984015483546040805160208084028201810190925282815291869183018282801561374b57602002820191906000526020600020905b81546001600160a01b0316815260019091019060200180831161372d575b505050505093508280548060200260200160405190810160405280929190818152602001828054801561379d57602002820191906000526020600020905b815481526020019060010190808311613789575b505050505092509450945094509450509193509193565b6000806137c3868686866129d8565b60008181526101c660205260409020549091506001600160a01b03163381148061381757506137f06128b1565b6138158260016137fe611f90565b61380891906168c5565b65ffffffffffff16612bcc565b105b6138735760405162461bcd60e51b815260206004820152602760248201527f476f7665726e6f72427261766f3a2070726f706f7365722061626f76652074686044820152661c995cda1bdb1960ca1b606482015260840161043d565b611716878787876148d7565b600063ffffffff8211156138e45760405162461bcd60e51b815260206004820152602660248201527f53616665436173743a2076616c756520646f65736e27742066697420696e203360448201526532206269747360d01b606482015260840161043d565b5090565b815460009081816005811115613945576000613903846148e5565b61390d9085616999565b60008881526020902090915081015463ffffffff908116908716101561393557809150613943565b613940816001616b7d565b92505b505b6000613953878785856149cd565b9050801561398e576139788761396a600184616999565b600091825260209091200190565b54600160201b90046001600160e01b0316611716565b6000979650505050505050565b6101945460408051918252602082018390527fc565b045403dc03c2eea82b81a0465edad9e2e7fc4d97e11421c209da93d7a93910160405180910390a161019455565b6102c25460ff16613a87576a084595161401484a0000006120056001600160a01b03166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015613a35573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613a599190616a0c565b1015613a78576040516311b6707f60e01b815260040160405180910390fd5b6102c2805460ff191660011790555b565b6000613ae533868686516001600160401b03811115613aaa57613aaa615cd4565b604051908082528060200260200182016040528015613add57816020015b6060815260200190600190039081613ac85790505b5087876140c3565b6112f785858585614a23565b600054610100900460ff16613b185760405162461bcd60e51b815260040161043d90616bb2565b613b3f81613b3a6040805180820190915260018152603160f81b602082015290565b614e02565b61117f81614e51565b600054610100900460ff16613b6f5760405162461bcd60e51b815260040161043d90616bb2565b613b7a838383614e89565b505050565b600054610100900460ff16613a875760405162461bcd60e51b815260040161043d90616bb2565b600054610100900460ff16613bcd5760405162461bcd60e51b815260040161043d90616bb2565b61117f81614ecb565b600054610100900460ff16613bfd5760405162461bcd60e51b815260040161043d90616bb2565b61117f81614f15565b600054610100900460ff16613c2d5760405162461bcd60e51b815260040161043d90616bb2565b61117f81614f3c565b600054610100900460ff16613c5d5760405162461bcd60e51b815260040161043d90616bb2565b61117f81614f63565b600054610100900460ff16613c8d5760405162461bcd60e51b815260040161043d90616bb2565b600080546001600160a01b039092166301000000026301000000600160b81b0319909216919091179055565b6060609a805461119290616846565b6060609b805461119290616846565b600065ffffffffffff8211156138e45760405162461bcd60e51b815260206004820152602660248201527f53616665436173743a2076616c756520646f65736e27742066697420696e203460448201526538206269747360d01b606482015260840161043d565b6101f854604051630748d63560e31b81526001600160a01b038581166004830152602482018590526000921690633a46b1a890604401602060405180830381865afa158015613d91573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120119190616a0c565b8054600090801561216357613dcf8361396a600184616999565b54600160201b90046001600160e01b0316612014565b61022b54604080516001600160a01b03928316815291831660208301527f08f74ea46ef7894f65eabfb5e6e695de773a000b47c529ab559178069b226401910160405180910390a161022b80546001600160a01b0319166001600160a01b0392909216919091179055565b600081604051602001613e639190616bfd565b6040516020818303038152906040528051906020012083604051602001613e8a9190616bfd565b6040516020818303038152906040528051906020012014905092915050565b015190565b60008111613f0e5760405162461bcd60e51b815260206004820152602760248201527f476f7665726e6f7253657474696e67733a20766f74696e6720706572696f6420604482015266746f6f206c6f7760c81b606482015260840161043d565b6101955460408051918252602082018390527f7e3f7f0708a84de9203036abaa450dccc85ad5ff52f78c170f3edb55cf5e8828910160405180910390a161019555565b6101965460408051918252602082018390527fccb45da8d5717e6c4544694297c4ba5cf151d455c9bb0ed4fc7a38411bc05461910160405180910390a161019655565b61028f54604080516001600160401b03928316815291831660208301527f7ca4ac117ed3cdce75c1161d8207c440389b1a15d69d096831664657c07dafc2910160405180910390a161028f805467ffffffffffffffff19166001600160401b0392909216919091179055565b600080546040516001600160a01b0380851693630100000090930416917f44fc1b38a4abaa91ebd1b628a5b259a698f86238c8217d68f516e87769c60c0b91a3600080546001600160a01b039092166301000000026301000000600160b81b0319909216919091179055565b60008181526101636020526040812060010154610f69906001600160401b0316600084815261029060205260409020546001600160401b0316614f8a565b606083156140b9575081612014565b6120148383614fa0565b8051602082012060006140e187876140db8888614181565b856129d8565b60008181526101c6602052604090206009810154919250906141765780546001600160a01b0319166001600160a01b038a16178155875161412b90600183019060208b0190615a6f565b50865161414190600283019060208a0190615ad0565b5085516141579060038301906020890190615b0b565b50845161416d9060048301906020880190615b5d565b50600981018390555b505050505050505050565b6060600082516001600160401b0381111561419e5761419e615cd4565b6040519080825280602002602001820160405280156141d157816020015b60608152602001906001900390816141bc5790505b50905060005b81518110156142ab578481815181106141f2576141f2616880565b6020026020010151516000146142625784818151811061421457614214616880565b60200260200101518051906020012084828151811061423557614235616880565b602002602001015160405160200161424e929190616c19565b60405160208183030381529060405261427d565b83818151811061427457614274616880565b60200260200101515b82828151811061428f5761428f616880565b6020026020010181905250806142a4906168ac565b90506141d7565b509392505050565b600063288ace0360e11b6318df743f60e31b63bf26d89760e01b6379dd796f60e01b6001600160e01b031986168214806142f957506001600160e01b0319868116908216145b8061431057506001600160e01b0319868116908516145b8061432b57506001600160e01b03198616630271189760e51b145b80611b0657506301ffc9a760e01b6001600160e01b03198716149695505050505050565b6000610e9e614fca565b6000807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a08311156143905750600090506003614414565b6040805160008082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa1580156143e4573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b03811661440d57600060019250925050614414565b9150600090505b94509492505050565b60008160048111156144315761443161629c565b036144395750565b600181600481111561444d5761444d61629c565b0361449a5760405162461bcd60e51b815260206004820152601860248201527f45434453413a20696e76616c6964207369676e61747572650000000000000000604482015260640161043d565b60028160048111156144ae576144ae61629c565b036144fb5760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e67746800604482015260640161043d565b600381600481111561450f5761450f61629c565b0361117f5760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b606482015260840161043d565b600080614577878787878761503e565b600088815261029060205260409020549091506001600160401b03161580156145a457506145a487615194565b15611b065760006145be61028f546001600160401b031690565b6145c6611f90565b65ffffffffffff166145d89190616c4a565b90506145e3886128bd565b816001600160401b03161115614632576040516001600160401b038216815288907f541f725fb9f7c98a30cc9c0ff32fbb14358cd7159c847a3aa20a2bdc442ba5119060200160405180910390a25b600088815261029060205260409020805467ffffffffffffffff19166001600160401b03929092169190911790559695505050505050565b60006001600160e01b038211156138e45760405162461bcd60e51b815260206004820152602760248201527f53616665436173743a2076616c756520646f65736e27742066697420696e20326044820152663234206269747360c81b606482015260840161043d565b6000806146e18585856151d4565b915091505b935093915050565b8154600160801b90819004600f0b6000818152600180860160205260409091209390935583546001600160801b03908116939091011602179055565b61022b5460405163e38335e560e01b81526001600160a01b039091169063e38335e5903490614766908890889088906000908990600401616ad7565b6000604051808303818588803b15801561477f57600080fd5b505af1158015614793573d6000803e3d6000fd5b50505050505050505050565b600081815261016360205260408120600281015460ff16156147c45750600792915050565b6002810154610100900460ff16156147df5750600292915050565b600083815261016360205260408120546001600160401b0316908190036148485760405162461bcd60e51b815260206004820152601d60248201527f476f7665726e6f723a20756e6b6e6f776e2070726f706f73616c206964000000604482015260640161043d565b6000614852611f90565b65ffffffffffff16905080821061486e57506000949350505050565b6000614879866128bd565b905081811061488e5750600195945050505050565b61489786615194565b80156148ba575060008681526101c6602052604090206006810154600590910154115b156148cb5750600495945050505050565b50600395945050505050565b60006112f785858585615373565b6000816000036148f757506000919050565b6000600161490484615429565b901c6001901b9050600181848161491d5761491d6169ac565b048201901c90506001818481614935576149356169ac565b048201901c9050600181848161494d5761494d6169ac565b048201901c90506001818481614965576149656169ac565b048201901c9050600181848161497d5761497d6169ac565b048201901c90506001818481614995576149956169ac565b048201901c905060018184816149ad576149ad6169ac565b048201901c9050612014818285816149c7576149c76169ac565b046154bd565b60005b818310156142ab5760006149e484846154cc565b60008781526020902090915063ffffffff86169082015463ffffffff161115614a0f57809250614a1d565b614a1a816001616b7d565b93505b506149d0565b600033614a3081846154e7565b614a7c5760405162461bcd60e51b815260206004820152601d60248201527f476f7665726e6f723a2070726f706f7365722072657374726963746564000000604482015260640161043d565b6000614a86611f90565b65ffffffffffff169050614a986128b1565b614aa783610de4600185616999565b1015614b0f5760405162461bcd60e51b815260206004820152603160248201527f476f7665726e6f723a2070726f706f73657220766f7465732062656c6f7720706044820152701c9bdc1bdcd85b081d1a1c995cda1bdb19607a1b606482015260840161043d565b6000614b2488888888805190602001206129d8565b90508651885114614b475760405162461bcd60e51b815260040161043d90616c6a565b8551885114614b685760405162461bcd60e51b815260040161043d90616c6a565b6000885111614bb95760405162461bcd60e51b815260206004820152601860248201527f476f7665726e6f723a20656d7074792070726f706f73616c0000000000000000604482015260640161043d565b600081815261016360205260409020546001600160401b031615614c295760405162461bcd60e51b815260206004820152602160248201527f476f7665726e6f723a2070726f706f73616c20616c72656164792065786973746044820152607360f81b606482015260840161043d565b6000614c356101945490565b614c3f9084616b7d565b90506000614c4d6101955490565b614c579083616b7d565b90506040518060e00160405280614c6d846155d8565b6001600160401b031681526001600160a01b038716602082015260006040820152606001614c9a836155d8565b6001600160401b03908116825260006020808401829052604080850183905260609485018390528883526101638252918290208551815492870151878501519186166001600160e01b031990941693909317600160401b6001600160a01b039094168402176001600160e01b0316600160e01b60e09290921c91909102178155938501516080860151908416921c0217600183015560a08301516002909201805460c09094015161ffff1990941692151561ff00191692909217610100931515939093029290921790558a517f7d84a6263ae0d98d3329bd7b46bb4e8d6f98cd35a7adb45c274c8b7fd5ebd5e091859188918e918e91811115614d9f57614d9f615cd4565b604051908082528060200260200182016040528015614dd257816020015b6060815260200190600190039081614dbd5790505b508d88888f604051614dec99989796959493929190616cab565b60405180910390a1509098975050505050505050565b600054610100900460ff16614e295760405162461bcd60e51b815260040161043d90616bb2565b609a614e358382616d89565b50609b614e428282616d89565b50506000609881905560995550565b600054610100900460ff16614e785760405162461bcd60e51b815260040161043d90616bb2565b610162614e858282616d89565b5050565b600054610100900460ff16614eb05760405162461bcd60e51b815260040161043d90616bb2565b614eb98361399b565b614ec282613eae565b613b7a81613f51565b600054610100900460ff16614ef25760405162461bcd60e51b815260040161043d90616bb2565b6101f880546001600160a01b0319166001600160a01b0392909216919091179055565b600054610100900460ff166120c75760405162461bcd60e51b815260040161043d90616bb2565b600054610100900460ff166111765760405162461bcd60e51b815260040161043d90616bb2565b600054610100900460ff16612a915760405162461bcd60e51b815260040161043d90616bb2565b6000818311614f995781612014565b5090919050565b815115614fb05781518083602001fd5b8060405162461bcd60e51b815260040161043d9190615e8d565b60007f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f614ff5615640565b614ffd615699565b60408051602081019490945283019190915260608201524660808201523060a082015260c00160405160208183030381529060405280519060200120905090565b600085815261016360205260408120600161505888611721565b60078111156150695761506961629c565b146150c25760405162461bcd60e51b815260206004820152602360248201527f476f7665726e6f723a20766f7465206e6f742063757272656e746c792061637460448201526269766560e81b606482015260840161043d565b80546000906150dc9088906001600160401b031686613d3e565b90506150eb88888884886156ca565b835160000361514057866001600160a01b03167fb8e138887d0aa13bab447e82de9d5c1777041ecd21ca36ba824ff1e6c07ddda4898884896040516151339493929190616e48565b60405180910390a2611716565b866001600160a01b03167fe2babfbac5889a709b63bb7f598b324e08bc5a4fb9ec647fb3cbc9ec07eb87128988848989604051615181959493929190616e70565b60405180910390a2979650505050505050565b60008181526101c66020526040812060058101546151cb610e5085600090815261016360205260409020546001600160401b031690565b11159392505050565b82546000908190801561531a5760006151f28761396a600185616999565b60408051808201909152905463ffffffff808216808452600160201b9092046001600160e01b0316602084015291925090871610156152735760405162461bcd60e51b815260206004820152601b60248201527f436865636b706f696e743a2064656372656173696e67206b6579730000000000604482015260640161043d565b805163ffffffff8088169116036152bb57846152948861396a600186616999565b80546001600160e01b0392909216600160201b0263ffffffff90921691909117905561530a565b6040805180820190915263ffffffff80881682526001600160e01b0380881660208085019182528b54600181018d5560008d81529190912094519151909216600160201b029216919091179101555b6020015192508391506146e69050565b50506040805180820190915263ffffffff80851682526001600160e01b0380851660208085019182528854600181018a5560008a815291822095519251909316600160201b0291909316179201919091559050816146e6565b60008061538286868686615868565b600081815261022c6020526040902054909150156112f75761022b54600082815261022c60205260409081902054905163c4d252f560e01b81526001600160a01b039092169163c4d252f5916153de9160040190815260200190565b600060405180830381600087803b1580156153f857600080fd5b505af115801561540c573d6000803e3d6000fd5b505050600082815261022c60205260408120555095945050505050565b600080608083901c1561543e57608092831c92015b604083901c1561545057604092831c92015b602083901c1561546257602092831c92015b601083901c1561547457601092831c92015b600883901c1561548657600892831c92015b600483901c1561549857600492831c92015b600283901c156154aa57600292831c92015b600183901c15610f695760010192915050565b6000818310614f995781612014565b60006154db60028484186169c2565b61201490848416616b7d565b805160009060348110156154ff576001915050610f69565b82810160131901516001600160a01b031981166b046e0e4dee0dee6cae47a60f60a31b1461553257600192505050610f69565b600080615540602885616999565b90505b838110156155b75760008061557788848151811061556357615563616880565b01602001516001600160f81b031916615975565b915091508161558f5760019650505050505050610f69565b8060ff166004856001600160a01b0316901b1793505050806155b0906168ac565b9050615543565b50856001600160a01b0316816001600160a01b031614935050505092915050565b60006001600160401b038211156138e45760405162461bcd60e51b815260206004820152602660248201527f53616665436173743a2076616c756520646f65736e27742066697420696e203660448201526534206269747360d01b606482015260840161043d565b60008061564b613cb9565b805190915015615662578051602090910120919050565b60985480156156715792915050565b7fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a4709250505090565b6000806156a4613cc8565b8051909150156156bb578051602090910120919050565b60995480156156715792915050565b60008581526101c6602090815260408083206001600160a01b038816845260088101909252909120805460ff161561575a5760405162461bcd60e51b815260206004820152602d60248201527f476f7665726e6f72436f6d7061746962696c697479427261766f3a20766f746560448201526c08185b1c9958591e4818d85cdd609a1b606482015260840161043d565b805460ff86166101000261ffff1990911617600117815561577a84615a07565b81546001600160601b039190911662010000026dffffffffffffffffffffffff00001990911617815560ff85166157ca57838260060160008282546157bf9190616b7d565b909155506129cf9050565b60001960ff8616016157ea57838260050160008282546157bf9190616b7d565b60011960ff86160161580a57838260070160008282546157bf9190616b7d565b60405162461bcd60e51b815260206004820152602d60248201527f476f7665726e6f72436f6d7061746962696c697479427261766f3a20696e766160448201526c6c696420766f7465207479706560981b606482015260840161043d565b600080615877868686866129d8565b9050600061588482611721565b9050600281600781111561589a5761589a61629c565b141580156158ba575060068160078111156158b7576158b761629c565b14155b80156158d8575060078160078111156158d5576158d561629c565b14155b6159245760405162461bcd60e51b815260206004820152601d60248201527f476f7665726e6f723a2070726f706f73616c206e6f7420616374697665000000604482015260640161043d565b6000828152610163602052604090819020600201805461ff001916610100179055517f789cf55be980739dad1d0699b93b58e806b51c9d96619bfa8fe0a28abaa7b30c906131e39084815260200190565b60008060f883901c602f811180156159905750603a8160ff16105b156159a557600194602f199091019350915050565b8060ff1660401080156159bb575060478160ff16105b156159d0576001946036199091019350915050565b8060ff1660601080156159e6575060678160ff16105b156159fb576001946056199091019350915050565b50600093849350915050565b60006001600160601b038211156138e45760405162461bcd60e51b815260206004820152602660248201527f53616665436173743a2076616c756520646f65736e27742066697420696e203960448201526536206269747360d01b606482015260840161043d565b828054828255906000526020600020908101928215615ac4579160200282015b82811115615ac457825182546001600160a01b0319166001600160a01b03909116178255602090920191600190910190615a8f565b506138e4929150615baf565b828054828255906000526020600020908101928215615ac4579160200282015b82811115615ac4578251825591602001919060010190615af0565b828054828255906000526020600020908101928215615b51579160200282015b82811115615b515782518290615b419082616d89565b5091602001919060010190615b2b565b506138e4929150615bc4565b828054828255906000526020600020908101928215615ba3579160200282015b82811115615ba35782518290615b939082616d89565b5091602001919060010190615b7d565b506138e4929150615be1565b5b808211156138e45760008155600101615bb0565b808211156138e4576000615bd88282615bfe565b50600101615bc4565b808211156138e4576000615bf58282615bfe565b50600101615be1565b508054615c0a90616846565b6000825580601f10615c1a575050565b601f01602090049060005260206000209081019061117f9190615baf565b600060208284031215615c4a57600080fd5b5035919050565b600060208284031215615c6357600080fd5b81356001600160e01b03198116811461201457600080fd5b803560ff8116811461190957600080fd5b60008083601f840112615c9e57600080fd5b5081356001600160401b03811115615cb557600080fd5b602083019150836020828501011115615ccd57600080fd5b9250929050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b0381118282101715615d1257615d12615cd4565b604052919050565b60006001600160401b03821115615d3357615d33615cd4565b50601f01601f191660200190565b600082601f830112615d5257600080fd5b8135615d65615d6082615d1a565b615cea565b818152846020838601011115615d7a57600080fd5b816020850160208301376000918101602001919091529392505050565b60008060008060008060008060e0898b031215615db357600080fd5b88359750615dc360208a01615c7b565b965060408901356001600160401b0380821115615ddf57600080fd5b615deb8c838d01615c8c565b909850965060608b0135915080821115615e0457600080fd5b50615e118b828c01615d41565b945050615e2060808a01615c7b565b925060a0890135915060c089013590509295985092959890939650565b60005b83811015615e58578181015183820152602001615e40565b50506000910152565b60008151808452615e79816020860160208601615e3d565b601f01601f19169290920160200192915050565b6020815260006120146020830184615e61565b6001600160a01b038116811461117f57600080fd5b60008060008060808587031215615ecb57600080fd5b8435615ed681615ea0565b93506020850135615ee681615ea0565b92506040850135915060608501356001600160401b03811115615f0857600080fd5b615f1487828801615d41565b91505092959194509250565b60006001600160401b03821115615f3957615f39615cd4565b5060051b60200190565b600082601f830112615f5457600080fd5b81356020615f64615d6083615f20565b82815260059290921b84018101918181019086841115615f8357600080fd5b8286015b84811015615fa7578035615f9a81615ea0565b8352918301918301615f87565b509695505050505050565b600082601f830112615fc357600080fd5b81356020615fd3615d6083615f20565b82815260059290921b84018101918181019086841115615ff257600080fd5b8286015b84811015615fa75780358352918301918301615ff6565b600082601f83011261601e57600080fd5b8135602061602e615d6083615f20565b82815260059290921b8401810191818101908684111561604d57600080fd5b8286015b84811015615fa75780356001600160401b038111156160705760008081fd5b61607e8986838b0101615d41565b845250918301918301616051565b600080600080608085870312156160a257600080fd5b84356001600160401b03808211156160b957600080fd5b6160c588838901615f43565b955060208701359150808211156160db57600080fd5b6160e788838901615fb2565b945060408701359150808211156160fd57600080fd5b5061610a8782880161600d565b949793965093946060013593505050565b60006020828403121561612d57600080fd5b813561201481615ea0565b600081518084526020808501945080840160005b838110156161715781516001600160a01b03168752958201959082019060010161614c565b509495945050505050565b600081518084526020808501945080840160005b8381101561617157815187529582019590820190600101616190565b600081518084526020808501808196508360051b8101915082860160005b858110156161f45782840389526161e2848351615e61565b988501989350908401906001016161ca565b5091979650505050505050565b6080815260006162146080830187616138565b8281036020840152616226818761617c565b9050828103604084015261623a81866161ac565b9050828103606084015261171681856161ac565b600080600080600060a0868803121561626657600080fd5b8535945061627660208701615c7b565b935061628460408701615c7b565b94979396509394606081013594506080013592915050565b634e487b7160e01b600052602160045260246000fd5b60208101600883106162d457634e487b7160e01b600052602160045260246000fd5b91905290565b600080604083850312156162ed57600080fd5b8235915060208301356162ff81615ea0565b809150509250929050565b6000806040838503121561631d57600080fd5b8235915061632d60208401615c7b565b90509250929050565b60008060008060006080868803121561634e57600080fd5b8535945061635e60208701615c7b565b935060408601356001600160401b038082111561637a57600080fd5b61638689838a01615c8c565b9095509350606088013591508082111561639f57600080fd5b506163ac88828901615d41565b9150509295509295909350565b600080600080606085870312156163cf57600080fd5b843593506163df60208601615c7b565b925060408501356001600160401b038111156163fa57600080fd5b61640687828801615c8c565b95989497509550505050565b6000806000806080858703121561642857600080fd5b84356001600160401b038082111561643f57600080fd5b61644b88838901615f43565b9550602087013591508082111561646157600080fd5b61646d88838901615fb2565b9450604087013591508082111561648357600080fd5b61648f8883890161600d565b935060608701359150808211156164a557600080fd5b50615f1487828801615d41565b60ff60f81b8816815260e0602082015260006164d160e0830189615e61565b82810360408401526164e38189615e61565b606084018890526001600160a01b038716608085015260a0840186905283810360c08501529050611059818561617c565b60008060006060848603121561652957600080fd5b833561653481615ea0565b92506020840135915060408401356001600160401b0381111561655657600080fd5b61656286828701615d41565b9150509250925092565b6000806000806040858703121561658257600080fd5b84356001600160401b038082111561659957600080fd5b6165a588838901615c8c565b909650945060208701359150808211156165be57600080fd5b5061640687828801615c8c565b600080600080600060a086880312156165e357600080fd5b85356165ee81615ea0565b945060208601356165fe81615ea0565b935060408601356001600160401b038082111561661a57600080fd5b61662689838a01615fb2565b9450606088013591508082111561663c57600080fd5b61664889838a01615fb2565b9350608088013591508082111561639f57600080fd5b6000806000806060858703121561667457600080fd5b843561667f81615ea0565b93506020850135925060408501356001600160401b038111156163fa57600080fd5b6000602082840312156166b357600080fd5b81356001600160401b038116811461201457600080fd5b600080600080600060a086880312156166e257600080fd5b85356001600160401b03808211156166f957600080fd5b61670589838a01615f43565b9650602088013591508082111561671b57600080fd5b61672789838a01615fb2565b9550604088013591508082111561673d57600080fd5b61674989838a0161600d565b9450606088013591508082111561675f57600080fd5b61664889838a0161600d565b6000806040838503121561677e57600080fd5b823561678981615ea0565b946020939093013593505050565b600080600080600060a086880312156167af57600080fd5b85356167ba81615ea0565b945060208601356167ca81615ea0565b9350604086013592506060860135915060808601356001600160401b038111156167f357600080fd5b6163ac88828901615d41565b8183823760009101908152919050565b60208082526018908201527f476f7665726e6f723a206f6e6c79476f7665726e616e63650000000000000000604082015260600190565b600181811c9082168061685a57607f821691505b60208210810361687a57634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b6000600182016168be576168be616896565b5060010190565b65ffffffffffff8281168282160390808211156168e4576168e4616896565b5092915050565b60208082526021908201527f476f7665726e6f723a2070726f706f73616c206e6f74207375636365737366756040820152601b60fa1b606082015260800190565b60006020828403121561693e57600080fd5b81516001600160401b0381111561695457600080fd5b8201601f8101841361696557600080fd5b8051616973615d6082615d1a565b81815285602083850101111561698857600080fd5b6112f7826020830160208601615e3d565b81810381811115610f6957610f69616896565b634e487b7160e01b600052601260045260246000fd5b6000826169df57634e487b7160e01b600052601260045260246000fd5b500490565b6000602082840312156169f657600080fd5b815165ffffffffffff8116811461201457600080fd5b600060208284031215616a1e57600080fd5b5051919050565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b604081526000616a62604083018688616a25565b8281036020840152611716818587616a25565b608081526000616a886080830187616138565b8281036020840152616a9a818761617c565b90508281036040840152616aae81866161ac565b91505082606083015295945050505050565b8082028115828204841417610f6957610f69616896565b60a081526000616aea60a0830188616138565b8281036020840152616afc818861617c565b90508281036040840152616b1081876161ac565b60608401959095525050608001529392505050565b60c081526000616b3860c0830189616138565b8281036020840152616b4a818961617c565b90508281036040840152616b5e81886161ac565b60608401969096525050608081019290925260a0909101529392505050565b80820180821115610f6957610f69616896565b600060208284031215616ba257600080fd5b8151801515811461201457600080fd5b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b60008251616c0f818460208701615e3d565b9190910192915050565b6001600160e01b0319831681528151600090616c3c816004850160208701615e3d565b919091016004019392505050565b6001600160401b038181168382160190808211156168e4576168e4616896565b60208082526021908201527f476f7665726e6f723a20696e76616c69642070726f706f73616c206c656e67746040820152600d60fb1b606082015260800190565b8981526001600160a01b038916602082015261012060408201819052600090616cd68382018b616138565b90508281036060840152616cea818a61617c565b90508281036080840152616cfe81896161ac565b905082810360a0840152616d1281886161ac565b90508560c08401528460e0840152828103610100840152616d338185615e61565b9c9b505050505050505050505050565b601f821115613b7a57600081815260208120601f850160051c81016020861015616d6a5750805b601f850160051c820191505b8181101561174f57828155600101616d76565b81516001600160401b03811115616da257616da2615cd4565b616db681616db08454616846565b84616d43565b602080601f831160018114616deb5760008415616dd35750858301515b600019600386901b1c1916600185901b17855561174f565b600085815260208120601f198616915b82811015616e1a57888601518255948401946001909101908401616dfb565b5085821015616e385787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b84815260ff84166020820152826040820152608060608201526000611b066080830184615e61565b85815260ff8516602082015283604082015260a060608201526000616e9860a0830185615e61565b8281036080840152611c1f8185615e6156fe476f7665726e6f723a2072656c617920726576657274656420776974686f7574206d657373616765a164736f6c6343000811000a \ No newline at end of file diff --git a/core/systemcontracts/pascal/chapel/LightClientContract b/core/systemcontracts/pascal/chapel/LightClientContract new file mode 100644 index 0000000000..151e9fe63c --- /dev/null +++ b/core/systemcontracts/pascal/chapel/LightClientContract @@ -0,0 +1 @@ +608060405234801561001057600080fd5b50600436106102115760003560e01c8063aad5606311610125578063dda83148116100ad578063e2761af01161007c578063e2761af01461064f578063e405bbc314610673578063ea54b2aa1461067b578063f9a2bbc714610683578063fd6a68791461068b57610211565b8063dda83148146105f3578063df5fe70414610619578063df8079e91461063f578063e1c7392a1461064757610211565b8063c81b1662116100f4578063c81b16621461051e578063cba510a914610526578063d81698791461054c578063da8d08f0146105c5578063dc927faf146105eb57610211565b8063aad5606314610429578063ab51bb9614610431578063ac43175114610452578063adc879e91461051657610211565b8063564b81ef116101a85780637e434d54116101775780637e434d54146103ed5780639dc09262146103f5578063a1a11bf5146103fd578063a78abc1614610405578063aa82dce11461042157610211565b8063564b81ef1461029b5780635c5ae8db146103185780636e47b482146103dd57806375d47a0a146103e557610211565b806343756e5c116101e457806343756e5c14610264578063493279b11461026c57806351b4dce31461028b57806351e806721461029357610211565b80630e2374a5146102165780632657e9b61461023a578063280870281461025457806333f7798d1461025c575b600080fd5b61021e610693565b604080516001600160a01b039092168252519081900360200190f35b610242610699565b60408051918252519081900360200190f35b61021e6106a4565b6102426106aa565b61021e6106b0565b6102746106b6565b6040805161ffff9092168252519081900360200190f35b61021e6106bb565b61021e6106c1565b6102a36106c7565b6040805160208082528351818301528351919283929083019185019080838360005b838110156102dd5781810151838201526020016102c5565b50505050905090810190601f16801561030a5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b61033e6004803603602081101561032e57600080fd5b50356001600160401b03166107d2565b60405180856001600160401b03166001600160401b0316815260200184815260200183815260200180602001828103825283818151815260200191508051906020019080838360005b8381101561039f578181015183820152602001610387565b50505050905090810190601f1680156103cc5780820380516001836020036101000a031916815260200191505b509550505050505060405180910390f35b61021e61088d565b61021e610893565b61021e610899565b61021e61089f565b61021e6108a5565b61040d6108ab565b604080519115158252519081900360200190f35b61021e6108b4565b61021e6108ba565b6104396108c0565b6040805163ffffffff9092168252519081900360200190f35b6105146004803603604081101561046857600080fd5b81019060208101813564010000000081111561048357600080fd5b82018360208201111561049557600080fd5b803590602001918460018302840111640100000000831117156104b757600080fd5b9193909290916020810190356401000000008111156104d557600080fd5b8201836020820111156104e757600080fd5b8035906020019184600183028401116401000000008311171561050957600080fd5b5090925090506108c5565b005b610242610996565b61021e61099c565b6102426004803603602081101561053c57600080fd5b50356001600160401b03166109a2565b61040d6004803603604081101561056257600080fd5b81019060208101813564010000000081111561057d57600080fd5b82018360208201111561058f57600080fd5b803590602001918460018302840111640100000000831117156105b157600080fd5b9193509150356001600160401b03166109c1565b61021e600480360360208110156105db57600080fd5b50356001600160401b0316610a81565b61021e610a9c565b61021e6004803603602081101561060957600080fd5b50356001600160401b0316610aa2565b61040d6004803603602081101561062f57600080fd5b50356001600160401b0316610ac6565b61021e610b08565b610514610b0e565b610657610bae565b604080516001600160401b039092168252519081900360200190f35b610657610bbd565b6102a3610bd8565b61021e610bf7565b61021e610bfd565b61200181565b662386f26fc1000081565b61200581565b60055481565b61100181565b606181565b61200681565b61200081565b604080516020808252818301909252606091829190602082018180368337505060045460208301525090506000805b60208160ff16101561073d57828160ff168151811061071157fe5b01602001516001600160f81b0319161561073057816001019150610735565b61073d565b6001016106f6565b5060608160ff166040519080825280601f01601f19166020018201604052801561076e576020820181803683370190505b50905060005b8260ff168160ff1610156107ca57838160ff168151811061079157fe5b602001015160f81c60f81b828260ff16815181106107ab57fe5b60200101906001600160f81b031916908160001a905350600101610774565b509250505090565b60016020818152600092835260409283902080548184015460028084015460038501805489516101009982161599909902600019011692909204601f81018790048702880187019098528787526001600160401b0390931696919592949091908301828280156108835780601f1061085857610100808354040283529160200191610883565b820191906000526020600020905b81548152906001019060200180831161086657829003601f168201915b5050505050905084565b61100581565b61100881565b61200381565b61100781565b61100681565b60005460ff1681565b61200281565b61300081565b600081565b60005460ff1661091c576040805162461bcd60e51b815260206004820152601960248201527f74686520636f6e7472616374206e6f7420696e69742079657400000000000000604482015290519081900360640190fd5b336110071461095c5760405162461bcd60e51b815260040180806020018281038252602e815260200180610c0e602e913960400191505060405180910390fd5b6040805162461bcd60e51b815260206004820152600a60248201526919195c1c9958d85d195960b21b604482015290519081900360640190fd5b60045481565b61100281565b6001600160401b03166000908152600160208190526040909120015490565b60408051630a83aaa960e31b815233600482015290516000916110069163541d554891602480820192602092909190829003018186803b158015610a0457600080fd5b505afa158015610a18573d6000803e3d6000fd5b505050506040513d6020811015610a2e57600080fd5b505161095c576040805162461bcd60e51b815260206004820152601f60248201527f746865206d73672073656e646572206973206e6f7420612072656c6179657200604482015290519081900360640190fd5b6002602052600090815260409020546001600160a01b031681565b61100381565b6001600160401b03166000908152600260205260409020546001600160a01b031690565b6001600160401b0381166000908152600260205260408120546001600160a01b0316151580610b0257506003546001600160401b038381169116145b92915050565b61200481565b60005460ff1615610b66576040805162461bcd60e51b815260206004820152601960248201527f74686520636f6e747261637420616c726561647920696e697400000000000000604482015290519081900360640190fd5b600080610b8d6040518061024001604052806102208152602001610c3c6102209139610c03565b505160045550506000805460ff19166001179055662386f26fc10000600555565b6003546001600160401b031681565b6003546801000000000000000090046001600160401b031681565b6040518061024001604052806102208152602001610c3c610220913981565b61100081565b61100481565b805160209091019156fe746865206d6573736167652073656e646572206d75737420626520676f7665726e616e636520636f6e747261637442696e616e63652d436861696e2d5469677269730000000000000000000000000000000006915167cedaf7bbf7df47d932fdda630527ee648562cf3e52c5e5f46156a3a971a4ceb443c53a50d8653ef8cf1e5716da68120fb51b636dc6d111ec3277b098ecd42d49d3769d8a1f78b4c17a965f7a30d4181fabbd1f969f46d3c8e83b5ad4845421d8000000e8d4a510002ba4e81542f437b7ae1f8a35ddb233c789a8dc22734377d9b6d63af1ca403b61000000e8d4a51000df8da8c5abfdb38595391308bb71e5a1e0aabdc1d0cf38315d50d6be939b2606000000e8d4a51000b6619edca4143484800281d698b70c935e9152ad57b31d85c05f2f79f64b39f3000000e8d4a510009446d14ad86c8d2d74780b0847110001a1c2e252eedfea4753ebbbfce3a22f52000000e8d4a510000353c639f80cc8015944436dab1032245d44f912edc31ef668ff9f4a45cd0599000000e8d4a51000e81d3797e0544c3a718e1f05f0fb782212e248e784c1a851be87e77ae0db230e000000e8d4a510005e3fcda30bd19d45c4b73688da35e7da1fce7c6859b2c1f20ed5202d24144e3e000000e8d4a51000b06a59a2d75bf5d014fce7c999b5e71e7a960870f725847d4ba3235baeaa08ef000000e8d4a510000c910e2fe650e4e01406b3310b489fb60a84bc3ff5c5bee3a56d5898b6a8af32000000e8d4a5100071f2d7b8ec1c8b99a653429b0118cd201f794f409d0fea4d65b1b662f2b00063000000e8d4a51000a164736f6c6343000604000a \ No newline at end of file diff --git a/core/systemcontracts/pascal/chapel/RelayerHubContract b/core/systemcontracts/pascal/chapel/RelayerHubContract new file mode 100644 index 0000000000..91ed9bb411 --- /dev/null +++ b/core/systemcontracts/pascal/chapel/RelayerHubContract @@ -0,0 +1 @@ +608060405234801561001057600080fd5b50600436106101fb5760003560e01c80639dc092621161011a578063dc927faf116100ad578063e79a198f1161007c578063e79a198f1461047e578063f3ae241514610486578063f9a2bbc7146104ac578063fd30d9b8146104b4578063fd6a6879146104bc576101fb565b8063dc927faf14610466578063dd91d1c514610200578063df8079e91461046e578063e1c7392a14610476576101fb565b8063aad56063116100e9578063aad5606314610373578063ab51bb961461037b578063ac4317511461039c578063c81b16621461045e576101fb565b80639dc0926214610353578063a1a11bf51461035b578063a78abc1614610363578063aa82dce11461036b576101fb565b80636a6a419e116101925780637ae23088116101615780637ae23088146103035780637e434d541461031d5780638f83ab131461032557806395468d261461034b576101fb565b80636a6a419e146102a75780636e47b482146102cd57806375d47a0a146102d557806378beee67146102dd576101fb565b8063493279b1116101ce578063493279b11461023e57806351b4dce31461025d57806351e8067214610265578063541d55481461026d576101fb565b806303aff02b146102005780630e2374a51461020a578063280870281461022e57806343756e5c14610236575b600080fd5b6102086104c4565b005b6102126104fe565b604080516001600160a01b039092168252519081900360200190f35b610212610504565b61021261050a565b610246610510565b6040805161ffff9092168252519081900360200190f35b610212610515565b61021261051b565b6102936004803603602081101561028357600080fd5b50356001600160a01b0316610521565b604080519115158252519081900360200190f35b610293600480360360208110156102bd57600080fd5b50356001600160a01b031661053f565b61021261055d565b610212610563565b610208600480360360208110156102f357600080fd5b50356001600160a01b0316610569565b61030b6105b7565b60408051918252519081900360200190f35b6102126105c4565b6102086004803603602081101561033b57600080fd5b50356001600160a01b03166105ca565b61030b610627565b610212610633565b610212610639565b61029361063f565b610212610648565b61021261064e565b610383610654565b6040805163ffffffff9092168252519081900360200190f35b610208600480360360408110156103b257600080fd5b8101906020810181356401000000008111156103cd57600080fd5b8201836020820111156103df57600080fd5b8035906020019184600183028401116401000000008311171561040157600080fd5b91939092909160208101903564010000000081111561041f57600080fd5b82018360208201111561043157600080fd5b8035906020019184600183028401116401000000008311171561045357600080fd5b509092509050610659565b6102126106ec565b6102126106f2565b6102126106f8565b6102086106fe565b610208610780565b6102936004803603602081101561049c57600080fd5b50356001600160a01b0316610939565b610212610957565b61029361095d565b610212610966565b6040805162461bcd60e51b815260206004820152600a60248201526919195c1c9958d85d195960b21b604482015290519081900360640190fd5b61200181565b61200581565b61100181565b606181565b61200681565b61200081565b6001600160a01b031660009081526007602052604090205460ff1690565b6001600160a01b031660009081526008602052604090205460ff1690565b61100581565b61100881565b3360009081526008602052604090205460ff166104c45760405162461bcd60e51b8152600401808060200182810382526024815260200180610a676024913960400191505060405180910390fd5b68056bc75e2d6310000081565b61200381565b3360009081526005602052604090205460ff166104c4576040805162461bcd60e51b81526020600482015260166024820152751b585b9859d95c88191bd95cc81b9bdd08195e1a5cdd60521b604482015290519081900360640190fd5b67016345785d8a000081565b61100781565b61100681565b60005460ff1681565b61200281565b61300081565b600081565b60005460ff166106ac576040805162461bcd60e51b81526020600482015260196024820152781d1a194818dbdb9d1c9858dd081b9bdd081a5b9a5d081e595d603a1b604482015290519081900360640190fd5b33611007146104c45760405162461bcd60e51b815260040180806020018281038252602e815260200180610a8b602e913960400191505060405180910390fd5b61100281565b61100381565b61200481565b60005460ff1615610756576040805162461bcd60e51b815260206004820152601960248201527f74686520636f6e747261637420616c726561647920696e697400000000000000604482015290519081900360640190fd5b68056bc75e2d63100000600190815567016345785d8a00006002556000805460ff19169091179055565b3360009081526004602052604090205460ff166107db576040805162461bcd60e51b81526020600482015260146024820152731c995b185e595c88191bc81b9bdd08195e1a5cdd60621b604482015290519081900360640190fd5b60005460ff1661082e576040805162461bcd60e51b81526020600482015260196024820152781d1a194818dbdb9d1c9858dd081b9bdd081a5b9a5d081e595d603a1b604482015290519081900360640190fd5b610836610a4c565b5033600081815260036020908152604091829020825180840190935280548084526001909101549183018290529192916108fc9161087a919063ffffffff61096c16565b6040518115909202916000818181858888f193505050501580156108a2573d6000803e3d6000fd5b50602081015160405161100291829181156108fc0291906000818181858888f193505050501580156108d8573d6000803e3d6000fd5b50336000818152600460209081526040808320805460ff191690556003825280832083815560010192909255815192835290517fd17202129b83db7880d6b9f25df81c58ad46f7e0e2c92236b1aa10663a4876679281900390910190a15050565b6001600160a01b031660009081526005602052604090205460ff1690565b61100081565b600a5460ff1681565b61100481565b60006109ae83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506109b5565b9392505050565b60008184841115610a445760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b83811015610a095781810151838201526020016109f1565b50505050905090810190601f168015610a365780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b60405180604001604052806000815260200160008152509056fe72656c61796572206973206e6f7420612070726f766973696f6e616c2072656c61796572746865206d6573736167652073656e646572206d75737420626520676f7665726e616e636520636f6e7472616374a164736f6c6343000604000a \ No newline at end of file diff --git a/core/systemcontracts/pascal/chapel/RelayerIncentivizeContract b/core/systemcontracts/pascal/chapel/RelayerIncentivizeContract new file mode 100644 index 0000000000..5ed8cd4838 --- /dev/null +++ b/core/systemcontracts/pascal/chapel/RelayerIncentivizeContract @@ -0,0 +1 @@ +60806040526004361061024a5760003560e01c8063930e1b0911610139578063ace9fcc2116100b6578063df8079e91161007a578063df8079e9146106d5578063e1c7392a146106ea578063e89a3020146106ff578063f9a2bbc714610729578063fd6a68791461073e578063fdd31fcd1461075357610251565b8063ace9fcc21461066c578063c81b166214610681578063d0ab528a14610696578063dc927faf146106ab578063dcae76ab146106c057610251565b8063a7c6a59d116100fd578063a7c6a59d1461052e578063aa82dce114610543578063aad5606314610558578063ab51bb961461056d578063ac4317511461059b57610251565b8063930e1b09146104a75780639dc09262146104da578063a1a11bf5146104ef578063a3c3c0ad14610504578063a78abc161461051957610251565b806343756e5c116101c75780636f93d2e61161018b5780636f93d2e6146103f457806374f2272d1461045357806375d47a0a146104685780637e146cc51461047d5780637e434d541461049257610251565b806343756e5c14610374578063493279b11461038957806351b4dce3146103b557806351e80672146103ca5780636e47b482146103df57610251565b80631b20087c1161020e5780631b20087c146102ed5780631c64331214610302578063280870281461032c5780633a9756121461025657806340bb43c01461034157610251565b8063081e9d1314610256578063093f2fc41461027d5780630e2374a51461029257806310e06a76146102c357806312950c46146102d857610251565b3661025157005b600080fd5b34801561026257600080fd5b5061026b610786565b60408051918252519081900360200190f35b34801561028957600080fd5b5061026b61078b565b34801561029e57600080fd5b506102a7610790565b604080516001600160a01b039092168252519081900360200190f35b3480156102cf57600080fd5b5061026b610796565b3480156102e457600080fd5b5061026b61079c565b3480156102f957600080fd5b5061026b6107a2565b34801561030e57600080fd5b506102a76004803603602081101561032557600080fd5b50356107a8565b34801561033857600080fd5b506102a76107cf565b34801561034d57600080fd5b5061026b6004803603602081101561036457600080fd5b50356001600160a01b03166107d5565b34801561038057600080fd5b506102a76107e7565b34801561039557600080fd5b5061039e6107ed565b6040805161ffff9092168252519081900360200190f35b3480156103c157600080fd5b506102a76107f2565b3480156103d657600080fd5b506102a76107f8565b3480156103eb57600080fd5b506102a76107fe565b34801561040057600080fd5b5061043f6004803603608081101561041757600080fd5b506001600160a01b038135811691602081013590911690604081013590606001351515610804565b604080519115158252519081900360200190f35b34801561045f57600080fd5b5061026b6108d6565b34801561047457600080fd5b506102a76108dc565b34801561048957600080fd5b5061026b6108e2565b34801561049e57600080fd5b506102a76108e7565b3480156104b357600080fd5b5061026b600480360360208110156104ca57600080fd5b50356001600160a01b03166108ed565b3480156104e657600080fd5b506102a76108ff565b3480156104fb57600080fd5b506102a7610905565b34801561051057600080fd5b5061026b61090b565b34801561052557600080fd5b5061043f610911565b34801561053a57600080fd5b5061026b61091a565b34801561054f57600080fd5b506102a7610920565b34801561056457600080fd5b506102a7610926565b34801561057957600080fd5b5061058261092c565b6040805163ffffffff9092168252519081900360200190f35b3480156105a757600080fd5b5061066a600480360360408110156105be57600080fd5b8101906020810181356401000000008111156105d957600080fd5b8201836020820111156105eb57600080fd5b8035906020019184600183028401116401000000008311171561060d57600080fd5b91939092909160208101903564010000000081111561062b57600080fd5b82018360208201111561063d57600080fd5b8035906020019184600183028401116401000000008311171561065f57600080fd5b509092509050610931565b005b34801561067857600080fd5b5061026b610971565b34801561068d57600080fd5b506102a7610977565b3480156106a257600080fd5b5061026b61097d565b3480156106b757600080fd5b506102a7610983565b3480156106cc57600080fd5b5061026b610989565b3480156106e157600080fd5b506102a761098f565b3480156106f657600080fd5b5061066a610995565b34801561070b57600080fd5b506102a76004803603602081101561072257600080fd5b5035610a5e565b34801561073557600080fd5b506102a7610a6b565b34801561074a57600080fd5b506102a7610a71565b34801561075f57600080fd5b5061026b6004803603602081101561077657600080fd5b50356001600160a01b0316610a77565b600181565b605081565b61200181565b600b5481565b60015481565b600c5481565b600681815481106107b557fe5b6000918252602090912001546001600160a01b0316905081565b61200581565b60076020526000908152604090205481565b61100181565b606181565b61200681565b61200081565b61100581565b6000805460ff1661085c576040805162461bcd60e51b815260206004820152601960248201527f74686520636f6e7472616374206e6f7420696e69742079657400000000000000604482015290519081900360640190fd5b336120001461089c5760405162461bcd60e51b815260040180806020018281038252602f815260200180610ab8602f913960400191505060405180910390fd5b6040805162461bcd60e51b815260206004820152600a60248201526919195c1c9958d85d195960b21b604482015290519081900360640190fd5b60035481565b61100881565b600581565b61200381565b60056020526000908152604090205481565b61100781565b61100681565b600a5481565b60005460ff1681565b60045481565b61200281565b61300081565b600081565b336110071461089c5760405162461bcd60e51b815260040180806020018281038252602e815260200180610a8a602e913960400191505060405180910390fd5b60025481565b61100281565b600e5481565b61100381565b60095481565b61200481565b60005460ff16156109ed576040805162461bcd60e51b815260206004820152601960248201527f74686520636f6e747261637420616c726561647920696e697400000000000000604482015290519081900360640190fd5b60005460ff1615610a3b576040805162461bcd60e51b8152602060048201526013602482015272185b1c9958591e481a5b9a5d1a585b1a5e9959606a1b604482015290519081900360640190fd5b60018080556005600255600381905560506004556000805460ff19169091179055565b600881815481106107b557fe5b61100081565b61100481565b600d602052600090815260409020548156fe746865206d6573736167652073656e646572206d75737420626520676f7665726e616e636520636f6e7472616374746865206d6573736167652073656e646572206d7573742062652063726f737320636861696e20636f6e7472616374a164736f6c6343000604000a \ No newline at end of file diff --git a/core/systemcontracts/pascal/chapel/SlashContract b/core/systemcontracts/pascal/chapel/SlashContract new file mode 100644 index 0000000000..95bd97bd97 --- /dev/null +++ b/core/systemcontracts/pascal/chapel/SlashContract @@ -0,0 +1 @@ +608060405234801561001057600080fd5b506004361061028a5760003560e01c80638256ace61161015c578063c80d4b8f116100ce578063dcc6f15611610087578063dcc6f156146104b6578063df8079e9146104be578063e1c7392a146104c6578063f9a2bbc7146104ce578063fc4333cd146104d6578063fd6a6879146104de5761028a565b8063c80d4b8f14610478578063c81b166214610480578063c8509d8114610405578063c96be4cb14610488578063cc844b731461049b578063dc927faf146104ae5761028a565b8063a78abc1611610120578063a78abc1614610430578063aa82dce114610438578063aad5606314610440578063ab51bb9614610448578063ac0af6291461045d578063ac431751146104655761028a565b80638256ace6146103fd578063831d65d1146104055780639dc09262146104185780639f804f5f14610420578063a1a11bf5146104285761028a565b806343756e5c116102005780635bfb4990116101b95780635bfb4990146103c257806362b72cf5146103d55780636e47b482146103dd57806375d47a0a146103e55780637912a65d146103ed5780637e434d54146103f55761028a565b806343756e5c14610385578063493279b11461038d57806350055f90146103a257806351b4dce3146103aa57806351e80672146103b2578063567a372d146103ba5761028a565b80632808702811610252578063280870281461031957806328aa02b1146103215780633306ccca1461033457806335aa2e441461034957806337c8dab91461035c578063389f4f711461037d5761028a565b80630e2374a51461028f5780631182b875146102ad57806322d1e80b146102cd57806323bac5a2146102e25780632796211814610304575b600080fd5b6102976104e6565b6040516102a49190612b25565b60405180910390f35b6102c06102bb366004612a3e565b6104ec565b6040516102a49190612b5d565b6102d5610552565b6040516102a49190612b52565b6102f56102f0366004612743565b61055b565b6040516102a4939291906132c0565b61031761031236600461289b565b61057e565b005b6102976108d3565b61031761032f36600461277b565b6108d9565b61033c61090a565b6040516102a49190613288565b610297610357366004612a0e565b610910565b61036f61036a366004612743565b610937565b6040516102a49291906132b2565b61033c61098e565b610297610994565b61039561099a565b6040516102a49190613279565b61033c61099f565b6102976109a5565b6102976109ab565b61033c6109b1565b6103176103d0366004612743565b6109b7565b61033c610a3f565b610297610a45565b610297610a4b565b61033c610a51565b610297610a56565b61036f610a5c565b610317610413366004612a3e565b610a66565b610297610a87565b61033c610a8d565b610297610a93565b6102d5610a99565b610297610aa2565b610297610aa8565b610450610aae565b6040516102a491906132d8565b61033c610ab3565b6103176104733660046128f2565b610ab8565b61033c611054565b610297611059565b610317610496366004612743565b61105f565b6103176104a936600461295b565b61137c565b61029761181b565b61033c611821565b610297611826565b61031761182c565b610297611868565b61031761186e565b610297611cb7565b61200181565b606033612000146105185760405162461bcd60e51b815260040161050f90613153565b60405180910390fd5b60005460ff1661053a5760405162461bcd60e51b815260040161050f90612c49565b60405162461bcd60e51b815260040161050f90612e18565b60075460ff1681565b600260208190526000918252604090912080546001820154919092015460ff1683565b60005460ff166105a05760405162461bcd60e51b815260040161050f90612c49565b6006546105ad5760146006555b6008546105bb576170806008555b8151158015906105cb5750805115155b6105e75760405162461bcd60e51b815260040161050f906130e8565b60408051600380825260808201909252606091816020015b60608152602001906001900390816105ff5790505090506106206061611cbd565b8160008151811061062d57fe5b602002602001018190525061064183611cd8565b8160018151811061064e57fe5b602002602001018190525061066282611cd8565b8160028151811061066f57fe5b6020026020010181905250606061068582611d2e565b60408051603480825260608281019093529293509091602082018180368337019050509050815160346020830182602086016068600019fa6106c657600080fd5b506014810151603482015160405163436aa28360e11b8152600090612002906386d54506906106f9908690600401612b25565b60206040518083038186803b15801561071157600080fd5b505afa158015610725573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610749919061275f565b6001600160a01b031614156107705760405162461bcd60e51b815260040161050f90612c19565b43600854820110156107945760405162461bcd60e51b815260040161050f90612bba565b604051631871f7d960e31b81526120029063c38fbec8906107b9908590600401612b25565b600060405180830381600087803b1580156107d357600080fd5b505af11580156107e7573d6000803e3d6000fd5b50506040516335409f7f60e01b815261100092506335409f7f9150610810908590600401612b25565b600060405180830381600087803b15801561082a57600080fd5b505af115801561083e573d6000803e3d6000fd5b50506006546040516309a99b4f60e41b815260646110028031909302049350909150639a99b4f0906108769033908590600401612b39565b602060405180830381600087803b15801561089057600080fd5b505af11580156108a4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108c89190612a26565b505050505050505050565b61200581565b33611000146108fa5760405162461bcd60e51b815260040161050f90612e9e565b610905838383611dbf565b505050565b61708081565b6001818154811061091d57fe5b6000918252602090912001546001600160a01b0316905081565b600080610942612576565b5050506001600160a01b0316600090815260026020818152604092839020835160608101855281548082526001830154938201849052919093015460ff16151592909301919091529091565b60055481565b61100181565b606181565b60065481565b61200681565b61200081565b60045481565b33611000146109d85760405162461bcd60e51b815260040161050f90612e9e565b60005460ff166109fa5760405162461bcd60e51b815260040161050f90612c49565b806001600160a01b03167fd7bc86ff5d08c8ab043edec743302aba2520e6635172a428bc956721db9e2d1c6000604051610a349190612b70565b60405180910390a250565b60035481565b61100581565b61100881565b603281565b61200381565b6004546005549091565b33612000146105185760405162461bcd60e51b815260040161050f90613153565b61100781565b60085481565b61100681565b60005460ff1681565b61200281565b61300081565b600081565b600481565b60005460ff16610ada5760405162461bcd60e51b815260040161050f90612c49565b3361100714610afb5760405162461bcd60e51b815260040161050f90612fd7565b610b6684848080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250506040805180820190915260148152731b5a5cd9195b59585b9bdc951a1c995cda1bdb1960621b60208201529150611ff89050565b15610c015760208114610b8b5760405162461bcd60e51b815260040161050f90612e2a565b604080516020601f8401819004810282018101909252828152600091610bc99185858083850183828082843760009201919091525061205292505050565b905060018110158015610bdd575060055481105b610bf95760405162461bcd60e51b815260040161050f9061310e565b600455611011565b610c6784848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505060408051808201909152600f81526e19995b1bdb9e551a1c995cda1bdb19608a1b60208201529150611ff89050565b15610d035760208114610c8c5760405162461bcd60e51b815260040161050f90613025565b604080516020601f8401819004810282018101909252828152600091610cca9185858083850183828082843760009201919091525061205292505050565b90506103e88111158015610cdf575060045481115b610cfb5760405162461bcd60e51b815260040161050f90612d02565b600555611011565b610d7084848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505060408051808201909152601681527566656c6f6e79536c617368526577617264526174696f60501b60208201529150611ff89050565b15610e0a5760208114610d955760405162461bcd60e51b815260040161050f90612f5f565b604080516020601f8401819004810282018101909252828152600091610dd39185858083850183828082843760009201919091525061205292505050565b9050600a8110158015610de65750606481105b610e025760405162461bcd60e51b815260040161050f90613067565b600655611011565b610e7e84848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505060408051808201909152601881527f656e61626c654d616c6963696f7573566f7465536c617368000000000000000060208201529150611ff89050565b15610ef55760208114610ea35760405162461bcd60e51b815260040161050f90612d37565b604080516020601f8401819004810282018101909252828152610edf919084848083850183828082843760009201919091525061205792505050565b6007805460ff1916911515919091179055611011565b610f5c84848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505060408051808201909152601081526f66656c6f6e79536c61736853636f706560801b60208201529150611ff89050565b15610ff95760208114610f815760405162461bcd60e51b815260040161050f90612eee565b604080516020601f8401819004810282018101909252828152600091610fbf9185858083850183828082843760009201919091525061205292505050565b90506170808110158015610fd55750620d2f0081105b610ff15760405162461bcd60e51b815260040161050f90612c80565b600855611011565b60405162461bcd60e51b815260040161050f906131ef565b7f6cdb0ac70ab7f2e2d035cca5be60d89906f2dede7648ddbd7402189c1eeed17a848484846040516110469493929190612b88565b60405180910390a150505050565b609681565b61100281565b33411461107e5760405162461bcd60e51b815260040161050f906131a2565b60005460ff166110a05760405162461bcd60e51b815260040161050f90612c49565b60035443116110c15760405162461bcd60e51b815260040161050f90613244565b3a156110df5760405162461bcd60e51b815260040161050f90612f31565b60405163155853f360e21b8152611000906355614fcc90611104908490600401612b25565b60206040518083038186803b15801561111c57600080fd5b505afa158015611130573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611154919061287f565b61115d57611375565b611165612576565b506001600160a01b0381166000908152600260208181526040928390208351606081018552815481526001820154928101929092529091015460ff1615801592820192909252906111c0576020810180516001019052611219565b60016040820181905260208201819052805480820182556000919091527fb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf60180546001600160a01b0319166001600160a01b0384161790555b43815260055460208201518161122b57fe5b066112a357600060208201526040516335409f7f60e01b8152611000906335409f7f9061125c908590600401612b25565b600060405180830381600087803b15801561127657600080fd5b505af115801561128a573d6000803e3d6000fd5b5050505061129e8282602001516000611dbf565b61130f565b6004548160200151816112b257fe5b0661130f576040516375abf10160e11b81526110009063eb57e202906112dc908590600401612b25565b600060405180830381600087803b1580156112f657600080fd5b505af115801561130a573d6000803e3d6000fd5b505050505b6001600160a01b0382166000818152600260208181526040808420865181559186015160018301558581015191909201805460ff1916911515919091179055517fddb6012116e51abf5436d956a4f0ebd927e92c576ff96d7918290c8782291e3e9190a2505b5043600355565b60005460ff1661139e5760405162461bcd60e51b815260040161050f90612c49565b60075460ff166113c05760405162461bcd60e51b815260040161050f90612be4565b6006546113cd5760146006555b6008546113db576170806008555b6008548151604001514391011180156113ff57504360085482602001516040015101115b61141b5760405162461bcd60e51b815260040161050f90613216565b8060200151602001518160000151602001511480156114495750806020015160600151816000015160600151145b156114665760405162461bcd60e51b815260040161050f90612e71565b8051604081015190511080156114855750602081015160408101519051105b6114a15760405162461bcd60e51b815260040161050f90612de1565b6020810151518151511080156114c65750806000015160400151816020015160400151105b806114f157508051516020820151511080156114f15750806020015160400151816000015160400151105b8061150b5750806020015160400151816000015160400151145b6115275760405162461bcd60e51b815260040161050f90612ccb565b604080820151905163ea321e4960e01b81526110009163ea321e49916115509190600401612b5d565b60206040518083038186803b15801561156857600080fd5b505afa15801561157c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115a0919061287f565b6115bc5760405162461bcd60e51b815260040161050f90612fa8565b6115ce8160000151826040015161207f565b80156115e757506115e78160200151826040015161207f565b6116035760405162461bcd60e51b815260040161050f90612d82565b6060806110006001600160a01b0316633b071dcc6040518163ffffffff1660e01b815260040160006040518083038186803b15801561164157600080fd5b505afa158015611655573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261167d91908101906127bc565b9150915060005b81518110156117ba576116ae82828151811061169c57fe5b60200260200101518560400151612257565b156117b2576006546040516309a99b4f60e41b815260646110028031909302049190639a99b4f0906116e69033908590600401612b39565b602060405180830381600087803b15801561170057600080fd5b505af1158015611714573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117389190612a26565b506110006001600160a01b03166335409f7f85848151811061175657fe5b60200260200101516040518263ffffffff1660e01b815260040161177a9190612b25565b600060405180830381600087803b15801561179457600080fd5b505af11580156117a8573d6000803e3d6000fd5b50505050506117ba565b600101611684565b506040808401519051630e9fbf5160e01b815261200291630e9fbf51916117e49190600401612b5d565b600060405180830381600087803b1580156117fe57600080fd5b505af1158015611812573d6000803e3d6000fd5b50505050505050565b61100381565b601481565b61200481565b60005460ff161561184f5760405162461bcd60e51b815260040161050f906130b1565b603260045560966005556000805460ff19166001179055565b61100081565b336110001461188f5760405162461bcd60e51b815260040161050f90612e9e565b60005460ff166118b15760405162461bcd60e51b815260040161050f90612c49565b6001546118bd57611cb5565b600154600090600019015b808211611c89576000805b828410156119ec576118e3612576565b60026000600187815481106118f457fe5b60009182526020808320909101546001600160a01b0316835282810193909352604091820190208151606081018352815481526001820154938101939093526002015460ff1615159082015260055490915060049004816020015111156119d65760046005548161196157fe5b0481602001510381602001818152505080600260006001888154811061198357fe5b6000918252602080832091909101546001600160a01b0316835282810193909352604091820190208351815591830151600183015591909101516002909101805460ff19169115159190911790556119e0565b60019250506119ec565b508360010193506118d3565b828411611b83576119fb612576565b6002600060018681548110611a0c57fe5b60009182526020808320909101546001600160a01b0316835282810193909352604091820190208151606081018352815481526001820154938101939093526002015460ff161515908201526005549091506004900481602001511115611af457600460055481611a7957fe5b04816020015103816020018181525050806002600060018781548110611a9b57fe5b6000918252602080832091909101546001600160a01b03168352828101939093526040918201902083518155918301516001808401919091559201516002909101805460ff19169115159190911790559150611b839050565b6002600060018681548110611b0557fe5b60009182526020808320909101546001600160a01b031683528201929092526040018120818155600181810192909255600201805460ff19169055805480611b4957fe5b600082815260209020810160001990810180546001600160a01b031916905501905583611b765750611b83565b50600019909201916119ec565b818015611b8d5750805b15611c6c576002600060018681548110611ba357fe5b60009182526020808320909101546001600160a01b031683528201929092526040018120818155600181810192909255600201805460ff19169055805484908110611bea57fe5b600091825260209091200154600180546001600160a01b039092169186908110611c1057fe5b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b031602179055506001805480611c4957fe5b600082815260209020810160001990810180546001600160a01b03191690550190555b82611c78575050611c89565b5050600190910190600019016118c8565b6040517fcfdb3b6ccaeccbdc68be3c59c840e3b3c90f0a7c491f5fff1cf56cfda200dd9c90600090a150505b565b61100481565b6060611cd0611ccb836122bb565b611cd8565b90505b919050565b606081516001148015611d0a5750607f60f81b82600081518110611cf857fe5b01602001516001600160f81b03191611155b15611d16575080611cd3565b611cd0611d288351608060ff166123a1565b83612473565b6060815160001415611d4f5750604080516000815260208101909152611cd3565b606082600081518110611d5e57fe5b602002602001015190506000600190505b8351811015611d9f57611d9582858381518110611d8857fe5b6020026020010151612473565b9150600101611d6f565b50611db8611db2825160c060ff166123a1565b82612473565b9392505050565b8015611e21576040516375cc7d8960e01b8152612002906375cc7d8990611dea908690600401612b25565b600060405180830381600087803b158015611e0457600080fd5b505af1158015611e18573d6000803e3d6000fd5b50505050610905565b6040516375cc7d8960e01b8152612002906375cc7d8990611e46908690600401612b25565b600060405180830381600087803b158015611e6057600080fd5b505af1925050508015611e71575060015b610905576040516000815260443d1015611e8d57506000611f2a565b60046000803e60005160e01c6308c379a08114611eae576000915050611f2a565b60043d036004833e81513d602482011167ffffffffffffffff82111715611eda57600092505050611f2a565b808301805167ffffffffffffffff811115611efc576000945050505050611f2a565b8060208301013d8601811115611f1a57600095505050505050611f2a565b601f01601f191660405250925050505b80611f355750611f7e565b836001600160a01b03167fd7bc86ff5d08c8ab043edec743302aba2520e6635172a428bc956721db9e2d1c8483604051611f70929190613291565b60405180910390a250611ff3565b3d808015611fa8576040519150601f19603f3d011682016040523d82523d6000602084013e611fad565b606091505b50836001600160a01b03167fd7bc86ff5d08c8ab043edec743302aba2520e6635172a428bc956721db9e2d1c8483604051611fe9929190613291565b60405180910390a2505b610905565b60008160405160200161200b9190612b09565b60405160208183030381529060405280519060200120836040516020016120329190612b09565b604051602081830303815290604052805190602001201490505b92915050565b015190565b8082015160009060ff811615612071576001915081612077565b60009150815b505092915050565b60408051600480825260a0820190925260009160609190816020015b606081526020019060019003908161209b5750506040805160208082528183019092529192506060919080820181803683370190505090506120e08560000151611cbd565b826000815181106120ed57fe5b602002602001018190525061210860208660200151836124f0565b61211181611cd8565b8260018151811061211e57fe5b60200260200101819052506121368560400151611cbd565b8260028151811061214357fe5b602002602001018190525061215e60208660600151836124f0565b61216781611cd8565b8260038151811061217457fe5b602002602001018190525061219a602061218d84611d2e565b80519060200120836124f0565b6040805160b080825260e082019092526060916020820181803683370190505090506121ca818360006020612500565b6121dc81876080015160206060612500565b6121ea818660806030612500565b604080516001808252818301909252606091602082018180368337019050509050815160016020830182602086016066600019fa61222757600080fd5b50600161223582600061255a565b60ff161461224a57600094505050505061204c565b5060019695505050505050565b81518151600091600191811480831461227357600092506122b1565b600160208701838101602088015b6002848385100114156122ac5780518351146122a05760009650600093505b60209283019201612281565b505050505b5090949350505050565b604080516020808252818301909252606091829190602082018180368337505050602081018490529050600067ffffffffffffffff1984166122ff57506018612323565b6fffffffffffffffffffffffffffffffff19841661231f57506010612323565b5060005b60208110156123595781818151811061233857fe5b01602001516001600160f81b0319161561235157612359565b600101612323565b60008160200390506060816040519080825280601f01601f19166020018201604052801561238e576020820181803683370190505b5080830196909652508452509192915050565b60606801000000000000000083106123cb5760405162461bcd60e51b815260040161050f90612db9565b604080516001808252818301909252606091602082018180368337019050509050603784116124255782840160f81b8160008151811061240757fe5b60200101906001600160f81b031916908160001a905350905061204c565b6060612430856122bb565b90508381510160370160f81b8260008151811061244957fe5b60200101906001600160f81b031916908160001a90535061246a8282612473565b95945050505050565b6060806040519050835180825260208201818101602087015b818310156124a457805183526020928301920161248c565b50855184518101855292509050808201602086015b818310156124d15780518352602092830192016124b9565b508651929092011591909101601f01601f191660405250905092915050565b9091018181526020918201910152565b60005b818110156125535783818151811061251757fe5b602001015160f81c60f81b85848060010195508151811061253457fe5b60200101906001600160f81b031916908160001a905350600101612503565b5050505050565b6000816001018351101561256d57600080fd5b50016001015190565b604051806060016040528060008152602001600081526020016000151581525090565b600082601f8301126125a9578081fd5b81516125bc6125b782613310565b6132e9565b818152915060208083019084810160005b84811015612632578151870188603f8201126125e857600080fd5b838101516125f86125b782613330565b81815260408b8184860101111561260e57600080fd5b61261d83888401838701613354565b508652505092820192908201906001016125cd565b505050505092915050565b60008083601f84011261264e578182fd5b50813567ffffffffffffffff811115612665578182fd5b60208301915083602082850101111561267d57600080fd5b9250929050565b600082601f830112612694578081fd5b81356126a26125b782613330565b91508082528360208285010111156126b957600080fd5b8060208401602084013760009082016020015292915050565b600060a082840312156126e3578081fd5b6126ed60a06132e9565b905081358152602082013560208201526040820135604082015260608201356060820152608082013567ffffffffffffffff81111561272b57600080fd5b61273784828501612684565b60808301525092915050565b600060208284031215612754578081fd5b8135611db881613384565b600060208284031215612770578081fd5b8151611db881613384565b60008060006060848603121561278f578182fd5b833561279a81613384565b92506020840135915060408401356127b18161339c565b809150509250925092565b600080604083850312156127ce578182fd5b825167ffffffffffffffff808211156127e5578384fd5b81850186601f8201126127f6578485fd5b805192506128066125b784613310565b80848252602080830192508084018a828389028701011115612826578889fd5b8894505b8685101561285157805161283d81613384565b84526001949094019392810192810161282a565b508801519096509350505080821115612868578283fd5b5061287585828601612599565b9150509250929050565b600060208284031215612890578081fd5b8151611db88161339c565b600080604083850312156128ad578182fd5b823567ffffffffffffffff808211156128c4578384fd5b6128d086838701612684565b935060208501359150808211156128e5578283fd5b5061287585828601612684565b60008060008060408587031215612907578182fd5b843567ffffffffffffffff8082111561291e578384fd5b61292a8883890161263d565b90965094506020870135915080821115612942578384fd5b5061294f8782880161263d565b95989497509550505050565b60006020828403121561296c578081fd5b813567ffffffffffffffff80821115612983578283fd5b81840160608187031215612995578384fd5b61299f60606132e9565b92508035828111156129af578485fd5b6129bb878284016126d2565b8452506020810135828111156129cf578485fd5b6129db878284016126d2565b6020850152506040810135828111156129f2578485fd5b6129fe87828401612684565b6040850152509195945050505050565b600060208284031215612a1f578081fd5b5035919050565b600060208284031215612a37578081fd5b5051919050565b600080600060408486031215612a52578081fd5b833560ff81168114612a62578182fd5b9250602084013567ffffffffffffffff811115612a7d578182fd5b612a898682870161263d565b9497909650939450505050565b60008284528282602086013780602084860101526020601f19601f85011685010190509392505050565b60008151808452612ad8816020860160208601613354565b601f01601f19169290920160200192915050565b600a81526919195c1c9958d85d195960b21b602082015260400190565b60008251612b1b818460208701613354565b9190910192915050565b6001600160a01b0391909116815260200190565b6001600160a01b03929092168252602082015260400190565b901515815260200190565b600060208252611db86020830184612ac0565b600082825260406020830152611db860408301612aec565b600060408252612b9c604083018688612a96565b8281036020840152612baf818587612a96565b979650505050505050565b60208082526010908201526f195d9a59195b98d9481d1bdbc81bdb1960821b604082015260600190565b6020808252818101527f6d616c6963696f757320766f746520736c617368206e6f7420656e61626c6564604082015260600190565b6020808252601690820152751d985b1a59185d1bdc881b9bdd081b5a59dc985d195960521b604082015260600190565b60208082526019908201527f74686520636f6e7472616374206e6f7420696e69742079657400000000000000604082015260600190565b6020808252602b908201527f746865206d616c6963696f757320766f746520736c6173682073636f7065206f60408201526a7574206f662072616e676560a81b606082015260800190565b6020808252601a908201527f6e6f2076696f6c6174696f6e206f6620766f74652072756c6573000000000000604082015260600190565b6020808252818101527f7468652066656c6f6e795468726573686f6c64206f7574206f662072616e6765604082015260600190565b6020808252602b908201527f6c656e677468206f6620656e61626c654d616c6963696f7573566f7465536c6160408201526a0e6d040dad2e6dac2e8c6d60ab1b606082015260800190565b60208082526017908201527f766572696679207369676e6174757265206661696c6564000000000000000000604082015260600190565b6020808252600e908201526d696e70757420746f6f206c6f6e6760901b604082015260600190565b60208082526019908201527f7372634e756d20626967676572207468616e207461724e756d00000000000000604082015260600190565b600060208252611cd060208301612aec565b60208082526027908201527f6c656e677468206f66206d697364656d65616e6f725468726573686f6c64206d6040820152660d2e6dac2e8c6d60cb1b606082015260800190565b60208082526013908201527274776f206964656e746963616c20766f74657360681b604082015260600190565b60208082526030908201527f746865206d6573736167652073656e646572206d7573742062652076616c696460408201526f185d1bdc94d95d0818dbdb9d1c9858dd60821b606082015260800190565b60208082526023908201527f6c656e677468206f662066656c6f6e79536c61736853636f7065206d69736d616040820152620e8c6d60eb1b606082015260800190565b6020808252601490820152736761737072696365206973206e6f74207a65726f60601b604082015260600190565b60208082526029908201527f6c656e677468206f662066656c6f6e79536c617368526577617264526174696f604082015268040dad2e6dac2e8c6d60bb1b606082015260800190565b6020808252601590820152741d9bdd195059191c881a5cc81b9bdd08199bdd5b99605a1b604082015260600190565b6020808252602e908201527f746865206d6573736167652073656e646572206d75737420626520676f76657260408201526d1b985b98d94818dbdb9d1c9858dd60921b606082015260800190565b60208082526022908201527f6c656e677468206f662066656c6f6e795468726573686f6c64206d69736d61746040820152610c6d60f31b606082015260800190565b6020808252602a908201527f7468652066656c6f6e7920736c6173682072657761726420726174696f206f7560408201526974206f662072616e676560b01b606082015260800190565b60208082526019908201527f74686520636f6e747261637420616c726561647920696e697400000000000000604082015260600190565b6020808252600c908201526b32b6b83a3c903432b0b232b960a11b604082015260600190565b60208082526025908201527f746865206d697364656d65616e6f725468726573686f6c64206f7574206f662060408201526472616e676560d81b606082015260800190565b6020808252602f908201527f746865206d6573736167652073656e646572206d7573742062652063726f737360408201526e0818da185a5b8818dbdb9d1c9858dd608a1b606082015260800190565b6020808252602d908201527f746865206d6573736167652073656e646572206d75737420626520746865206260408201526c3637b1b590383937b23ab1b2b960991b606082015260800190565b6020808252600d908201526c756e6b6e6f776e20706172616d60981b604082015260600190565b6020808252601490820152731d185c99d95d08189b1bd8dac81d1bdbc81bdb1960621b604082015260600190565b6020808252818101527f63616e206e6f7420736c61736820747769636520696e206f6e6520626c6f636b604082015260600190565b61ffff91909116815260200190565b90815260200190565b6000838252604060208301526132aa6040830184612ac0565b949350505050565b918252602082015260400190565b92835260208301919091521515604082015260600190565b63ffffffff91909116815260200190565b60405181810167ffffffffffffffff8111828210171561330857600080fd5b604052919050565b600067ffffffffffffffff821115613326578081fd5b5060209081020190565b600067ffffffffffffffff821115613346578081fd5b50601f01601f191660200190565b60005b8381101561336f578181015183820152602001613357565b8381111561337e576000848401525b50505050565b6001600160a01b038116811461339957600080fd5b50565b801515811461339957600080fdfea164736f6c6343000604000a \ No newline at end of file diff --git a/core/systemcontracts/pascal/chapel/StakeCreditContract b/core/systemcontracts/pascal/chapel/StakeCreditContract new file mode 100644 index 0000000000..60aeae58f9 --- /dev/null +++ b/core/systemcontracts/pascal/chapel/StakeCreditContract @@ -0,0 +1 @@ +6080604052600436106101d15760003560e01c8063647df759116100f7578063a9059cbb11610095578063c2cde2b211610064578063c2cde2b21461063c578063d241c1ea1461065c578063dd62ed3e1461069e578063f399e22e146106be57600080fd5b8063a9059cbb146105af578063a9664feb146105cf578063aa1966cd146105ef578063aad3ec961461061c57600080fd5b806391faf0b4116100d157806391faf0b41461053a57806395d89b411461055a578063a457c2d71461056f578063a5d059ca1461058f57600080fd5b8063647df759146104b75780636bbf2249146104d757806370a082311461050457600080fd5b80632f2d448a1161016f57806345bc4d101161013e57806345bc4d101461044f5780634d99dd161461046f5780635c19a95c1461048f5780635e607d76146104a257600080fd5b80632f2d448a146103bb578063313ce567146103db57806339509351146103f75780633a5381b51461041757600080fd5b8063095ea7b3116101ab578063095ea7b31461034057806315d1f8981461037057806318160ddd1461038657806323b872dd1461039b57600080fd5b8063038c0023146102cb57806306fdde03146102fe5780630913db471461032057600080fd5b366102c657336120021461020157604051630f22c43960e41b815261200260048201526024015b60405180910390fd5b60006120026001600160a01b0316631fa8882b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610243573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102679190611d9e565b6102719042611dcd565b6098546000828152609d6020908152604080832093909355609c9052908120805492935034929091906102a5908490611def565b9250508190555034609860008282546102be9190611def565b925050819055005b600080fd5b3480156102d757600080fd5b506102eb6102e6366004611e1a565b6106d1565b6040519081526020015b60405180910390f35b34801561030a57600080fd5b50610313610701565b6040516102f59190611e3e565b34801561032c57600080fd5b506102eb61033b366004611e1a565b610793565b34801561034c57600080fd5b5061036061035b366004611e8c565b6107b5565b60405190151581526020016102f5565b34801561037c57600080fd5b506102eb60985481565b34801561039257600080fd5b506067546102eb565b3480156103a757600080fd5b506103606103b6366004611eb8565b6107cd565b3480156103c757600080fd5b506102eb6103d6366004611e1a565b6107f1565b3480156103e757600080fd5b50604051601281526020016102f5565b34801561040357600080fd5b50610360610412366004611e8c565b6108b6565b34801561042357600080fd5b50609754610437906001600160a01b031681565b6040516001600160a01b0390911681526020016102f5565b34801561045b57600080fd5b506102eb61046a366004611ef9565b6108d8565b34801561047b57600080fd5b506102eb61048a366004611e8c565b6109cb565b6102eb61049d366004611e1a565b610be2565b6104b56104b0366004611f12565b610c58565b005b3480156104c357600080fd5b506102eb6104d2366004611ef9565b610dcb565b3480156104e357600080fd5b506102eb6104f2366004611ef9565b609d6020526000908152604090205481565b34801561051057600080fd5b506102eb61051f366004611e1a565b6001600160a01b031660009081526065602052604090205490565b34801561054657600080fd5b506102eb610555366004611ef9565b610e0a565b34801561056657600080fd5b50610313610e45565b34801561057b57600080fd5b5061036061058a366004611e8c565b610e54565b34801561059b57600080fd5b506102eb6105aa366004611e8c565b610ecf565b3480156105bb57600080fd5b506103606105ca366004611e8c565b610fd0565b3480156105db57600080fd5b506102eb6105ea366004611e8c565b610fde565b3480156105fb57600080fd5b506102eb61060a366004611ef9565b609c6020526000908152604090205481565b34801561062857600080fd5b506102eb610637366004611e8c565b611107565b34801561064857600080fd5b506102eb610657366004611e1a565b6113aa565b34801561066857600080fd5b5061067c610677366004611e8c565b6113c8565b60408051825181526020808401519082015291810151908201526060016102f5565b3480156106aa57600080fd5b506102eb6106b9366004611f3c565b61144b565b6104b56106cc366004611f75565b611476565b6001600160a01b0381166000908152609a6020526040812054600f81810b600160801b909204900b035b92915050565b60606068805461071090611ffa565b80601f016020809104026020016040519081016040528092919081815260200182805461073c90611ffa565b80156107895780601f1061075e57610100808354040283529160200191610789565b820191906000526020600020905b81548152906001019060200180831161076c57829003601f168201915b5050505050905090565b6001600160a01b0381166000908152606560205260408120546106fb90610e0a565b6000336107c381858561162c565b5060019392505050565b6000336107db858285611645565b6107e68585856116b9565b506001949350505050565b6001600160a01b0381166000908152609a6020526040812054600f81810b600160801b909204900b0381805b828110156108ae576001600160a01b0385166000908152609a6020526040812061084790836116d2565b6000818152609960209081526040918290208251606081018452815481526001820154928101929092526002015491810182905291925042106108945761088d8461202e565b935061089b565b50506108ae565b5050806108a79061202e565b905061081d565b509392505050565b6000336107c38185856108c9838361144b565b6108d39190611def565b61162c565b6000336120021461090057604051630f22c43960e41b815261200260048201526024016101f8565b6097546001600160a01b03166000908152606560205260408120549061092584610dcb565b90508181116109345780610936565b815b609754909150600090610952906001600160a01b031683611743565b6040519091506000906110029083908381818185875af1925050503d8060008114610999576040519150601f19603f3d011682016040523d82523d6000602084013e61099e565b606091505b50509050806109c0576040516312171d8360e31b815260040160405180910390fd5b50925050505b919050565b600033612002146109f357604051630f22c43960e41b815261200260048201526024016101f8565b81600003610a1457604051639811e0c760e01b815260040160405180910390fd5b6001600160a01b038316600090815260656020526040902054821115610a4d57604051631e9acf1760e31b815260040160405180910390fd5b610a578383611743565b905060006120026001600160a01b031663fc0c5ff16040518163ffffffff1660e01b8152600401602060405180830381865afa158015610a9b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610abf9190611d9e565b610ac99042611def565b6040805160608101825285815260208101859052908101829052909150600085610af281611778565b60405160609290921b6bffffffffffffffffffffffff19166020830152603482015260540160408051601f1981840301815291815281516020928301206000818152609990935291205490915015610b5d5760405163b19e911560e01b815260040160405180910390fd5b600081815260996020908152604080832085518155828601516001820155818601516002909101556001600160a01b0389168352609a9091529020610bd990828154600160801b90819004600f0b6000818152600180860160205260409091209390935583546001600160801b03908116939091011602179055565b50505092915050565b60003361200214610c0a57604051630f22c43960e41b815261200260048201526024016101f8565b34600003610c2b57604051631f2a200560e01b815260040160405180910390fd5b610c3582346117a0565b9050806000036109c657604051639811e0c760e01b815260040160405180910390fd5b3361200214610c7e57604051630f22c43960e41b815261200260048201526024016101f8565b346000612710610c9867ffffffffffffffff851684612047565b610ca29190611dcd565b90506000610cb0828461205e565b905060006120026001600160a01b0316631fa8882b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610cf4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d189190611d9e565b610d229042611dcd565b6098546000828152609d6020908152604080832093909355609c905290812080549293508492909190610d56908490611def565b925050819055508160986000828254610d6f9190611def565b9091555050609754610d8a906001600160a01b0316846117a0565b5060408051838152602081018590527ffb0e1482d62102ab9594f69d4c6d693749e3e2bf1c21af272f5456b2d5a4f6b5910160405180910390a15050505050565b6000609854600003610df0576040516307b76ce760e51b815260040160405180910390fd5b609854606754610e009084612047565b6106fb9190611dcd565b6000610e1560675490565b600003610e3557604051632fe8dae960e01b815260040160405180910390fd5b606754609854610e009084612047565b60606069805461071090611ffa565b60003381610e62828661144b565b905083811015610ec25760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b60648201526084016101f8565b6107e6828686840361162c565b60003361200214610ef757604051630f22c43960e41b815261200260048201526024016101f8565b81600003610f1857604051639811e0c760e01b815260040160405180910390fd5b6001600160a01b038316600090815260656020526040902054821115610f5157604051631e9acf1760e31b815260040160405180910390fd5b610f5b8383611743565b6040519091506000906120029083908381818185875af1925050503d8060008114610fa2576040519150601f19603f3d011682016040523d82523d6000602084013e610fa7565b606091505b5050905080610fc9576040516312171d8360e31b815260040160405180910390fd5b5092915050565b6000336107c38185856116b9565b6001600160a01b0382166000908152609a6020526040812054600f81810b600160801b909204900b03600003611016575060006106fb565b81158061104a57506001600160a01b0383166000908152609a6020526040902054600f81810b600160801b909204900b0382115b611054578161107e565b6001600160a01b0383166000908152609a6020526040902054600f81810b600160801b909204900b035b91506000805b838110156108ae576001600160a01b0385166000908152609a602052604081206110ae90836116d2565b600081815260996020908152604091829020825160608101845281548152600182015492810183905260029091015492810192909252919250906110f29085611def565b93505050806111009061202e565b9050611084565b6000336120021461112f57604051630f22c43960e41b815261200260048201526024016101f8565b6111376117c9565b6001600160a01b0383166000908152609a6020526040902054600f81810b600160801b909204900b036000036111805760405163ad41893760e01b815260040160405180910390fd5b8115806111b457506001600160a01b0383166000908152609a6020526040902054600f81810b600160801b909204900b0382115b6111be57816111e8565b6001600160a01b0383166000908152609a6020526040902054600f81810b600160801b909204900b035b915060005b821561129e576001600160a01b0384166000908152609a6020526040812061121490611822565b6000818152609960209081526040918290208251606081018452815481526001820154928101929092526002015491810182905291925042101561125957505061129e565b6001600160a01b0386166000908152609a6020526040902061127a90611876565b50602081015161128a9084611def565b925061129585612071565b945050506111ed565b806000036112bf576040516303cd8e0960e21b815260040160405180910390fd5b60006120026001600160a01b031663e8f67c3b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611301573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113259190611d9e565b90506000856001600160a01b03168284604051600060405180830381858888f193505050503d8060008114611376576040519150601f19603f3d011682016040523d82523d6000602084013e61137b565b606091505b505090508061139d576040516312171d8360e31b815260040160405180910390fd5b50506001805590506106fb565b6001600160a01b0381166000908152609b60205260408120546106fb565b6113ec60405180606001604052806000815260200160008152602001600081525090565b6001600160a01b0383166000908152609a6020526040812061140e90846116d2565b6000908152609960209081526040918290208251606081018452815481526001820154928101929092526002015491810191909152949350505050565b6001600160a01b03918216600090815260666020908152604080832093909416825291909152205490565b600054610100900460ff16158080156114965750600054600160ff909116105b806114b05750303b1580156114b0575060005460ff166001145b6115135760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084016101f8565b6000805460ff191660011790558015611536576000805461ff0019166101001790555b336120021461155c57604051630f22c43960e41b815261200260048201526024016101f8565b60008383604051602001611571929190612088565b6040516020818303038152906040529050600084846040516020016115979291906120b8565b60405160208183030381529060405290506115b282826118fb565b6115ba611940565b609780546001600160a01b0319166001600160a01b0388161790556115de34611967565b50508015611626576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b50505050565b604051632028747160e01b815260040160405180910390fd5b6000611651848461144b565b9050600019811461162657818110156116ac5760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e636500000060448201526064016101f8565b611626848484840361162c565b604051638cd22d1960e01b815260040160405180910390fd5b6000806116f56116e184611ad7565b85546116f09190600f0b6120d6565b611b45565b8454909150600160801b9004600f90810b9082900b1261172857604051632d0483c560e21b815260040160405180910390fd5b600f0b60009081526001939093016020525050604090205490565b600061174e82610e0a565b905061175a8383611ba9565b806098600082825461176c919061205e565b90915550909392505050565b6001600160a01b0381166000908152609b602052604090208054600181018255905b50919050565b60006117ab82610dcb565b90506117b78382611cdd565b816098600082825461176c9190611def565b60026001540361181b5760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0060448201526064016101f8565b6002600155565b600061183d8254600f81810b600160801b909204900b131590565b1561185b57604051631ed9509560e11b815260040160405180910390fd5b508054600f0b60009081526001909101602052604090205490565b60006118918254600f81810b600160801b909204900b131590565b156118af57604051631ed9509560e11b815260040160405180910390fd5b508054600f0b6000818152600180840160205260408220805492905583546fffffffffffffffffffffffffffffffff191692016001600160801b03169190911790915590565b60018055565b600054610100900460ff166119225760405162461bcd60e51b81526004016101f8906120fe565b606861192e83826121ad565b50606961193b82826121ad565b505050565b600054610100900460ff166118f55760405162461bcd60e51b81526004016101f8906120fe565b600054610100900460ff1661198e5760405162461bcd60e51b81526004016101f8906120fe565b60006120026001600160a01b0316638a4d3fa86040518163ffffffff1660e01b8152600401602060405180830381865afa1580156119d0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119f49190611d9e565b90508082111580611a0e57506097546001600160a01b0316155b80611a1a575060675415155b15611a3857604051632163e6b960e21b815260040160405180910390fd5b60006120026001600160a01b0316634e6fd6c46040518163ffffffff1660e01b8152600401602060405180830381865afa158015611a7a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a9e919061226d565b9050611aaa8183611cdd565b6000611ab6838561205e565b609754909150611acf906001600160a01b031682611cdd565b505050609855565b60006001600160ff1b03821115611b415760405162461bcd60e51b815260206004820152602860248201527f53616665436173743a2076616c756520646f65736e27742066697420696e2061604482015267371034b73a191a9b60c11b60648201526084016101f8565b5090565b80600f81900b81146109c65760405162461bcd60e51b815260206004820152602760248201527f53616665436173743a2076616c756520646f65736e27742066697420696e20316044820152663238206269747360c81b60648201526084016101f8565b6001600160a01b038216611c095760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b60648201526084016101f8565b6001600160a01b03821660009081526065602052604090205481811015611c7d5760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e604482015261636560f01b60648201526084016101f8565b6001600160a01b03831660008181526065602090815260408083208686039055606780548790039055518581529192917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a3505050565b6001600160a01b038216611d335760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f20616464726573730060448201526064016101f8565b8060676000828254611d459190611def565b90915550506001600160a01b0382166000818152606560209081526040808320805486019055518481527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a35050565b600060208284031215611db057600080fd5b5051919050565b634e487b7160e01b600052601160045260246000fd5b600082611dea57634e487b7160e01b600052601260045260246000fd5b500490565b808201808211156106fb576106fb611db7565b6001600160a01b0381168114611e1757600080fd5b50565b600060208284031215611e2c57600080fd5b8135611e3781611e02565b9392505050565b600060208083528351808285015260005b81811015611e6b57858101830151858201604001528201611e4f565b506000604082860101526040601f19601f8301168501019250505092915050565b60008060408385031215611e9f57600080fd5b8235611eaa81611e02565b946020939093013593505050565b600080600060608486031215611ecd57600080fd5b8335611ed881611e02565b92506020840135611ee881611e02565b929592945050506040919091013590565b600060208284031215611f0b57600080fd5b5035919050565b600060208284031215611f2457600080fd5b813567ffffffffffffffff81168114611e3757600080fd5b60008060408385031215611f4f57600080fd5b8235611f5a81611e02565b91506020830135611f6a81611e02565b809150509250929050565b600080600060408486031215611f8a57600080fd5b8335611f9581611e02565b9250602084013567ffffffffffffffff80821115611fb257600080fd5b818601915086601f830112611fc657600080fd5b813581811115611fd557600080fd5b876020828501011115611fe757600080fd5b6020830194508093505050509250925092565b600181811c9082168061200e57607f821691505b60208210810361179a57634e487b7160e01b600052602260045260246000fd5b60006001820161204057612040611db7565b5060010190565b80820281158282048414176106fb576106fb611db7565b818103818111156106fb576106fb611db7565b60008161208057612080611db7565b506000190190565b65029ba30b5b2960d51b815281836006830137660810dc99591a5d60ca1b91016006810191909152600d01919050565b611cdd60f21b81528183600283013760009101600201908152919050565b80820182811260008312801582168215821617156120f6576120f6611db7565b505092915050565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b634e487b7160e01b600052604160045260246000fd5b601f82111561193b57600081815260208120601f850160051c810160208610156121865750805b601f850160051c820191505b818110156121a557828155600101612192565b505050505050565b815167ffffffffffffffff8111156121c7576121c7612149565b6121db816121d58454611ffa565b8461215f565b602080601f83116001811461221057600084156121f85750858301515b600019600386901b1c1916600185901b1785556121a5565b600085815260208120601f198616915b8281101561223f57888601518255948401946001909101908401612220565b508582101561225d5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b60006020828403121561227f57600080fd5b8151611e3781611e0256fea164736f6c6343000811000a \ No newline at end of file diff --git a/core/systemcontracts/pascal/chapel/StakeHubContract b/core/systemcontracts/pascal/chapel/StakeHubContract new file mode 100644 index 0000000000..a84e45061d --- /dev/null +++ b/core/systemcontracts/pascal/chapel/StakeHubContract @@ -0,0 +1 @@ +608060405260043610620003e75760003560e01c80638456cb591162000203578063cbb04d9d1162000117578063e8f67c3b11620000ad578063f80a34021162000078578063f80a34021462000c3f578063fb50b31f1462000c64578063fc0c5ff11462000c89578063ff69ab611462000ca157600080fd5b8063e8f67c3b1462000bbb578063e992aaf51462000bd3578063efdbf0e11462000beb578063f1f74d841462000c2757600080fd5b8063d7c2dfc811620000ee578063d7c2dfc81462000b41578063d8ca511f1462000b66578063daacdb661462000b7e578063dbda7fb31462000b9657600080fd5b8063cbb04d9d1462000ac2578063d115a2061462000b03578063d6ca429d1462000b1c57600080fd5b8063ac4317511162000199578063bff02e201162000164578063bff02e201462000a4f578063c38fbec81462000a85578063c473318f1462000aaa578063c8509d8114620008a357600080fd5b8063ac43175114620009cd578063b187bd2614620009f2578063baa7199e1462000a12578063bdceadf31462000a3757600080fd5b80638cd22b2211620001da5780638cd22b221462000938578063982ef0a7146200095d578063a43569b31462000974578063aad3ec9614620009a857600080fd5b80638456cb5914620008c857806386d5450614620008e05780638a4d3fa8146200091a57600080fd5b806349f41a4211620002fb57806364028fbd116200029157806375cc7d89116200025c57806375cc7d89146200084e57806376e7d6d614620008735780638129fc1c146200088b578063831d65d114620008a357600080fd5b806364028fbd1462000789578063663706d314620007a05780636ec01b2714620007d15780636f8e2fa4146200082957600080fd5b80634e6fd6c411620002d25780634e6fd6c414620006f05780635949187114620007085780635e7cc1c9146200072d57806363a036b5146200075257600080fd5b806349f41a4214620006815780634a49ac4c14620006a65780634d99dd1614620006cb57600080fd5b80631fa8882b116200037d578063417c73a71162000348578063417c73a714620005cd578063449ecfe614620005f257806345211bfd14620006175780634838d165146200063c57600080fd5b80631fa8882b146200053d5780632b727c8614620005565780632e8e8c71146200057b5780633840998814620005b557600080fd5b8063092193ab11620003be578063092193ab14620004885780630e9fbf51146200049f5780631182b87514620004c457806317b4f35314620004f857600080fd5b8063046f7da21462000407578063059ddd22146200041f5780630661806e146200046157600080fd5b36620004025760345460ff166001146200040057600080fd5b005b600080fd5b3480156200041457600080fd5b506200040062000cb9565b3480156200042c57600080fd5b50620004446200043e36600462008787565b62000d4b565b6040516001600160a01b0390911681526020015b60405180910390f35b3480156200046e57600080fd5b506200047960365481565b60405190815260200162000458565b620004006200049936600462008787565b62001173565b348015620004ac57600080fd5b5062000400620004be366004620087e9565b620017c4565b348015620004d157600080fd5b50620004e9620004e33660046200882e565b62001af0565b604051620004589190620088e1565b3480156200050557600080fd5b506200044462000517366004620089b3565b80516020818301810180516045825292820191909301209152546001600160a01b031681565b3480156200054a57600080fd5b50620004796201518081565b3480156200056357600080fd5b50620004446200057536600462008787565b62001b88565b3480156200058857600080fd5b50620004446200059a36600462008787565b604d602052600090815260409020546001600160a01b031681565b348015620005c257600080fd5b506200047960375481565b348015620005da57600080fd5b5062000400620005ec36600462008787565b62001bdd565b348015620005ff57600080fd5b50620004006200061136600462008787565b62001c5f565b3480156200062457600080fd5b50620004006200063636600462008787565b62001e44565b3480156200064957600080fd5b50620006706200065b36600462008787565b60016020526000908152604090205460ff1681565b604051901515815260200162000458565b3480156200068e57600080fd5b5062000400620006a036600462008787565b6200201d565b348015620006b357600080fd5b5062000400620006c536600462008787565b62002239565b348015620006d857600080fd5b5062000400620006ea36600462008a08565b620022b5565b348015620006fd57600080fd5b506200044461dead81565b3480156200071557600080fd5b50620004006200072736600462008a46565b620028e5565b3480156200073a57600080fd5b50620004006200074c36600462008ab0565b620036de565b3480156200075f57600080fd5b50620007776200077136600462008ad7565b62003908565b60405162000458949392919062008b40565b620004006200079a36600462008bfc565b62003fad565b348015620007ad57600080fd5b5062000479620007bf36600462008787565b60446020526000908152604090205481565b348015620007de57600080fd5b50620007f6620007f036600462008787565b620045fc565b6040805182516001600160401b039081168252602080850151821690830152928201519092169082015260600162000458565b3480156200083657600080fd5b50620004e96200084836600462008787565b620046a1565b3480156200085b57600080fd5b50620004006200086d36600462008787565b62004acd565b3480156200088057600080fd5b5062000479603d5481565b3480156200089857600080fd5b506200040062004c9f565b348015620008b057600080fd5b5062000400620008c23660046200882e565b62004e6a565b348015620008d557600080fd5b506200040062004ec8565b348015620008ed57600080fd5b5062000444620008ff36600462008787565b6043602052600090815260409020546001600160a01b031681565b3480156200092757600080fd5b5062000479670de0b6b3a764000081565b3480156200094557600080fd5b50620004796200095736600462008a08565b62004f60565b620004006200096e36600462008cd2565b62005019565b3480156200098157600080fd5b50620009996200099336600462008787565b620056c7565b60405162000458919062008d0a565b348015620009b557600080fd5b5062000400620009c736600462008a08565b620059b4565b348015620009da57600080fd5b5062000400620009ec36600462008d87565b62005a21565b348015620009ff57600080fd5b5060005462010000900460ff1662000670565b34801562000a1f57600080fd5b506200040062000a3136600462008e40565b620068c0565b34801562000a4457600080fd5b5062000479603c5481565b34801562000a5c57600080fd5b5062000a7462000a6e36600462008ad7565b62006a8d565b604051620004589392919062008e99565b34801562000a9257600080fd5b506200040062000aa436600462008787565b62006c69565b34801562000ab757600080fd5b506200047960385481565b34801562000acf57600080fd5b5062000ae762000ae136600462008787565b62006f2b565b6040805193845291151560208401529082015260600162000458565b34801562000b1057600080fd5b5062000479620186a081565b34801562000b2957600080fd5b506200040062000b3b36600462008ef6565b6200736e565b34801562000b4e57600080fd5b506200040062000b6036600462008fdf565b62007594565b34801562000b7357600080fd5b5062000479603b5481565b34801562000b8b57600080fd5b506200047960495481565b34801562000ba357600080fd5b506200044462000bb536600462008787565b6200768a565b34801562000bc857600080fd5b506200047960355481565b34801562000be057600080fd5b5062000479603a5481565b34801562000bf857600080fd5b506200047962000c0a366004620089b3565b805160208183018101805160468252928201919093012091525481565b34801562000c3457600080fd5b5062000479603e5481565b34801562000c4c57600080fd5b506200047962000c5e36600462008a08565b62007ab4565b34801562000c7157600080fd5b506200040062000c8336600462008d87565b62007b25565b34801562000c9657600080fd5b506200047960395481565b34801562000cae57600080fd5b5062000479604a5481565b600054630100000090046001600160a01b0316331462000cec576040516306fbb1e360e01b815260040160405180910390fd5b60005462010000900460ff1662000d1657604051636cd6020160e01b815260040160405180910390fd5b6000805462ff0000191681556040517f62451d457bc659158be6e6247f56ec1df424a5c7597f71c20c2bc44e0965c8f99190a1565b6001600160a01b038082166000908152604160209081526040808320815161018081018352815486168152600182015486169381019390935260028101549094169082015260038301546060820152600483018054929384939091608084019162000db69062009045565b80601f016020809104026020016040519081016040528092919081815260200182805462000de49062009045565b801562000e355780601f1062000e095761010080835404028352916020019162000e35565b820191906000526020600020905b81548152906001019060200180831162000e1757829003601f168201915b505050505081526020016005820160405180608001604052908160008201805462000e609062009045565b80601f016020809104026020016040519081016040528092919081815260200182805462000e8e9062009045565b801562000edf5780601f1062000eb35761010080835404028352916020019162000edf565b820191906000526020600020905b81548152906001019060200180831162000ec157829003601f168201915b5050505050815260200160018201805462000efa9062009045565b80601f016020809104026020016040519081016040528092919081815260200182805462000f289062009045565b801562000f795780601f1062000f4d5761010080835404028352916020019162000f79565b820191906000526020600020905b81548152906001019060200180831162000f5b57829003601f168201915b5050505050815260200160028201805462000f949062009045565b80601f016020809104026020016040519081016040528092919081815260200182805462000fc29062009045565b8015620010135780601f1062000fe75761010080835404028352916020019162001013565b820191906000526020600020905b81548152906001019060200180831162000ff557829003601f168201915b505050505081526020016003820180546200102e9062009045565b80601f01602080910402602001604051908101604052809291908181526020018280546200105c9062009045565b8015620010ad5780601f106200108157610100808354040283529160200191620010ad565b820191906000526020600020905b8154815290600101906020018083116200108f57829003601f168201915b505050919092525050508152604080516060808201835260098501546001600160401b038082168452600160401b82048116602080860191909152600160801b9092041683850152840191909152600a84015460ff16151582840152600b84015490830152600c8301546080830152600d8301546001600160a01b031660a0830152805161026081019182905260c09092019190600e84019060139082845b8154815260200190600101908083116200114c575050509190925250509051949350505050565b33611000146200119f57604051630f22c43960e41b815261100060048201526024015b60405180910390fd5b6001600160a01b03808216600090815260436020908152604080832054841680845260418352818420825161018081018452815487168152600182015487169481019490945260028101549095169183019190915260038401546060830152600484018054919491608084019190620012189062009045565b80601f0160208091040260200160405190810160405280929190818152602001828054620012469062009045565b8015620012975780601f106200126b5761010080835404028352916020019162001297565b820191906000526020600020905b8154815290600101906020018083116200127957829003601f168201915b5050505050815260200160058201604051806080016040529081600082018054620012c29062009045565b80601f0160208091040260200160405190810160405280929190818152602001828054620012f09062009045565b8015620013415780601f10620013155761010080835404028352916020019162001341565b820191906000526020600020905b8154815290600101906020018083116200132357829003601f168201915b505050505081526020016001820180546200135c9062009045565b80601f01602080910402602001604051908101604052809291908181526020018280546200138a9062009045565b8015620013db5780601f10620013af57610100808354040283529160200191620013db565b820191906000526020600020905b815481529060010190602001808311620013bd57829003601f168201915b50505050508152602001600282018054620013f69062009045565b80601f0160208091040260200160405190810160405280929190818152602001828054620014249062009045565b8015620014755780601f10620014495761010080835404028352916020019162001475565b820191906000526020600020905b8154815290600101906020018083116200145757829003601f168201915b50505050508152602001600382018054620014909062009045565b80601f0160208091040260200160405190810160405280929190818152602001828054620014be9062009045565b80156200150f5780601f10620014e3576101008083540402835291602001916200150f565b820191906000526020600020905b815481529060010190602001808311620014f157829003601f168201915b505050919092525050508152604080516060808201835260098501546001600160401b038082168452600160401b82048116602080860191909152600160801b9092041683850152840191909152600a84015460ff16151582840152600b84015490830152600c8301546080830152600d8301546001600160a01b031660a0830152805161026081019182905260c09092019190600e84019060139082845b815481526020019060010190808311620015ae575050509190925250505060408101519091506001600160a01b03161580620015eb57508060e001515b15620016a857604051611002903490600081818185875af1925050503d806000811462001635576040519150601f19603f3d011682016040523d82523d6000602084013e6200163a565b606091505b505050816001600160a01b03167ffc8bff675087dd2da069cc3fb517b9ed001e19750c0865241a5542dba1ba170d6040516200169b9060208082526011908201527024a72b20a624a22fab20a624a220aa27a960791b604082015260600190565b60405180910390a2505050565b60408181015160c0830151519151632f303ebb60e11b81526001600160401b0390921660048301526001600160a01b031690635e607d769034906024016000604051808303818588803b158015620016ff57600080fd5b505af115801562001714573d6000803e3d6000fd5b5050505050816001600160a01b03167fe34918ff1c7084970068b53fd71ad6d8b04e9f15d3886cbf006443e6cdc52ea6346040516200175591815260200190565b60405180910390a26040808201519051633041949b60e01b815261200591633041949b916200178a919086906004016200907b565b600060405180830381600087803b158015620017a557600080fd5b505af1158015620017ba573d6000803e3d6000fd5b5050505050505b50565b3361100114620017ec57604051630f22c43960e41b8152611001600482015260240162001196565b60005462010000900460ff16156200181757604051631785c68160e01b815260040160405180910390fd5b6000604583836040516200182d92919062009095565b908152604051908190036020019020546001600160a01b0316905062001855603f8262007d5e565b620018735760405163056e881160e01b815260040160405180910390fd5b6001600160a01b0381166000908152604160205260408120906200189b6201518042620090bb565b604a546000828152604b602052604090205491925011620018cf5760405163bd52fcdb60e01b815260040160405180910390fd5b6000818152604b60205260408120805460019290620018f0908490620090de565b90915550506040516046906200190a908790879062009095565b9081526020016040518091039020546000141580156200195b57504262015180604687876040516200193e92919062009095565b908152602001604051809103902054620019599190620090de565b105b156200197a57604051631898eb6b60e01b815260040160405180910390fd5b6000806200198a85600262007d81565b9150915081620019ad57604051631b919bb160e11b815260040160405180910390fd5b6002840154603c5460405163045bc4d160e41b815260048101919091526000916001600160a01b0316906345bc4d10906024016020604051808303816000875af115801562001a00573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001a269190620090f4565b905062001a34858362007e0b565b856001600160a01b03167f6e9a2ee7aee95665e3a774a212eb11441b217e3e4656ab9563793094689aabb28383600260405162001a74939291906200910e565b60405180910390a26002850154604051633041949b60e01b815261200591633041949b9162001ab2916001600160a01b0316908a906004016200907b565b600060405180830381600087803b15801562001acd57600080fd5b505af115801562001ae2573d6000803e3d6000fd5b505050505050505050505050565b6060336120001462001b1a57604051630f22c43960e41b8152612000600482015260240162001196565b60005462010000900460ff161562001b4557604051631785c68160e01b815260040160405180910390fd5b6034805460ff1916600117905560405162461bcd60e51b815260206004820152600a60248201526919195c1c9958d85d195960b21b604482015260640162001196565b60008162001b98603f8262007d5e565b62001bb65760405163056e881160e01b815260040160405180910390fd5b6001600160a01b038084166000908152604160205260409020600d01541691505b50919050565b600054630100000090046001600160a01b0316331462001c10576040516306fbb1e360e01b815260040160405180910390fd5b6001600160a01b0381166000818152600160208190526040808320805460ff1916909217909155517f7fd26be6fc92aff63f1f4409b2b2ddeb272a888031d7f55ec830485ec61941869190a250565b60005462010000900460ff161562001c8a57604051631785c68160e01b815260040160405180910390fd5b3360009081526001602052604090205460ff161562001cbc5760405163b1d02c3d60e01b815260040160405180910390fd5b8062001cca603f8262007d5e565b62001ce85760405163056e881160e01b815260040160405180910390fd5b6001600160a01b0382166000908152604160205260409020600a81015460ff1662001d2657604051634b6b857d60e01b815260040160405180910390fd5b6036546002820154604051630913db4760e01b81526001600160a01b03868116600483015290911690630913db4790602401602060405180830381865afa15801562001d76573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001d9c9190620090f4565b101562001dbc576040516317b204bf60e11b815260040160405180910390fd5b4281600b0154111562001de25760405163170cb76760e21b815260040160405180910390fd5b600a8101805460ff19169055604980546001919060009062001e0690849062009149565b90915550506040516001600160a01b038416907f9390b453426557da5ebdc31f19a37753ca04addf656d32f35232211bb2af3f1990600090a2505050565b60005462010000900460ff161562001e6f57604051631785c68160e01b815260040160405180910390fd5b3360009081526001602052604090205460ff161562001ea15760405163b1d02c3d60e01b815260040160405180910390fd5b62001eab62007f00565b62001eb8603f8262007d5e565b62001ed65760405163056e881160e01b815260040160405180910390fd5b6001600160a01b03821662001efe57604051636520611b60e11b815260040160405180910390fd5b6001600160a01b03828116600090815260436020526040902054161562001f3857604051631e6f587560e11b815260040160405180910390fd5b600062001f4462007f00565b6001600160a01b0381166000908152604160205260409020600c81015491925090429062001f77906201518090620090de565b111562001f9757604051631f92cdbd60e11b815260040160405180910390fd5b80546001600160a01b039081166000908152604460209081526040808320429081905585548986166001600160a01b031991821681178855600c88019290925581855260439093528184208054958816959093168517909255519092917f6e4e747ca35203f16401c69805c7dd52fff67ef60b0ebc5c7fe16890530f223591a350505050565b336200202b603f8262007d5e565b620020495760405163056e881160e01b815260040160405180910390fd5b60005462010000900460ff16156200207457604051631785c68160e01b815260040160405180910390fd5b3360009081526001602052604090205460ff1615620020a65760405163b1d02c3d60e01b815260040160405180910390fd5b6001600160a01b038281166000908152604d60205260409020541615620020e05760405163bebdc75760e01b815260040160405180910390fd5b620020ed603f8362007d5e565b156200210c5760405163bebdc75760e01b815260040160405180910390fd5b336000818152604160205260409020600d01546001600160a01b0390811690841681036200214d5760405163bebdc75760e01b815260040160405180910390fd5b6001600160a01b0381161562002184576001600160a01b0381166000908152604d6020526040902080546001600160a01b03191690555b6001600160a01b038281166000908152604160205260409020600d0180546001600160a01b031916918616918217905515620021e9576001600160a01b038481166000908152604d6020526040902080546001600160a01b0319169184169190911790555b836001600160a01b0316816001600160a01b0316836001600160a01b03167fcbb728765de145e99c00e8ae32a325231e850359b7b8a6da3b84d672ab3f1d0a60405160405180910390a450505050565b600054630100000090046001600160a01b031633146200226c576040516306fbb1e360e01b815260040160405180910390fd5b6001600160a01b038116600081815260016020526040808220805460ff19169055517fe0db3499b7fdc3da4cddff5f45d694549c19835e7f719fb5606d3ad1a5de40119190a250565b60005462010000900460ff1615620022e057604051631785c68160e01b815260040160405180910390fd5b3360009081526001602052604090205460ff1615620023125760405163b1d02c3d60e01b815260040160405180910390fd5b8162002320603f8262007d5e565b6200233e5760405163056e881160e01b815260040160405180910390fd5b816000036200236057604051639811e0c760e01b815260040160405180910390fd5b6001600160a01b0380841660009081526041602090815260408083208151610180810183528154861681526001820154861693810193909352600281015490941690820152600383015460608201526004830180543394916080840191620023c89062009045565b80601f0160208091040260200160405190810160405280929190818152602001828054620023f69062009045565b8015620024475780601f106200241b5761010080835404028352916020019162002447565b820191906000526020600020905b8154815290600101906020018083116200242957829003601f168201915b5050505050815260200160058201604051806080016040529081600082018054620024729062009045565b80601f0160208091040260200160405190810160405280929190818152602001828054620024a09062009045565b8015620024f15780601f10620024c557610100808354040283529160200191620024f1565b820191906000526020600020905b815481529060010190602001808311620024d357829003601f168201915b505050505081526020016001820180546200250c9062009045565b80601f01602080910402602001604051908101604052809291908181526020018280546200253a9062009045565b80156200258b5780601f106200255f576101008083540402835291602001916200258b565b820191906000526020600020905b8154815290600101906020018083116200256d57829003601f168201915b50505050508152602001600282018054620025a69062009045565b80601f0160208091040260200160405190810160405280929190818152602001828054620025d49062009045565b8015620026255780601f10620025f95761010080835404028352916020019162002625565b820191906000526020600020905b8154815290600101906020018083116200260757829003601f168201915b50505050508152602001600382018054620026409062009045565b80601f01602080910402602001604051908101604052809291908181526020018280546200266e9062009045565b8015620026bf5780601f106200269357610100808354040283529160200191620026bf565b820191906000526020600020905b815481529060010190602001808311620026a157829003601f168201915b505050919092525050508152604080516060808201835260098501546001600160401b038082168452600160401b82048116602080860191909152600160801b9092041683850152840191909152600a84015460ff16151582840152600b84015490830152600c8301546080830152600d8301546001600160a01b031660a0830152805161026081019182905260c09092019190600e84019060139082845b8154815260200190600101908083116200275e575050509190925250505060408082015190516326ccee8b60e11b81526001600160a01b0385811660048301526024820188905292935060009290911690634d99dd16906044016020604051808303816000875af1158015620027d8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620027fe9190620090f4565b9050826001600160a01b0316866001600160a01b03167f3aace7340547de7b9156593a7652dc07ee900cea3fd8f82cb6c9d38b4082980287846040516200284f929190918252602082015260400190565b60405180910390a3856001600160a01b0316836001600160a01b0316036200287c576200287c8662007f41565b6040808301519051633041949b60e01b815261200591633041949b91620028a9919087906004016200907b565b600060405180830381600087803b158015620028c457600080fd5b505af1158015620028d9573d6000803e3d6000fd5b50505050505050505050565b60005462010000900460ff16156200291057604051631785c68160e01b815260040160405180910390fd5b3360009081526001602052604090205460ff1615620029425760405163b1d02c3d60e01b815260040160405180910390fd5b8362002950603f8262007d5e565b6200296e5760405163056e881160e01b815260040160405180910390fd5b836200297c603f8262007d5e565b6200299a5760405163056e881160e01b815260040160405180910390fd5b6034805460ff191660011790556000849003620029ca57604051639811e0c760e01b815260040160405180910390fd5b846001600160a01b0316866001600160a01b031603620029fd5760405163f0e3e62960e01b815260040160405180910390fd5b6001600160a01b038087166000908152604160209081526040808320815161018081018352815486168152600182015486169381019390935260028101549094169082015260038301546060820152600483018054339491608084019162002a659062009045565b80601f016020809104026020016040519081016040528092919081815260200182805462002a939062009045565b801562002ae45780601f1062002ab85761010080835404028352916020019162002ae4565b820191906000526020600020905b81548152906001019060200180831162002ac657829003601f168201915b505050505081526020016005820160405180608001604052908160008201805462002b0f9062009045565b80601f016020809104026020016040519081016040528092919081815260200182805462002b3d9062009045565b801562002b8e5780601f1062002b625761010080835404028352916020019162002b8e565b820191906000526020600020905b81548152906001019060200180831162002b7057829003601f168201915b5050505050815260200160018201805462002ba99062009045565b80601f016020809104026020016040519081016040528092919081815260200182805462002bd79062009045565b801562002c285780601f1062002bfc5761010080835404028352916020019162002c28565b820191906000526020600020905b81548152906001019060200180831162002c0a57829003601f168201915b5050505050815260200160028201805462002c439062009045565b80601f016020809104026020016040519081016040528092919081815260200182805462002c719062009045565b801562002cc25780601f1062002c965761010080835404028352916020019162002cc2565b820191906000526020600020905b81548152906001019060200180831162002ca457829003601f168201915b5050505050815260200160038201805462002cdd9062009045565b80601f016020809104026020016040519081016040528092919081815260200182805462002d0b9062009045565b801562002d5c5780601f1062002d305761010080835404028352916020019162002d5c565b820191906000526020600020905b81548152906001019060200180831162002d3e57829003601f168201915b505050919092525050508152604080516060808201835260098501546001600160401b038082168452600160401b82048116602080860191909152600160801b9092041683850152840191909152600a84015460ff16151582840152600b84015490830152600c8301546080830152600d8301546001600160a01b031660a0830152805161026081019182905260c09092019190600e84019060139082845b81548152602001906001019080831162002dfb57505050919092525050506001600160a01b0380891660009081526041602090815260408083208151610180810183528154861681526001820154861693810193909352600281015490941690820152600383015460608201526004830180549495509193909291608084019162002e869062009045565b80601f016020809104026020016040519081016040528092919081815260200182805462002eb49062009045565b801562002f055780601f1062002ed95761010080835404028352916020019162002f05565b820191906000526020600020905b81548152906001019060200180831162002ee757829003601f168201915b505050505081526020016005820160405180608001604052908160008201805462002f309062009045565b80601f016020809104026020016040519081016040528092919081815260200182805462002f5e9062009045565b801562002faf5780601f1062002f835761010080835404028352916020019162002faf565b820191906000526020600020905b81548152906001019060200180831162002f9157829003601f168201915b5050505050815260200160018201805462002fca9062009045565b80601f016020809104026020016040519081016040528092919081815260200182805462002ff89062009045565b8015620030495780601f106200301d5761010080835404028352916020019162003049565b820191906000526020600020905b8154815290600101906020018083116200302b57829003601f168201915b50505050508152602001600282018054620030649062009045565b80601f0160208091040260200160405190810160405280929190818152602001828054620030929062009045565b8015620030e35780601f10620030b757610100808354040283529160200191620030e3565b820191906000526020600020905b815481529060010190602001808311620030c557829003601f168201915b50505050508152602001600382018054620030fe9062009045565b80601f01602080910402602001604051908101604052809291908181526020018280546200312c9062009045565b80156200317d5780601f1062003151576101008083540402835291602001916200317d565b820191906000526020600020905b8154815290600101906020018083116200315f57829003601f168201915b505050919092525050508152604080516060808201835260098501546001600160401b038082168452600160401b82048116602080860191909152600160801b9092041683850152840191909152600a84015460ff16151582840152600b84015490830152600c8301546080830152600d8301546001600160a01b031660a0830152805161026081019182905260c09092019190600e84019060139082845b8154815260200190600101908083116200321c5750505050508152505090508060e0015180156200325f5750876001600160a01b0316836001600160a01b031614155b156200327e57604051636468920360e01b815260040160405180910390fd5b60408083015190516352e82ce560e11b81526001600160a01b038581166004830152602482018a9052600092169063a5d059ca906044016020604051808303816000875af1158015620032d5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620032fb9190620090f4565b9050603754811015620033215760405163dc6f0bdd60e01b815260040160405180910390fd5b896001600160a01b0316846001600160a01b0316148015620033b657506036546040808501519051630913db4760e01b81526001600160a01b038d8116600483015290911690630913db4790602401602060405180830381865afa1580156200338e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620033b49190620090f4565b105b15620033d5576040516317b204bf60e11b815260040160405180910390fd5b6000620186a0603a5483620033eb91906200915f565b620033f79190620090bb565b9050600083604001516001600160a01b03168260405160006040518083038185875af1925050503d80600081146200344c576040519150601f19603f3d011682016040523d82523d6000602084013e62003451565b606091505b505090508062003474576040516312171d8360e31b815260040160405180910390fd5b62003480828462009149565b60408086015190516317066a5760e21b81526001600160a01b03898116600483015292955060009290911690635c19a95c90869060240160206040518083038185885af1158015620034d6573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190620034fd9190620090f4565b9050866001600160a01b03168c6001600160a01b03168e6001600160a01b03167ffdac6e81913996d95abcc289e90f2d8bd235487ce6fe6f821e7d21002a1915b48e858960405162003562939291909283526020830191909152604082015260600190565b60405180910390a4604080516002808252606082018352600092602083019080368337019050509050866040015181600081518110620035a657620035a662009179565b60200260200101906001600160a01b031690816001600160a01b031681525050856040015181600181518110620035e157620035e162009179565b6001600160a01b0390921660209283029190910190910152604051634484077560e01b815261200590634484077590620036229084908c906004016200918f565b600060405180830381600087803b1580156200363d57600080fd5b505af115801562003652573d6000803e3d6000fd5b505050508a15620036c4576120056001600160a01b031663e5ed5b1e898f6040518363ffffffff1660e01b81526004016200368f9291906200907b565b600060405180830381600087803b158015620036aa57600080fd5b505af1158015620036bf573d6000803e3d6000fd5b505050505b50506034805460ff19169055505050505050505050505050565b60005462010000900460ff16156200370957604051631785c68160e01b815260040160405180910390fd5b3360009081526001602052604090205460ff16156200373b5760405163b1d02c3d60e01b815260040160405180910390fd5b6200374562007f00565b62003752603f8262007d5e565b620037705760405163056e881160e01b815260040160405180910390fd5b60006200377c62007f00565b6001600160a01b0381166000908152604160205260409020600c810154919250904290620037af906201518090620090de565b1115620037cf57604051631f92cdbd60e11b815260040160405180910390fd5b60098101546001600160401b03600160401b90910481169085161115620038095760405163dc81db8560e01b815260040160405180910390fd5b60098101546000906001600160401b03908116908616101562003847576009820154620038419086906001600160401b0316620091bb565b62003861565b600982015462003861906001600160401b031686620091bb565b60098301546001600160401b039182169250600160801b9004168111156200389c5760405163dc81db8560e01b815260040160405180910390fd5b60098201805467ffffffffffffffff19166001600160401b03871690811790915542600c8401556040519081526001600160a01b038416907f78cdd96edf59e09cfd4d26ef6ef6c92d166effe6a40970c54821206d541932cb9060200160405180910390a25050505050565b606080606060006200391b603f62008067565b90508086101562003fa457841562003934578462003936565b805b945060008562003947888462009149565b116200395f5762003959878362009149565b62003961565b855b9050806001600160401b038111156200397e576200397e620088f6565b604051908082528060200260200182016040528015620039a8578160200160208202803683370190505b509450806001600160401b03811115620039c657620039c6620088f6565b604051908082528060200260200182016040528015620039f0578160200160208202803683370190505b509350806001600160401b0381111562003a0e5762003a0e620088f6565b60405190808252806020026020018201604052801562003a4357816020015b606081526020019060019003908162003a2d5790505b50925060005b8181101562003fa157600062003a6d62003a64838b620090de565b603f9062008072565b6001600160a01b0380821660009081526041602090815260408083208151610180810183528154861681526001820154861693810193909352600281015490941690820152600383015460608201526004830180549495509193909291608084019162003ada9062009045565b80601f016020809104026020016040519081016040528092919081815260200182805462003b089062009045565b801562003b595780601f1062003b2d5761010080835404028352916020019162003b59565b820191906000526020600020905b81548152906001019060200180831162003b3b57829003601f168201915b505050505081526020016005820160405180608001604052908160008201805462003b849062009045565b80601f016020809104026020016040519081016040528092919081815260200182805462003bb29062009045565b801562003c035780601f1062003bd75761010080835404028352916020019162003c03565b820191906000526020600020905b81548152906001019060200180831162003be557829003601f168201915b5050505050815260200160018201805462003c1e9062009045565b80601f016020809104026020016040519081016040528092919081815260200182805462003c4c9062009045565b801562003c9d5780601f1062003c715761010080835404028352916020019162003c9d565b820191906000526020600020905b81548152906001019060200180831162003c7f57829003601f168201915b5050505050815260200160028201805462003cb89062009045565b80601f016020809104026020016040519081016040528092919081815260200182805462003ce69062009045565b801562003d375780601f1062003d0b5761010080835404028352916020019162003d37565b820191906000526020600020905b81548152906001019060200180831162003d1957829003601f168201915b5050505050815260200160038201805462003d529062009045565b80601f016020809104026020016040519081016040528092919081815260200182805462003d809062009045565b801562003dd15780601f1062003da55761010080835404028352916020019162003dd1565b820191906000526020600020905b81548152906001019060200180831162003db357829003601f168201915b505050919092525050508152604080516060808201835260098501546001600160401b038082168452600160401b82048116602080860191909152600160801b9092041683850152840191909152600a84015460ff16151582840152600b84015490830152600c8301546080830152600d8301546001600160a01b031660a0830152805161026081019182905260c09092019190600e84019060139082845b81548152602001906001019080831162003e70575050505050815250509050806000015188848151811062003ea95762003ea962009179565b60200260200101906001600160a01b031690816001600160a01b0316815250508060e0015162003f425780604001516001600160a01b03166315d1f8986040518163ffffffff1660e01b8152600401602060405180830381865afa15801562003f16573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062003f3c9190620090f4565b62003f45565b60005b87848151811062003f5a5762003f5a62009179565b602002602001018181525050806080015186848151811062003f805762003f8062009179565b602002602001018190525050508062003f9990620091e5565b905062003a49565b50505b92959194509250565b60005462010000900460ff161562003fd857604051631785c68160e01b815260040160405180910390fd5b3360009081526001602052604090205460ff16156200400a5760405163b1d02c3d60e01b815260040160405180910390fd5b3362004018603f8262007d5e565b156200403757604051635f28f62b60e01b815260040160405180910390fd5b6001600160a01b038181166000908152604d602052604090205416156200407157604051631a0a9b9f60e21b815260040160405180910390fd5b6001600160a01b038881166000908152604360205260409020541615620040ab57604051631e6f587560e11b815260040160405180910390fd5b60006001600160a01b031660458888604051620040ca92919062009095565b908152604051908190036020019020546001600160a01b03161462004102576040516311fdb94760e01b815260040160405180910390fd5b600062004110838062009201565b6040516020016200412392919062009095565b60408051601f1981840301815291815281516020928301206000818152604290935291205490915060ff16156200416d5760405163c0bf414360e01b815260040160405180910390fd5b600062004183670de0b6b3a76400003462009149565b9050603654811015620041a9576040516317b204bf60e11b815260040160405180910390fd5b6001600160a01b038a16620041d157604051636520611b60e11b815260040160405180910390fd5b611388620041e6604087016020880162008ab0565b6001600160401b031611806200422c575062004209604086016020870162008ab0565b6001600160401b031662004221602087018762008ab0565b6001600160401b0316115b806200426b575062004245604086016020870162008ab0565b6001600160401b031662004260606087016040880162008ab0565b6001600160401b0316115b156200428a5760405163dc81db8560e01b815260040160405180910390fd5b620042d56200429a858062009201565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506200808092505050565b620042f357604051635dba5ad760e01b815260040160405180910390fd5b62004302838a8a8a8a62008222565b6200432057604051631647e3cb60e11b815260040160405180910390fd5b60006200436e8462004333878062009201565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506200835292505050565b90506200437d603f8562008453565b506000838152604260209081526040808320805460ff191660019081179091556001600160a01b0380891680865260419094529190932080548f83166001600160a01b031991821617825593810180548516909317909255600282018054918516919093161790915542600382015560048101620043fd8b8d83620092a9565b5085600582016200440f828262009371565b5087905060098201620044238282620094aa565b505042600c8201556001600160a01b038c81166000908152604360205260409081902080546001600160a01b0319169288169290921790915551859060459062004471908e908e9062009095565b908152602001604051809103902060006101000a8154816001600160a01b0302191690836001600160a01b03160217905550816001600160a01b0316856001600160a01b03168d6001600160a01b03167faecd9fb95e79c75a3a1de93362c6be5fe6ab65770d8614be583884161cd8228d8e8e604051620044f49291906200957a565b60405180910390a460408051848152602081018590526001600160a01b0387169182917f24d7bda8602b916d64417f0dbfe2e2e88ec9b1157bd9f596dfdb91ba26624e04910160405180910390a360408051670de0b6b3a7640000808252602082015261dead916001600160a01b038816917f24d7bda8602b916d64417f0dbfe2e2e88ec9b1157bd9f596dfdb91ba26624e04910160405180910390a3604051633041949b60e01b815261200590633041949b90620045ba90859089906004016200907b565b600060405180830381600087803b158015620045d557600080fd5b505af1158015620045ea573d6000803e3d6000fd5b50505050505050505050505050505050565b60408051606081018252600080825260208201819052918101919091528162004627603f8262007d5e565b620046455760405163056e881160e01b815260040160405180910390fd5b50506001600160a01b031660009081526041602090815260409182902082516060810184526009909101546001600160401b038082168352600160401b8204811693830193909352600160801b90049091169181019190915290565b6001600160a01b038082166000908152604160209081526040808320815161018081018352815486168152600182015486169381019390935260028101549094169082015260038301546060828101919091526004840180549194916080840191906200470e9062009045565b80601f01602080910402602001604051908101604052809291908181526020018280546200473c9062009045565b80156200478d5780601f1062004761576101008083540402835291602001916200478d565b820191906000526020600020905b8154815290600101906020018083116200476f57829003601f168201915b5050505050815260200160058201604051806080016040529081600082018054620047b89062009045565b80601f0160208091040260200160405190810160405280929190818152602001828054620047e69062009045565b8015620048375780601f106200480b5761010080835404028352916020019162004837565b820191906000526020600020905b8154815290600101906020018083116200481957829003601f168201915b50505050508152602001600182018054620048529062009045565b80601f0160208091040260200160405190810160405280929190818152602001828054620048809062009045565b8015620048d15780601f10620048a557610100808354040283529160200191620048d1565b820191906000526020600020905b815481529060010190602001808311620048b357829003601f168201915b50505050508152602001600282018054620048ec9062009045565b80601f01602080910402602001604051908101604052809291908181526020018280546200491a9062009045565b80156200496b5780601f106200493f576101008083540402835291602001916200496b565b820191906000526020600020905b8154815290600101906020018083116200494d57829003601f168201915b50505050508152602001600382018054620049869062009045565b80601f0160208091040260200160405190810160405280929190818152602001828054620049b49062009045565b801562004a055780601f10620049d95761010080835404028352916020019162004a05565b820191906000526020600020905b815481529060010190602001808311620049e757829003601f168201915b505050919092525050508152604080516060808201835260098501546001600160401b038082168452600160401b82048116602080860191909152600160801b9092041683850152840191909152600a84015460ff16151582840152600b84015490830152600c8301546080830152600d8301546001600160a01b031660a0830152805161026081019182905260c09092019190600e84019060139082845b81548152602001906001019080831162004aa45750505091909252505050608001519392505050565b336110011462004af557604051630f22c43960e41b8152611001600482015260240162001196565b6001600160a01b038082166000908152604360205260409020541662004b1d603f8262007d5e565b62004b3b5760405163056e881160e01b815260040160405180910390fd5b6001600160a01b038181166000908152604160205260408082206002810154603b54925163045bc4d160e41b81526004810193909352909316906345bc4d10906024016020604051808303816000875af115801562004b9e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062004bc49190620090f4565b90506000603d544262004bd89190620090de565b905062004be6838262007e0b565b836001600160a01b03167f6e9a2ee7aee95665e3a774a212eb11441b217e3e4656ab9563793094689aabb28284600160405162004c26939291906200910e565b60405180910390a26002830154604051633041949b60e01b815261200591633041949b9162004c64916001600160a01b03169088906004016200907b565b600060405180830381600087803b15801562004c7f57600080fd5b505af115801562004c94573d6000803e3d6000fd5b505050505050505050565b600054610100900460ff161580801562004cc05750600054600160ff909116105b8062004cdc5750303b15801562004cdc575060005460ff166001145b62004d415760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b606482015260840162001196565b6000805460ff19166001179055801562004d65576000805461ff0019166101001790555b33411462004d865760405163022d8c9560e31b815260040160405180910390fd5b3a1562004da6576040516383f1b1d360e01b815260040160405180910390fd5b611388603555686c6b935b8bbd400000603655670de0b6b3a7640000603755600960385562093a806039556002603a819055678ac7230489e80000603b55680ad78ebc5ac6200000603c556202a300603d5562069780603e55604a5562004e217330151da466ec8ab345bef3d6983023e050fb06736200846a565b8015620017c1576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a150565b336120001462004e9257604051630f22c43960e41b8152612000600482015260240162001196565b60405162461bcd60e51b815260206004820152600a60248201526919195c1c9958d85d195960b21b604482015260640162001196565b600054630100000090046001600160a01b0316331462004efb576040516306fbb1e360e01b815260040160405180910390fd5b60005462010000900460ff161562004f2657604051631785c68160e01b815260040160405180910390fd5b6000805462ff00001916620100001781556040517f9e87fac88ff661f02d44f95383c817fece4bce600a3dab7a54406878b965e7529190a1565b600062004f6f603f8462007d5e565b62004f8d5760405163056e881160e01b815260040160405180910390fd5b6001600160a01b0383811660009081526041602052604090819020600201549051636bbf224960e01b815260048101859052911690636bbf2249906024015b602060405180830381865afa15801562004fea573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620050109190620090f4565b90505b92915050565b60005462010000900460ff16156200504457604051631785c68160e01b815260040160405180910390fd5b3360009081526001602052604090205460ff1615620050765760405163b1d02c3d60e01b815260040160405180910390fd5b8162005084603f8262007d5e565b620050a25760405163056e881160e01b815260040160405180910390fd5b6037543490811015620050c85760405163dc6f0bdd60e01b815260040160405180910390fd5b6001600160a01b0380851660009081526041602090815260408083208151610180810183528154861681526001820154861693810193909352600281015490941690820152600383015460608201526004830180543394916080840191620051309062009045565b80601f01602080910402602001604051908101604052809291908181526020018280546200515e9062009045565b8015620051af5780601f106200518357610100808354040283529160200191620051af565b820191906000526020600020905b8154815290600101906020018083116200519157829003601f168201915b5050505050815260200160058201604051806080016040529081600082018054620051da9062009045565b80601f0160208091040260200160405190810160405280929190818152602001828054620052089062009045565b8015620052595780601f106200522d5761010080835404028352916020019162005259565b820191906000526020600020905b8154815290600101906020018083116200523b57829003601f168201915b50505050508152602001600182018054620052749062009045565b80601f0160208091040260200160405190810160405280929190818152602001828054620052a29062009045565b8015620052f35780601f10620052c757610100808354040283529160200191620052f3565b820191906000526020600020905b815481529060010190602001808311620052d557829003601f168201915b505050505081526020016002820180546200530e9062009045565b80601f01602080910402602001604051908101604052809291908181526020018280546200533c9062009045565b80156200538d5780601f1062005361576101008083540402835291602001916200538d565b820191906000526020600020905b8154815290600101906020018083116200536f57829003601f168201915b50505050508152602001600382018054620053a89062009045565b80601f0160208091040260200160405190810160405280929190818152602001828054620053d69062009045565b8015620054275780601f10620053fb5761010080835404028352916020019162005427565b820191906000526020600020905b8154815290600101906020018083116200540957829003601f168201915b505050919092525050508152604080516060808201835260098501546001600160401b038082168452600160401b82048116602080860191909152600160801b9092041683850152840191909152600a84015460ff16151582840152600b84015490830152600c8301546080830152600d8301546001600160a01b031660a0830152805161026081019182905260c09092019190600e84019060139082845b815481526020019060010190808311620054c65750505050508152505090508060e001518015620055095750856001600160a01b0316826001600160a01b031614155b156200552857604051636468920360e01b815260040160405180910390fd5b60408082015190516317066a5760e21b81526001600160a01b0384811660048301526000921690635c19a95c90869060240160206040518083038185885af115801562005579573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190620055a09190620090f4565b9050826001600160a01b0316876001600160a01b03167f24d7bda8602b916d64417f0dbfe2e2e88ec9b1157bd9f596dfdb91ba26624e048387604051620055f1929190918252602082015260400190565b60405180910390a36040808301519051633041949b60e01b815261200591633041949b9162005626919087906004016200907b565b600060405180830381600087803b1580156200564157600080fd5b505af115801562005656573d6000803e3d6000fd5b505050508515620017ba576040516372f6ad8f60e11b81526120059063e5ed5b1e906200568a9086908b906004016200907b565b600060405180830381600087803b158015620056a557600080fd5b505af1158015620056ba573d6000803e3d6000fd5b5050505050505050505050565b620056f36040518060800160405280606081526020016060815260200160608152602001606081525090565b8162005701603f8262007d5e565b6200571f5760405163056e881160e01b815260040160405180910390fd5b6001600160a01b03831660009081526041602052604090819020815160808101909252600501805482908290620057569062009045565b80601f0160208091040260200160405190810160405280929190818152602001828054620057849062009045565b8015620057d55780601f10620057a957610100808354040283529160200191620057d5565b820191906000526020600020905b815481529060010190602001808311620057b757829003601f168201915b50505050508152602001600182018054620057f09062009045565b80601f01602080910402602001604051908101604052809291908181526020018280546200581e9062009045565b80156200586f5780601f1062005843576101008083540402835291602001916200586f565b820191906000526020600020905b8154815290600101906020018083116200585157829003601f168201915b505050505081526020016002820180546200588a9062009045565b80601f0160208091040260200160405190810160405280929190818152602001828054620058b89062009045565b8015620059095780601f10620058dd5761010080835404028352916020019162005909565b820191906000526020600020905b815481529060010190602001808311620058eb57829003601f168201915b50505050508152602001600382018054620059249062009045565b80601f0160208091040260200160405190810160405280929190818152602001828054620059529062009045565b8015620059a35780601f106200597757610100808354040283529160200191620059a3565b820191906000526020600020905b8154815290600101906020018083116200598557829003601f168201915b505050505081525050915050919050565b60005462010000900460ff1615620059df57604051631785c68160e01b815260040160405180910390fd5b3360009081526001602052604090205460ff161562005a115760405163b1d02c3d60e01b815260040160405180910390fd5b62005a1d828262008503565b5050565b336110071462005a4957604051630f22c43960e41b8152611007600482015260240162001196565b62005ab66040518060400160405280601081526020016f1d1c985b9cd9995c91d85cd31a5b5a5d60821b81525085858080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092939250506200860f9050565b1562005b71576020811462005ae85783838383604051630a5a604160e01b815260040162001196949392919062009590565b604080516020601f840181900481028201810190925282815260009162005b2b9185858083850183828082843760009201919091525092939250506200866c9050565b90506108fc81108062005b3f575061271081115b1562005b685784848484604051630a5a604160e01b815260040162001196949392919062009590565b6035556200687b565b62005be26040518060400160405280601481526020017336b4b729b2b6332232b632b3b0ba34b7b721272160611b81525085858080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092939250506200860f9050565b1562005cac576020811462005c145783838383604051630a5a604160e01b815260040162001196949392919062009590565b604080516020601f840181900481028201810190925282815260009162005c579185858083850183828082843760009201919091525092939250506200866c9050565b9050683635c9adc5dea0000081108062005c7a575069152d02c7e14af680000081115b1562005ca35784848484604051630a5a604160e01b815260040162001196949392919062009590565b6036556200687b565b62005d1f604051806040016040528060168152602001756d696e44656c65676174696f6e424e424368616e676560501b81525085858080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092939250506200860f9050565b1562005de6576020811462005d515783838383604051630a5a604160e01b815260040162001196949392919062009590565b604080516020601f840181900481028201810190925282815260009162005d949185858083850183828082843760009201919091525092939250506200866c9050565b905067016345785d8a000081108062005db45750678ac7230489e8000081115b1562005ddd5784848484604051630a5a604160e01b815260040162001196949392919062009590565b6037556200687b565b62005e57604051806040016040528060148152602001736d6178456c656374656456616c696461746f727360601b81525085858080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092939250506200860f9050565b1562005f0f576020811462005e895783838383604051630a5a604160e01b815260040162001196949392919062009590565b604080516020601f840181900481028201810190925282815260009162005ecc9185858083850183828082843760009201919091525092939250506200866c9050565b905080158062005edd57506101f481115b1562005f065784848484604051630a5a604160e01b815260040162001196949392919062009590565b6038556200687b565b62005f786040518060400160405280600c81526020016b1d5b989bdb9914195c9a5bd960a21b81525085858080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092939250506200860f9050565b1562006035576020811462005faa5783838383604051630a5a604160e01b815260040162001196949392919062009590565b604080516020601f840181900481028201810190925282815260009162005fed9185858083850183828082843760009201919091525092939250506200866c9050565b90506203f48081108062006003575062278d0081115b156200602c5784848484604051630a5a604160e01b815260040162001196949392919062009590565b6039556200687b565b620060a360405180604001604052806011815260200170726564656c65676174654665655261746560781b81525085858080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092939250506200860f9050565b15620061505760208114620060d55783838383604051630a5a604160e01b815260040162001196949392919062009590565b604080516020601f8401819004810282018101909252828152600091620061189185858083850183828082843760009201919091525092939250506200866c9050565b90506064811115620061475784848484604051630a5a604160e01b815260040162001196949392919062009590565b603a556200687b565b620061c060405180604001604052806013815260200172191bdddb9d1a5b5954db185cda105b5bdd5b9d606a1b81525085858080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092939250506200860f9050565b15620062815760208114620061f25783838383604051630a5a604160e01b815260040162001196949392919062009590565b604080516020601f8401819004810282018101909252828152600091620062359185858083850183828082843760009201919091525092939250506200866c9050565b9050674563918244f400008110806200624f5750603c5481115b15620062785784848484604051630a5a604160e01b815260040162001196949392919062009590565b603b556200687b565b620062ef6040518060400160405280601181526020017019995b1bdb9e54db185cda105b5bdd5b9d607a1b81525085858080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092939250506200860f9050565b15620063b25760208114620063215783838383604051630a5a604160e01b815260040162001196949392919062009590565b604080516020601f8401819004810282018101909252828152600091620063649185858083850183828082843760009201919091525092939250506200866c9050565b905068056bc75e2d63100000811080620063805750603b548111155b15620063a95784848484604051630a5a604160e01b815260040162001196949392919062009590565b603c556200687b565b6200641f6040518060400160405280601081526020016f646f776e74696d654a61696c54696d6560801b81525085858080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092939250506200860f9050565b15620064dc5760208114620064515783838383604051630a5a604160e01b815260040162001196949392919062009590565b604080516020601f8401819004810282018101909252828152600091620064949185858083850183828082843760009201919091525092939250506200866c9050565b90506202a300811080620064aa5750603e548110155b15620064d35784848484604051630a5a604160e01b815260040162001196949392919062009590565b603d556200687b565b620065476040518060400160405280600e81526020016d66656c6f6e794a61696c54696d6560901b81525085858080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092939250506200860f9050565b15620066045760208114620065795783838383604051630a5a604160e01b815260040162001196949392919062009590565b604080516020601f8401819004810282018101909252828152600091620065bc9185858083850183828082843760009201919091525092939250506200866c9050565b9050620d2f00811080620065d25750603d548111155b15620065fb5784848484604051630a5a604160e01b815260040162001196949392919062009590565b603e556200687b565b6200667e6040518060400160405280601c81526020017f6d617846656c6f6e794265747765656e42726561746865426c6f636b0000000081525085858080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092939250506200860f9050565b156200672a5760208114620066b05783838383604051630a5a604160e01b815260040162001196949392919062009590565b604080516020601f8401819004810282018101909252828152600091620066f39185858083850183828082843760009201919091525092939250506200866c9050565b905080600003620067215784848484604051630a5a604160e01b815260040162001196949392919062009590565b604a556200687b565b620067986040518060400160405280601181526020017039ba30b5b2a43ab1283937ba32b1ba37b960791b81525085858080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092939250506200860f9050565b15620068585760148114620067ca5783838383604051630a5a604160e01b815260040162001196949392919062009590565b600062006812601484848080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092939250506200866c9050565b90506001600160a01b038116620068465784848484604051630a5a604160e01b815260040162001196949392919062009590565b620068518162008671565b506200687b565b838383836040516325ee20d560e21b815260040162001196949392919062009590565b7ff1ce9b2cbf50eeb05769a29e2543fd350cab46894a7dd9978a12d534bb20e63384848484604051620068b2949392919062009590565b60405180910390a150505050565b60005462010000900460ff1615620068eb57604051631785c68160e01b815260040160405180910390fd5b3360009081526001602052604090205460ff16156200691d5760405163b1d02c3d60e01b815260040160405180910390fd5b816000816001600160401b038111156200693b576200693b620088f6565b60405190808252806020026020018201604052801562006965578160200160208202803683370190505b5090506000805b8381101562006a6357620069ae8787838181106200698e576200698e62009179565b9050602002016020810190620069a5919062008787565b603f9062007d5e565b620069cc5760405163056e881160e01b815260040160405180910390fd5b60416000888884818110620069e557620069e562009179565b9050602002016020810190620069fc919062008787565b6001600160a01b039081168252602082019290925260400160002060020154845191169250829084908390811062006a385762006a3862009179565b6001600160a01b039092166020928302919091019091015262006a5b81620091e5565b90506200696c565b50604051634484077560e01b815261200590634484077590620028a990859088906004016200918f565b606080600062006a9e603f62008067565b90508085101562006c6257831562006ab7578362006ab9565b805b935060008462006aca878462009149565b1162006ae25762006adc868362009149565b62006ae4565b845b9050806001600160401b0381111562006b015762006b01620088f6565b60405190808252806020026020018201604052801562006b2b578160200160208202803683370190505b509350806001600160401b0381111562006b495762006b49620088f6565b60405190808252806020026020018201604052801562006b73578160200160208202803683370190505b50925060005b8181101562006c5f5762006b9262003a648289620090de565b85828151811062006ba75762006ba762009179565b60200260200101906001600160a01b031690816001600160a01b0316815250506041600086838151811062006be05762006be062009179565b60200260200101516001600160a01b03166001600160a01b0316815260200190815260200160002060020160009054906101000a90046001600160a01b031684828151811062006c345762006c3462009179565b6001600160a01b039092166020928302919091019091015262006c5781620091e5565b905062006b79565b50505b9250925092565b336110011462006c9157604051630f22c43960e41b8152611001600482015260240162001196565b60005462010000900460ff161562006cbc57604051631785c68160e01b815260040160405180910390fd5b6001600160a01b038082166000908152604360205260409020541662006ce4603f8262007d5e565b62006d025760405163056e881160e01b815260040160405180910390fd5b6001600160a01b03811660009081526041602052604081209062006d2a6201518042620090bb565b604a546000828152604b60205260409020549192501162006d5e5760405163bd52fcdb60e01b815260040160405180910390fd5b6000818152604b6020526040812080546001929062006d7f908490620090de565b90915550506001600160a01b0384166000908152604460205260409020541580159062006dd457506001600160a01b038416600090815260446020526040902054429062006dd2906201518090620090de565b105b1562006df3576040516330abb81d60e21b815260040160405180910390fd5b60008062006e0385600062007d81565b915091508162006e2657604051631b919bb160e11b815260040160405180910390fd5b6002840154603c5460405163045bc4d160e41b815260048101919091526000916001600160a01b0316906345bc4d10906024016020604051808303816000875af115801562006e79573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062006e9f9190620090f4565b905062006ead858362007e0b565b856001600160a01b03167f6e9a2ee7aee95665e3a774a212eb11441b217e3e4656ab9563793094689aabb28383600060405162006eed939291906200910e565b60405180910390a26002850154604051633041949b60e01b815261200591633041949b916200568a916001600160a01b0316908a906004016200907b565b6001600160a01b038082166000908152604160209081526040808320815161018081018352815486168152600182015486169381019390935260028101549094169082015260038301546060820152600483018054929384938493849390929160808401919062006f9c9062009045565b80601f016020809104026020016040519081016040528092919081815260200182805462006fca9062009045565b80156200701b5780601f1062006fef576101008083540402835291602001916200701b565b820191906000526020600020905b81548152906001019060200180831162006ffd57829003601f168201915b5050505050815260200160058201604051806080016040529081600082018054620070469062009045565b80601f0160208091040260200160405190810160405280929190818152602001828054620070749062009045565b8015620070c55780601f106200709957610100808354040283529160200191620070c5565b820191906000526020600020905b815481529060010190602001808311620070a757829003601f168201915b50505050508152602001600182018054620070e09062009045565b80601f01602080910402602001604051908101604052809291908181526020018280546200710e9062009045565b80156200715f5780601f1062007133576101008083540402835291602001916200715f565b820191906000526020600020905b8154815290600101906020018083116200714157829003601f168201915b505050505081526020016002820180546200717a9062009045565b80601f0160208091040260200160405190810160405280929190818152602001828054620071a89062009045565b8015620071f95780601f10620071cd57610100808354040283529160200191620071f9565b820191906000526020600020905b815481529060010190602001808311620071db57829003601f168201915b50505050508152602001600382018054620072149062009045565b80601f0160208091040260200160405190810160405280929190818152602001828054620072429062009045565b8015620072935780601f10620072675761010080835404028352916020019162007293565b820191906000526020600020905b8154815290600101906020018083116200727557829003601f168201915b505050919092525050508152604080516060808201835260098501546001600160401b038082168452600160401b82048116602080860191909152600160801b9092041683850152840191909152600a84015460ff16151582840152600b84015490830152600c8301546080830152600d8301546001600160a01b031660a0830152805161026081019182905260c09092019190600e84019060139082845b815481526020019060010190808311620073325750505091909252505050606081015160e0820151610100909201519097919650945092505050565b60005462010000900460ff16156200739957604051631785c68160e01b815260040160405180910390fd5b3360009081526001602052604090205460ff1615620073cb5760405163b1d02c3d60e01b815260040160405180910390fd5b620073d562007f00565b620073e2603f8262007d5e565b620074005760405163056e881160e01b815260040160405180910390fd5b60006200740c62007f00565b6001600160a01b0381166000908152604160205260409020600c8101549192509042906200743f906201518090620090de565b11156200745f57604051631f92cdbd60e11b815260040160405180910390fd5b600581018054620074709062009045565b80601f01602080910402602001604051908101604052809291908181526020018280546200749e9062009045565b8015620074ef5780601f10620074c357610100808354040283529160200191620074ef565b820191906000526020600020905b815481529060010190602001808311620074d157829003601f168201915b50505082875250859160058401915081906200750c9082620095c6565b5060208201516001820190620075239082620095c6565b50604082015160028201906200753a9082620095c6565b5060608201516003820190620075519082620095c6565b505042600c830155506040516001600160a01b038316907f85d6366b336ade7f106987ec7a8eac1e8799e508aeab045a39d2f63e0dc969d990600090a250505050565b60005462010000900460ff1615620075bf57604051631785c68160e01b815260040160405180910390fd5b3360009081526001602052604090205460ff1615620075f15760405163b1d02c3d60e01b815260040160405180910390fd5b82811462007612576040516341abc80160e01b815260040160405180910390fd5b60005b8381101562007683576200767085858381811062007637576200763762009179565b90506020020160208101906200764e919062008787565b84848481811062007663576200766362009179565b9050602002013562008503565b6200767b81620091e5565b905062007615565b5050505050565b6001600160a01b0380821660009081526041602090815260408083208151610180810183528154861681526001820154861693810193909352600281015490941690820152600383015460608201526004830180549293849390916080840191620076f59062009045565b80601f0160208091040260200160405190810160405280929190818152602001828054620077239062009045565b8015620077745780601f10620077485761010080835404028352916020019162007774565b820191906000526020600020905b8154815290600101906020018083116200775657829003601f168201915b50505050508152602001600582016040518060800160405290816000820180546200779f9062009045565b80601f0160208091040260200160405190810160405280929190818152602001828054620077cd9062009045565b80156200781e5780601f10620077f2576101008083540402835291602001916200781e565b820191906000526020600020905b8154815290600101906020018083116200780057829003601f168201915b50505050508152602001600182018054620078399062009045565b80601f0160208091040260200160405190810160405280929190818152602001828054620078679062009045565b8015620078b85780601f106200788c57610100808354040283529160200191620078b8565b820191906000526020600020905b8154815290600101906020018083116200789a57829003601f168201915b50505050508152602001600282018054620078d39062009045565b80601f0160208091040260200160405190810160405280929190818152602001828054620079019062009045565b8015620079525780601f10620079265761010080835404028352916020019162007952565b820191906000526020600020905b8154815290600101906020018083116200793457829003601f168201915b505050505081526020016003820180546200796d9062009045565b80601f01602080910402602001604051908101604052809291908181526020018280546200799b9062009045565b8015620079ec5780601f10620079c057610100808354040283529160200191620079ec565b820191906000526020600020905b815481529060010190602001808311620079ce57829003601f168201915b505050919092525050508152604080516060808201835260098501546001600160401b038082168452600160401b82048116602080860191909152600160801b9092041683850152840191909152600a84015460ff16151582840152600b84015490830152600c8301546080830152600d8301546001600160a01b031660a0830152805161026081019182905260c09092019190600e84019060139082845b81548152602001906001019080831162007a8b5750505091909252505050604001519392505050565b600062007ac3603f8462007d5e565b62007ae15760405163056e881160e01b815260040160405180910390fd5b6001600160a01b038381166000908152604160205260409081902060020154905163aa1966cd60e01b81526004810185905291169063aa1966cd9060240162004fcc565b60005462010000900460ff161562007b5057604051631785c68160e01b815260040160405180910390fd5b3360009081526001602052604090205460ff161562007b825760405163b1d02c3d60e01b815260040160405180910390fd5b62007b8c62007f00565b62007b99603f8262007d5e565b62007bb75760405163056e881160e01b815260040160405180910390fd5b600062007bc362007f00565b905062007bd4818787878762008222565b62007bf257604051631647e3cb60e11b815260040160405180910390fd5b60006001600160a01b03166045878760405162007c1192919062009095565b908152604051908190036020019020546001600160a01b03161462007c49576040516311fdb94760e01b815260040160405180910390fd5b6001600160a01b0381166000908152604160205260409020600c810154429062007c78906201518090620090de565b111562007c9857604051631f92cdbd60e11b815260040160405180910390fd5b4260468260040160405162007cae91906200968e565b908152604051908190036020019020556004810162007ccf878983620092a9565b5042600c820155604051829060459062007ced908a908a9062009095565b90815260405190819003602001812080546001600160a01b039384166001600160a01b0319909116179055908316907f783156582145bd0ff7924fae6953ba054cf1233eb60739a200ddb10de068ff0d9062007d4d908a908a906200957a565b60405180910390a250505050505050565b6001600160a01b0381166000908152600183016020526040812054151562005010565b6000806000848460405160200162007d9b9291906200970c565b60408051601f1981840301815291815281516020928301206000818152604c9093529120549091504281111562007ddb5760008093509350505062007e04565b603e5462007dea9042620090de565b6000928352604c6020526040909220829055506001925090505b9250929050565b6000600162007e1b603f62008067565b62007e27919062009149565b604954108015915062007e735760018301546040516001600160a01b03909116907f2afdc18061ac21cff7d9f11527ab9c8dec6fabd4edf6f894ed634bebd6a20d4590600090a2505050565b82600b015482111562007e8857600b83018290555b600a83015460ff1662007efb57600a8301805460ff191660019081179091556049805460009062007ebb908490620090de565b909155505060018301546040516001600160a01b03909116907f4905ac32602da3fb8b4b7b00c285e5fc4c6c2308cc908b4a1e4e9625a29c90a390600090a25b505050565b336000908152604d60205260408120546001600160a01b03161562007f3c5750336000908152604d60205260409020546001600160a01b031690565b503390565b6001600160a01b0381166000908152604160205260409020600a81015460ff161562007f6b575050565b6036546002820154604051630913db4760e01b81526001600160a01b03858116600483015290911690630913db4790602401602060405180830381865afa15801562007fbb573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062007fe19190620090f4565b101562005a1d576200800381603d544262007ffd9190620090de565b62007e0b565b80546040516335409f7f60e01b81526001600160a01b039091166004820152611000906335409f7f90602401600060405180830381600087803b1580156200804a57600080fd5b505af11580156200805f573d6000803e3d6000fd5b505050505050565b600062005013825490565b6000620050108383620086dd565b60008082905060038151108062008098575060098151115b15620080a75750600092915050565b604181600081518110620080bf57620080bf62009179565b016020015160f81c1080620080f15750605a81600081518110620080e757620080e762009179565b016020015160f81c115b15620081005750600092915050565b60015b81518110156200821857603082828151811062008124576200812462009179565b016020015160f81c108062008155575060398282815181106200814b576200814b62009179565b016020015160f81c115b8015620081a55750604182828151811062008174576200817462009179565b016020015160f81c1080620081a55750605a8282815181106200819b576200819b62009179565b016020015160f81c115b8015620081f557506061828281518110620081c457620081c462009179565b016020015160f81c1080620081f55750607a828281518110620081eb57620081eb62009179565b016020015160f81c115b1562008205575060009392505050565b6200821081620091e5565b905062008103565b5060019392505050565b600060308414158062008236575060608214155b15620082455750600062008349565b60008686864660405160200162008260949392919062009756565b60408051808303601f1901815282825280516020918201208184528383019092529092506000919060208201818036833701905050905081602082015260008186868a8a604051602001620082ba95949392919062009783565b60408051808303601f190181526001808452838301909252925060009190602082018180368337019050509050815160016020830182602086016066600019fa6200830457600080fd5b506000816000815181106200831d576200831d62009179565b016020015160f81c9050600181146200833f5760009550505050505062008349565b6001955050505050505b95945050505050565b60008061200361dead60405162008369906200875c565b6001600160a01b03928316815291166020820152606060408201819052600090820152608001604051809103906000f080158015620083ac573d6000803e3d6000fd5b509050806001600160a01b031663f399e22e3486866040518463ffffffff1660e01b8152600401620083e0929190620097bb565b6000604051808303818588803b158015620083fa57600080fd5b505af11580156200840f573d6000803e3d6000fd5b50506040516001600160a01b038086169450881692507fd481492e4e93bb36b4c12a5af93f03be3bf04b454dfbc35dd2663fa26f44d5b09150600090a39392505050565b600062005010836001600160a01b0384166200870a565b600054610100900460ff16620084d75760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b606482015260840162001196565b600080546001600160a01b039092166301000000026301000000600160b81b0319909216919091179055565b8162008511603f8262007d5e565b6200852f5760405163056e881160e01b815260040160405180910390fd5b6001600160a01b03838116600090815260416020526040808220600201549051635569f64b60e11b8152336004820152602481018690529192169063aad3ec96906044016020604051808303816000875af115801562008593573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620085b99190620090f4565b9050336001600160a01b0316846001600160a01b03167ff7a40077ff7a04c7e61f6f26fb13774259ddf1b6bce9ecf26a8276cdd3992683836040516200860191815260200190565b60405180910390a350505050565b600081604051602001620086249190620097e1565b60405160208183030381529060405280519060200120836040516020016200864d9190620097e1565b6040516020818303038152906040528051906020012014905092915050565b015190565b600080546040516001600160a01b0380851693630100000090930416917f44fc1b38a4abaa91ebd1b628a5b259a698f86238c8217d68f516e87769c60c0b91a3600080546001600160a01b039092166301000000026301000000600160b81b0319909216919091179055565b6000826000018281548110620086f757620086f762009179565b9060005260206000200154905092915050565b6000818152600183016020526040812054620087535750815460018181018455600084815260208082209093018490558454848252828601909352604090209190915562005013565b50600062005013565b610e96806200980083390190565b80356001600160a01b03811681146200878257600080fd5b919050565b6000602082840312156200879a57600080fd5b62005010826200876a565b60008083601f840112620087b857600080fd5b5081356001600160401b03811115620087d057600080fd5b60208301915083602082850101111562007e0457600080fd5b60008060208385031215620087fd57600080fd5b82356001600160401b038111156200881457600080fd5b6200882285828601620087a5565b90969095509350505050565b6000806000604084860312156200884457600080fd5b833560ff811681146200885657600080fd5b925060208401356001600160401b038111156200887257600080fd5b6200888086828701620087a5565b9497909650939450505050565b60005b83811015620088aa57818101518382015260200162008890565b50506000910152565b60008151808452620088cd8160208601602086016200888d565b601f01601f19169290920160200192915050565b602081526000620050106020830184620088b3565b634e487b7160e01b600052604160045260246000fd5b604051608081016001600160401b0381118282101715620089315762008931620088f6565b60405290565b60006001600160401b0380841115620089545762008954620088f6565b604051601f8501601f19908116603f011681019082821181831017156200897f576200897f620088f6565b816040528093508581528686860111156200899957600080fd5b858560208301376000602087830101525050509392505050565b600060208284031215620089c657600080fd5b81356001600160401b03811115620089dd57600080fd5b8201601f81018413620089ef57600080fd5b62008a008482356020840162008937565b949350505050565b6000806040838503121562008a1c57600080fd5b62008a27836200876a565b946020939093013593505050565b803580151581146200878257600080fd5b6000806000806080858703121562008a5d57600080fd5b62008a68856200876a565b935062008a78602086016200876a565b92506040850135915062008a8f6060860162008a35565b905092959194509250565b6001600160401b0381168114620017c157600080fd5b60006020828403121562008ac357600080fd5b813562008ad08162008a9a565b9392505050565b6000806040838503121562008aeb57600080fd5b50508035926020909101359150565b600081518084526020808501945080840160005b8381101562008b355781516001600160a01b03168752958201959082019060010162008b0e565b509495945050505050565b60808152600062008b55608083018762008afa565b82810360208481019190915286518083528782019282019060005b8181101562008b8e5784518352938301939183019160010162008b70565b5050848103604086015286518082528282019350600581901b8201830183890160005b8381101562008be357601f1985840301875262008bd0838351620088b3565b9686019692509085019060010162008bb1565b5050809550505050505082606083015295945050505050565b600080600080600080600087890360e081121562008c1957600080fd5b62008c24896200876a565b975060208901356001600160401b038082111562008c4157600080fd5b62008c4f8c838d01620087a5565b909950975060408b013591508082111562008c6957600080fd5b62008c778c838d01620087a5565b90975095508591506060605f198401121562008c9257600080fd5b60608b01945060c08b013592508083111562008cad57600080fd5b505088016080818b03121562008cc257600080fd5b8091505092959891949750929550565b6000806040838503121562008ce657600080fd5b62008cf1836200876a565b915062008d016020840162008a35565b90509250929050565b60208152600082516080602084015262008d2860a0840182620088b3565b90506020840151601f198085840301604086015262008d488383620088b3565b9250604086015191508085840301606086015262008d678383620088b3565b9250606086015191508085840301608086015250620083498282620088b3565b6000806000806040858703121562008d9e57600080fd5b84356001600160401b038082111562008db657600080fd5b62008dc488838901620087a5565b9096509450602087013591508082111562008dde57600080fd5b5062008ded87828801620087a5565b95989497509550505050565b60008083601f84011262008e0c57600080fd5b5081356001600160401b0381111562008e2457600080fd5b6020830191508360208260051b850101111562007e0457600080fd5b60008060006040848603121562008e5657600080fd5b83356001600160401b0381111562008e6d57600080fd5b62008e7b8682870162008df9565b909450925062008e909050602085016200876a565b90509250925092565b60608152600062008eae606083018662008afa565b828103602084015262008ec2818662008afa565b915050826040830152949350505050565b600082601f83011262008ee557600080fd5b620050108383356020850162008937565b60006020828403121562008f0957600080fd5b81356001600160401b038082111562008f2157600080fd5b908301906080828603121562008f3657600080fd5b62008f406200890c565b82358281111562008f5057600080fd5b62008f5e8782860162008ed3565b82525060208301358281111562008f7457600080fd5b62008f828782860162008ed3565b60208301525060408301358281111562008f9b57600080fd5b62008fa98782860162008ed3565b60408301525060608301358281111562008fc257600080fd5b62008fd08782860162008ed3565b60608301525095945050505050565b6000806000806040858703121562008ff657600080fd5b84356001600160401b03808211156200900e57600080fd5b6200901c8883890162008df9565b909650945060208701359150808211156200903657600080fd5b5062008ded8782880162008df9565b600181811c908216806200905a57607f821691505b60208210810362001bd757634e487b7160e01b600052602260045260246000fd5b6001600160a01b0392831681529116602082015260400190565b8183823760009101908152919050565b634e487b7160e01b600052601160045260246000fd5b600082620090d957634e487b7160e01b600052601260045260246000fd5b500490565b80820180821115620050135762005013620090a5565b6000602082840312156200910757600080fd5b5051919050565b8381526020810183905260608101600383106200913b57634e487b7160e01b600052602160045260246000fd5b826040830152949350505050565b81810381811115620050135762005013620090a5565b8082028115828204841417620050135762005013620090a5565b634e487b7160e01b600052603260045260246000fd5b604081526000620091a4604083018562008afa565b905060018060a01b03831660208301529392505050565b6001600160401b03828116828216039080821115620091de57620091de620090a5565b5092915050565b600060018201620091fa57620091fa620090a5565b5060010190565b6000808335601e198436030181126200921957600080fd5b8301803591506001600160401b038211156200923457600080fd5b60200191503681900382131562007e0457600080fd5b601f82111562007efb57600081815260208120601f850160051c81016020861015620092735750805b601f850160051c820191505b818110156200805f578281556001016200927f565b600019600383901b1c191660019190911b1790565b6001600160401b03831115620092c357620092c3620088f6565b620092db83620092d4835462009045565b836200924a565b6000601f8411600181146200930e5760008515620092f95750838201355b62009305868262009294565b84555062007683565b600083815260209020601f19861690835b828110156200934157868501358255602094850194600190920191016200931f565b50868210156200935f5760001960f88860031b161c19848701351681555b505060018560011b0183555050505050565b6200937d828362009201565b6001600160401b03811115620093975762009397620088f6565b620093af81620093a8855462009045565b856200924a565b6000601f821160018114620093e25760008315620093cd5750838201355b620093d9848262009294565b8655506200943f565b600085815260209020601f19841690835b82811015620094155786850135825560209485019460019092019101620093f3565b5084821015620094335760001960f88660031b161c19848701351681555b505060018360011b0185555b5050505062009452602083018362009201565b62009462818360018601620092a9565b505062009473604083018362009201565b62009483818360028601620092a9565b505062009494606083018362009201565b620094a4818360038601620092a9565b50505050565b8135620094b78162008a9a565b6001600160401b03811690508154816001600160401b031982161783556020840135620094e48162008a9a565b6fffffffffffffffff0000000000000000604091821b166fffffffffffffffffffffffffffffffff19831684178117855590850135620095248162008a9a565b6001600160c01b0319929092169092179190911760809190911b67ffffffffffffffff60801b1617905550565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b60208152600062008a0060208301848662009551565b604081526000620095a660408301868862009551565b8281036020840152620095bb81858762009551565b979650505050505050565b81516001600160401b03811115620095e257620095e2620088f6565b620095fa81620095f3845462009045565b846200924a565b602080601f8311600181146200962e5760008415620096195750858301515b62009625858262009294565b8655506200805f565b600085815260208120601f198616915b828110156200965f578886015182559484019460019091019084016200963e565b50858210156200967e5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b60008083546200969e8162009045565b60018281168015620096b95760018114620096cf5762009700565b60ff198416875282151583028701945062009700565b8760005260208060002060005b85811015620096f75781548a820152908401908201620096dc565b50505082870194505b50929695505050505050565b6bffffffffffffffffffffffff198360601b1681526000600383106200974257634e487b7160e01b600052602160045260246000fd5b5060f89190911b6014820152601501919050565b6bffffffffffffffffffffffff198560601b16815282846014830137601492019182015260340192915050565b6000865162009797818460208b016200888d565b82018587823760009086019081528385823760009301928352509095945050505050565b6001600160a01b038316815260406020820181905260009062008a0090830184620088b3565b60008251620097f58184602087016200888d565b919091019291505056fe608060405260405162000e9638038062000e96833981016040819052620000269162000497565b828162000036828260006200004d565b50620000449050826200008a565b505050620005ca565b6200005883620000e5565b600082511180620000665750805b1562000085576200008383836200012760201b620001691760201c565b505b505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f620000b562000156565b604080516001600160a01b03928316815291841660208301520160405180910390a1620000e2816200018f565b50565b620000f08162000244565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b60606200014f838360405180606001604052806027815260200162000e6f60279139620002f8565b9392505050565b60006200018060008051602062000e4f83398151915260001b6200037760201b620001951760201c565b546001600160a01b0316919050565b6001600160a01b038116620001fa5760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b60648201526084015b60405180910390fd5b806200022360008051602062000e4f83398151915260001b6200037760201b620001951760201c565b80546001600160a01b0319166001600160a01b039290921691909117905550565b6200025a816200037a60201b620001981760201c565b620002be5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b6064820152608401620001f1565b80620002237f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc60001b6200037760201b620001951760201c565b6060600080856001600160a01b03168560405162000317919062000577565b600060405180830381855af49150503d806000811462000354576040519150601f19603f3d011682016040523d82523d6000602084013e62000359565b606091505b5090925090506200036d8683838762000389565b9695505050505050565b90565b6001600160a01b03163b151590565b60608315620003fd578251600003620003f5576001600160a01b0385163b620003f55760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401620001f1565b508162000409565b62000409838362000411565b949350505050565b815115620004225781518083602001fd5b8060405162461bcd60e51b8152600401620001f1919062000595565b80516001600160a01b03811681146200045657600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b60005b838110156200048e57818101518382015260200162000474565b50506000910152565b600080600060608486031215620004ad57600080fd5b620004b8846200043e565b9250620004c8602085016200043e565b60408501519092506001600160401b0380821115620004e657600080fd5b818601915086601f830112620004fb57600080fd5b8151818111156200051057620005106200045b565b604051601f8201601f19908116603f011681019083821181831017156200053b576200053b6200045b565b816040528281528960208487010111156200055557600080fd5b6200056883602083016020880162000471565b80955050505050509250925092565b600082516200058b81846020870162000471565b9190910192915050565b6020815260008251806020840152620005b681604085016020870162000471565b601f01601f19169190910160400192915050565b61087580620005da6000396000f3fe60806040523661001357610011610017565b005b6100115b61001f6101a7565b6001600160a01b0316330361015f5760606001600160e01b0319600035166364d3180d60e11b810161005a576100536101da565b9150610157565b63587086bd60e11b6001600160e01b031982160161007a57610053610231565b63070d7c6960e41b6001600160e01b031982160161009a57610053610277565b621eb96f60e61b6001600160e01b03198216016100b9576100536102a8565b63a39f25e560e01b6001600160e01b03198216016100d9576100536102e8565b60405162461bcd60e51b815260206004820152604260248201527f5472616e73706172656e745570677261646561626c6550726f78793a2061646d60448201527f696e2063616e6e6f742066616c6c6261636b20746f2070726f78792074617267606482015261195d60f21b608482015260a4015b60405180910390fd5b815160208301f35b6101676102fc565b565b606061018e83836040518060600160405280602781526020016108426027913961030c565b9392505050565b90565b6001600160a01b03163b151590565b60007fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b546001600160a01b0316919050565b60606101e4610384565b60006101f33660048184610695565b81019061020091906106db565b905061021d8160405180602001604052806000815250600061038f565b505060408051602081019091526000815290565b60606000806102433660048184610695565b810190610250919061070c565b915091506102608282600161038f565b604051806020016040528060008152509250505090565b6060610281610384565b60006102903660048184610695565b81019061029d91906106db565b905061021d816103bb565b60606102b2610384565b60006102bc6101a7565b604080516001600160a01b03831660208201529192500160405160208183030381529060405291505090565b60606102f2610384565b60006102bc610412565b610167610307610412565b610421565b6060600080856001600160a01b03168560405161032991906107f2565b600060405180830381855af49150503d8060008114610364576040519150601f19603f3d011682016040523d82523d6000602084013e610369565b606091505b509150915061037a86838387610445565b9695505050505050565b341561016757600080fd5b610398836104c6565b6000825111806103a55750805b156103b6576103b48383610169565b505b505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f6103e46101a7565b604080516001600160a01b03928316815291841660208301520160405180910390a161040f81610506565b50565b600061041c6105af565b905090565b3660008037600080366000845af43d6000803e808015610440573d6000f35b3d6000fd5b606083156104b45782516000036104ad576001600160a01b0385163b6104ad5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015260640161014e565b50816104be565b6104be83836105d7565b949350505050565b6104cf81610601565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b6001600160a01b03811661056b5760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b606482015260840161014e565b807fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b80546001600160a01b0319166001600160a01b039290921691909117905550565b60007f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc6101cb565b8151156105e75781518083602001fd5b8060405162461bcd60e51b815260040161014e919061080e565b6001600160a01b0381163b61066e5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b606482015260840161014e565b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc61058e565b600080858511156106a557600080fd5b838611156106b257600080fd5b5050820193919092039150565b80356001600160a01b03811681146106d657600080fd5b919050565b6000602082840312156106ed57600080fd5b61018e826106bf565b634e487b7160e01b600052604160045260246000fd5b6000806040838503121561071f57600080fd5b610728836106bf565b9150602083013567ffffffffffffffff8082111561074557600080fd5b818501915085601f83011261075957600080fd5b81358181111561076b5761076b6106f6565b604051601f8201601f19908116603f01168101908382118183101715610793576107936106f6565b816040528281528860208487010111156107ac57600080fd5b8260208601602083013760006020848301015280955050505050509250929050565b60005b838110156107e95781810151838201526020016107d1565b50506000910152565b600082516108048184602087016107ce565b9190910192915050565b602081526000825180602084015261082d8160408501602087016107ce565b601f01601f1916919091016040019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a164736f6c6343000811000ab53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a164736f6c6343000811000a \ No newline at end of file diff --git a/core/systemcontracts/pascal/chapel/StakingContract b/core/systemcontracts/pascal/chapel/StakingContract new file mode 100644 index 0000000000..59934f9519 --- /dev/null +++ b/core/systemcontracts/pascal/chapel/StakingContract @@ -0,0 +1 @@ +60806040526004361061028c5760003560e01c806375d47a0a1161015a578063bf8546ca116100c1578063df8079e91161007a578063df8079e9146109aa578063edc1a5b0146109bf578063f45fd80b146109d4578063f9a2bbc714610a19578063fa03f79714610a2e578063fd6a687914610a4357610293565b8063bf8546ca146108f5578063c2117d8214610930578063c81b166214610945578063c8509d81146106d0578063d61b9b931461095a578063dc927faf1461099557610293565b8063aa82dce111610113578063aa82dce1146107a8578063aad56063146107bd578063ab51bb96146107d2578063ac43175114610800578063b88a802f146108cb578063baaafd3b146108e057610293565b806375d47a0a146106a65780637e434d54146106bb578063831d65d1146106d05780639dc0926214610755578063a1a11bf51461076a578063a78abc161461077f57610293565b8063493279b1116101fe57806362b171d2116101b757806362b171d2146105cb57806369b635b6146105e05780636bd8f804146105f55780636e47b4821461062b5780636fb7f7eb1461064057806375aca5931461067357610293565b8063493279b11461051f5780634d99dd161461054b57806351b4dce31461057757806351e806721461058c5780635d17c8bd146105a15780635d499b1b146105b657610293565b80631182b875116102505780631182b8751461039e57806311fe9ec61461049857806328087028146104cb5780632fdeb111146104e057806334c43354146104f557806343756e5c1461050a57610293565b8063026e402b1461029857806302985992146102c6578063047636d1146102ed5780630c795715146103585780630e2374a51461036d57610293565b3661029357005b600080fd5b6102c4600480360360408110156102ae57600080fd5b506001600160a01b038135169060200135610a58565b005b3480156102d257600080fd5b506102db610a95565b60408051918252519081900360200190f35b3480156102f957600080fd5b506103206004803603602081101561031057600080fd5b50356001600160a01b0316610a9b565b6040518082606080838360005b8381101561034557818101518382015260200161032d565b5050505090500191505060405180910390f35b34801561036457600080fd5b506102db610aed565b34801561037957600080fd5b50610382610af3565b604080516001600160a01b039092168252519081900360200190f35b3480156103aa57600080fd5b50610423600480360360408110156103c157600080fd5b60ff8235169190810190604081016020820135600160201b8111156103e557600080fd5b8201836020820111156103f757600080fd5b803590602001918460018302840111600160201b8311171561041857600080fd5b509092509050610af9565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561045d578181015183820152602001610445565b50505050905090810190601f16801561048a5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3480156104a457600080fd5b506102db600480360360208110156104bb57600080fd5b50356001600160a01b0316610bb8565b3480156104d757600080fd5b50610382610bd3565b3480156104ec57600080fd5b506102db610bd9565b34801561050157600080fd5b506102db610bdf565b34801561051657600080fd5b50610382610bea565b34801561052b57600080fd5b50610534610bf0565b6040805161ffff9092168252519081900360200190f35b6102c46004803603604081101561056157600080fd5b506001600160a01b038135169060200135610bf5565b34801561058357600080fd5b50610382610cba565b34801561059857600080fd5b50610382610cc0565b3480156105ad57600080fd5b506102db610cc6565b3480156105c257600080fd5b506102db610ccc565b3480156105d757600080fd5b506102db610cd5565b3480156105ec57600080fd5b506102db610e75565b6102c46004803603606081101561060b57600080fd5b506001600160a01b03813581169160208101359091169060400135610a58565b34801561063757600080fd5b50610382610e7b565b34801561064c57600080fd5b506102db6004803603602081101561066357600080fd5b50356001600160a01b0316610e81565b34801561067f57600080fd5b506102db6004803603602081101561069657600080fd5b50356001600160a01b0316610e9c565b3480156106b257600080fd5b50610382610eb7565b3480156106c757600080fd5b50610382610ebd565b3480156106dc57600080fd5b506102c4600480360360408110156106f357600080fd5b60ff8235169190810190604081016020820135600160201b81111561071757600080fd5b82018360208201111561072957600080fd5b803590602001918460018302840111600160201b8311171561074a57600080fd5b509092509050610ec3565b34801561076157600080fd5b50610382610f03565b34801561077657600080fd5b50610382610f09565b34801561078b57600080fd5b50610794610f0f565b604080519115158252519081900360200190f35b3480156107b457600080fd5b50610382610f18565b3480156107c957600080fd5b50610382610f1e565b3480156107de57600080fd5b506107e7610f24565b6040805163ffffffff9092168252519081900360200190f35b34801561080c57600080fd5b506102c46004803603604081101561082357600080fd5b810190602081018135600160201b81111561083d57600080fd5b82018360208201111561084f57600080fd5b803590602001918460018302840111600160201b8311171561087057600080fd5b919390929091602081019035600160201b81111561088d57600080fd5b82018360208201111561089f57600080fd5b803590602001918460018302840111600160201b831117156108c057600080fd5b509092509050610f29565b3480156108d757600080fd5b506102db610fc0565b3480156108ec57600080fd5b506102db61115d565b34801561090157600080fd5b506102db6004803603604081101561091857600080fd5b506001600160a01b0381358116916020013516611168565b34801561093c57600080fd5b506102db611193565b34801561095157600080fd5b50610382611199565b34801561096657600080fd5b506102db6004803603604081101561097d57600080fd5b506001600160a01b038135811691602001351661119f565b3480156109a157600080fd5b506103826111ca565b3480156109b657600080fd5b506103826111d0565b3480156109cb57600080fd5b506102db6111d6565b3480156109e057600080fd5b506102db600480360360608110156109f757600080fd5b506001600160a01b0381358116916020810135821691604090910135166111e3565b348015610a2557600080fd5b50610382611218565b348015610a3a57600080fd5b506102db61121e565b348015610a4f57600080fd5b50610382611224565b6040805162461bcd60e51b815260206004820152600d60248201526c1b9bdd081cdd5c1c1bdc9d1959609a1b604482015290519081900360640190fd5b60035481565b610aa361122a565b610aab61122a565b6001600160a01b03929092166000818152600b60209081526040808320548652838352600c82528083205486830152928252600d905281902054908301525090565b6108fc81565b61200181565b60603361200014610b3b5760405162461bcd60e51b815260040180806020018281038252602f815260200180611277602f913960400191505060405180910390fd5b60005460ff16610b7e576638d7ea4c6800006001908155662386f26fc1000060025568056bc75e2d631000006003556108fc6011556000805460ff191690911790555b6040805162461bcd60e51b815260206004820152600a60248201526919195c1c9958d85d195960b21b604482015290519081900360640190fd5b6001600160a01b031660009081526006602052604090205490565b61200581565b60015481565b662386f26fc1000081565b61100181565b606181565b60105460ff1660021415610c41576040805162461bcd60e51b815260206004820152600e60248201526d4e6f2072652d656e7472616e637960901b604482015290519081900360640190fd5b6010805460ff19166002179055806402540be4003406158015610c6957506402540be4008106155b610b3b576040805162461bcd60e51b815260206004820152601c60248201527f707265636973696f6e206c6f737320696e20636f6e76657273696f6e00000000604482015290519081900360640190fd5b61200681565b61200081565b60025481565b6402540be40081565b60105460009060ff1660021415610d24576040805162461bcd60e51b815260206004820152600e60248201526d4e6f2072652d656e7472616e637960901b604482015290519081900360640190fd5b506010805460ff191660021790553360009081526008602052604090205480610d8b576040805162461bcd60e51b81526020600482015260146024820152736e6f20756e64656c6567617465642066756e647360601b604482015290519081900360640190fd5b336000818152600860205260408082208290556011549051919291849084818181858888f193505050503d8060008114610de1576040519150601f19603f3d011682016040523d82523d6000602084013e610de6565b606091505b5050905080610e2e576040805162461bcd60e51b815260206004820152600f60248201526e1d1c985b9cd9995c8819985a5b1959608a1b604482015290519081900360640190fd5b60408051838152905133917fc712d133b8d448221aaed2198ed1f0db6dfc860fb01bc3a630916fe6cbef946f919081900360200190a2506010805460ff1916600117905590565b60035490565b61100581565b6001600160a01b031660009081526004602052604090205490565b6001600160a01b031660009081526008602052604090205490565b61100881565b61200381565b3361200014610b3b5760405162461bcd60e51b815260040180806020018281038252602f815260200180611277602f913960400191505060405180910390fd5b61100781565b61100681565b60005460ff1681565b61200281565b61300081565b600081565b60005460ff16610f80576040805162461bcd60e51b815260206004820152601960248201527f74686520636f6e7472616374206e6f7420696e69742079657400000000000000604482015290519081900360640190fd5b3361100714610b7e5760405162461bcd60e51b815260040180806020018281038252602e815260200180611249602e913960400191505060405180910390fd5b60105460009060ff166002141561100f576040805162461bcd60e51b815260206004820152600e60248201526d4e6f2072652d656e7472616e637960901b604482015290519081900360640190fd5b506010805460ff191660021790553360009081526006602052604090205480611073576040805162461bcd60e51b81526020600482015260116024820152701b9bc81c195b991a5b99c81c995dd85c99607a1b604482015290519081900360640190fd5b336000818152600660205260408082208290556011549051919291849084818181858888f193505050503d80600081146110c9576040519150601f19603f3d011682016040523d82523d6000602084013e6110ce565b606091505b5050905080611116576040805162461bcd60e51b815260206004820152600f60248201526e1d1c985b9cd9995c8819985a5b1959608a1b604482015290519081900360640190fd5b60408051838152905133917f83b78188b13346b2ffb484da70d42ee27de7fbf9f2bd8045269e10ed643ccd76919081900360200190a2506010805460ff1916600117905590565b6638d7ea4c68000081565b6001600160a01b03918216600090815260076020908152604080832093909416825291909152205490565b60015490565b61100281565b6001600160a01b03918216600090815260056020908152604080832093909416825291909152205490565b61100381565b61200481565b68056bc75e2d6310000081565b6001600160a01b0392831660009081526009602090815260408083209486168352938152838220929094168152925290205490565b61100081565b60115481565b61100481565b6040518060600160405280600390602082028036833750919291505056fe746865206d6573736167652073656e646572206d75737420626520676f7665726e616e636520636f6e7472616374746865206d6573736167652073656e646572206d7573742062652063726f737320636861696e20636f6e7472616374a164736f6c6343000604000a \ No newline at end of file diff --git a/core/systemcontracts/pascal/chapel/SystemRewardContract b/core/systemcontracts/pascal/chapel/SystemRewardContract new file mode 100644 index 0000000000..82f0fa4654 --- /dev/null +++ b/core/systemcontracts/pascal/chapel/SystemRewardContract @@ -0,0 +1 @@ +60806040526004361061016a5760003560e01c80639dc09262116100d1578063ac4317511161008a578063df8079e911610064578063df8079e9146104da578063f9a2bbc7146104ef578063fb5478b314610504578063fd6a687914610519576101ae565b8063ac431751146103e1578063c81b1662146104b0578063dc927faf146104c5576101ae565b80639dc092621461034a578063a1a11bf51461035f578063a78abc1614610374578063aa82dce114610389578063aad560631461039e578063ab51bb96146103b3576101ae565b806351e806721161012357806351e80672146102765780636d70f7ae1461028b5780636e47b482146102d257806375d47a0a146102e75780637e434d54146102fc5780639a99b4f014610311576101ae565b80630e2374a5146101b357806328087028146101e45780633a0b0eff146101f957806343756e5c14610220578063493279b11461023557806351b4dce314610261576101ae565b366101ae5734156101ac5760408051348152905133917f6c98249d85d88c3753a04a22230f595e4dc8d3dc86c34af35deeeedc861b89db919081900360200190a25b005b600080fd5b3480156101bf57600080fd5b506101c861052e565b604080516001600160a01b039092168252519081900360200190f35b3480156101f057600080fd5b506101c8610534565b34801561020557600080fd5b5061020e61053a565b60408051918252519081900360200190f35b34801561022c57600080fd5b506101c8610540565b34801561024157600080fd5b5061024a610546565b6040805161ffff9092168252519081900360200190f35b34801561026d57600080fd5b506101c861054b565b34801561028257600080fd5b506101c8610551565b34801561029757600080fd5b506102be600480360360208110156102ae57600080fd5b50356001600160a01b0316610557565b604080519115158252519081900360200190f35b3480156102de57600080fd5b506101c8610575565b3480156102f357600080fd5b506101c861057b565b34801561030857600080fd5b506101c8610581565b34801561031d57600080fd5b5061020e6004803603604081101561033457600080fd5b506001600160a01b038135169060200135610587565b34801561035657600080fd5b506101c8610732565b34801561036b57600080fd5b506101c8610738565b34801561038057600080fd5b506102be61073e565b34801561039557600080fd5b506101c8610747565b3480156103aa57600080fd5b506101c861074d565b3480156103bf57600080fd5b506103c8610753565b6040805163ffffffff9092168252519081900360200190f35b3480156103ed57600080fd5b506101ac6004803603604081101561040457600080fd5b81019060208101813564010000000081111561041f57600080fd5b82018360208201111561043157600080fd5b8035906020019184600183028401116401000000008311171561045357600080fd5b91939092909160208101903564010000000081111561047157600080fd5b82018360208201111561048357600080fd5b803590602001918460018302840111640100000000831117156104a557600080fd5b509092509050610758565b3480156104bc57600080fd5b506101c8610adb565b3480156104d157600080fd5b506101c8610ae1565b3480156104e657600080fd5b506101c8610ae7565b3480156104fb57600080fd5b506101c8610aed565b34801561051057600080fd5b5061020e610af3565b34801561052557600080fd5b506101c8610aff565b61200181565b61200581565b60015481565b61100181565b606181565b61200681565b61200081565b6001600160a01b031660009081526002602052604090205460ff1690565b61100581565b61100881565b61200381565b6000805460ff1661060457600260208190527fe57bda0a954a7c7381b17b2c763e646ba2c60f67292d287ba583603e2c1c41668054600160ff19918216811790925561100560009081527fe25235fc0de9d7165652bef0846fefda506174abb9a190f03d0f7bcc6146dbce80548316841790559282558254161790555b3360009081526002602052604090205460ff166106525760405162461bcd60e51b815260040180806020018281038252602b815260200180610bed602b913960400191505060405180910390fd5b60004783106106615747610663565b825b9050674563918244f400008111156106805750674563918244f400005b8015610701576040516001600160a01b0385169082156108fc029083906000818181858888f193505050501580156106bc573d6000803e3d6000fd5b506040805182815290516001600160a01b038616917ff8b71c64315fc33b2ead2adfa487955065152a8ac33d9d5193aafd7f45dc15a0919081900360200190a261072b565b6040517fe589651933c2457488cc0d8e0941518abf748e799435e4e396d9c4d0b2db2d4d90600090a15b9392505050565b61100781565b61100681565b60005460ff1681565b61200281565b61300081565b600081565b33611007146107985760405162461bcd60e51b815260040180806020018281038252602e815260200180610c47602e913960400191505060405180910390fd5b6107fa84848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505060408051808201909152600b81526a30b23227b832b930ba37b960a91b60208201529150610b059050565b156108d257606082828080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250508251929350506014909114905061087d5760405162461bcd60e51b815260040180806020018281038252602c815260200180610c75602c913960400191505060405180910390fd5b60148101516001600160a01b038116600081815260026020526040808220805460ff19166001179055517f9870d7fe5d112134c55844951dedf365363006d9c588db07c4c85af6322a06199190a25050610a49565b61093784848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505060408051808201909152600e81526d3232b632ba32a7b832b930ba37b960911b60208201529150610b059050565b15610a0c57606082828080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050825192935050601490911490506109ba5760405162461bcd60e51b815260040180806020018281038252602f815260200180610c18602f913960400191505060405180910390fd5b60148101516001600160a01b038116600081815260026020526040808220805460ff19169055517fb40992a19dba61ea600e87fce607102bf5908dc89076217b6ca6ae195224f7029190a25050610a49565b6040805162461bcd60e51b815260206004820152600d60248201526c756e6b6e6f776e20706172616d60981b604482015290519081900360640190fd5b7f6cdb0ac70ab7f2e2d035cca5be60d89906f2dede7648ddbd7402189c1eeed17a848484846040518080602001806020018381038352878782818152602001925080828437600083820152601f01601f191690910184810383528581526020019050858580828437600083820152604051601f909101601f19169092018290039850909650505050505050a150505050565b61100281565b61100381565b61200481565b61100081565b674563918244f4000081565b61100481565b6000816040516020018082805190602001908083835b60208310610b3a5780518252601f199092019160209182019101610b1b565b6001836020036101000a03801982511681845116808217855250505050505090500191505060405160208183030381529060405280519060200120836040516020018082805190602001908083835b60208310610ba85780518252601f199092019160209182019101610b89565b6001836020036101000a038019825116818451168082178552505050505050905001915050604051602081830303815290604052805190602001201490509291505056fe6f6e6c79206f70657261746f7220697320616c6c6f77656420746f2063616c6c20746865206d6574686f646c656e677468206f662076616c756520666f722064656c6574654f70657261746f722073686f756c64206265203230746865206d6573736167652073656e646572206d75737420626520676f7665726e616e636520636f6e74726163746c656e677468206f662076616c756520666f72206164644f70657261746f722073686f756c64206265203230a164736f6c6343000604000a \ No newline at end of file diff --git a/core/systemcontracts/pascal/chapel/TimelockContract b/core/systemcontracts/pascal/chapel/TimelockContract new file mode 100644 index 0000000000..38f18ba10d --- /dev/null +++ b/core/systemcontracts/pascal/chapel/TimelockContract @@ -0,0 +1 @@ +6080604052600436106101d15760003560e01c80638129fc1c116100f7578063b1c5f42711610095578063d547741f11610064578063d547741f14610584578063e38335e5146105a4578063f23a6e61146105b7578063f27a0c92146105e357600080fd5b8063b1c5f427146104eb578063bc197c811461050b578063c4d252f514610537578063d45c44351461055757600080fd5b806391d14854116100d157806391d1485414610474578063a217fddf14610494578063ac431751146104a9578063b08e51c0146104c957600080fd5b80638129fc1c1461041d5780638f2a0bb0146104325780638f61f4f51461045257600080fd5b8063248a9ca31161016f57806336568abe1161013e57806336568abe1461039d578063584b153e146103bd57806364d62353146103dd5780638065657f146103fd57600080fd5b8063248a9ca3146102fd5780632ab0f5291461032d5780632f2ff15d1461035d57806331d507501461037d57600080fd5b80630d3cf6fc116101ab5780630d3cf6fc14610264578063134008d31461028657806313bc9f2014610299578063150b7a02146102b957600080fd5b806301d5062a146101dd57806301ffc9a7146101ff57806307bd02651461023457600080fd5b366101d857005b600080fd5b3480156101e957600080fd5b506101fd6101f8366004611a53565b6105f8565b005b34801561020b57600080fd5b5061021f61021a366004611ac7565b6106bc565b60405190151581526020015b60405180910390f35b34801561024057600080fd5b5061025660008051602061253a83398151915281565b60405190815260200161022b565b34801561027057600080fd5b506102566000805160206124fa83398151915281565b6101fd610294366004611af1565b6106e7565b3480156102a557600080fd5b5061021f6102b4366004611b5c565b61078a565b3480156102c557600080fd5b506102e46102d4366004611c2a565b630a85bd0160e11b949350505050565b6040516001600160e01b0319909116815260200161022b565b34801561030957600080fd5b50610256610318366004611b5c565b60009081526065602052604090206001015490565b34801561033957600080fd5b5061021f610348366004611b5c565b60009081526097602052604090205460011490565b34801561036957600080fd5b506101fd610378366004611c91565b6107b0565b34801561038957600080fd5b5061021f610398366004611b5c565b6107da565b3480156103a957600080fd5b506101fd6103b8366004611c91565b6107f3565b3480156103c957600080fd5b5061021f6103d8366004611b5c565b610876565b3480156103e957600080fd5b506101fd6103f8366004611b5c565b61088d565b34801561040957600080fd5b50610256610418366004611af1565b610931565b34801561042957600080fd5b506101fd610970565b34801561043e57600080fd5b506101fd61044d366004611d01565b610b21565b34801561045e57600080fd5b5061025660008051602061251a83398151915281565b34801561048057600080fd5b5061021f61048f366004611c91565b610ca2565b3480156104a057600080fd5b50610256600081565b3480156104b557600080fd5b506101fd6104c4366004611db2565b610ccd565b3480156104d557600080fd5b5061025660008051602061255a83398151915281565b3480156104f757600080fd5b50610256610506366004611e1d565b610eb7565b34801561051757600080fd5b506102e4610526366004611f44565b63bc197c8160e01b95945050505050565b34801561054357600080fd5b506101fd610552366004611b5c565b610efc565b34801561056357600080fd5b50610256610572366004611b5c565b60009081526097602052604090205490565b34801561059057600080fd5b506101fd61059f366004611c91565b610fbf565b6101fd6105b2366004611e1d565b610fe4565b3480156105c357600080fd5b506102e46105d2366004611fed565b63f23a6e6160e01b95945050505050565b3480156105ef57600080fd5b50609854610256565b60008051602061251a8339815191526106108161115c565b6000610620898989898989610931565b905061062c8184611166565b6000817f4cf4410cc57040e44862ef0f45f3dd5a5e02db8eb8add648d4b0e236f1d07dca8b8b8b8b8b8a6040516106689695949392919061207a565b60405180910390a383156106b157807f20fda5fd27a1ea7bf5b9567f143ac5470bb059374a27e8f67cb44f946f6d0387856040516106a891815260200190565b60405180910390a25b505050505050505050565b60006001600160e01b03198216630271189760e51b14806106e157506106e182611255565b92915050565b60008051602061253a833981519152610701816000610ca2565b61070f5761070f813361128a565b600061071f888888888888610931565b905061072b81856112e3565b6107378888888861137e565b6000817fc2617efa69bab66782fa219543714338489c4e9e178271560a91b82c3f612b588a8a8a8a60405161076f94939291906120b7565b60405180910390a361078081611451565b5050505050505050565b6000818152609760205260408120546001811180156107a95750428111155b9392505050565b6000828152606560205260409020600101546107cb8161115c565b6107d5838361148a565b505050565b60008181526097602052604081205481905b1192915050565b6001600160a01b03811633146108685760405162461bcd60e51b815260206004820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201526e103937b632b9903337b91039b2b63360891b60648201526084015b60405180910390fd5b6108728282611510565b5050565b6000818152609760205260408120546001906107ec565b3330146108f05760405162461bcd60e51b815260206004820152602b60248201527f54696d656c6f636b436f6e74726f6c6c65723a2063616c6c6572206d7573742060448201526a62652074696d656c6f636b60a81b606482015260840161085f565b60985460408051918252602082018390527f11c24f4ead16507c69ac467fbd5e4eed5fb5c699626d2cc6d66421df253886d5910160405180910390a1609855565b600086868686868660405160200161094e9695949392919061207a565b6040516020818303038152906040528051906020012090509695505050505050565b600054610100900460ff16158080156109905750600054600160ff909116105b806109aa5750303b1580156109aa575060005460ff166001145b610a0d5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b606482015260840161085f565b6000805460ff191660011790558015610a30576000805461ff0019166101001790555b334114610a505760405163022d8c9560e31b815260040160405180910390fd5b3a15610a6f576040516383f1b1d360e01b815260040160405180910390fd5b6040805160018082528183019092526000916020808301908036833701905050905061200481600081518110610aa757610aa76120e9565b60200260200101906001600160a01b031690816001600160a01b031681525050610ad76154608283612004611577565b508015610b1e576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b50565b60008051602061251a833981519152610b398161115c565b888714610b585760405162461bcd60e51b815260040161085f906120ff565b888514610b775760405162461bcd60e51b815260040161085f906120ff565b6000610b898b8b8b8b8b8b8b8b610eb7565b9050610b958184611166565b60005b8a811015610c535780827f4cf4410cc57040e44862ef0f45f3dd5a5e02db8eb8add648d4b0e236f1d07dca8e8e85818110610bd557610bd56120e9565b9050602002016020810190610bea9190612142565b8d8d86818110610bfc57610bfc6120e9565b905060200201358c8c87818110610c1557610c156120e9565b9050602002810190610c27919061215d565b8c8b604051610c3b9695949392919061207a565b60405180910390a3610c4c816121b9565b9050610b98565b508315610c9557807f20fda5fd27a1ea7bf5b9567f143ac5470bb059374a27e8f67cb44f946f6d038785604051610c8c91815260200190565b60405180910390a25b5050505050505050505050565b60009182526065602090815260408084206001600160a01b0393909316845291905290205460ff1690565b3361100714610cf357604051630f22c43960e41b8152611007600482015260240161085f565b610d56604051806040016040528060088152602001676d696e44656c617960c01b81525085858080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092939250506115b09050565b15610e535760208114610d845783838383604051630a5a604160e01b815260040161085f94939291906121d2565b604080516020601f8401819004810282018101909252828152600091610dc59185858083850183828082843760009201919091525092939250506116099050565b9050801580610dd657506212750081115b15610dfc5784848484604051630a5a604160e01b815260040161085f94939291906121d2565b6040516364d6235360e01b81526004810182905230906364d6235390602401600060405180830381600087803b158015610e3557600080fd5b505af1158015610e49573d6000803e3d6000fd5b5050505050610e74565b838383836040516325ee20d560e21b815260040161085f94939291906121d2565b7ff1ce9b2cbf50eeb05769a29e2543fd350cab46894a7dd9978a12d534bb20e63384848484604051610ea994939291906121d2565b60405180910390a150505050565b60008888888888888888604051602001610ed898979695949392919061228a565b60405160208183030381529060405280519060200120905098975050505050505050565b60008051602061255a833981519152610f148161115c565b610f1d82610876565b610f835760405162461bcd60e51b815260206004820152603160248201527f54696d656c6f636b436f6e74726f6c6c65723a206f7065726174696f6e2063616044820152701b9b9bdd0818994818d85b98d95b1b1959607a1b606482015260840161085f565b6000828152609760205260408082208290555183917fbaa1eb22f2a492ba1a5fea61b8df4d27c6c8b5f3971e63bb58fa14ff72eedb7091a25050565b600082815260656020526040902060010154610fda8161115c565b6107d58383611510565b60008051602061253a833981519152610ffe816000610ca2565b61100c5761100c813361128a565b87861461102b5760405162461bcd60e51b815260040161085f906120ff565b87841461104a5760405162461bcd60e51b815260040161085f906120ff565b600061105c8a8a8a8a8a8a8a8a610eb7565b905061106881856112e3565b60005b898110156111465760008b8b83818110611087576110876120e9565b905060200201602081019061109c9190612142565b905060008a8a848181106110b2576110b26120e9565b9050602002013590503660008a8a868181106110d0576110d06120e9565b90506020028101906110e2919061215d565b915091506110f28484848461137e565b84867fc2617efa69bab66782fa219543714338489c4e9e178271560a91b82c3f612b588686868660405161112994939291906120b7565b60405180910390a3505050508061113f906121b9565b905061106b565b5061115081611451565b50505050505050505050565b610b1e813361128a565b61116f826107da565b156111d45760405162461bcd60e51b815260206004820152602f60248201527f54696d656c6f636b436f6e74726f6c6c65723a206f7065726174696f6e20616c60448201526e1c9958591e481cd8da19591d5b1959608a1b606482015260840161085f565b6098548110156112355760405162461bcd60e51b815260206004820152602660248201527f54696d656c6f636b436f6e74726f6c6c65723a20696e73756666696369656e746044820152652064656c617960d01b606482015260840161085f565b61123f814261232b565b6000928352609760205260409092209190915550565b60006001600160e01b03198216637965db0b60e01b14806106e157506301ffc9a760e01b6001600160e01b03198316146106e1565b6112948282610ca2565b610872576112a18161160e565b6112ac836020611620565b6040516020016112bd929190612362565b60408051601f198184030181529082905262461bcd60e51b825261085f916004016123d7565b6112ec8261078a565b6113085760405162461bcd60e51b815260040161085f9061240a565b80158061132357506000818152609760205260409020546001145b6108725760405162461bcd60e51b815260206004820152602660248201527f54696d656c6f636b436f6e74726f6c6c65723a206d697373696e6720646570656044820152656e64656e637960d01b606482015260840161085f565b6000846001600160a01b031684848460405161139b929190612454565b60006040518083038185875af1925050503d80600081146113d8576040519150601f19603f3d011682016040523d82523d6000602084013e6113dd565b606091505b505090508061144a5760405162461bcd60e51b815260206004820152603360248201527f54696d656c6f636b436f6e74726f6c6c65723a20756e6465726c79696e6720746044820152721c985b9cd858dd1a5bdb881c995d995c9d1959606a1b606482015260840161085f565b5050505050565b61145a8161078a565b6114765760405162461bcd60e51b815260040161085f9061240a565b600090815260976020526040902060019055565b6114948282610ca2565b6108725760008281526065602090815260408083206001600160a01b03851684529091529020805460ff191660011790556114cc3390565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b61151a8282610ca2565b156108725760008281526065602090815260408083206001600160a01b0385168085529252808320805460ff1916905551339285917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45050565b600054610100900460ff1661159e5760405162461bcd60e51b815260040161085f90612464565b6115aa848484846117bb565b50505050565b6000816040516020016115c391906124af565b60405160208183030381529060405280519060200120836040516020016115ea91906124af565b6040516020818303038152906040528051906020012014905092915050565b015190565b60606106e16001600160a01b03831660145b6060600061162f8360026124cb565b61163a90600261232b565b6001600160401b0381111561165157611651611b75565b6040519080825280601f01601f19166020018201604052801561167b576020820181803683370190505b509050600360fc1b81600081518110611696576116966120e9565b60200101906001600160f81b031916908160001a905350600f60fb1b816001815181106116c5576116c56120e9565b60200101906001600160f81b031916908160001a90535060006116e98460026124cb565b6116f490600161232b565b90505b600181111561176c576f181899199a1a9b1b9c1cb0b131b232b360811b85600f1660108110611728576117286120e9565b1a60f81b82828151811061173e5761173e6120e9565b60200101906001600160f81b031916908160001a90535060049490941c93611765816124e2565b90506116f7565b5083156107a95760405162461bcd60e51b815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e74604482015260640161085f565b600054610100900460ff166117e25760405162461bcd60e51b815260040161085f90612464565b6117fa6000805160206124fa8339815191528061199a565b61182060008051602061251a8339815191526000805160206124fa83398151915261199a565b61184660008051602061253a8339815191526000805160206124fa83398151915261199a565b61186c60008051602061255a8339815191526000805160206124fa83398151915261199a565b6118846000805160206124fa833981519152306119e5565b6001600160a01b038116156118ab576118ab6000805160206124fa833981519152826119e5565b60005b835181101561191c576118e860008051602061251a8339815191528583815181106118db576118db6120e9565b60200260200101516119e5565b61190c60008051602061255a8339815191528583815181106118db576118db6120e9565b611915816121b9565b90506118ae565b5060005b825181101561195d5761194d60008051602061253a8339815191528483815181106118db576118db6120e9565b611956816121b9565b9050611920565b5060988490556040805160008152602081018690527f11c24f4ead16507c69ac467fbd5e4eed5fb5c699626d2cc6d66421df253886d59101610ea9565b600082815260656020526040808220600101805490849055905190918391839186917fbd79b86ffe0ab8e8776151514217cd7cacd52c909f66475c3af44e129f0b00ff9190a4505050565b610872828261148a565b80356001600160a01b0381168114611a0657600080fd5b919050565b60008083601f840112611a1d57600080fd5b5081356001600160401b03811115611a3457600080fd5b602083019150836020828501011115611a4c57600080fd5b9250929050565b600080600080600080600060c0888a031215611a6e57600080fd5b611a77886119ef565b96506020880135955060408801356001600160401b03811115611a9957600080fd5b611aa58a828b01611a0b565b989b979a50986060810135976080820135975060a09091013595509350505050565b600060208284031215611ad957600080fd5b81356001600160e01b0319811681146107a957600080fd5b60008060008060008060a08789031215611b0a57600080fd5b611b13876119ef565b95506020870135945060408701356001600160401b03811115611b3557600080fd5b611b4189828a01611a0b565b979a9699509760608101359660809091013595509350505050565b600060208284031215611b6e57600080fd5b5035919050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b0381118282101715611bb357611bb3611b75565b604052919050565b600082601f830112611bcc57600080fd5b81356001600160401b03811115611be557611be5611b75565b611bf8601f8201601f1916602001611b8b565b818152846020838601011115611c0d57600080fd5b816020850160208301376000918101602001919091529392505050565b60008060008060808587031215611c4057600080fd5b611c49856119ef565b9350611c57602086016119ef565b92506040850135915060608501356001600160401b03811115611c7957600080fd5b611c8587828801611bbb565b91505092959194509250565b60008060408385031215611ca457600080fd5b82359150611cb4602084016119ef565b90509250929050565b60008083601f840112611ccf57600080fd5b5081356001600160401b03811115611ce657600080fd5b6020830191508360208260051b8501011115611a4c57600080fd5b600080600080600080600080600060c08a8c031215611d1f57600080fd5b89356001600160401b0380821115611d3657600080fd5b611d428d838e01611cbd565b909b50995060208c0135915080821115611d5b57600080fd5b611d678d838e01611cbd565b909950975060408c0135915080821115611d8057600080fd5b50611d8d8c828d01611cbd565b9a9d999c50979a969997986060880135976080810135975060a0013595509350505050565b60008060008060408587031215611dc857600080fd5b84356001600160401b0380821115611ddf57600080fd5b611deb88838901611a0b565b90965094506020870135915080821115611e0457600080fd5b50611e1187828801611a0b565b95989497509550505050565b60008060008060008060008060a0898b031215611e3957600080fd5b88356001600160401b0380821115611e5057600080fd5b611e5c8c838d01611cbd565b909a50985060208b0135915080821115611e7557600080fd5b611e818c838d01611cbd565b909850965060408b0135915080821115611e9a57600080fd5b50611ea78b828c01611cbd565b999c989b509699959896976060870135966080013595509350505050565b600082601f830112611ed657600080fd5b813560206001600160401b03821115611ef157611ef1611b75565b8160051b611f00828201611b8b565b9283528481018201928281019087851115611f1a57600080fd5b83870192505b84831015611f3957823582529183019190830190611f20565b979650505050505050565b600080600080600060a08688031215611f5c57600080fd5b611f65866119ef565b9450611f73602087016119ef565b935060408601356001600160401b0380821115611f8f57600080fd5b611f9b89838a01611ec5565b94506060880135915080821115611fb157600080fd5b611fbd89838a01611ec5565b93506080880135915080821115611fd357600080fd5b50611fe088828901611bbb565b9150509295509295909350565b600080600080600060a0868803121561200557600080fd5b61200e866119ef565b945061201c602087016119ef565b9350604086013592506060860135915060808601356001600160401b0381111561204557600080fd5b611fe088828901611bbb565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b60018060a01b038716815285602082015260a0604082015260006120a260a083018688612051565b60608301949094525060800152949350505050565b60018060a01b03851681528360208201526060604082015260006120df606083018486612051565b9695505050505050565b634e487b7160e01b600052603260045260246000fd5b60208082526023908201527f54696d656c6f636b436f6e74726f6c6c65723a206c656e677468206d69736d616040820152620e8c6d60eb1b606082015260800190565b60006020828403121561215457600080fd5b6107a9826119ef565b6000808335601e1984360301811261217457600080fd5b8301803591506001600160401b0382111561218e57600080fd5b602001915036819003821315611a4c57600080fd5b634e487b7160e01b600052601160045260246000fd5b6000600182016121cb576121cb6121a3565b5060010190565b6040815260006121e6604083018688612051565b8281036020840152611f39818587612051565b81835260006020808501808196508560051b810191508460005b8781101561227d5782840389528135601e1988360301811261223457600080fd5b870185810190356001600160401b0381111561224f57600080fd5b80360382131561225e57600080fd5b612269868284612051565b9a87019a9550505090840190600101612213565b5091979650505050505050565b60a0808252810188905260008960c08301825b8b8110156122cb576001600160a01b036122b6846119ef565b1682526020928301929091019060010161229d565b5083810360208501528881526001600160fb1b038911156122eb57600080fd5b8860051b9150818a6020830137018281036020908101604085015261231390820187896121f9565b60608401959095525050608001529695505050505050565b808201808211156106e1576106e16121a3565b60005b83811015612359578181015183820152602001612341565b50506000910152565b7f416363657373436f6e74726f6c3a206163636f756e742000000000000000000081526000835161239a81601785016020880161233e565b7001034b99036b4b9b9b4b733903937b6329607d1b60179184019182015283516123cb81602884016020880161233e565b01602801949350505050565b60208152600082518060208401526123f681604085016020870161233e565b601f01601f19169190910160400192915050565b6020808252602a908201527f54696d656c6f636b436f6e74726f6c6c65723a206f7065726174696f6e206973604082015269206e6f7420726561647960b01b606082015260800190565b8183823760009101908152919050565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b600082516124c181846020870161233e565b9190910192915050565b80820281158282048414176106e1576106e16121a3565b6000816124f1576124f16121a3565b50600019019056fe5f58e3a2316349923ce3780f8d587db2d72378aed66a8261c916544fa6846ca5b09aa5aeb3702cfd50b6b62bc4532604938f21248a27a1d5ca736082b6819cc1d8aa0f3194971a2a116679f7c2090f6939c8d4e01a2a8d7e41d55e5351469e63fd643c72710c63c0180259aba6b2d05451e3591a24e58b62239378085726f783a164736f6c6343000811000a \ No newline at end of file diff --git a/core/systemcontracts/pascal/chapel/TokenHubContract b/core/systemcontracts/pascal/chapel/TokenHubContract new file mode 100644 index 0000000000..172526db0c --- /dev/null +++ b/core/systemcontracts/pascal/chapel/TokenHubContract @@ -0,0 +1 @@ +6080604052600436106103395760003560e01c806393ab703f116101ab578063b9fd21e3116100f7578063df8079e911610095578063e8f35cea1161006f578063e8f35cea14610dd9578063f9a2bbc714610e0c578063fc1a598f14610e21578063fd6a687914610e5457610381565b8063df8079e914610d85578063e04c83a714610d9a578063e1c7392a14610dc457610381565b8063c81b1662116100d1578063c81b166214610d20578063c8509d811461092a578063cf41984414610d35578063dc927faf14610d7057610381565b8063b9fd21e314610ca5578063bbface1f14610cba578063bd46646114610ced57610381565b8063a78abc1611610164578063aad560631161013e578063aad5606314610b5e578063ab51bb9614610b73578063ac43175114610ba1578063b99328c514610c6c57610381565b8063a78abc1614610aed578063aa7415f514610b02578063aa82dce114610b4957610381565b806393ab703f14610a275780639509b98014610a3c5780639a854bbd14610a755780639a99b4f014610a8a5780639dc0926214610ac3578063a1a11bf514610ad857610381565b806351e8067211610285578063727be1f8116102235780637e434d54116101fd5780637e434d5414610915578063831d65d11461092a5780638525db03146109af5780638eff336c146109e857610381565b8063727be1f81461089757806375d47a0a146108c1578063799758b9146108d657610381565b8063613684751161025f57806361368475146107165780636e056520146107415780636e47b4821461086d57806371d308631461088257610381565b806351e80672146106c257806359b92789146106d75780635d499b1b1461070157610381565b80633d713223116102f257806343a368b9116102cc57806343a368b914610657578063493279b11461066c57806350432d321461069857806351b4dce3146106ad57610381565b80633d7132231461057c5780633fd8b02f1461062d57806343756e5c1461064257610381565b80630e2374a5146103865780631182b875146103b757806312234582146104b1578063149d14d9146104ec57806328087028146105135780632ae454831461052857610381565b3661038157341561037f576040805133815234602082015281517f6c98249d85d88c3753a04a22230f595e4dc8d3dc86c34af35deeeedc861b89db929181900390910190a15b005b600080fd5b34801561039257600080fd5b5061039b610e69565b604080516001600160a01b039092168252519081900360200190f35b3480156103c357600080fd5b5061043c600480360360408110156103da57600080fd5b60ff8235169190810190604081016020820135600160201b8111156103fe57600080fd5b82018360208201111561041057600080fd5b803590602001918460018302840111600160201b8311171561043157600080fd5b509092509050610e6f565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561047657818101518382015260200161045e565b50505050905090810190601f1680156104a35780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3480156104bd57600080fd5b5061037f600480360360408110156104d457600080fd5b506001600160a01b0381358116916020013516610eb7565b3480156104f857600080fd5b50610501610f31565b60408051918252519081900360200190f35b34801561051f57600080fd5b5061039b610f37565b34801561053457600080fd5b506105636004803603604081101561054b57600080fd5b506001600160a01b0381358116916020013516610f3d565b6040805192835260208301919091528051918290030190f35b34801561058857600080fd5b5061039b6004803603602081101561059f57600080fd5b810190602081018135600160201b8111156105b957600080fd5b8201836020820111156105cb57600080fd5b803590602001918460018302840111600160201b831117156105ec57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550610f61945050505050565b34801561063957600080fd5b50610501610f82565b34801561064e57600080fd5b5061039b610f88565b34801561066357600080fd5b50610501610f8e565b34801561067857600080fd5b50610681610f9a565b6040805161ffff9092168252519081900360200190f35b3480156106a457600080fd5b50610501610f9f565b3480156106b957600080fd5b5061039b610faa565b3480156106ce57600080fd5b5061039b610fb0565b3480156106e357600080fd5b5061039b600480360360208110156106fa57600080fd5b5035610fb6565b34801561070d57600080fd5b50610501610fd1565b34801561072257600080fd5b5061072b610fda565b6040805160ff9092168252519081900360200190f35b6108596004803603608081101561075757600080fd5b810190602081018135600160201b81111561077157600080fd5b82018360208201111561078357600080fd5b803590602001918460208302840111600160201b831117156107a457600080fd5b919390929091602081019035600160201b8111156107c157600080fd5b8201836020820111156107d357600080fd5b803590602001918460208302840111600160201b831117156107f457600080fd5b919390929091602081019035600160201b81111561081157600080fd5b82018360208201111561082357600080fd5b803590602001918460208302840111600160201b8311171561084457600080fd5b91935091503567ffffffffffffffff16610fdf565b604080519115158252519081900360200190f35b34801561087957600080fd5b5061039b611025565b34801561088e57600080fd5b5061050161102b565b3480156108a357600080fd5b50610859600480360360208110156108ba57600080fd5b5035611031565b3480156108cd57600080fd5b5061039b61106d565b3480156108e257600080fd5b5061037f600480360360608110156108f957600080fd5b508035906001600160a01b036020820135169060400135611073565b34801561092157600080fd5b5061039b611323565b34801561093657600080fd5b5061037f6004803603604081101561094d57600080fd5b60ff8235169190810190604081016020820135600160201b81111561097157600080fd5b82018360208201111561098357600080fd5b803590602001918460018302840111600160201b831117156109a457600080fd5b509092509050611329565b3480156109bb57600080fd5b5061037f600480360360408110156109d257600080fd5b50803590602001356001600160a01b031661136e565b3480156109f457600080fd5b5061037f60048036036060811015610a0b57600080fd5b508035906001600160a01b0360208201351690604001356114d7565b348015610a3357600080fd5b50610501611517565b348015610a4857600080fd5b5061037f60048036036040811015610a5f57600080fd5b506001600160a01b03813516906020013561151e565b348015610a8157600080fd5b506105016115e0565b348015610a9657600080fd5b5061050160048036036040811015610aad57600080fd5b506001600160a01b0381351690602001356115ec565b348015610acf57600080fd5b5061039b611672565b348015610ae457600080fd5b5061039b611678565b348015610af957600080fd5b5061085961167e565b61085960048036036080811015610b1857600080fd5b5080356001600160a01b03908116916020810135909116906040810135906060013567ffffffffffffffff16610fdf565b348015610b5557600080fd5b5061039b611687565b348015610b6a57600080fd5b5061039b61168d565b348015610b7f57600080fd5b50610b88611693565b6040805163ffffffff9092168252519081900360200190f35b348015610bad57600080fd5b5061037f60048036036040811015610bc457600080fd5b810190602081018135600160201b811115610bde57600080fd5b820183602082011115610bf057600080fd5b803590602001918460018302840111600160201b83111715610c1157600080fd5b919390929091602081019035600160201b811115610c2e57600080fd5b820183602082011115610c4057600080fd5b803590602001918460018302840111600160201b83111715610c6157600080fd5b509092509050611698565b348015610c7857600080fd5b5061037f60048036036040811015610c8f57600080fd5b50803590602001356001600160a01b03166114d7565b348015610cb157600080fd5b506105016116d8565b348015610cc657600080fd5b5061050160048036036020811015610cdd57600080fd5b50356001600160a01b03166116e2565b348015610cf957600080fd5b5061050160048036036020811015610d1057600080fd5b50356001600160a01b03166116f4565b348015610d2c57600080fd5b5061039b61170f565b348015610d4157600080fd5b5061037f60048036036040811015610d5857600080fd5b506001600160a01b0381358116916020013516611715565b348015610d7c57600080fd5b5061039b6117a8565b348015610d9157600080fd5b5061039b6117ae565b348015610da657600080fd5b5061085960048036036020811015610dbd57600080fd5b50356117b4565b348015610dd057600080fd5b5061037f61180c565b348015610de557600080fd5b5061050160048036036020811015610dfc57600080fd5b50356001600160a01b03166118ac565b348015610e1857600080fd5b5061039b6118be565b348015610e2d57600080fd5b5061043c60048036036020811015610e4457600080fd5b50356001600160a01b03166118c4565b348015610e6057600080fd5b5061039b6119eb565b61200181565b60005460609060ff16610eb7576040805162461bcd60e51b81526020600482015260196024820152600080516020611d9c833981519152604482015290519081900360640190fd5b3361200014610ef75760405162461bcd60e51b815260040180806020018281038252602f815260200180611d4a602f913960400191505060405180910390fd5b6040805162461bcd60e51b815260206004820152600a60248201526919195c1c9958d85d195960b21b604482015290519081900360640190fd5b60015490565b61200581565b60076020908152600092835260408084209091529082529020805460019091015482565b6020908101516000908152600490915260409020546001600160a01b031690565b60055481565b61100181565b670de0b6b3a764000081565b606181565b66071afd498d000081565b61200681565b61200081565b6000908152600460205260409020546001600160a01b031690565b6402540be40081565b600881565b6000805460ff16610ef7576040805162461bcd60e51b81526020600482015260196024820152600080516020611d9c833981519152604482015290519081900360640190fd5b61100581565b60015481565b6040805162461bcd60e51b815260206004820152600a60248201526919195c1c9958d85d195960b21b6044820152905160009181900360640190fd5b61100881565b60005460ff166110b8576040805162461bcd60e51b81526020600482015260196024820152600080516020611d9c833981519152604482015290519081900360640190fd5b33613000146110f85760405162461bcd60e51b815260040180806020018281038252602b815260200180611cd0602b913960400191505060405180910390fd5b677ce66c50e284000081111561113f5760405162461bcd60e51b8152600401808060200182810382526035815260200180611c9b6035913960400191505060405180910390fd5b60006221272160e91b84146112a9576000848152600460205260409020546001600160a01b0316806111b2576040805184815290516001600160a01b0386169187917fc16ee9013bf67c846d37735983debb0acc5b2d1419cb5931c9843ad4689505499181900360200190a3505061131e565b6001600160a01b0381166000908152600260205260409020546111d584826119f1565b604080516370a0823160e01b8152306004820152905191945084916001600160a01b038516916370a08231916024808301926020929190829003018186803b15801561122057600080fd5b505afa158015611234573d6000803e3d6000fd5b505050506040513d602081101561124a57600080fd5b50511015611296576040805162461bcd60e51b8152602060048201526014602482015273696e73756666696369656e742062616c616e636560601b604482015290519081900360640190fd5b6112a286838588611a3a565b505061131c565b6112be826402540be40063ffffffff611ad416565b90508047101561130c576040805162461bcd60e51b8152602060048201526014602482015273696e73756666696369656e742062616c616e636560601b604482015290519081900360640190fd5b600061131a85828487611a3a565b505b505b505050565b61200381565b60005460ff16610eb7576040805162461bcd60e51b81526020600482015260196024820152600080516020611d9c833981519152604482015290519081900360640190fd5b33613000146113ae5760405162461bcd60e51b815260040180806020018281038252602b815260200180611cd0602b913960400191505060405180910390fd5b60006221272160e91b831461141957506000828152600460205260409020546001600160a01b031680611419576040805162461bcd60e51b815260206004820152600e60248201526d1a5b9d985b1a59081cde5b589bdb60921b604482015290519081900360640190fd5b6001600160a01b0380821660009081526007602090815260408083209386168352929052208054611484576040805162461bcd60e51b815260206004820152601060248201526f1b9bc81b1bd8dad95908185b5bdd5b9d60821b604482015290519081900360640190fd5b8054600082556040805182815290516001600160a01b03808716929086169188917f8041a9a8704332594e2884f5e0f942281cdd7611854c365b4d0aa70b2295d6b6919081900360200190a45050505050565b3361100814610ef75760405162461bcd60e51b8152600401808060200182810382526023815260200180611d796023913960400191505060405180910390fd5b6201518081565b81806001600160a01b031663893d20e86040518163ffffffff1660e01b815260040160206040518083038186803b15801561155857600080fd5b505afa15801561156c573d6000803e3d6000fd5b505050506040513d602081101561158257600080fd5b50516001600160a01b03163314610ef7576040805162461bcd60e51b815260206004820152601860248201527f6e6f74206f776e6572206f6620424550323020746f6b656e0000000000000000604482015290519081900360640190fd5b677ce66c50e284000081565b6000805460ff16611632576040805162461bcd60e51b81526020600482015260196024820152600080516020611d9c833981519152604482015290519081900360640190fd5b3361100514610ef75760405162461bcd60e51b815260040180806020018281038252602f815260200180611c6c602f913960400191505060405180910390fd5b61100781565b61100681565b60005460ff1681565b61200281565b61300081565b600081565b3361100714610ef75760405162461bcd60e51b815260040180806020018281038252602e815260200180611d1c602e913960400191505060405180910390fd5b6221272160e91b81565b60026020526000908152604090205481565b6001600160a01b031660009081526003602052604090205490565b61100281565b60085460ff1660021415611761576040805162461bcd60e51b815260206004820152600e60248201526d4e6f2072652d656e7472616e637960901b604482015290519081900360640190fd5b6008805460ff191660021790556040805162461bcd60e51b815260206004820152600a60248201526919195c1c9958d85d195960b21b604482015290519081900360640190fd5b61100381565b61200481565b60003361200214610ef7576040805162461bcd60e51b815260206004820152601f60248201527f746865206d73672073656e646572206d757374206265207374616b6548756200604482015290519081900360640190fd5b60005460ff1615611864576040805162461bcd60e51b815260206004820152601960248201527f74686520636f6e747261637420616c726561647920696e697400000000000000604482015290519081900360640190fd5b66071afd498d000060019081556000808052600260205260127fac33ff75c19e70fe83507db0d683fd3465c996598dc972688b7ace676c89077b55805460ff19169091179055565b60066020526000908152604090205481565b61100081565b6001600160a01b03811660009081526003602090815260409182902054825182815280840190935260609290918391906020820181803683375050506020810183905290506000805b60208160ff16101561195457828160ff168151811061192857fe5b01602001516001600160f81b031916156119475781600101915061194c565b611954565b60010161190d565b5060608160ff166040519080825280601f01601f191660200182016040528015611985576020820181803683370190505b50905060005b8260ff168160ff1610156119e157838160ff16815181106119a857fe5b602001015160f81c60f81b828260ff16815181106119c257fe5b60200101906001600160f81b031916908160001a90535060010161198b565b5095945050505050565b61100481565b60006008821115611a1a57611a13836007198401600a0a63ffffffff611ad416565b9050611a34565b611a31836008849003600a0a63ffffffff611b2d16565b90505b92915050565b6001600160a01b0380841660009081526007602090815260408083209385168352929052208054611a71908463ffffffff611b6f16565b81554262015180016001820181905560408051858152602081019290925280516001600160a01b03808616939088169289927f446d1aa056e7b903901f49880e9f252762c1b81dc4301cf28db6dae526497eaa9281900390910190a45050505050565b600082611ae357506000611a34565b82820282848281611af057fe5b0414611a315760405162461bcd60e51b8152600401808060200182810382526021815260200180611cfb6021913960400191505060405180910390fd5b6000611a3183836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250611bc9565b600082820183811015611a31576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b60008183611c555760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b83811015611c1a578181015183820152602001611c02565b50505050905090810190601f168015611c475780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b506000838581611c6157fe5b049594505050505056fe746865206d6573736167652073656e646572206d75737420626520696e63656e746976697a6520636f6e7472616374616d6f756e7420697320746f6f206c617267652c20657863656564206d6178696d756d206265703220746f6b656e20616d6f756e74746865206d73672073656e646572206d75737420626520746f6b656e207265636f76657220706f7274616c536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f77746865206d6573736167652073656e646572206d75737420626520676f7665726e616e636520636f6e7472616374746865206d6573736167652073656e646572206d7573742062652063726f737320636861696e20636f6e7472616374746865206d73672073656e646572206d75737420626520746f6b656e4d616e6167657274686520636f6e7472616374206e6f7420696e69742079657400000000000000a164736f6c6343000604000a \ No newline at end of file diff --git a/core/systemcontracts/pascal/chapel/TokenManagerContract b/core/systemcontracts/pascal/chapel/TokenManagerContract new file mode 100644 index 0000000000..8b130adf40 --- /dev/null +++ b/core/systemcontracts/pascal/chapel/TokenManagerContract @@ -0,0 +1 @@ +6080604052600436106102045760003560e01c80637ec816dd11610118578063ac431751116100a0578063dc927faf1161006f578063dc927faf146108de578063df8079e9146108f3578063e605bca014610908578063f9a2bbc71461091d578063fd6a68791461093257610204565b8063ac4317511461077d578063c81b166214610848578063c8509d811461065f578063d117a1101461085d57610204565b8063a1a11bf5116100e7578063a1a11bf5146106fb578063a78abc1614610710578063aa82dce114610725578063aad560631461073a578063ab51bb961461074f57610204565b80637ec816dd1461064a578063831d65d11461065f57806394553a4e146103345780639dc09262146106e657610204565b8063493279b11161019b5780636e47b4821161016a5780636e47b482146105db57806372c4e086146105f057806375d47a0a1461062057806377d9dae8146105275780637e434d541461063557610204565b8063493279b1146104d157806351b4dce3146104fd57806351e80672146105125780636b3f13071461052757610204565b80632e02d776116101d75780632e02d7761461039357806337e6ecda146103c657806343756e5c146103f9578063445fcefe1461040e57610204565b80630e2374a5146102095780631182b8751461023a57806325c751b714610334578063280870281461037e575b600080fd5b34801561021557600080fd5b5061021e610947565b604080516001600160a01b039092168252519081900360200190f35b34801561024657600080fd5b506102bf6004803603604081101561025d57600080fd5b60ff8235169190810190604081016020820135600160201b81111561028157600080fd5b82018360208201111561029357600080fd5b803590602001918460018302840111600160201b831117156102b457600080fd5b50909250905061094d565b6040805160208082528351818301528351919283929083019185019080838360005b838110156102f95781810151838201526020016102e1565b50505050905090810190601f1680156103265780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b61036a6004803603604081101561034a57600080fd5b5080356001600160a01b0316906020013567ffffffffffffffff166109c9565b604080519115158252519081900360200190f35b34801561038a57600080fd5b5061021e610a05565b34801561039f57600080fd5b5061036a600480360360208110156103b657600080fd5b50356001600160a01b0316610a0b565b3480156103d257600080fd5b5061036a600480360360208110156103e957600080fd5b50356001600160a01b0316610a20565b34801561040557600080fd5b5061021e610a35565b34801561041a57600080fd5b506104bf6004803603602081101561043157600080fd5b810190602081018135600160201b81111561044b57600080fd5b82018360208201111561045d57600080fd5b803590602001918460018302840111600160201b8311171561047e57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550610a3b945050505050565b60408051918252519081900360200190f35b3480156104dd57600080fd5b506104e6610b9a565b6040805161ffff9092168252519081900360200190f35b34801561050957600080fd5b5061021e610b9f565b34801561051e57600080fd5b5061021e610ba5565b61036a6004803603604081101561053d57600080fd5b6001600160a01b038235169190810190604081016020820135600160201b81111561056757600080fd5b82018360208201111561057957600080fd5b803590602001918460018302840111600160201b8311171561059a57600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295506109c9945050505050565b3480156105e757600080fd5b5061021e610bab565b61036a6004803603602081101561060657600080fd5b810190602081018135600160201b81111561056757600080fd5b34801561062c57600080fd5b5061021e610bb1565b34801561064157600080fd5b5061021e610bb7565b34801561065657600080fd5b506104bf610bbd565b34801561066b57600080fd5b506106e46004803603604081101561068257600080fd5b60ff8235169190810190604081016020820135600160201b8111156106a657600080fd5b8201836020820111156106b857600080fd5b803590602001918460018302840111600160201b831117156106d957600080fd5b509092509050610bc3565b005b3480156106f257600080fd5b5061021e610c03565b34801561070757600080fd5b5061021e610c09565b34801561071c57600080fd5b5061036a610c0f565b34801561073157600080fd5b5061021e610c18565b34801561074657600080fd5b5061021e610c1e565b34801561075b57600080fd5b50610764610c24565b6040805163ffffffff9092168252519081900360200190f35b34801561078957600080fd5b506106e4600480360360408110156107a057600080fd5b810190602081018135600160201b8111156107ba57600080fd5b8201836020820111156107cc57600080fd5b803590602001918460018302840111600160201b831117156107ed57600080fd5b919390929091602081019035600160201b81111561080a57600080fd5b82018360208201111561081c57600080fd5b803590602001918460018302840111600160201b8311171561083d57600080fd5b509092509050610c29565b34801561085457600080fd5b5061021e610c69565b34801561086957600080fd5b506108876004803603602081101561088057600080fd5b5035610c6f565b6040805160ff988916815260208101979097526001600160a01b03909516868601526060860193909352608085019190915290931660a083015267ffffffffffffffff90921660c082015290519081900360e00190f35b3480156108ea57600080fd5b5061021e610cc7565b3480156108ff57600080fd5b5061021e610ccd565b34801561091457600080fd5b506104bf610cd3565b34801561092957600080fd5b5061021e610cd9565b34801561093e57600080fd5b5061021e610cdf565b61200181565b6060336120001461098f5760405162461bcd60e51b815260040180806020018281038252602f815260200180610e30602f913960400191505060405180910390fd5b6040805162461bcd60e51b815260206004820152600a60248201526919195c1c9958d85d195960b21b604482015290519081900360640190fd5b6040805162461bcd60e51b815260206004820152600a60248201526919195c1c9958d85d195960b21b6044820152905160009181900360640190fd5b61200581565b60036020526000908152604090205460ff1681565b60026020526000908152604090205460ff1681565b61100181565b6020810151600090610a4b610dc5565b50600081815260016020818152604092839020835160e081018552815460ff9081168252938201549281019290925260028101546001600160a01b031693820184905260038101546060830152600481015460808301526005015491821660a082015261010090910467ffffffffffffffff1660c082015290610ad357600092505050610b95565b600081604001516001600160a01b03166370a082316110046040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060206040518083038186803b158015610b3157600080fd5b505afa158015610b45573d6000803e3d6000fd5b505050506040513d6020811015610b5b57600080fd5b505160808301516060840151919250600091610b7c9163ffffffff610ce516565b9050610b8e818363ffffffff610ce516565b9450505050505b919050565b606181565b61200681565b61200081565b61100581565b61100881565b61200381565b60045481565b336120001461098f5760405162461bcd60e51b815260040180806020018281038252602f815260200180610e30602f913960400191505060405180910390fd5b61100781565b61100681565b60005460ff1681565b61200281565b61300081565b600081565b336110071461098f5760405162461bcd60e51b815260040180806020018281038252602e815260200180610e02602e913960400191505060405180910390fd5b61100281565b600160208190526000918252604090912080549181015460028201546003830154600484015460059094015460ff9586169593946001600160a01b0390931693919291811690610100900467ffffffffffffffff1687565b61100381565b61200481565b60055481565b61100081565b61100481565b6000610d2783836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250610d2e565b9392505050565b60008184841115610dbd5760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b83811015610d82578181015183820152602001610d6a565b50505050905090810190601f168015610daf5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b6040805160e081018252600080825260208201819052918101829052606081018290526080810182905260a0810182905260c08101919091529056fe746865206d6573736167652073656e646572206d75737420626520676f7665726e616e636520636f6e7472616374746865206d6573736167652073656e646572206d7573742062652063726f737320636861696e20636f6e7472616374a164736f6c6343000604000a \ No newline at end of file diff --git a/core/systemcontracts/pascal/chapel/TokenRecoverPortalContract b/core/systemcontracts/pascal/chapel/TokenRecoverPortalContract new file mode 100644 index 0000000000..2dd2aa42ca --- /dev/null +++ b/core/systemcontracts/pascal/chapel/TokenRecoverPortalContract @@ -0,0 +1 @@ +608060405234801561001057600080fd5b50600436106100f55760003560e01c80638129fc1c11610097578063b187bd2611610066578063b187bd26146101fc578063bfb5a6a114610207578063e33f8d321461021a578063e842426a1461023d57600080fd5b80638129fc1c146101cc5780638456cb59146101d45780639fcb5012146101dc578063ac431751146101e957600080fd5b80634838d165116100d35780634838d165146101335780634a49ac4c14610166578063572c99801461017957806374be21501461018c57600080fd5b8063046f7da2146100fa5780632eb4a7ab14610104578063417c73a714610120575b600080fd5b610102610268565b005b61010d60685481565b6040519081526020015b60405180910390f35b61010261012e366004611670565b6102f0565b610156610141366004611670565b60346020526000908152604090205460ff1681565b6040519015158152602001610117565b610102610174366004611670565b61036c565b61010261018736600461168b565b6103e5565b6101bf6040518060400160405280601481526020017342696e616e63652d436861696e2d47616e67657360601b81525081565b6040516101179190611707565b61010261047b565b6101026105ed565b6069546101569060ff1681565b6101026101f7366004611763565b610679565b60335460ff16610156565b610102610215366004611814565b610a98565b6101566102283660046118ee565b6000908152606a602052604090205460ff1690565b606754610250906001600160a01b031681565b6040516001600160a01b039091168152602001610117565b60335461010090046001600160a01b03163314610298576040516306fbb1e360e01b815260040160405180910390fd5b60335460ff166102bb57604051636cd6020160e01b815260040160405180910390fd5b6033805460ff191690556040517f62451d457bc659158be6e6247f56ec1df424a5c7597f71c20c2bc44e0965c8f990600090a1565b60335461010090046001600160a01b03163314610320576040516306fbb1e360e01b815260040160405180910390fd5b6001600160a01b038116600081815260346020526040808220805460ff19166001179055517f7fd26be6fc92aff63f1f4409b2b2ddeb272a888031d7f55ec830485ec61941869190a250565b60335461010090046001600160a01b0316331461039c576040516306fbb1e360e01b815260040160405180910390fd5b6001600160a01b038116600081815260346020526040808220805460ff19169055517fe0db3499b7fdc3da4cddff5f45d694549c19835e7f719fb5606d3ad1a5de40119190a250565b60335461010090046001600160a01b03163314610415576040516306fbb1e360e01b815260040160405180910390fd5b604051638525db0360e01b8152600481018390526001600160a01b038216602482015261100490638525db0390604401600060405180830381600087803b15801561045f57600080fd5b505af1158015610473573d6000803e3d6000fd5b505050505050565b600054610100900460ff161580801561049b5750600054600160ff909116105b806104b55750303b1580156104b5575060005460ff166001145b61051d5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084015b60405180910390fd5b6000805460ff191660011790558015610540576000805461ff0019166101001790555b3341146105605760405163022d8c9560e31b815260040160405180910390fd5b3a1561057f576040516383f1b1d360e01b815260040160405180910390fd5b610587610df8565b6105a47330151da466ec8ab345bef3d6983023e050fb0673610e25565b80156105ea576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b50565b60335461010090046001600160a01b0316331461061d576040516306fbb1e360e01b815260040160405180910390fd5b60335460ff161561064157604051631785c68160e01b815260040160405180910390fd5b6033805460ff191660011790556040517f9e87fac88ff661f02d44f95383c817fece4bce600a3dab7a54406878b965e75290600090a1565b336110071461069f57604051630f22c43960e41b81526110076004820152602401610514565b6107096040518060400160405280600f81526020016e617070726f76616c4164647265737360881b81525085858080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509293925050610e749050565b156107d357601481146107375783838383604051630a5a604160e01b81526004016105149493929190611930565b600061077d601484848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509293925050610ece9050565b90506001600160a01b0381166107ae5784848484604051630a5a604160e01b81526004016105149493929190611930565b606780546001600160a01b0319166001600160a01b0392909216919091179055610a55565b6108386040518060400160405280600a8152602001691b595c9adb19549bdbdd60b21b81525085858080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509293925050610e749050565b156109085760695460ff1615610861576040516379b3306f60e11b815260040160405180910390fd5b6020811461088a5783838383604051630a5a604160e01b81526004016105149493929190611930565b604080516020601f84018190048102820181019092528281526000916108cb918585808385018382808284376000920191909152509293925050610ece9050565b9050806108f35784848484604051630a5a604160e01b81526004016105149493929190611930565b6068556069805460ff19166001179055610a55565b6109806040518060400160405280601b81526020017f746f6b656e5265636f766572506f7274616c50726f746563746f72000000000081525085858080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509293925050610e749050565b15610a3457601481146109ae5783838383604051630a5a604160e01b81526004016105149493929190611930565b60006109f4601484848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509293925050610ece9050565b90506001600160a01b038116610a255784848484604051630a5a604160e01b81526004016105149493929190611930565b610a2e81610ed3565b50610a55565b838383836040516325ee20d560e21b81526004016105149493929190611930565b7ff1ce9b2cbf50eeb05769a29e2543fd350cab46894a7dd9978a12d534bb20e63384848484604051610a8a9493929190611930565b60405180910390a150505050565b60695460ff16610abb5760405163678f619760e11b815260040160405180910390fd5b606854610adb5760405163678f619760e11b815260040160405180910390fd5b6067546001600160a01b0316610b0457604051631a1b977b60e31b815260040160405180910390fd5b60335460ff1615610b2857604051631785c68160e01b815260040160405180910390fd5b610b30610f3a565b6000610bbe89898080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050604080516020601f8d018190048102820181019092528b815292508b91508a9081908401838280828437600081840152601f19601f82011690508083019250505050505050610bb98e8e33610f93565b6110b4565b90506000818c8c604051602001610bd793929190611962565b604051602081830303815290604052805190602001209050610c08816000908152606a602052604090205460ff1690565b15610c2557604051623e493160e81b815260040160405180910390fd5b610ccd3389898080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050604080516020601f8d018190048102820181019092528b815292508b91508a908190840183828082843760009201919091525050604080516020808c0282810182019093528b82528994509092508b918b9182919085019084908082843760009201919091525061118c92505050565b610d0e848480806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250506068549150849050611297565b610d2b576040516309bde33960e01b815260040160405180910390fd5b6000818152606a602052604090819020805460ff191660011790555163799758b960e01b8152600481018d9052336024820152604481018c90526110049063799758b990606401600060405180830381600087803b158015610d8c57600080fd5b505af1158015610da0573d6000803e3d6000fd5b505050507f39cc0b7297a0ef9102d75ebc4919ffec0347d50008c2b865eda4125d5812cb64828d338e604051610dd99493929190611989565b60405180910390a15050610dec60018055565b50505050505050505050565b600054610100900460ff16610e1f5760405162461bcd60e51b8152600401610514906119c1565b60018055565b600054610100900460ff16610e4c5760405162461bcd60e51b8152600401610514906119c1565b603380546001600160a01b0390921661010002610100600160a81b0319909216919091179055565b600081604051602001610e879190611a0c565b6040516020818303038152906040528051906020012083604051602001610eae9190611a0c565b604051602081830303815290604052805190602001201490505b92915050565b015190565b6033546040516001600160a01b0380841692610100900416907f44fc1b38a4abaa91ebd1b628a5b259a698f86238c8217d68f516e87769c60c0b90600090a3603380546001600160a01b0390921661010002610100600160a81b0319909216919091179055565b600260015403610f8c5760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610514565b6002600155565b600060026040518060400160405280601481526020017342696e616e63652d436861696e2d47616e67657360601b815250610ff085604051602001610fda91815260200190565b60405160208183030381529060405260006112ad565b6040516bffffffffffffffffffffffff19606087901b1660208201526110299060340160405160208183030381529060405260016112ad565b61103f88604051602001610fda91815260200190565b6040516020016110529493929190611a28565b60408051601f198184030181529082905261106c91611a0c565b602060405180830381855afa158015611089573d6000803e3d6000fd5b5050506040513d601f19601f820116820180604052508101906110ac9190611b57565b949350505050565b606083516021146110d857604051638152ea1b60e01b815260040160405180910390fd5b82516040146110fa57604051635e4bd79760e11b815260040160405180910390fd5b604080516020808252818301909252600091602082018180368337019050509050826020820152600085858360405160200161113893929190611b86565b60408051808303601f190181526014808452838301909252925060009190602082018180368337019050509050815160146020830182602086016069600019fa61118157600080fd5b509695505050505050565b606060005b82518110156111ea57818382815181106111ad576111ad611bc9565b60200260200101516040516020016111c6929190611bdf565b604051602081830303815290604052915080806111e290611c17565b915050611191565b5060006040518060400160405280601481526020017342696e616e63652d436861696e2d47616e67657360601b8152508787866068548660405160200161123696959493929190611c30565b60408051601f1981840301815291905280516020909101206067549091506001600160a01b0316611267868361147f565b6001600160a01b03161461128e576040516356b00a4f60e11b815260040160405180910390fd5b50505050505050565b6000826112a48584611519565b14949350505050565b60606000835160026112bf9190611ca1565b67ffffffffffffffff8111156112d7576112d7611b70565b6040519080825280601f01601f191660200182016040528015611301576020820181803683370190505b5060408051808201909152601081526f181899199a1a9b1b9c1cb0b131b232b360811b602082015290915060005b85518110156114475781825187838151811061134d5761134d611bc9565b016020015161135f919060f81c611cce565b8151811061136f5761136f611bc9565b01602001516001600160f81b0319168361138a836002611ca1565b8151811061139a5761139a611bc9565b60200101906001600160f81b031916908160001a9053508182518783815181106113c6576113c6611bc9565b01602001516113d8919060f81c611ce2565b815181106113e8576113e8611bc9565b01602001516001600160f81b03191683611403836002611ca1565b61140e906001611cf6565b8151811061141e5761141e611bc9565b60200101906001600160f81b031916908160001a9053508061143f81611c17565b91505061132f565b508315611477578160405160200161145f9190611d09565b60405160208183030381529060405292505050610ec8565b509392505050565b600082516041146114a3576040516356b00a4f60e11b815260040160405180910390fd5b60208301516040840151606085015160001a601b8110156114cc576114c9601b82611d33565b90505b601b8160ff1610806114e15750601c8160ff16115b156114ff576040516356b00a4f60e11b815260040160405180910390fd5b600061150d8683868661155e565b50979650505050505050565b600081815b84518110156114775761154a8286838151811061153d5761153d611bc9565b6020026020010151611622565b91508061155681611c17565b91505061151e565b6000807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a08311156115955750600090506003611619565b6040805160008082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa1580156115e9573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b03811661161257600060019250925050611619565b9150600090505b94509492505050565b600081831061163e57600082815260208490526040902061164d565b60008381526020839052604090205b9392505050565b80356001600160a01b038116811461166b57600080fd5b919050565b60006020828403121561168257600080fd5b61164d82611654565b6000806040838503121561169e57600080fd5b823591506116ae60208401611654565b90509250929050565b60005b838110156116d25781810151838201526020016116ba565b50506000910152565b600081518084526116f38160208601602086016116b7565b601f01601f19169290920160200192915050565b60208152600061164d60208301846116db565b60008083601f84011261172c57600080fd5b50813567ffffffffffffffff81111561174457600080fd5b60208301915083602082850101111561175c57600080fd5b9250929050565b6000806000806040858703121561177957600080fd5b843567ffffffffffffffff8082111561179157600080fd5b61179d8883890161171a565b909650945060208701359150808211156117b657600080fd5b506117c38782880161171a565b95989497509550505050565b60008083601f8401126117e157600080fd5b50813567ffffffffffffffff8111156117f957600080fd5b6020830191508360208260051b850101111561175c57600080fd5b60008060008060008060008060008060c08b8d03121561183357600080fd5b8a35995060208b0135985060408b013567ffffffffffffffff8082111561185957600080fd5b6118658e838f0161171a565b909a50985060608d013591508082111561187e57600080fd5b61188a8e838f0161171a565b909850965060808d01359150808211156118a357600080fd5b6118af8e838f0161171a565b909650945060a08d01359150808211156118c857600080fd5b506118d58d828e016117cf565b915080935050809150509295989b9194979a5092959850565b60006020828403121561190057600080fd5b5035919050565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b604081526000611944604083018688611907565b8281036020840152611957818587611907565b979650505050505050565b600084516119748184602089016116b7565b91909101928352506020820152604001919050565b60808152600061199c60808301876116db565b6020830195909552506001600160a01b03929092166040830152606090910152919050565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b60008251611a1e8184602087016116b7565b9190910192915050565b7f7b226163636f756e745f6e756d626572223a2230222c22636861696e5f6964228152611d1160f11b602082015260008551611a6b816022850160208a016116b7565b7f222c2264617461223a6e756c6c2c226d656d6f223a22222c226d736773223a5b6022918401918201526a3d9130b6b7bab73a111d1160a91b60428201528551611abc81604d840160208a016116b7565b6e1116113932b1b4b834b2b73a111d1160891b604d92909101918201528451611aec81605c8401602089016116b7565b711116113a37b5b2b72fb9bcb6b137b6111d1160711b605c92909101918201528351611b1f81606e8401602088016116b7565b7f227d5d2c2273657175656e6365223a2230222c22736f75726365223a2230227d606e9290910191820152608e019695505050505050565b600060208284031215611b6957600080fd5b5051919050565b634e487b7160e01b600052604160045260246000fd5b60008451611b988184602089016116b7565b845190830190611bac8183602089016116b7565b8451910190611bbf8183602088016116b7565b0195945050505050565b634e487b7160e01b600052603260045260246000fd5b60008351611bf18184602088016116b7565b9190910191825250602001919050565b634e487b7160e01b600052601160045260246000fd5b600060018201611c2957611c29611c01565b5060010190565b60008751611c42818460208c016116b7565b606088901b6bffffffffffffffffffffffff19169083019081528651611c6f816014840160208b016116b7565b0160148101869052603481018590528351611c918160548401602088016116b7565b0160540198975050505050505050565b8082028115828204841417610ec857610ec8611c01565b634e487b7160e01b600052601260045260246000fd5b600082611cdd57611cdd611cb8565b500490565b600082611cf157611cf1611cb8565b500690565b80820180821115610ec857610ec8611c01565b61060f60f31b815260008251611d268160028501602087016116b7565b9190910160020192915050565b60ff8181168382160190811115610ec857610ec8611c0156fea164736f6c6343000811000a \ No newline at end of file diff --git a/core/systemcontracts/pascal/chapel/ValidatorContract b/core/systemcontracts/pascal/chapel/ValidatorContract new file mode 100644 index 0000000000..683ccf1881 --- /dev/null +++ b/core/systemcontracts/pascal/chapel/ValidatorContract @@ -0,0 +1 @@ +6080604052600436106104565760003560e01c80638c5d749d1161023f578063c81b166211610139578063e1c7392a116100b6578063f92eb86b1161007a578063f92eb86b14610b7f578063f9a2bbc714610b94578063fccc281314610ba9578063fd4ad81f14610bbe578063fd6a687914610bed5761045d565b8063e1c7392a14610b02578063e40716a114610b17578063ea321e4914610b2c578063eb57e20214610b4c578063f340fa0114610b6c5761045d565b8063d68fb56a116100fd578063d68fb56a14610a99578063daacdb6614610aae578063dc927faf14610ac3578063df8079e914610ad8578063e086c7b114610aed5761045d565b8063c81b166214610a3a578063c8509d81146107fc578063cb75a59214610a4f578063ce910b0c14610a64578063d58918ae14610a845761045d565b8063aa82dce1116101c7578063aef198a91161018b578063aef198a9146109c4578063b7ab4db5146109d9578063b8cf4ef1146109fb578063c466689d14610a10578063c6d3394514610a255761045d565b8063aa82dce114610938578063aad560631461094d578063ab51bb9614610962578063ac43175114610984578063ad3c9da6146109a45761045d565b80639fe0f8161161020e5780639fe0f816146108cf578063a0dc2758146108e4578063a1a11bf5146108f9578063a5422d5c1461090e578063a78abc16146109235761045d565b80638c5d749d146108705780638d19a410146108855780639369d7de146108a55780639dc09262146108ba5761045d565b80635192c82c1161035057806375d47a0a116102d8578063831d65d11161029c578063831d65d1146107fc578063862498821461081c57806388b32f11146108315780638a7beb01146108465780638b5ad0c91461085b5761045d565b806375d47a0a1461079357806378dfed4a146107a85780637a84ca2a146107bd5780637e434d54146107d2578063820dcaa8146107e75761045d565b8063565c56b31161031f578063565c56b3146106f757806360eba4fe1461071757806362b72cf5146107375780636969a25c1461074c5780636e47b4821461077e5761045d565b80635192c82c1461069857806351b4dce3146106ad57806351e80672146106c257806355614fcc146106d75761045d565b80632a0ffb6e116103de5780633b071dcc116103a25780633b071dcc1461061457806343756e5c1461063757806345cf9daf1461064c578063493279b1146106615780634df6e0c3146106835761045d565b80632a0ffb6e14610574578063300c356714610594578063321d398a146105b45780633365af3a146105d457806335409f7f146105f45761045d565b8063152ad3b811610425578063152ad3b8146104f35780631bd14ed8146105155780631e4c15241461052a5780631ff180691461054a578063280870281461055f5761045d565b806304c4fec61461046257806307a56847146104795780630e2374a5146104a45780631182b875146104c65761045d565b3661045d57005b600080fd5b34801561046e57600080fd5b50610477610c02565b005b34801561048557600080fd5b5061048e610c76565b60405161049b9190616d4d565b60405180910390f35b3480156104b057600080fd5b506104b9610c7c565b60405161049b9190616103565b3480156104d257600080fd5b506104e66104e1366004615fe9565b610c82565b60405161049b9190616223565b3480156104ff57600080fd5b50610508610d9e565b60405161049b9190616218565b34801561052157600080fd5b5061048e610da7565b34801561053657600080fd5b50610477610545366004615e17565b610dad565b34801561055657600080fd5b5061048e6110e1565b34801561056b57600080fd5b506104b96110e7565b34801561058057600080fd5b5061047761058f366004615d77565b6110ed565b3480156105a057600080fd5b506104776105af366004615daf565b61110e565b3480156105c057600080fd5b506105086105cf366004615f96565b611457565b3480156105e057600080fd5b506105086105ef366004615f96565b611526565b34801561060057600080fd5b5061047761060f366004615d77565b6115d7565b34801561062057600080fd5b5061062961173c565b60405161049b9291906161a8565b34801561064357600080fd5b506104b9611a18565b34801561065857600080fd5b5061048e611a1e565b34801561066d57600080fd5b50610676611a24565b60405161049b9190616d3e565b34801561068f57600080fd5b50610629611a29565b3480156106a457600080fd5b5061048e611bb5565b3480156106b957600080fd5b506104b9611bbb565b3480156106ce57600080fd5b506104b9611bc1565b3480156106e357600080fd5b506105086106f2366004615d77565b611bc7565b34801561070357600080fd5b5061048e610712366004615d77565b611c03565b34801561072357600080fd5b506104e6610732366004615f96565b611c54565b34801561074357600080fd5b5061048e611cfa565b34801561075857600080fd5b5061076c610767366004615f96565b611d00565b60405161049b96959493929190616130565b34801561078a57600080fd5b506104b9611d64565b34801561079f57600080fd5b506104b9611d6a565b3480156107b457600080fd5b5061048e611d70565b3480156107c957600080fd5b5061048e611d76565b3480156107de57600080fd5b506104b9611d7c565b3480156107f357600080fd5b5061048e611d82565b34801561080857600080fd5b50610477610817366004615fe9565b611d88565b34801561082857600080fd5b5061048e611da9565b34801561083d57600080fd5b5061048e611daf565b34801561085257600080fd5b50610508611db5565b34801561086757600080fd5b5061048e611dbe565b34801561087c57600080fd5b5061048e611dc4565b34801561089157600080fd5b5061048e6108a0366004615d77565b611de1565b3480156108b157600080fd5b50610477611e21565b3480156108c657600080fd5b506104b9611f35565b3480156108db57600080fd5b5061048e611f3b565b3480156108f057600080fd5b5061048e611f40565b34801561090557600080fd5b506104b9611f45565b34801561091a57600080fd5b506104e6611f4b565b34801561092f57600080fd5b50610508611f6a565b34801561094457600080fd5b506104b9611f73565b34801561095957600080fd5b506104b9611f79565b34801561096e57600080fd5b50610977611f7f565b60405161049b9190616d80565b34801561099057600080fd5b5061047761099f366004615f3a565b611f84565b3480156109b057600080fd5b5061048e6109bf366004615d77565b612976565b3480156109d057600080fd5b5061048e612988565b3480156109e557600080fd5b506109ee612995565b60405161049b9190616195565b348015610a0757600080fd5b5061048e612a80565b348015610a1c57600080fd5b5061048e612a85565b348015610a3157600080fd5b5061048e612a8b565b348015610a4657600080fd5b506104b9612a90565b348015610a5b57600080fd5b5061048e612a96565b348015610a7057600080fd5b506104e6610a7f366004615f96565b612a9c565b348015610a9057600080fd5b5061048e612aa9565b348015610aa557600080fd5b5061048e612aaf565b348015610aba57600080fd5b5061048e612aee565b348015610acf57600080fd5b506104b9612af4565b348015610ae457600080fd5b506104b9612afa565b348015610af957600080fd5b5061048e612b00565b348015610b0e57600080fd5b50610477612b05565b348015610b2357600080fd5b5061048e612cae565b348015610b3857600080fd5b50610508610b47366004615efb565b612cb4565b348015610b5857600080fd5b50610477610b67366004615d77565b612e3a565b610477610b7a366004615d77565b612f42565b348015610b8b57600080fd5b5061048e6132f8565b348015610ba057600080fd5b506104b96132fe565b348015610bb557600080fd5b506104b9613304565b348015610bca57600080fd5b50610bde610bd9366004615f96565b61330a565b60405161049b93929190616d56565b348015610bf957600080fd5b506104b96133cc565b6000610c0d33611de1565b9050600b8181548110610c1c57fe5b600091825260209091206001601690920201015460ff16610c585760405162461bcd60e51b8152600401610c4f906169f5565b60405180910390fd5b6000610c62612aaf565b9050610c7133838360016133d2565b505050565b60095481565b61200181565b60005460609060ff16610ca75760405162461bcd60e51b8152600401610c4f906163ab565b3361200014610cc85760405162461bcd60e51b8152600401610c4f90616b56565b600b54610d8657610cd7615923565b60015460005b81811015610d8257600b80546001810182556000919091528351600080516020616fc383398151915260169092029182019081556020808601516000805160206170038339815191528401805460ff1916911515919091179055604086015180518794610d5e93600080516020616fe3833981519152909101920190615952565b506060820151610d7490600383019060136159cc565b505050806001019050610cdd565b5050505b60405162461bcd60e51b8152600401610c4f9061665a565b60075460ff1681565b600f5481565b334114610dcc5760405162461bcd60e51b8152600401610c4f90616ba5565b3a15610dea5760405162461bcd60e51b8152600401610c4f90616934565b8251604080518281526020808402820101909152606090828015610e2857816020015b610e156159f9565b815260200190600190039081610e0d5790505b50905060005b82811015610ed2576040518060c00160405280878381518110610e4d57fe5b60200260200101516001600160a01b0316815260200160006001600160a01b0316815260200160006001600160a01b03168152602001868381518110610e8f57fe5b60200260200101516001600160401b031681526020016000151581526020016000815250828281518110610ebf57fe5b6020908102919091010152600101610e2e565b50606080610ee083866135c4565b9150915060005b600154811015610fd657600060018281548110610f0057fe5b906000526020600020906004020160030154905080600014610fcd57600060018381548110610f2b57fe5b9060005260206000209060040201600301819055506120026001600160a01b031663092193ab8260018581548110610f5f57fe5b60009182526020909120600491820201546040516001600160e01b031960e086901b168152610f9a926001600160a01b039092169101616103565b6000604051808303818588803b158015610fb357600080fd5b505af1158015610fc7573d6000803e3d6000fd5b50505050505b50600101610ee7565b504715611044577f6ecc855f9440a9282c90913bbc91619fd44f5ec0b462af28d127b116f130aa4d4760405161100c9190616d4d565b60405180910390a1604051611002904780156108fc02916000818181858888f19350505050158015611042573d6000803e3d6000fd5b505b600060035581511561105a5761105a8282613aae565b6110016001600160a01b031663fc4333cd6040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561109757600080fd5b505af11580156110ab573d6000803e3d6000fd5b50506040517fedd8d7296956dd970ab4de3f2fc03be2b0ffc615d20cd4c72c6e44f928630ebf925060009150a150505050505050565b60035481565b61200581565b3361200214610d865760405162461bcd60e51b8152600401610c4f90616d07565b33411461112d5760405162461bcd60e51b8152600401610c4f90616ba5565b601054431161114e5760405162461bcd60e51b8152600401610c4f90616584565b3a1561116c5760405162461bcd60e51b8152600401610c4f90616934565b60005460ff1661118e5760405162461bcd60e51b8152600401610c4f906163ab565b60006110023168056bc75e2d631000008111156111c5576111be8168056bc75e2d6310000063ffffffff61429d16565b91506111cc565b505061144d565b6040516309a99b4f60e41b815261100290639a99b4f0906111f39030908690600401616117565b602060405180830381600087803b15801561120d57600080fd5b505af1158015611221573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112459190615fae565b91508161125357505061144d565b6000805b848110156112815785858281811061126b57fe5b9050602002013582019150806001019050611257565b508061128f5750505061144d565b6000806000805b8981101561144557848989838181106112ab57fe5b905060200201358802816112bb57fe5b0493508a8a828181106112ca57fe5b90506020020160208101906112df9190615d77565b6001600160a01b038116600090815260046020526040902054909350915081156113fb57600060018084038154811061131457fe5b9060005260206000209060040201905080600201601c9054906101000a900460ff161561138157836001600160a01b03167fb9c75cbbfde137c4281689580799ef5f52144e78858f776a5979b2b212137d85866040516113749190616d4d565b60405180910390a26113f5565b600354611394908663ffffffff6142df16565b60039081558101546113ac908663ffffffff6142df16565b60038201556040516001600160a01b038516907fcb0aad6cf9cd03bdf6137e359f541c42f38b39f007cae8e89e88aa7d8c6617b2906113ec908890616d4d565b60405180910390a25b5061143d565b826001600160a01b03167fb9c75cbbfde137c4281689580799ef5f52144e78858f776a5979b2b212137d85856040516114349190616d4d565b60405180910390a25b600101611296565b505050505050505b5050436010555050565b600154600090821061146b57506000611521565b60006001600160a01b03166001838154811061148357fe5b60009182526020909120600490910201546001600160a01b031614806114b3575060085415806114b35750600a54155b806114c2575060085460095410155b806114d357506114d182611526565b155b806114fc57506000600b83815481106114e857fe5b906000526020600020906016020160000154115b806115105750600161150c612995565b5111155b1561151d57506000611521565b5060015b919050565b600154600090821061153a57506000611521565b600b548210611577576001828154811061155057fe5b9060005260206000209060040201600201601c9054906101000a900460ff16159050611521565b6001828154811061158457fe5b9060005260206000209060040201600201601c9054906101000a900460ff161580156115d15750600b82815481106115b857fe5b600091825260209091206001601690920201015460ff16155b92915050565b600b54611695576115e6615923565b60015460005b8181101561169157600b80546001810182556000919091528351600080516020616fc383398151915260169092029182019081556020808601516000805160206170038339815191528401805460ff191691151591909117905560408601518051879461166d93600080516020616fe3833981519152909101920190615952565b50606082015161168390600383019060136159cc565b5050508060010190506115ec565b5050505b3361100114806116a6575033612002145b6116c25760405162461bcd60e51b8152600401610c4f906163e2565b6001600160a01b038116600090815260046020526040902054806116e65750611739565b6001810390506000600b82815481106116fb57fe5b600091825260209091206001601690920201015460ff16905061171e8383614304565b80156117275750805b15610c71576009805460001901905550505b50565b60015460609081906000805b8281101561178f576001818154811061175d57fe5b9060005260206000209060040201600201601c9054906101000a900460ff16611787576001909101905b600101611748565b506060816040519080825280602002602001820160405280156117bc578160200160208202803683370190505b5090506060826040519080825280602002602001820160405280156117f557816020015b60608152602001906001900390816117e05790505b50600b54600094509091508414156119705760005b8481101561196a576001818154811061181f57fe5b9060005260206000209060040201600201601c9054906101000a900460ff16611962576001818154811061184f57fe5b600091825260209091206004909102015483516001600160a01b039091169084908690811061187a57fe5b60200260200101906001600160a01b031690816001600160a01b031681525050600b81815481106118a757fe5b600091825260209182902060026016909202018101805460408051601f60001961010060018616150201909316949094049182018590048502840185019052808352919290919083018282801561193f5780601f106119145761010080835404028352916020019161193f565b820191906000526020600020905b81548152906001019060200180831161192257829003601f168201915b505050505082858151811061195057fe5b60209081029190910101526001909301925b60010161180a565b50611a0c565b60005b84811015611a0a576001818154811061198857fe5b9060005260206000209060040201600201601c9054906101000a900460ff16611a0257600181815481106119b857fe5b600091825260209091206004909102015483516001600160a01b03909116908490869081106119e357fe5b6001600160a01b03909216602092830291909101909101526001909301925b600101611973565b505b909450925050505b9091565b61100181565b60085481565b606181565b6060806000600e549050600080600c5411611a45576015611a49565b600c545b90506060611a55612995565b90506060611a62826146c7565b905082825111611a79579094509250611a14915050565b83838351031015611a8b578282510393505b8315611ac15760c84304611aa783838388880360008a8a614835565b611abf8383838888038989038a8b8b8b510301614835565b505b606083604051908082528060200260200182016040528015611aed578160200160208202803683370190505b509050606084604051908082528060200260200182016040528015611b2657816020015b6060815260200190600190039081611b115790505b50905060005b85811015611ba757848181518110611b4057fe5b6020026020010151838281518110611b5457fe5b60200260200101906001600160a01b031690816001600160a01b031681525050838181518110611b8057fe5b6020026020010151828281518110611b9457fe5b6020908102919091010152600101611b2c565b509096509450505050509091565b60065481565b61200681565b61200081565b6001600160a01b03811660009081526004602052604081205480611bef576000915050611521565b60001901611bfc81611526565b9392505050565b6001600160a01b03811660009081526004602052604081205480611c2b576000915050611521565b600180820381548110611c3a57fe5b906000526020600020906004020160030154915050919050565b60128181548110611c6157fe5b600091825260209182902001805460408051601f6002600019610100600187161502019094169390930492830185900485028101850190915281815293509091830182828015611cf25780601f10611cc757610100808354040283529160200191611cf2565b820191906000526020600020905b815481529060010190602001808311611cd557829003601f168201915b505050505081565b60105481565b60018181548110611d0d57fe5b600091825260209091206004909102018054600182015460028301546003909301546001600160a01b0392831694509082169291821691600160a01b81046001600160401b031691600160e01b90910460ff169086565b61100581565b61100881565b6103e881565b600c5481565b61200381565b61271081565b3361200014610d865760405162461bcd60e51b8152600401610c4f90616b56565b60025481565b60115481565b60145460ff1681565b600a5481565b600060175460001415611dd957506001611dde565b506017545b90565b6001600160a01b03811660009081526004602052604081205480611e175760405162461bcd60e51b8152600401610c4f90616ade565b6000190192915050565b600b54611edf57611e30615923565b60015460005b81811015611edb57600b80546001810182556000919091528351600080516020616fc383398151915260169092029182019081556020808601516000805160206170038339815191528401805460ff1916911515919091179055604086015180518794611eb793600080516020616fe3833981519152909101920190615952565b506060820151611ecd90600383019060136159cc565b505050806001019050611e36565b5050505b600854611eec5760036008555b600a54611ef9576002600a555b6000611f0433611de1565b9050611f0f81611457565b611f2b5760405162461bcd60e51b8152600401610c4f906168b0565b611739338261498c565b61100781565b600381565b60c881565b61100681565b604051806101e001604052806101ab8152602001616e186101ab913981565b60005460ff1681565b61200281565b61300081565b600081565b60005460ff16611fa65760405162461bcd60e51b8152600401610c4f906163ab565b3361100714611fc75760405162461bcd60e51b8152600401610c4f90616962565b61202784848080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250506040805180820190915260098152686275726e526174696f60b81b60208201529150614a249050565b156120dc576020811461204c5760405162461bcd60e51b8152600401610c4f90616268565b604080516020601f840181900481028201810190925282815260009161208a91858580838501838280828437600092019190915250614a7d92505050565b90506127106120b66018546120aa600f54856142df90919063ffffffff16565b9063ffffffff6142df16565b11156120d45760405162461bcd60e51b8152600401610c4f9061667e565b600655612933565b61214684848080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250506040805180820190915260138152726d61784e756d4f664d61696e7461696e696e6760681b60208201529150614a249050565b156121e0576020811461216b5760405162461bcd60e51b8152600401610c4f9061629f565b604080516020601f84018190048102820181019092528281526000916121a991858580838501838280828437600092019190915250614a7d92505050565b600c54909150806121b8575060155b8082106121d75760405162461bcd60e51b8152600401610c4f906165c6565b50600855612933565b61224984848080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250506040805180820190915260128152716d61696e7461696e536c6173685363616c6560701b60208201529150614a249050565b156122e2576020811461226e5760405162461bcd60e51b8152600401610c4f90616331565b604080516020601f84018190048102820181019092528281526000916122ac91858580838501838280828437600092019190915250614a7d92505050565b90506000811180156122be5750600a81105b6122da5760405162461bcd60e51b8152600401610c4f90616c3a565b600a55612933565b61235684848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505060408051808201909152601981527f6d61784e756d4f66576f726b696e6743616e646964617465730000000000000060208201529150614a249050565b156123e5576020811461237b5760405162461bcd60e51b8152600401610c4f906162e5565b604080516020601f84018190048102820181019092528281526000916123b991858580838501838280828437600092019190915250614a7d92505050565b9050600d548111156123dd5760405162461bcd60e51b8152600401610c4f90616787565b600e55612933565b61244e84848080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250506040805180820190915260128152716d61784e756d4f6643616e6469646174657360701b60208201529150614a249050565b156124d057602081146124735760405162461bcd60e51b8152600401610c4f906169b0565b604080516020601f84018190048102820181019092528281526000916124b191858580838501838280828437600092019190915250614a7d92505050565b600d819055600e549091508110156124ca57600d54600e555b50612933565b61253484848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505060408051808201909152600d81526c6e756d4f66436162696e65747360981b60208201529150614a249050565b156125e257602081146125595760405162461bcd60e51b8152600401610c4f90616376565b604080516020601f840181900481028201810190925282815260009161259791858580838501838280828437600092019190915250614a7d92505050565b9050600081116125b95760405162461bcd60e51b8152600401610c4f906164df565b60648111156125da5760405162461bcd60e51b8152600401610c4f90616527565b600c55612933565b61264e84848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505060408051808201909152601581527473797374656d52657761726442617365526174696f60581b60208201529150614a249050565b156126f757602081146126735760405162461bcd60e51b8152600401610c4f90616bf2565b604080516020601f84018190048102820181019092528281526000916126b191858580838501838280828437600092019190915250614a7d92505050565b90506127106126d16018546120aa600654856142df90919063ffffffff16565b11156126ef5760405162461bcd60e51b8152600401610c4f90616450565b600f55612933565b61276b84848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505060408051808201909152601881527f73797374656d526577617264416e74694d4556526174696f000000000000000060208201529150614a249050565b1561281457602081146127905760405162461bcd60e51b8152600401610c4f9061670d565b604080516020601f84018190048102820181019092528281526000916127ce91858580838501838280828437600092019190915250614a7d92505050565b90506127106127ee600f546120aa600654856142df90919063ffffffff16565b111561280c5760405162461bcd60e51b8152600401610c4f90616821565b601855612933565b61287584848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505060408051808201909152600a8152690e8eae4dc98cadccee8d60b31b60208201529150614a249050565b1561291b576020811461289a5760405162461bcd60e51b8152600401610c4f90616623565b604080516020601f84018190048102820181019092528281526000916128d891858580838501838280828437600092019190915250614a7d92505050565b9050600381101580156128ec575060098111155b806128f75750806001145b6129135760405162461bcd60e51b8152600401610c4f90616a58565b601755612933565b60405162461bcd60e51b8152600401610c4f90616c97565b7f6cdb0ac70ab7f2e2d035cca5be60d89906f2dede7648ddbd7402189c1eeed17a848484846040516129689493929190616236565b60405180910390a150505050565b60046020526000908152604090205481565b68056bc75e2d6310000081565b6001546060906000805b828110156129c4576129b081611526565b156129bc578160010191505b60010161299f565b506060816040519080825280602002602001820160405280156129f1578160200160208202803683370190505b5090506000915060005b83811015612a7857612a0c81611526565b15612a705760018181548110612a1e57fe5b600091825260209091206004909102015482516001600160a01b0390911690839085908110612a4957fe5b60200260200101906001600160a01b031690816001600160a01b0316815250508260010192505b6001016129fb565b509250505090565b601581565b61027181565b600281565b61100281565b60175481565b60138181548110611c6157fe5b60185481565b6000612ab9612995565b519050600080600c5411612ace576015612ad2565b600c545b905080821115612ae0578091505b81612aea57600191505b5090565b60055481565b61100381565b61200481565b606481565b60005460ff1615612b285760405162461bcd60e51b8152600401610c4f90616a21565b612b30615a2e565b6000612b56604051806101e001604052806101ab8152602001616e186101ab9139614a82565b9150915080612b775760405162461bcd60e51b8152600401610c4f90616b15565b60005b826020015151811015612c9c57600183602001518281518110612b9957fe5b60209081029190910181015182546001818101855560009485528385208351600493840290910180546001600160a01b039283166001600160a01b03199182161782558587015182850180549185169183169190911790556040860151600283018054606089015160808a01511515600160e01b0260ff60e01b196001600160401b03909216600160a01b0267ffffffffffffffff60a01b199590981692909516919091179290921694909417161790915560a090930151600390930192909255918601518051918501939185908110612c6f57fe5b602090810291909101810151516001600160a01b0316825281019190915260400160002055600101612b7a565b50506000805460ff1916600117905550565b600d5481565b601354600090815b81811015612dbd57612da585858080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050601380549092508591508110612d0d57fe5b600091825260209182902001805460408051601f6002600019610100600187161502019094169390930492830185900485028101850190915281815292830182828015612d9b5780601f10612d7057610100808354040283529160200191612d9b565b820191906000526020600020905b815481529060010190602001808311612d7e57829003601f168201915b5050505050614c3e565b15612db5576001925050506115d1565b600101612cbc565b5060125460005b81811015612e2e57612e1586868080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050601280549092508591508110612d0d57fe5b15612e2657600193505050506115d1565b600101612dc4565b50600095945050505050565b3361100114612e5b5760405162461bcd60e51b8152600401610c4f90616cbe565b600b54612f1957612e6a615923565b60015460005b81811015612f1557600b80546001810182556000919091528351600080516020616fc383398151915260169092029182019081556020808601516000805160206170038339815191528401805460ff1916911515919091179055604086015180518794612ef193600080516020616fe3833981519152909101920190615952565b506060820151612f0790600383019060136159cc565b505050806001019050612e70565b5050505b6000612f2482614ca2565b9050612f2f81611457565b15612f3e57612f3e828261498c565b5050565b334114612f615760405162461bcd60e51b8152600401610c4f90616ba5565b60005460ff16612f835760405162461bcd60e51b8152600401610c4f906163ab565b60003411612fa35760405162461bcd60e51b8152600401610c4f90616758565b3a15612fc15760405162461bcd60e51b8152600401610c4f90616934565b6001600160a01b03811660009081526004602052604090205460145434919060ff1661300157610271600f556103e86006556014805460ff191660011790555b600f54601754600110801561301857506000601854115b1561303d57600160175403601754438161302e57fe5b06601854028161303a57fe5b04015b60008311801561304d5750600081115b156130fa57600061307661271061306a348563ffffffff614e2516565b9063ffffffff614e5f16565b905080156130f8576040516110029082156108fc029083906000818181858888f193505050501580156130ad573d6000803e3d6000fd5b507f6ecc855f9440a9282c90913bbc91619fd44f5ec0b462af28d127b116f130aa4d816040516130dd9190616d4d565b60405180910390a16130f5848263ffffffff61429d16565b93505b505b60008311801561310c57506000600654115b156131b257600061312e61271061306a60065434614e2590919063ffffffff16565b905080156131b05760405161dead9082156108fc029083906000818181858888f19350505050158015613165573d6000803e3d6000fd5b507f627059660ea01c4733a328effb2294d2f86905bf806da763a89cee254de8bee5816040516131959190616d4d565b60405180910390a16131ad848263ffffffff61429d16565b93505b505b81156132b05760006001808403815481106131c957fe5b9060005260206000209060040201905080600201601c9054906101000a900460ff161561323657846001600160a01b03167ff177e5d6c5764d79c32883ed824111d9b13f5668cf6ab1cc12dd36791dd955b4856040516132299190616d4d565b60405180910390a26132aa565b600354613249908563ffffffff6142df16565b6003908155810154613261908563ffffffff6142df16565b60038201556040516001600160a01b038616907f93a090ecc682c002995fad3c85b30c5651d7fd29b0be5da9d784a3302aedc055906132a1908790616d4d565b60405180910390a25b506132f2565b836001600160a01b03167ff177e5d6c5764d79c32883ed824111d9b13f5668cf6ab1cc12dd36791dd955b4846040516132e99190616d4d565b60405180910390a25b50505050565b600e5481565b61100081565b61dead81565b600b818154811061331757fe5b6000918252602091829020601691909102018054600180830154600280850180546040805161010096831615969096026000190190911692909204601f810188900488028501880190925281845293965060ff909116949192918301828280156133c25780601f10613397576101008083540402835291602001916133c2565b820191906000526020600020905b8154815290600101906020018083116133a557829003601f168201915b5050505050905083565b61100481565b6000600a54600014806133e3575082155b806133ee5750600954155b156133fb575060006135bc565b60096000815460019003919050819055506000613446600a5461306a8661306a600b8a8154811061342857fe5b6000918252602090912060169091020154439063ffffffff61429d16565b90506000600b868154811061345757fe5b906000526020600020906016020160010160006101000a81548160ff0219169083151502179055506000806110016001600160a01b0316638256ace66040518163ffffffff1660e01b8152600401604080518083038186803b1580156134bc57600080fd5b505afa1580156134d0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906134f49190615fc6565b91509150600093508083106135725761350d8888614304565b506040516328aa02b160e01b8152611001906328aa02b190613537908b9087908a90600401616172565b600060405180830381600087803b15801561355157600080fd5b505af1158015613565573d6000803e3d6000fd5b5050505060019350613584565b8183106135845761358288614ca2565b505b6040516001600160a01b038916907fb9d38178dc641ff1817967a63c9078cbcd955a9f1fcd75e0e3636de615d44d3b90600090a25050505b949350505050565b6060806000808080806135d5612aaf565b6001549091505b801561380757600181039250600b83815481106135f557fe5b600091825260209091206001601690920201015460ff16613615576137fe565b6001838154811061362257fe5b600091825260208220600490910201546001600160a01b0316955061364c908690859085906133d2565b935083613658576137fe565b60405163436aa28360e11b81526000908190612002906386d5450690613682908a90600401616103565b60206040518083038186803b15801561369a57600080fd5b505afa1580156136ae573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906136d29190615d93565b90506001600160a01b0381161561375b576040516302ceee9160e11b81526120029063059ddd2290613708908490600401616103565b60206040518083038186803b15801561372057600080fd5b505afa158015613734573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906137589190615d93565b91505b60005b8c518110156137fa57876001600160a01b03168d828151811061377d57fe5b6020026020010151600001516001600160a01b031614806137c65750826001600160a01b03168d82815181106137af57fe5b6020026020010151600001516001600160a01b0316145b156137f25760018d82815181106137d957fe5b60209081029190910101519015156080909101526137fa565b60010161375e565b5050505b600019016135dc565b5060005b89518110156138745789818151811061382057fe5b60200260200101516080015180613860575060006001600160a01b03168a828151811061384957fe5b6020026020010151600001516001600160a01b0316145b1561386c578560010195505b60010161380b565b508851851061395c5760408051600180825281830190925290816020015b61389a6159f9565b815260200190600190039081613892575050604080516001808252818301909252919850602082015b60608152602001906001900390816138c3579050509550886000815181106138e757fe5b6020026020010151876000815181106138fc57fe5b60200260200101819052508760008151811061391457fe5b60200260200101518660008151811061392957fe5b602002602001018190525060008760008151811061394357fe5b6020908102919091010151901515608090910152613aa1565b8489510360405190808252806020026020018201604052801561399957816020015b6139866159f9565b81526020019060019003908161397e5790505b509650848951036040519080825280602002602001820160405280156139d357816020015b60608152602001906001900390816139be5790505b5095506000915060005b8951811015613a9f578981815181106139f257fe5b602002602001015160800151158015613a35575060006001600160a01b03168a8281518110613a1d57fe5b6020026020010151600001516001600160a01b031614155b15613a9757898181518110613a4657fe5b6020026020010151888481518110613a5a57fe5b6020026020010181905250888181518110613a7157fe5b6020026020010151878481518110613a8557fe5b60200260200101819052508260010192505b6001016139dd565b505b50505050505b9250929050565b600154825160005b82811015613bcb576001613ac86159f9565b60018381548110613ad557fe5b600091825260208083206040805160c08101825260049490940290910180546001600160a01b0390811685526001820154811693850193909352600281015492831691840191909152600160a01b82046001600160401b03166060840152600160e01b90910460ff16151560808301526003015460a082015291505b84811015613b9f57878181518110613b6557fe5b6020026020010151600001516001600160a01b031682600001516001600160a01b03161415613b975760009250613b9f565b600101613b51565b508115613bc15780516001600160a01b03166000908152600460205260408120555b5050600101613ab6565b5080821115613c8a57805b82811015613c88576001805480613be957fe5b60008281526020812060046000199093019283020180546001600160a01b0319908116825560018201805490911690556002810180546001600160e81b0319169055600301559055600b805480613c3c57fe5b60008281526020812060166000199093019283020181815560018101805460ff1916905590613c6e6002830182615a52565b613c7c600383016000615a96565b50509055600101613bd6565b505b6000818310613c995781613c9b565b825b905060005b8181101561403f57613d4d868281518110613cb757fe5b602002602001015160018381548110613ccc57fe5b60009182526020918290206040805160c08101825260049390930290910180546001600160a01b0390811684526001820154811694840194909452600281015493841691830191909152600160a01b83046001600160401b03166060830152600160e01b90920460ff161515608082015260039091015460a0820152614ea1565b613f01578060010160046000888481518110613d6557fe5b6020026020010151600001516001600160a01b03166001600160a01b0316815260200190815260200160002081905550858181518110613da157fe5b602002602001015160018281548110613db657fe5b6000918252602091829020835160049092020180546001600160a01b039283166001600160a01b0319918216178255928401516001820180549184169185169190911790556040840151600282018054606087015160808801511515600160e01b0260ff60e01b196001600160401b03909216600160a01b0267ffffffffffffffff60a01b1995909716929097169190911792909216939093171692909217905560a0909101516003909101558451859082908110613e7157fe5b6020026020010151600b8281548110613e8657fe5b90600052602060002090601602016002019080519060200190613eaa929190615952565b506000600b8281548110613eba57fe5b60009182526020822060169190910201600101805460ff191692151592909217909155600b805483908110613eeb57fe5b6000918252602090912060169091020155614037565b858181518110613f0d57fe5b60200260200101516060015160018281548110613f2657fe5b906000526020600020906004020160020160146101000a8154816001600160401b0302191690836001600160401b03160217905550613fec858281518110613f6a57fe5b6020026020010151600b8381548110613f7f57fe5b600091825260209182902060026016909202018101805460408051601f600019610100600186161502019093169490940491820185900485028401850190528083529192909190830182828015612d9b5780601f10612d7057610100808354040283529160200191612d9b565b61403757848181518110613ffc57fe5b6020026020010151600b828154811061401157fe5b90600052602060002090601602016002019080519060200190614035929190615952565b505b600101613ca0565b508282111561421757614050615923565b835b838110156142145785818151811061406657fe5b60200260200101518260400181905250600187828151811061408457fe5b6020908102919091018101518254600181810185556000948552838520835160049093020180546001600160a01b039384166001600160a01b0319918216178255848601518284018054918616918316919091179055604080860151600284018054606089015160808a01511515600160e01b0260ff60e01b196001600160401b03909216600160a01b0267ffffffffffffffff60a01b1995909a1692909616919091179290921696909617169190911790935560a090930151600390930192909255600b8054928301815590935284516016909102600080516020616fc38339815191528101918255858301516000805160206170038339815191528201805491151560ff19909216919091179055928501518051869492936141ba93600080516020616fe383398151915201920190615952565b5060608201516141d090600383019060136159cc565b50505080600101600460008984815181106141e757fe5b602090810291909101810151516001600160a01b0316825281019190915260400160002055600101614052565b50505b61421f614efd565b6142276150df565b6000600981905560015493505b83811015614295576000600b828154811061424b57fe5b60009182526020822060169190910201600101805460ff191692151592909217909155600b80548390811061427c57fe5b6000918252602090912060169091020155600101614234565b505050505050565b6000611bfc83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506152cd565b600082820183811015611bfc5760405162461bcd60e51b8152600401610c4f90616419565b6000806001838154811061431457fe5b9060005260206000209060040201600301549050600060018080549050039050600161433e612995565b51116143735760006001858154811061435357fe5b9060005260206000209060040201600301819055506000925050506115d1565b846001600160a01b03167f3b6f9ef90462b512a1293ecec018670bf7b7f1876fb727590a8a6d7643130a70836040516143ac9190616d4d565b60405180910390a26001600160a01b038516600090815260046020526040812055835b6001546000190181101561459957600181600101815481106143ed57fe5b90600052602060002090600402016001828154811061440857fe5b60009182526020909120825460049092020180546001600160a01b03199081166001600160a01b0393841617825560018085015481840180548416918616919091179055600280860180549185018054909416919095161780835584546001600160401b03600160a01b91829004160267ffffffffffffffff60a01b1990911617808355935460ff600160e01b918290041615150260ff60e01b19909416939093179055600392830154920191909155600b8054909183019081106144c957fe5b9060005260206000209060160201600b82815481106144e457fe5b600091825260209091208254601690920201908155600180830154818301805460ff909216151560ff199092169190911790556002808401805461453b938386019390821615610100026000190190911604615aa5565b5061454e60038281019084016013615b1a565b5090505080600101600460006001848154811061456757fe5b600091825260208083206004909202909101546001600160a01b031683528201929092526040019020556001016143cf565b5060018054806145a557fe5b60008281526020812060046000199093019283020180546001600160a01b0319908116825560018201805490911690556002810180546001600160e81b0319169055600301559055600b8054806145f857fe5b60008281526020812060166000199093019283020181815560018101805460ff191690559061462a6002830182615a52565b614638600383016000615a96565b50509055600081838161464757fe5b04905080156146bb5760015460005b818110156146b85761468f836001838154811061466f57fe5b9060005260206000209060040201600301546142df90919063ffffffff16565b6001828154811061469c57fe5b6000918252602090912060036004909202010155600101614656565b50505b50600195945050505050565b60015481516040805182815260208084028201019091526060929190839082801561470657816020015b60608152602001906001900390816146f15790505b50600b54909150831461471d579250611521915050565b60005b8281101561482c57600b60016004600089858151811061473c57fe5b60200260200101516001600160a01b03166001600160a01b0316815260200190815260200160002054038154811061477057fe5b600091825260209182902060026016909202018101805460408051601f6000196101006001861615020190931694909404918201859004850284018501905280835291929091908301828280156148085780601f106147dd57610100808354040283529160200191614808565b820191906000526020600020905b8154815290600101906020018083116147eb57829003601f168201915b505050505082828151811061481957fe5b6020908102919091010152600101614720565b50949350505050565b60005b8281101561498257600082878388016040516020016148589291906160f5565b6040516020818303038152906040528051906020012060001c8161487857fe5b06905080850182870114614979576000898388018151811061489657fe5b60200260200101519050606089848901815181106148b057fe5b602002602001015190508a838801815181106148c857fe5b60200260200101518b858a01815181106148de57fe5b60200260200101906001600160a01b031690816001600160a01b031681525050818b8489018151811061490d57fe5b60200260200101906001600160a01b031690816001600160a01b031681525050898388018151811061493b57fe5b60200260200101518a858a018151811061495157fe5b6020026020010181905250808a8489018151811061496b57fe5b602002602001018190525050505b50600101614838565b5050505050505050565b600980546001908101909155600b8054839081106149a657fe5b906000526020600020906016020160010160006101000a81548160ff02191690831515021790555043600b82815481106149dc57fe5b600091825260208220601690910201919091556040516001600160a01b038416917ff62981a567ec3cec866c6fa93c55bcdf841d6292d18b8d522ececa769375d82d91a25050565b600081604051602001614a3791906160d9565b6040516020818303038152906040528051906020012083604051602001614a5e91906160d9565b6040516020818303038152906040528051906020012014905092915050565b015190565b614a8a615a2e565b6000614a94615a2e565b614a9c615b44565b614aad614aa8866152f9565b61531e565b90506000805b614abc83615368565b15614c305780614ae157614ad7614ad284615389565b6153d7565b60ff168452614c28565b8060011415614c23576060614afd614af885615389565b615457565b90508051604051908082528060200260200182016040528015614b3a57816020015b614b276159f9565b815260200190600190039081614b1f5790505b5085602001819052508051604051908082528060200260200182016040528015614b7857816020015b6060815260200190600190039081614b635790505b50604086015260005b8151811015614c1857614b926159f9565b60606000614bb2858581518110614ba557fe5b6020026020010151615528565b92509250925080614bd2578860009a509a50505050505050505050614c39565b8289602001518581518110614be357fe5b60200260200101819052508189604001518581518110614bff57fe5b6020026020010181905250505050806001019050614b81565b506001925050614c28565b614c30565b600101614ab3565b50919350909150505b915091565b815181516000916001918114808314614c5a5760009250614c98565b600160208701838101602088015b600284838510011415614c93578051835114614c875760009650600093505b60209283019201614c68565b505050505b5090949350505050565b6001600160a01b03811660009081526004602052604081205480614ccb57506000199050611521565b600181039050600060018281548110614ce057fe5b9060005260206000209060040201600301549050600060018381548110614d0357fe5b6000918252602090912060036004909202010155600154604051600019909101906001600160a01b038616907f8cd4e147d8af98a9e3b6724021b8bf6aed2e5dac71c38f2dce8161b82585b25d90614d5c908590616d4d565b60405180910390a280614d7457829350505050611521565b6000818381614d7f57fe5b0490508015614e1b5760005b84811015614dcd57614da4826001838154811061466f57fe5b60018281548110614db157fe5b6000918252602090912060036004909202010155600101614d8b565b50600180549085015b81811015614e1857614def836001838154811061466f57fe5b60018281548110614dfc57fe5b6000918252602090912060036004909202010155600101614dd6565b50505b5091949350505050565b600082614e34575060006115d1565b82820282848281614e4157fe5b0414611bfc5760405162461bcd60e51b8152600401610c4f906168f3565b6000611bfc83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250615642565b805182516000916001600160a01b039182169116148015614edb575081602001516001600160a01b031683602001516001600160a01b0316145b8015611bfc5750506040908101519101516001600160a01b0390811691161490565b60125460135480821115614f4857805b82811015614f46576012805480614f2057fe5b600190038181906000526020600020016000614f3c9190615a52565b9055600101614f0d565b505b6000818310614f575781614f59565b825b905060005b818110156150715761501660128281548110614f7657fe5b600091825260209182902001805460408051601f60026000196101006001871615020190941693909304928301859004850281018501909152818152928301828280156150045780601f10614fd957610100808354040283529160200191615004565b820191906000526020600020905b815481529060010190602001808311614fe757829003601f168201915b505050505060138381548110612d0d57fe5b615069576013818154811061502757fe5b906000526020600020016012828154811061503e57fe5b906000526020600020019080546001816001161561010002031660029004615067929190615aa5565b505b600101614f5e565b5082821115610c7157825b828110156132f25760126013828154811061509357fe5b60009182526020808320845460018181018755958552919093209290910180546150d6949390920192909160026101009282161592909202600019011604615aa5565b5060010161507c565b601354600b548082111561512a57805b8281101561512857601380548061510257fe5b60019003818190600052602060002001600061511e9190615a52565b90556001016150ef565b505b6000818310615139578161513b565b825b905060005b8181101561525a576151f86013828154811061515857fe5b600091825260209182902001805460408051601f60026000196101006001871615020190941693909304928301859004850281018501909152818152928301828280156151e65780601f106151bb576101008083540402835291602001916151e6565b820191906000526020600020905b8154815290600101906020018083116151c957829003601f168201915b5050505050600b8381548110613f7f57fe5b61525257600b818154811061520957fe5b90600052602060002090601602016002016013828154811061522757fe5b906000526020600020019080546001816001161561010002031660029004615250929190615aa5565b505b600101615140565b5082821115610c7157825b828110156132f2576013600b828154811061527c57fe5b6000918252602080832084546001808201875595855291909320601692909202909201600290810180546152c495939094019390926000199082161561010002011604615aa5565b50600101615265565b600081848411156152f15760405162461bcd60e51b8152600401610c4f9190616223565b505050900390565b615301615b64565b506040805180820190915281518152602082810190820152919050565b615326615b44565b61532f82615679565b61533857600080fd5b600061534783602001516156b3565b60208085015160408051808201909152868152920190820152915050919050565b6000615372615b64565b505080518051602091820151919092015191011190565b615391615b64565b61539a82615368565b6153a357600080fd5b602082015160006153b382615716565b80830160209586015260408051808201909152908152938401919091525090919050565b8051600090158015906153ec57508151602110155b6153f557600080fd5b600061540483602001516156b3565b9050808360000151101561542a5760405162461bcd60e51b8152600401610c4f90616aa7565b82516020808501518301805192849003929183101561482c57506020919091036101000a90049392505050565b606061546282615679565b61546b57600080fd5b6000615476836157f7565b90506060816040519080825280602002602001820160405280156154b457816020015b6154a1615b64565b8152602001906001900390816154995790505b50905060006154c685602001516156b3565b60208601510190506000805b8481101561551d576154e383615716565b915060405180604001604052808381526020018481525084828151811061550657fe5b6020908102919091010152918101916001016154d2565b509195945050505050565b6155306159f9565b6060600061553c6159f9565b6060615546615b44565b61554f8761531e565b90506000805b61555e83615368565b1561563357806155895761557961557484615389565b615853565b6001600160a01b0316855261562b565b80600114156155b15761559e61557484615389565b6001600160a01b0316602086015261562b565b80600214156155d9576155c661557484615389565b6001600160a01b0316604086015261562b565b8060031415615605576155ee614ad284615389565b6001600160401b031660608601526001915061562b565b80600414156156265761561f61561a84615389565b61586d565b935061562b565b615633565b600101615555565b50929791965091945092505050565b600081836156635760405162461bcd60e51b8152600401610c4f9190616223565b50600083858161566f57fe5b0495945050505050565b805160009061568a57506000611521565b6020820151805160001a9060c08210156156a957600092505050611521565b5060019392505050565b8051600090811a60808110156156cd576000915050611521565b60b88110806156e8575060c081108015906156e8575060f881105b156156f7576001915050611521565b60c081101561570b5760b519019050611521565b60f519019050611521565b80516000908190811a608081101561573157600191506157f0565b60b881101561574657607e19810191506157f0565b60c081101561579757600060b78203600186019550806020036101000a8651049150600181018201935050808310156157915760405162461bcd60e51b8152600401610c4f906167f6565b506157f0565b60f88110156157ac5760be19810191506157f0565b600060f78203600186019550806020036101000a8651049150600181018201935050808310156157ee5760405162461bcd60e51b8152600401610c4f906167f6565b505b5092915050565b805160009061580857506000611521565b6000809050600061581c84602001516156b3565b602085015185519181019250015b8082101561584a5761583b82615716565b8201915082600101925061582a565b50909392505050565b805160009060151461586457600080fd5b6115d1826153d7565b805160609061587b57600080fd5b600061588a83602001516156b3565b83516040805191839003808352601f19601f82011683016020019091529192506060908280156158c1576020820181803683370190505b509050600081602001905061482c848760200151018285806158e257610c71565b5b60208110615902578251825260209283019290910190601f19016158e3565b915181516020939093036101000a6000190180199091169216919091179052565b6040518060800160405280600081526020016000151581526020016060815260200161594d615b7e565b905290565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f1061599357805160ff19168380011785556159c0565b828001600101855582156159c0579182015b828111156159c05782518255916020019190600101906159a5565b50612aea929150615b9d565b82601381019282156159c057916020028201828111156159c05782518255916020019190600101906159a5565b6040805160c081018252600080825260208201819052918101829052606081018290526080810182905260a081019190915290565b6040518060600160405280600060ff16815260200160608152602001606081525090565b50805460018160011615610100020316600290046000825580601f10615a785750611739565b601f0160209004906000526020600020908101906117399190615b9d565b50611739906013810190615b9d565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10615ade57805485556159c0565b828001600101855582156159c057600052602060002091601f016020900482015b828111156159c0578254825591600101919060010190615aff565b82601381019282156159c057918201828111156159c0578254825591600101919060010190615aff565b6040518060400160405280615b57615b64565b8152602001600081525090565b604051806040016040528060008152602001600081525090565b6040518061026001604052806013906020820280368337509192915050565b611dde91905b80821115612aea5760008155600101615ba3565b80356115d181616e02565b60008083601f840112615bd3578182fd5b5081356001600160401b03811115615be9578182fd5b6020830191508360208083028501011115613aa757600080fd5b6000601f8381840112615c14578182fd5b8235615c27615c2282616db7565b616d91565b818152925060208084019085810160005b84811015615cb9578135880189603f820112615c5357600080fd5b838101356001600160401b03811115615c6b57600080fd5b615c7c818901601f19168601616d91565b81815260408c81848601011115615c9257600080fd5b82818501888401375060009181018601919091528552509282019290820190600101615c38565b50505050505092915050565b600082601f830112615cd5578081fd5b8135615ce3615c2282616db7565b818152915060208083019084810181840286018201871015615d0457600080fd5b6000805b85811015615cb95782356001600160401b0381168114615d26578283fd5b85529383019391830191600101615d08565b60008083601f840112615d49578182fd5b5081356001600160401b03811115615d5f578182fd5b602083019150836020828501011115613aa757600080fd5b600060208284031215615d88578081fd5b8135611bfc81616e02565b600060208284031215615da4578081fd5b8151611bfc81616e02565b60008060008060408587031215615dc4578283fd5b84356001600160401b0380821115615dda578485fd5b615de688838901615bc2565b90965094506020870135915080821115615dfe578384fd5b50615e0b87828801615bc2565b95989497509550505050565b600080600060608486031215615e2b578283fd5b83356001600160401b0380821115615e41578485fd5b81860187601f820112615e52578586fd5b80359250615e62615c2284616db7565b80848252602080830192508084018b828389028701011115615e8257898afd5b8994505b86851015615eac57615e988c82615bb7565b845260019490940193928101928101615e86565b509097508801359350505080821115615ec3578384fd5b615ecf87838801615cc5565b93506040860135915080821115615ee4578283fd5b50615ef186828701615c03565b9150509250925092565b60008060208385031215615f0d578182fd5b82356001600160401b03811115615f22578283fd5b615f2e85828601615d38565b90969095509350505050565b60008060008060408587031215615f4f578384fd5b84356001600160401b0380821115615f65578586fd5b615f7188838901615d38565b90965094506020870135915080821115615f89578384fd5b50615e0b87828801615d38565b600060208284031215615fa7578081fd5b5035919050565b600060208284031215615fbf578081fd5b5051919050565b60008060408385031215615fd8578182fd5b505080516020909101519092909150565b600080600060408486031215615ffd578081fd5b833560ff8116811461600d578182fd5b925060208401356001600160401b03811115616027578182fd5b61603386828701615d38565b9497909650939450505050565b6000815180845260208085019450808401835b838110156160785781516001600160a01b031687529582019590820190600101616053565b509495945050505050565b60008284528282602086013780602084860101526020601f19601f85011685010190509392505050565b600081518084526160c5816020860160208601616dd6565b601f01601f19169290920160200192915050565b600082516160eb818460208701616dd6565b9190910192915050565b918252602082015260400190565b6001600160a01b0391909116815260200190565b6001600160a01b03929092168252602082015260400190565b6001600160a01b03968716815294861660208601529290941660408401526001600160401b03166060830152911515608082015260a081019190915260c00190565b6001600160a01b0393909316835260208301919091521515604082015260600190565b600060208252611bfc6020830184616040565b6000604082526161bb6040830185616040565b602083820381850152818551808452828401915082838202850101838801865b8381101561620957601f198784030185526161f78383516160ad565b948601949250908501906001016161db565b50909998505050505050505050565b901515815260200190565b600060208252611bfc60208301846160ad565b60006040825261624a604083018688616083565b828103602084015261625d818587616083565b979650505050505050565b6020808252601c908201527f6c656e677468206f66206275726e526174696f206d69736d6174636800000000604082015260600190565b60208082526026908201527f6c656e677468206f66206d61784e756d4f664d61696e7461696e696e67206d696040820152650e6dac2e8c6d60d31b606082015260800190565b6020808252602c908201527f6c656e677468206f66206d61784e756d4f66576f726b696e6743616e6469646160408201526b0e8cae640dad2e6dac2e8c6d60a31b606082015260800190565b60208082526025908201527f6c656e677468206f66206d61696e7461696e536c6173685363616c65206d69736040820152640dac2e8c6d60db1b606082015260800190565b6020808252818101527f6c656e677468206f66206e756d4f66436162696e657473206d69736d61746368604082015260600190565b60208082526019908201527f74686520636f6e7472616374206e6f7420696e69742079657400000000000000604082015260600190565b6020808252601f908201527f6f6e6c7920736c617368206f72207374616b6548756220636f6e747261637400604082015260600190565b6020808252601b908201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604082015260600190565b60208082526063908201527f7468652073797374656d52657761726442617365526174696f20706c7573206260408201527f75726e526174696f20616e642073797374656d526577617264416e74694d455660608201527f526174696f206d757374206265206e6f2067726561746572207468616e20313060808201526203030360ec1b60a082015260c00190565b60208082526028908201527f746865206e756d4f66436162696e657473206d75737420626520677265617465604082015267072207468616e20360c41b606082015260800190565b60208082526039908201527f746865206e756d4f66436162696e657473206d757374206265206c657373207460408201527f68616e204d41585f4e554d5f4f465f56414c494441544f525300000000000000606082015260800190565b60208082526022908201527f63616e206e6f7420646f207468697320747769636520696e206f6e6520626c6f604082015261636b60f01b606082015260800190565b60208082526037908201527f746865206d61784e756d4f664d61696e7461696e696e67206d7573742062652060408201527f6c657373207468616e206e756d4f66436162696e657473000000000000000000606082015260800190565b6020808252601d908201527f6c656e677468206f66207475726e4c656e677468206d69736d61746368000000604082015260600190565b6020808252600a908201526919195c1c9958d85d195960b21b604082015260600190565b60208082526063908201527f746865206275726e526174696f20706c75732073797374656d5265776172644260408201527f617365526174696f20616e642073797374656d526577617264416e74694d455660608201527f526174696f206d757374206265206e6f2067726561746572207468616e20313060808201526203030360ec1b60a082015260c00190565b6020808252602b908201527f6c656e677468206f662073797374656d526577617264416e74694d455652617460408201526a0d2de40dad2e6dac2e8c6d60ab1b606082015260800190565b6020808252601590820152746465706f7369742076616c7565206973207a65726f60581b604082015260600190565b60208082526049908201527f746865206d61784e756d4f66576f726b696e6743616e64696461746573206d7560408201527f7374206265206e6f742067726561746572207468616e206d61784e756d4f6643606082015268616e6469646174657360b81b608082015260a00190565b6020808252601190820152706164646974696f6e206f766572666c6f7760781b604082015260600190565b60208082526063908201527f7468652073797374656d526577617264416e74694d4556526174696f20706c7560408201527f73206275726e526174696f20616e642073797374656d5265776172644261736560608201527f526174696f206d757374206265206e6f2067726561746572207468616e20313060808201526203030360ec1b60a082015260c00190565b60208082526023908201527f63616e206e6f7420656e7465722054656d706f72617279204d61696e74656e616040820152626e636560e81b606082015260800190565b60208082526021908201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6040820152607760f81b606082015260800190565b6020808252601490820152736761737072696365206973206e6f74207a65726f60601b604082015260600190565b6020808252602e908201527f746865206d6573736167652073656e646572206d75737420626520676f76657260408201526d1b985b98d94818dbdb9d1c9858dd60921b606082015260800190565b60208082526025908201527f6c656e677468206f66206d61784e756d4f6643616e64696461746573206d69736040820152640dac2e8c6d60db1b606082015260800190565b6020808252601290820152716e6f7420696e206d61696e74656e616e636560701b604082015260600190565b60208082526019908201527f74686520636f6e747261637420616c726561647920696e697400000000000000604082015260600190565b6020808252602f908201527f746865207475726e4c656e6774682073686f756c6420626520696e205b332c3960408201526e5d206f7220657175616c20746f203160881b606082015260800190565b6020808252601a908201527f6c656e677468206973206c657373207468616e206f6666736574000000000000604082015260600190565b60208082526017908201527f6f6e6c792063757272656e742076616c696461746f7273000000000000000000604082015260600190565b60208082526021908201527f6661696c656420746f20706172736520696e69742076616c696461746f7253656040820152601d60fa1b606082015260800190565b6020808252602f908201527f746865206d6573736167652073656e646572206d7573742062652063726f737360408201526e0818da185a5b8818dbdb9d1c9858dd608a1b606082015260800190565b6020808252602d908201527f746865206d6573736167652073656e646572206d75737420626520746865206260408201526c3637b1b590383937b23ab1b2b960991b606082015260800190565b60208082526028908201527f6c656e677468206f662073797374656d52657761726442617365526174696f206040820152670dad2e6dac2e8c6d60c31b606082015260800190565b6020808252603e908201527f746865206d61696e7461696e536c6173685363616c65206d757374206265206760408201527f726561746572207468616e203020616e64206c657373207468616e2031300000606082015260800190565b6020808252600d908201526c756e6b6e6f776e20706172616d60981b604082015260600190565b60208082526029908201527f746865206d6573736167652073656e646572206d75737420626520736c6173686040820152680818dbdb9d1c9858dd60ba1b606082015260800190565b6020808252601f908201527f746865206d73672073656e646572206d757374206265207374616b6548756200604082015260600190565b61ffff91909116815260200190565b90815260200190565b6000848252831515602083015260606040830152616d7760608301846160ad565b95945050505050565b63ffffffff91909116815260200190565b6040518181016001600160401b0381118282101715616daf57600080fd5b604052919050565b60006001600160401b03821115616dcc578081fd5b5060209081020190565b60005b83811015616df1578181015183820152602001616dd9565b838111156132f25750506000910152565b6001600160a01b038116811461173957600080fdfef901a880f901a4f844941284214b9b9c85549ab3d2b972df0deef66ac2c9946ddf42a51534fc98d0c0a3b42c963cace8441ddf946ddf42a51534fc98d0c0a3b42c963cace8441ddf8410000000f84494a2959d3f95eae5dc7d70144ce1b73b403b7eb6e0948081ef03f1d9e0bb4a5bf38f16285c879299f07f948081ef03f1d9e0bb4a5bf38f16285c879299f07f8410000000f8449435552c16704d214347f29fa77f77da6d75d7c75294dc4973e838e3949c77aced16ac2315dc2d7ab11194dc4973e838e3949c77aced16ac2315dc2d7ab1118410000000f84494980a75ecd1309ea12fa2ed87a8744fbfc9b863d594cc6ac05c95a99c1f7b5f88de0e3486c82293b27094cc6ac05c95a99c1f7b5f88de0e3486c82293b2708410000000f84494f474cf03cceff28abc65c9cbae594f725c80e12d94e61a183325a18a173319dd8e19c8d069459e217594e61a183325a18a173319dd8e19c8d069459e21758410000000f84494b71b214cb885500844365e95cd9942c7276e7fd894d22ca3ba2141d23adab65ce4940eb7665ea2b6a794d22ca3ba2141d23adab65ce4940eb7665ea2b6a784100000000175b7a638427703f0dbe7bb9bbf987a2551717b34e79f33b5b1008d1fa01db90175b7a638427703f0dbe7bb9bbf987a2551717b34e79f33b5b1008d1fa01dbb0175b7a638427703f0dbe7bb9bbf987a2551717b34e79f33b5b1008d1fa01dbaa164736f6c6343000604000a \ No newline at end of file diff --git a/core/systemcontracts/pascal/mainnet/CrossChainContract b/core/systemcontracts/pascal/mainnet/CrossChainContract new file mode 100644 index 0000000000..2587270177 --- /dev/null +++ b/core/systemcontracts/pascal/mainnet/CrossChainContract @@ -0,0 +1 @@ +608060405234801561001057600080fd5b50600436106102695760003560e01c806375d47a0a11610151578063c81b1662116100c3578063e1c7392a11610087578063e1c7392a14610839578063e3b0480514610841578063e6400bbe14610861578063f7a251d714610869578063f9a2bbc7146108e1578063fd6a6879146108e957610269565b8063c81b1662146107ea578063ccc108d7146107f2578063d31f968d146107fa578063dc927faf14610829578063df8079e91461083157610269565b8063a78abc1611610115578063a78abc16146106d3578063aa82dce1146106db578063aad56063146106e3578063ab51bb96146106eb578063ac4317511461070c578063c27cdcfb146107ca57610269565b806375d47a0a146105d85780637e434d54146105e057806384013b6a146105e85780639dc09262146106c3578063a1a11bf5146106cb57610269565b80633a648b15116101ea57806351e80672116101ae57806351e806721461052a5780635f832177146105325780636bacff2c146105605780636e47a51a146105a85780636e47b482146105c857806374f079b8146105d057610269565b80633a648b15146104b6578063422f9050146104f257806343756e5c14610512578063493279b11461051a57806351b4dce31461052257610269565b806328087028116102315780632808702814610434578063299b533d1461043c5780632af6f399146104705780632ff32aea1461048d578063308325f4146104ae57610269565b80630e2374a51461026e57806314b3023b146102925780631d130935146102ac5780631e275ae1146102c857806322556cdc1461042c575b600080fd5b6102766108f1565b604080516001600160a01b039092168252519081900360200190f35b61029a6108f7565b60408051918252519081900360200190f35b6102b46108fd565b604080519115158252519081900360200190f35b61042a60048036036101008110156102df57600080fd5b81018160a081016080820135600160201b8111156102fc57600080fd5b82018360208201111561030e57600080fd5b803590602001918460018302840111600160201b8311171561032f57600080fd5b919390929091602081019035600160201b81111561034c57600080fd5b82018360208201111561035e57600080fd5b803590602001918460018302840111600160201b8311171561037f57600080fd5b919390929091602081019035600160201b81111561039c57600080fd5b8201836020820111156103ae57600080fd5b803590602001918460018302840111600160201b831117156103cf57600080fd5b919390929091602081019035600160201b8111156103ec57600080fd5b8201836020820111156103fe57600080fd5b803590602001918460018302840111600160201b8311171561041f57600080fd5b509092509050610906565b005b61029a610ba7565b610276610bac565b6104596004803603602081101561045257600080fd5b5035610bb2565b6040805161ffff9092168252519081900360200190f35b6102b46004803603602081101561048657600080fd5b5035610bc8565b610495610bdd565b60408051600792830b90920b8252519081900360200190f35b61029a610be6565b6104d6600480360360208110156104cc57600080fd5b503560ff16610bec565b604080516001600160401b039092168252519081900360200190f35b6102b46004803603602081101561050857600080fd5b503560ff16610c07565b610276610c1c565b610459610c22565b610276610c27565b610276610c2d565b61042a6004803603604081101561054857600080fd5b506001600160a01b0381358116916020013516610c33565b61057d6004803603602081101561057657600080fd5b5035610dac565b6040805161ffff90941684526001600160801b03909216602084015282820152519081900360600190f35b610276600480360360208110156105be57600080fd5b503560ff16610ddb565b610276610df6565b61029a610dfc565b610276610e02565b610276610e08565b61042a600480360360a08110156105fe57600080fd5b810190602081018135600160201b81111561061857600080fd5b82018360208201111561062a57600080fd5b803590602001918460018302840111600160201b8311171561064b57600080fd5b919390929091602081019035600160201b81111561066857600080fd5b82018360208201111561067a57600080fd5b803590602001918460018302840111600160201b8311171561069b57600080fd5b919350915080356001600160401b03908116916020810135909116906040013560ff16610e0e565b6102766111c2565b6102766111c8565b6102b46111ce565b6102766111d7565b6102766111dd565b6106f36111e3565b6040805163ffffffff9092168252519081900360200190f35b61042a6004803603604081101561072257600080fd5b810190602081018135600160201b81111561073c57600080fd5b82018360208201111561074e57600080fd5b803590602001918460018302840111600160201b8311171561076f57600080fd5b919390929091602081019035600160201b81111561078c57600080fd5b82018360208201111561079e57600080fd5b803590602001918460018302840111600160201b831117156107bf57600080fd5b5090925090506111e8565b6104d6600480360360208110156107e057600080fd5b503560ff16611228565b610276611243565b61042a611249565b6102b46004803603604081101561081057600080fd5b5080356001600160a01b0316906020013560ff16611409565b610276611429565b61027661142f565b61042a611435565b6104d66004803603602081101561085757600080fd5b503560ff166114c7565b61042a6114e2565b61042a6004803603606081101561087f57600080fd5b60ff8235169190810190604081016020820135600160201b8111156108a357600080fd5b8201836020820111156108b557600080fd5b803590602001918460018302840111600160201b831117156108d657600080fd5b91935091503561165b565b6102766116fd565b610276611703565b61200181565b60015481565b600b5460ff1681565b60005460ff1661094b576040805162461bcd60e51b81526020600482015260196024820152600080516020611769833981519152604482015290519081900360640190fd5b604080516337d7f9c160e21b81526001600160401b038b35166004820181905291516110039163df5fe704916024808301926020929190829003018186803b15801561099657600080fd5b505afa1580156109aa573d6000803e3d6000fd5b505050506040513d60208110156109c057600080fd5b50516109fd5760405162461bcd60e51b81526004018080602001828103825260238152602001806117896023913960400191505060405180910390fd5b604080516337d7f9c160e21b815260208c8101356001600160401b03166004830181905292516110039263df5fe704926024808301939192829003018186803b158015610a4957600080fd5b505afa158015610a5d573d6000803e3d6000fd5b505050506040513d6020811015610a7357600080fd5b5051610ab05760405162461bcd60e51b81526004018080602001828103825260238152602001806117896023913960400191505060405180910390fd5b60608b013560ff81166000908152600560205260409020546001600160401b03909116906001600160a01b0316610b29576040805162461bcd60e51b815260206004820152601860248201527718da185b9b995b081a5cc81b9bdd081cdd5c1c1bdc9d195960421b604482015290519081900360640190fd5b600b5460ff1615610b6d576040805162461bcd60e51b81526020600482015260096024820152681cdd5cdc195b99195960ba1b604482015290519081900360640190fd5b6040805162461bcd60e51b815260206004820152600a60248201526919195c1c9958d85d195960b21b604482015290519081900360640190fd5b603281565b61200581565b600d6020526000908152604090205461ffff1681565b600e6020526000908152604090205460ff1681565b60045460070b81565b60025481565b600a602052600090815260409020546001600160401b031681565b60096020526000908152604090205460ff1681565b61100181565b603881565b61200681565b61200081565b60005460ff16610c78576040805162461bcd60e51b81526020600482015260196024820152600080516020611769833981519152604482015290519081900360640190fd5b6040805163569e4ed360e11b815233600482015290516000916110009163ad3c9da691602480820192602092909190829003018186803b158015610cbb57600080fd5b505afa158015610ccf573d6000803e3d6000fd5b505050506040513d6020811015610ce557600080fd5b505160408051633d42651560e11b8152905191925060009161100091637a84ca2a916004808301926020929190829003018186803b158015610d2657600080fd5b505afa158015610d3a573d6000803e3d6000fd5b505050506040513d6020811015610d5057600080fd5b5051905080610d5d575060155b600082118015610d6d5750808211155b610b6d576040805162461bcd60e51b815260206004820152600b60248201526a1b9bdd0818d8589a5b995d60aa1b604482015290519081900360640190fd5b600c602052600090815260409020805460019091015461ffff8216916201000090046001600160801b03169083565b6005602052600090815260409020546001600160a01b031681565b61100581565b60035481565b61100881565b61200381565b60005460ff16610e53576040805162461bcd60e51b81526020600482015260196024820152600080516020611769833981519152604482015290519081900360640190fd5b60408051630a83aaa960e31b815233600482015290516110069163541d5548916024808301926020929190829003018186803b158015610e9257600080fd5b505afa158015610ea6573d6000803e3d6000fd5b505050506040513d6020811015610ebc57600080fd5b5051610f0f576040805162461bcd60e51b815260206004820152601f60248201527f746865206d73672073656e646572206973206e6f7420612072656c6179657200604482015290519081900360640190fd5b60ff8116600090815260086020526040902054829082906001600160401b039081169083168114610f7f576040805162461bcd60e51b815260206004820152601560248201527439b2b8bab2b731b2903737ba1034b71037b93232b960591b604482015290519081900360640190fd5b60ff8216600090815260086020908152604091829020805467ffffffffffffffff1916600185016001600160401b039081169190911790915582516337d7f9c160e21b81529089166004820152915188926110039263df5fe70492602480840193829003018186803b158015610ff457600080fd5b505afa158015611008573d6000803e3d6000fd5b505050506040513d602081101561101e57600080fd5b505161105b5760405162461bcd60e51b81526004018080602001828103825260238152602001806117896023913960400191505060405180910390fd5b60ff851660009081526005602052604090205485906001600160a01b03166110c5576040805162461bcd60e51b815260206004820152601860248201527718da185b9b995b081a5cc81b9bdd081cdd5c1c1bdc9d195960421b604482015290519081900360640190fd5b60ff86166000908152600a6020526040902054889087906001600160401b03908116908316101561112e576040805162461bcd60e51b815260206004820152600e60248201526d3a37b79037b632103432b0b232b960911b604482015290519081900360640190fd5b60ff81166000908152600a60205260409020546001600160401b03838116911614610b295760ff8181166000908152600a60205260409020805467ffffffffffffffff19166001600160401b038516179055600b541615610b6d576040805162461bcd60e51b81526020600482015260096024820152681cdd5cdc195b99195960ba1b604482015290519081900360640190fd5b61100781565b61100681565b60005460ff1681565b61200281565b61300081565b600081565b3361100714610b295760405162461bcd60e51b815260040180806020018281038252602e81526020018061173b602e913960400191505060405180910390fd5b6008602052600090815260409020546001600160401b031681565b61100281565b60005460ff1661128e576040805162461bcd60e51b81526020600482015260196024820152600080516020611769833981519152604482015290519081900360640190fd5b6040805163569e4ed360e11b815233600482015290516000916110009163ad3c9da691602480820192602092909190829003018186803b1580156112d157600080fd5b505afa1580156112e5573d6000803e3d6000fd5b505050506040513d60208110156112fb57600080fd5b505160408051633d42651560e11b8152905191925060009161100091637a84ca2a916004808301926020929190829003018186803b15801561133c57600080fd5b505afa158015611350573d6000803e3d6000fd5b505050506040513d602081101561136657600080fd5b5051905080611373575060155b6000821180156113835750808211155b6113c2576040805162461bcd60e51b815260206004820152600b60248201526a1b9bdd0818d8589a5b995d60aa1b604482015290519081900360640190fd5b600b5460ff16610b6d576040805162461bcd60e51b815260206004820152600d60248201526c1b9bdd081cdd5cdc195b991959609a1b604482015290519081900360640190fd5b600660209081526000928352604080842090915290825290205460ff1681565b61100381565b61200481565b60005460ff161561148d576040805162461bcd60e51b815260206004820152601960248201527f74686520636f6e747261637420616c726561647920696e697400000000000000604482015290519081900360640190fd5b603260019081556004805467ffffffffffffffff19166001600160401b03179055600060028190556003819055805460ff19169091179055565b6007602052600090815260409020546001600160401b031681565b60005460ff16611527576040805162461bcd60e51b81526020600482015260196024820152600080516020611769833981519152604482015290519081900360640190fd5b6040805163569e4ed360e11b815233600482015290516000916110009163ad3c9da691602480820192602092909190829003018186803b15801561156a57600080fd5b505afa15801561157e573d6000803e3d6000fd5b505050506040513d602081101561159457600080fd5b505160408051633d42651560e11b8152905191925060009161100091637a84ca2a916004808301926020929190829003018186803b1580156115d557600080fd5b505afa1580156115e9573d6000803e3d6000fd5b505050506040513d60208110156115ff57600080fd5b505190508061160c575060155b60008211801561161c5750808211155b610b29576040805162461bcd60e51b815260206004820152600b60248201526a1b9bdd0818d8589a5b995d60aa1b604482015290519081900360640190fd5b60005460ff166116a0576040805162461bcd60e51b81526020600482015260196024820152600080516020611769833981519152604482015290519081900360640190fd5b33600090815260066020908152604080832060ff8089168552925290912054859116610b6d5760405162461bcd60e51b815260040180806020018281038252603181526020018061170a6031913960400191505060405180910390fd5b61100081565b6110048156fe74686520636f6e747261637420616e64206368616e6e656c2068617665206e6f74206265656e2072656769737465726564746865206d6573736167652073656e646572206d75737420626520676f7665726e616e636520636f6e747261637474686520636f6e7472616374206e6f7420696e697420796574000000000000006c6967687420636c69656e74206e6f742073796e632074686520626c6f636b20796574a164736f6c6343000604000a \ No newline at end of file diff --git a/core/systemcontracts/pascal/mainnet/GovHubContract b/core/systemcontracts/pascal/mainnet/GovHubContract new file mode 100644 index 0000000000..35555241b0 --- /dev/null +++ b/core/systemcontracts/pascal/mainnet/GovHubContract @@ -0,0 +1 @@ +608060405234801561001057600080fd5b506004361061018e5760003560e01c80639ab1a373116100de578063ab51bb9611610097578063dc927faf11610071578063dc927faf146104b1578063df8079e9146104b9578063f9a2bbc7146104c1578063fd6a6879146104c95761018e565b8063ab51bb96146104a1578063c81b1662146104a9578063c8509d811461031c5761018e565b80639ab1a3731461045d5780639dc0926214610465578063a1a11bf51461046d578063a78abc1614610475578063aa82dce114610491578063aad56063146104995761018e565b806351b4dce31161014b57806375d47a0a1161012557806375d47a0a1461030c5780637e434d5414610314578063831d65d11461031c57806388e4194e146103965761018e565b806351b4dce3146102f457806351e80672146102fc5780636e47b482146103045761018e565b80630e2374a5146101935780631182b875146101b757806328087028146102a45780633a21baae146102ac57806343756e5c146102cd578063493279b1146102d5575b600080fd5b61019b6104d1565b604080516001600160a01b039092168252519081900360200190f35b61022f600480360360408110156101cd57600080fd5b60ff8235169190810190604081016020820135600160201b8111156101f157600080fd5b82018360208201111561020357600080fd5b803590602001918460018302840111600160201b8311171561022457600080fd5b5090925090506104d7565b6040805160208082528351818301528351919283929083019185019080838360005b83811015610269578181015183820152602001610251565b50505050905090810190601f1680156102965780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b61019b610553565b6102b4610559565b6040805163ffffffff9092168252519081900360200190f35b61019b61055e565b6102dd610564565b6040805161ffff9092168252519081900360200190f35b61019b610569565b61019b61056f565b61019b610575565b61019b61057b565b61019b610581565b6103946004803603604081101561033257600080fd5b60ff8235169190810190604081016020820135600160201b81111561035657600080fd5b82018360208201111561036857600080fd5b803590602001918460018302840111600160201b8311171561038957600080fd5b509092509050610587565b005b610394600480360360608110156103ac57600080fd5b810190602081018135600160201b8111156103c657600080fd5b8201836020820111156103d857600080fd5b803590602001918460018302840111600160201b831117156103f957600080fd5b919390929091602081019035600160201b81111561041657600080fd5b82018360208201111561042857600080fd5b803590602001918460018302840111600160201b8311171561044957600080fd5b9193509150356001600160a01b03166105c7565b6102b46106b2565b61019b6106b7565b61019b6106bd565b61047d6106c3565b604080519115158252519081900360200190f35b61019b6106cc565b61019b6106d2565b6102b46106d8565b61019b6106dd565b61019b6106e3565b61019b6106e9565b61019b6106ef565b61019b6106f5565b61200181565b606033612000146105195760405162461bcd60e51b815260040180806020018281038252602f815260200180610ace602f913960400191505060405180910390fd5b6040805162461bcd60e51b815260206004820152600a60248201526919195c1c9958d85d195960b21b604482015290519081900360640190fd5b61200581565b606681565b61100181565b603881565b61200681565b61200081565b61100581565b61100881565b61200381565b33612000146105195760405162461bcd60e51b815260040180806020018281038252602f815260200180610ace602f913960400191505060405180910390fd5b33612006146106075760405162461bcd60e51b8152600401808060200182810382526031815260200180610afd6031913960400191505060405180910390fd5b61060f610aa3565b604051806060016040528087878080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250505090825250604080516020601f8801819004810282018101909252868152918101919087908790819084018382808284376000920191909152505050908252506001600160a01b03841660209091015290506106a9816106fb565b50505050505050565b606581565b61100781565b61100681565b60005460ff1681565b61200281565b61300081565b600081565b61100281565b61100381565b61200481565b61100081565b61100481565b600061070a8260400151610a9d565b61077657604080516020808252601c908201527f74686520746172676574206973206e6f74206120636f6e7472616374000000008183015290517f70e72399380dcfb0338abc03dc8d47f9f470ada8e769c9a78d644ea97385ecb29181900360600190a1506065610a98565b81604001516001600160a01b031663ac431751836000015184602001516040518363ffffffff1660e01b8152600401808060200180602001838103835285818151815260200191508051906020019080838360005b838110156107e35781810151838201526020016107cb565b50505050905090810190601f1680156108105780820380516001836020036101000a031916815260200191505b50838103825284518152845160209182019186019080838360005b8381101561084357818101518382015260200161082b565b50505050905090810190601f1680156108705780820380516001836020036101000a031916815260200191505b50945050505050600060405180830381600087803b15801561089157600080fd5b505af19250505080156108a2575060015b610a94576040516000815260443d10156108be5750600061095b565b60046000803e60005160e01c6308c379a081146108df57600091505061095b565b60043d036004833e81513d602482011167ffffffffffffffff8211171561090b5760009250505061095b565b808301805167ffffffffffffffff81111561092d57600094505050505061095b565b8060208301013d860181111561094b5760009550505050505061095b565b601f01601f191660405250925050505b806109665750610a09565b7f70e72399380dcfb0338abc03dc8d47f9f470ada8e769c9a78d644ea97385ecb2816040518080602001828103825283818151815260200191508051906020019080838360005b838110156109c55781810151838201526020016109ad565b50505050905090810190601f1680156109f25780820380516001836020036101000a031916815260200191505b509250505060405180910390a16066915050610a98565b3d808015610a33576040519150601f19603f3d011682016040523d82523d6000602084013e610a38565b606091505b5060408051602080825283518183015283517f1279f84165b4fd69c35e1f338ff107231b036c655cd1688851e011ce617c4e8d9385939283929183019190850190808383600083156109c55781810151838201526020016109ad565b5060005b919050565b3b151590565b6040518060600160405280606081526020016060815260200160006001600160a01b03168152509056fe746865206d6573736167652073656e646572206d7573742062652063726f737320636861696e20636f6e7472616374746865206d73672073656e646572206d75737420626520676f7665726e6f722074696d656c6f636b20636f6e7472616374a164736f6c6343000604000a \ No newline at end of file diff --git a/core/systemcontracts/pascal/mainnet/GovTokenContract b/core/systemcontracts/pascal/mainnet/GovTokenContract new file mode 100644 index 0000000000..313af63673 --- /dev/null +++ b/core/systemcontracts/pascal/mainnet/GovTokenContract @@ -0,0 +1 @@ +608060405234801561001057600080fd5b50600436106101f05760003560e01c806370a082311161010f5780639ab24eb0116100a2578063d505accf11610071578063d505accf14610479578063dd62ed3e1461048c578063e5ed5b1e1461049f578063f1127ed8146104b257600080fd5b80639ab24eb01461042d578063a457c2d714610440578063a9059cbb14610453578063c3cda5201461046657600080fd5b806384b0196e116100de57806384b0196e146103d85780638e539e8c146103f357806391ddadf41461040657806395d89b411461042557600080fd5b806370a082311461038657806379cc6790146103af5780637ecebe00146103bd5780638129fc1c146103d057600080fd5b806339509351116101875780634bf5d7e9116101565780634bf5d7e9146102ff578063587cde1e146103075780635c19a95c1461034b5780636fcfff451461035e57600080fd5b806339509351146102b35780633a46b1a8146102c657806342966c68146102d957806344840775146102ec57600080fd5b806323b872dd116101c357806323b872dd146102745780633041949b14610287578063313ce5671461029c5780633644e515146102ab57600080fd5b8063039c91fc146101f557806306fdde0314610234578063095ea7b31461024957806318160ddd1461026c575b600080fd5b61022161020336600461209b565b61013060209081526000928352604080842090915290825290205481565b6040519081526020015b60405180910390f35b61023c6104ef565b60405161022b9190612114565b61025c610257366004612127565b610581565b604051901515815260200161022b565b603554610221565b61025c610282366004612151565b61059b565b61029a61029536600461209b565b6105bf565b005b6040516012815260200161022b565b6102216105f8565b61025c6102c1366004612127565b610607565b6102216102d4366004612127565b610629565b61029a6102e736600461218d565b6106ae565b61029a6102fa3660046121a6565b6106c7565b61023c610740565b61033361031536600461222a565b6001600160a01b03908116600090815260fe60205260409020541690565b6040516001600160a01b03909116815260200161022b565b61029a61035936600461222a565b6107d8565b61037161036c36600461222a565b6107e5565b60405163ffffffff909116815260200161022b565b61022161039436600461222a565b6001600160a01b031660009081526033602052604090205490565b61029a6102e7366004612127565b6102216103cb36600461222a565b610807565b61029a610825565b6103e0610a05565b60405161022b9796959493929190612245565b61022161040136600461218d565b610aa3565b61040e610b0b565b60405165ffffffffffff909116815260200161022b565b61023c610b16565b61022161043b36600461222a565b610b25565b61025c61044e366004612127565b610ba7565b61025c610461366004612127565b610c22565b61029a6104743660046122ec565b610c30565b61029a610487366004612344565b610d66565b61022161049a36600461209b565b610eca565b61029a6104ad36600461209b565b610ef5565b6104c56104c03660046123ae565b610f25565b60408051825163ffffffff1681526020928301516001600160e01b0316928101929092520161022b565b6060603680546104fe906123ee565b80601f016020809104026020016040519081016040528092919081815260200182805461052a906123ee565b80156105775780601f1061054c57610100808354040283529160200191610577565b820191906000526020600020905b81548152906001019060200180831161055a57829003601f168201915b5050505050905090565b60003361058f818585610fa9565b60019150505b92915050565b6000336105a9858285610fc2565b6105b485858561103c565b506001949350505050565b33612002146105ea57604051630f22c43960e41b815261200260048201526024015b60405180910390fd5b6105f48282611055565b5050565b6000610602611185565b905090565b60003361058f81858561061a8383610eca565b6106249190612438565b610fa9565b6000610633610b0b565b65ffffffffffff1682106106855760405162461bcd60e51b815260206004820152601960248201527804552433230566f7465733a20667574757265206c6f6f6b757603c1b60448201526064016105e1565b6001600160a01b038316600090815260ff602052604090206106a7908361118f565b9392505050565b60405163e5d8776760e01b815260040160405180910390fd5b33612002146106ed57604051630f22c43960e41b815261200260048201526024016105e1565b8160005b818110156107395761072985858381811061070e5761070e61244b565b9050602002016020810190610723919061222a565b84611055565b61073281612461565b90506106f1565b5050505050565b60604361074b610b0b565b65ffffffffffff16146107a05760405162461bcd60e51b815260206004820152601d60248201527f4552433230566f7465733a2062726f6b656e20636c6f636b206d6f646500000060448201526064016105e1565b5060408051808201909152601d81527f6d6f64653d626c6f636b6e756d6265722666726f6d3d64656661756c74000000602082015290565b6107e23382611278565b50565b6001600160a01b038116600090815260ff6020526040812054610595906112f2565b6001600160a01b038116600090815260cb6020526040812054610595565b600054610100900460ff16158080156108455750600054600160ff909116105b8061085f5750303b15801561085f575060005460ff166001145b6108c25760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084016105e1565b6000805460ff1916600117905580156108e5576000805461ff0019166101001790555b3341146109055760405163022d8c9560e31b815260040160405180910390fd5b3a15610924576040516383f1b1d360e01b815260040160405180910390fd5b610978604051806040016040528060148152602001732129a19023b7bb32b93730b731b2902a37b5b2b760611b8152506040518060400160405280600681526020016533b7bb21272160d11b81525061135b565b61098061138c565b6109b5604051806040016040528060148152602001732129a19023b7bb32b93730b731b2902a37b5b2b760611b8152506113b5565b6109bd61138c565b80156107e2576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a150565b6000606080600080600060606097546000801b148015610a255750609854155b610a695760405162461bcd60e51b81526020600482015260156024820152741152540dcc4c8e88155b9a5b9a5d1a585b1a5e9959605a1b60448201526064016105e1565b610a716113ff565b610a7961140e565b60408051600080825260208201909252600f60f81b9b939a50919850469750309650945092509050565b6000610aad610b0b565b65ffffffffffff168210610aff5760405162461bcd60e51b815260206004820152601960248201527804552433230566f7465733a20667574757265206c6f6f6b757603c1b60448201526064016105e1565b6105956101008361118f565b60006106024361141d565b6060603780546104fe906123ee565b6001600160a01b038116600090815260ff60205260408120548015610b94576001600160a01b038316600090815260ff6020526040902080546000198301908110610b7257610b7261244b565b60009182526020909120015464010000000090046001600160e01b0316610b97565b60005b6001600160e01b03169392505050565b60003381610bb58286610eca565b905083811015610c155760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b60648201526084016105e1565b6105b48286868403610fa9565b60003361058f81858561103c565b83421115610c805760405162461bcd60e51b815260206004820152601d60248201527f4552433230566f7465733a207369676e6174757265206578706972656400000060448201526064016105e1565b604080517fe48329057bfd03d55e49b547132e39cffd9c1820ad7b9d4c5307691425d15adf60208201526001600160a01b038816918101919091526060810186905260808101859052600090610cfa90610cf29060a00160405160208183030381529060405280519060200120611484565b8585856114b1565b9050610d05816114d9565b8614610d535760405162461bcd60e51b815260206004820152601960248201527f4552433230566f7465733a20696e76616c6964206e6f6e63650000000000000060448201526064016105e1565b610d5d8188611278565b50505050505050565b83421115610db65760405162461bcd60e51b815260206004820152601d60248201527f45524332305065726d69743a206578706972656420646561646c696e6500000060448201526064016105e1565b60007f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c9888888610de58c6114d9565b6040805160208101969096526001600160a01b0394851690860152929091166060840152608083015260a082015260c0810186905260e0016040516020818303038152906040528051906020012090506000610e4082611484565b90506000610e50828787876114b1565b9050896001600160a01b0316816001600160a01b031614610eb35760405162461bcd60e51b815260206004820152601e60248201527f45524332305065726d69743a20696e76616c6964207369676e6174757265000060448201526064016105e1565b610ebe8a8a8a610fa9565b50505050505050505050565b6001600160a01b03918216600090815260346020908152604080832093909416825291909152205490565b3361200214610f1b57604051630f22c43960e41b815261200260048201526024016105e1565b6105f48282611278565b60408051808201909152600080825260208201526001600160a01b038316600090815260ff60205260409020805463ffffffff8416908110610f6957610f6961244b565b60009182526020918290206040805180820190915291015463ffffffff8116825264010000000090046001600160e01b0316918101919091529392505050565b604051632028747160e01b815260040160405180910390fd5b6000610fce8484610eca565b9050600019811461103657818110156110295760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e636500000060448201526064016105e1565b6110368484848403610fa9565b50505050565b604051638cd22d1960e01b815260040160405180910390fd5b604051630913db4760e01b81526001600160a01b03828116600483015260009190841690630913db4790602401602060405180830381865afa15801561109f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110c39190612490565b6001600160a01b03808516600090815261013060209081526040808320938716835292905220549091508181101561113c57600061110182846124a9565b6001600160a01b0380871660009081526101306020908152604080832093891683529290522084905590506111368482611501565b50611036565b8181111561103657600061115083836124a9565b6001600160a01b038087166000908152610130602090815260408083209389168352929052208490559050610739848261150b565b6000610602611515565b8154600090818160058111156111e95760006111aa84611589565b6111b490856124a9565b600088815260209020909150869082015463ffffffff1611156111d9578091506111e7565b6111e4816001612438565b92505b505b808210156112365760006111fd8383611671565b600088815260209020909150869082015463ffffffff16111561122257809150611230565b61122d816001612438565b92505b506111e9565b8015611262576000868152602090208101600019015464010000000090046001600160e01b0316611265565b60005b6001600160e01b03169695505050505050565b6001600160a01b03828116600081815260fe6020818152604080842080546033845282862054949093528787166001600160a01b03198416811790915590519190951694919391928592917f3134e8a2e6d97e929a7e54011ea5485d7d196dd5f0ba4d4ef95803e8e3fc257f9190a461103682848361168c565b600063ffffffff8211156113575760405162461bcd60e51b815260206004820152602660248201527f53616665436173743a2076616c756520646f65736e27742066697420696e203360448201526532206269747360d01b60648201526084016105e1565b5090565b600054610100900460ff166113825760405162461bcd60e51b81526004016105e1906124bc565b6105f482826117ca565b600054610100900460ff166113b35760405162461bcd60e51b81526004016105e1906124bc565b565b600054610100900460ff166113dc5760405162461bcd60e51b81526004016105e1906124bc565b6107e281604051806040016040528060018152602001603160f81b81525061180a565b6060609980546104fe906123ee565b6060609a80546104fe906123ee565b600065ffffffffffff8211156113575760405162461bcd60e51b815260206004820152602660248201527f53616665436173743a2076616c756520646f65736e27742066697420696e203460448201526538206269747360d01b60648201526084016105e1565b6000610595611491611185565b8360405161190160f01b8152600281019290925260228201526042902090565b60008060006114c287878787611859565b915091506114cf8161191d565b5095945050505050565b6001600160a01b038116600090815260cb602052604090208054600181018255905b50919050565b6105f48282611a67565b6105f48282611af2565b60007f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f611540611b0b565b611548611b64565b60408051602081019490945283019190915260608201524660808201523060a082015260c00160405160208183030381529060405280519060200120905090565b60008160000361159b57506000919050565b600060016115a884611b95565b901c6001901b905060018184816115c1576115c1612507565b048201901c905060018184816115d9576115d9612507565b048201901c905060018184816115f1576115f1612507565b048201901c9050600181848161160957611609612507565b048201901c9050600181848161162157611621612507565b048201901c9050600181848161163957611639612507565b048201901c9050600181848161165157611651612507565b048201901c90506106a78182858161166b5761166b612507565b04611c29565b6000611680600284841861251d565b6106a790848416612438565b816001600160a01b0316836001600160a01b0316141580156116ae5750600081115b156117c5576001600160a01b0383161561173c576001600160a01b038316600090815260ff6020526040812081906116e990611c3f85611c4b565b91509150846001600160a01b03167fdec2bacdd2f05b59de34da9b523dff8be42e5e38e818c82fdb0bae774387a7248383604051611731929190918252602082015260400190565b60405180910390a250505b6001600160a01b038216156117c5576001600160a01b038216600090815260ff60205260408120819061177290611dc085611c4b565b91509150836001600160a01b03167fdec2bacdd2f05b59de34da9b523dff8be42e5e38e818c82fdb0bae774387a72483836040516117ba929190918252602082015260400190565b60405180910390a250505b505050565b600054610100900460ff166117f15760405162461bcd60e51b81526004016105e1906124bc565b60366117fd838261258d565b5060376117c5828261258d565b600054610100900460ff166118315760405162461bcd60e51b81526004016105e1906124bc565b609961183d838261258d565b50609a61184a828261258d565b50506000609781905560985550565b6000807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a08311156118905750600090506003611914565b6040805160008082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa1580156118e4573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b03811661190d57600060019250925050611914565b9150600090505b94509492505050565b60008160048111156119315761193161264d565b036119395750565b600181600481111561194d5761194d61264d565b0361199a5760405162461bcd60e51b815260206004820152601860248201527f45434453413a20696e76616c6964207369676e6174757265000000000000000060448201526064016105e1565b60028160048111156119ae576119ae61264d565b036119fb5760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e6774680060448201526064016105e1565b6003816004811115611a0f57611a0f61264d565b036107e25760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b60648201526084016105e1565b611a718282611dcc565b6035546001600160e01b031015611ae35760405162461bcd60e51b815260206004820152603060248201527f4552433230566f7465733a20746f74616c20737570706c79207269736b73206f60448201526f766572666c6f77696e6720766f74657360801b60648201526084016105e1565b611036610100611dc083611c4b565b611afc8282611e95565b611036610100611c3f83611c4b565b600080611b166113ff565b805190915015611b2d578051602090910120919050565b6097548015611b3c5792915050565b7fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a4709250505090565b600080611b6f61140e565b805190915015611b86578051602090910120919050565b6098548015611b3c5792915050565b600080608083901c15611baa57608092831c92015b604083901c15611bbc57604092831c92015b602083901c15611bce57602092831c92015b601083901c15611be057601092831c92015b600883901c15611bf257600892831c92015b600483901c15611c0457600492831c92015b600283901c15611c1657600292831c92015b600183901c156105955760010192915050565b6000818310611c3857816106a7565b5090919050565b60006106a782846124a9565b82546000908190818115611c985760008781526020902082016000190160408051808201909152905463ffffffff8116825264010000000090046001600160e01b03166020820152611cad565b60408051808201909152600080825260208201525b905080602001516001600160e01b03169350611ccd84868863ffffffff16565b9250600082118015611cf75750611ce2610b0b565b65ffffffffffff16816000015163ffffffff16145b15611d3c57611d0583611fd0565b60008881526020902083016000190180546001600160e01b03929092166401000000000263ffffffff909216919091179055611db6565b866040518060400160405280611d60611d53610b0b565b65ffffffffffff166112f2565b63ffffffff168152602001611d7486611fd0565b6001600160e01b0390811690915282546001810184556000938452602093849020835194909301519091166401000000000263ffffffff909316929092179101555b5050935093915050565b60006106a78284612438565b6001600160a01b038216611e225760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f20616464726573730060448201526064016105e1565b8060356000828254611e349190612438565b90915550506001600160a01b0382166000818152603360209081526040808320805486019055518481527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a36105f460008383612039565b6001600160a01b038216611ef55760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b60648201526084016105e1565b6001600160a01b03821660009081526033602052604090205481811015611f695760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e604482015261636560f01b60648201526084016105e1565b6001600160a01b03831660008181526033602090815260408083208686039055603580548790039055518581529192917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a36117c583600084612039565b60006001600160e01b038211156113575760405162461bcd60e51b815260206004820152602760248201527f53616665436173743a2076616c756520646f65736e27742066697420696e20326044820152663234206269747360c81b60648201526084016105e1565b6117c58383836001600160a01b03808416600090815260fe60205260409020546117c591166001600160a01b03808516600090815260fe6020526040902054168361168c565b80356001600160a01b038116811461209657600080fd5b919050565b600080604083850312156120ae57600080fd5b6120b78361207f565b91506120c56020840161207f565b90509250929050565b6000815180845260005b818110156120f4576020818501810151868301820152016120d8565b506000602082860101526020601f19601f83011685010191505092915050565b6020815260006106a760208301846120ce565b6000806040838503121561213a57600080fd5b6121438361207f565b946020939093013593505050565b60008060006060848603121561216657600080fd5b61216f8461207f565b925061217d6020850161207f565b9150604084013590509250925092565b60006020828403121561219f57600080fd5b5035919050565b6000806000604084860312156121bb57600080fd5b833567ffffffffffffffff808211156121d357600080fd5b818601915086601f8301126121e757600080fd5b8135818111156121f657600080fd5b8760208260051b850101111561220b57600080fd5b602092830195509350612221918601905061207f565b90509250925092565b60006020828403121561223c57600080fd5b6106a78261207f565b60ff60f81b881681526000602060e08184015261226560e084018a6120ce565b8381036040850152612277818a6120ce565b606085018990526001600160a01b038816608086015260a0850187905284810360c0860152855180825283870192509083019060005b818110156122c9578351835292840192918401916001016122ad565b50909c9b505050505050505050505050565b803560ff8116811461209657600080fd5b60008060008060008060c0878903121561230557600080fd5b61230e8761207f565b9550602087013594506040870135935061232a606088016122db565b92506080870135915060a087013590509295509295509295565b600080600080600080600060e0888a03121561235f57600080fd5b6123688861207f565b96506123766020890161207f565b95506040880135945060608801359350612392608089016122db565b925060a0880135915060c0880135905092959891949750929550565b600080604083850312156123c157600080fd5b6123ca8361207f565b9150602083013563ffffffff811681146123e357600080fd5b809150509250929050565b600181811c9082168061240257607f821691505b6020821081036114fb57634e487b7160e01b600052602260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b8082018082111561059557610595612422565b634e487b7160e01b600052603260045260246000fd5b60006001820161247357612473612422565b5060010190565b634e487b7160e01b600052604160045260246000fd5b6000602082840312156124a257600080fd5b5051919050565b8181038181111561059557610595612422565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b634e487b7160e01b600052601260045260246000fd5b60008261253a57634e487b7160e01b600052601260045260246000fd5b500490565b601f8211156117c557600081815260208120601f850160051c810160208610156125665750805b601f850160051c820191505b8181101561258557828155600101612572565b505050505050565b815167ffffffffffffffff8111156125a7576125a761247a565b6125bb816125b584546123ee565b8461253f565b602080601f8311600181146125f057600084156125d85750858301515b600019600386901b1c1916600185901b178555612585565b600085815260208120601f198616915b8281101561261f57888601518255948401946001909101908401612600565b508582101561263d5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b634e487b7160e01b600052602160045260246000fdfea164736f6c6343000811000a \ No newline at end of file diff --git a/core/systemcontracts/pascal/mainnet/GovernorContract b/core/systemcontracts/pascal/mainnet/GovernorContract new file mode 100644 index 0000000000..42a2ceae66 --- /dev/null +++ b/core/systemcontracts/pascal/mainnet/GovernorContract @@ -0,0 +1 @@ +6080604052600436106103dd5760003560e01c80637b3c71d3116101fd578063c170ec0b11610118578063deaaa7cc116100ab578063ece40cc11161007a578063ece40cc114610de9578063f23a6e6114610e09578063f8ce560a14610e35578063fc0c546a14610e55578063fe0d94c114610e7657600080fd5b8063deaaa7cc14610caa578063e23a9a5214610cde578063ea0217cf14610da9578063eb9019d414610dc957600080fd5b8063d33219b4116100e7578063d33219b414610c05578063da95691a14610c24578063dd4e2ba514610c44578063ddf0b00914610c8a57600080fd5b8063c170ec0b14610b97578063c28bc2fa14610bb2578063c59057e414610bc5578063d07f91e914610be557600080fd5b8063a7713a7011610190578063b187bd261161015f578063b187bd2614610b18578063b58131b014610b36578063bc197c8114610b4b578063c01f9e3714610b7757600080fd5b8063a7713a7014610aa3578063a890c91014610ab8578063ab58fb8e14610ad8578063ac43175114610af857600080fd5b806384b0196e116101cc57806384b0196e14610a1b57806391ddadf414610a4357806397c3d33414610a6f5780639a802a6d14610a8357600080fd5b80637b3c71d3146109b15780637d5e81e2146109d15780638129fc1c146109f15780638456cb5914610a0657600080fd5b806332b8113e116102f85780634838d1651161028b57806354fd4d501161025a57806354fd4d501461090757806356781388146109315780635f398a141461095157806360c4247f1461097157806370b0f6601461099157600080fd5b80634838d165146108715780634a49ac4c146108a15780634bf5d7e9146108c1578063533ddd14146108d657600080fd5b806340e58ee5116102c757806340e58ee5146107c6578063417c73a7146107e65780634385963214610806578063452115d61461085157600080fd5b806332b8113e1461073a5780633932abb1146107635780633bccf4fd146107795780633e4f49e61461079957600080fd5b8063150b7a02116103705780632656227d1161033f5780632656227d1461068c5780632d63f6931461069f5780632fe3e261146106d6578063328dd9821461070a57600080fd5b8063150b7a02146105e5578063160cbed71461062957806317977c611461064957806324bc1a641461067757600080fd5b8063046f7da2116103ac578063046f7da21461053857806306f3f9e61461054d57806306fdde031461056d578063143489d01461058f57600080fd5b8063013cf08b1461044d57806301ffc9a7146104c857806302a251a3146104f8578063034201811461051857600080fd5b3661044857306103eb610e89565b6001600160a01b0316146104465760405162461bcd60e51b815260206004820152601f60248201527f476f7665726e6f723a206d7573742073656e6420746f206578656375746f720060448201526064015b60405180910390fd5b005b600080fd5b34801561045957600080fd5b5061046d610468366004615c39565b610ea3565b604080519a8b526001600160a01b0390991660208b0152978901969096526060880194909452608087019290925260a086015260c085015260e084015215156101008301521515610120820152610140015b60405180910390f35b3480156104d457600080fd5b506104e86104e3366004615c52565b610f5e565b60405190151581526020016104bf565b34801561050457600080fd5b50610195545b6040519081526020016104bf565b34801561052457600080fd5b5061050a610533366004615d98565b610f6f565b34801561054457600080fd5b50610446611067565b34801561055957600080fd5b50610446610568366004615c39565b6110f7565b34801561057957600080fd5b50610582611182565b6040516104bf9190615e8e565b34801561059b57600080fd5b506105cd6105aa366004615c39565b60009081526101636020526040902054600160401b90046001600160a01b031690565b6040516001600160a01b0390911681526020016104bf565b3480156105f157600080fd5b50610610610600366004615eb6565b630a85bd0160e11b949350505050565b6040516001600160e01b031990911681526020016104bf565b34801561063557600080fd5b5061050a61064436600461608d565b611215565b34801561065557600080fd5b5061050a61066436600461611c565b6102c36020526000908152604090205481565b34801561068357600080fd5b5061050a611300565b61050a61069a36600461608d565b611326565b3480156106ab57600080fd5b5061050a6106ba366004615c39565b600090815261016360205260409020546001600160401b031690565b3480156106e257600080fd5b5061050a7fb3b3f3b703cd84ce352197dcff232b1b5d3cfb2025ce47cf04742d0651f1af8881565b34801561071657600080fd5b5061072a610725366004615c39565b611419565b6040516104bf9493929190616202565b34801561074657600080fd5b5061028f546040516001600160401b0390911681526020016104bf565b34801561076f57600080fd5b506101945461050a565b34801561078557600080fd5b5061050a61079436600461624f565b6116ab565b3480156107a557600080fd5b506107b96107b4366004615c39565b611721565b6040516104bf91906162b3565b3480156107d257600080fd5b506104466107e1366004615c39565b61172c565b3480156107f257600080fd5b5061044661080136600461611c565b611757565b34801561081257600080fd5b506104e86108213660046162db565b60008281526101c6602090815260408083206001600160a01b038516845260080190915290205460ff1692915050565b34801561085d57600080fd5b5061050a61086c36600461608d565b6117d8565b34801561087d57600080fd5b506104e861088c36600461611c565b60016020526000908152604090205460ff1681565b3480156108ad57600080fd5b506104466108bc36600461611c565b6117e6565b3480156108cd57600080fd5b50610582611861565b3480156108e257600080fd5b506104e86108f136600461611c565b6102c16020526000908152604090205460ff1681565b34801561091357600080fd5b506040805180820190915260018152603160f81b6020820152610582565b34801561093d57600080fd5b5061050a61094c36600461630b565b61190e565b34801561095d57600080fd5b5061050a61096c366004616337565b611937565b34801561097d57600080fd5b5061050a61098c366004615c39565b611981565b34801561099d57600080fd5b506104466109ac366004615c39565b611a36565b3480156109bd57600080fd5b5061050a6109cc3660046163ba565b611abe565b3480156109dd57600080fd5b5061050a6109ec366004616413565b611b10565b3480156109fd57600080fd5b50610446611c2b565b348015610a1257600080fd5b50610446611e5d565b348015610a2757600080fd5b50610a30611ef3565b6040516104bf97969594939291906164b3565b348015610a4f57600080fd5b50610a58611f91565b60405165ffffffffffff90911681526020016104bf565b348015610a7b57600080fd5b50606461050a565b348015610a8f57600080fd5b5061050a610a9e366004616515565b612005565b348015610aaf57600080fd5b5061050a61201c565b348015610ac457600080fd5b50610446610ad336600461611c565b612049565b348015610ae457600080fd5b5061050a610af3366004615c39565b6120d1565b348015610b0457600080fd5b50610446610b1336600461656d565b61216d565b348015610b2457600080fd5b5060005462010000900460ff166104e8565b348015610b4257600080fd5b5061050a6128b2565b348015610b5757600080fd5b50610610610b663660046165cc565b63bc197c8160e01b95945050505050565b348015610b8357600080fd5b5061050a610b92366004615c39565b6128be565b348015610ba357600080fd5b506102c2546104e89060ff1681565b610446610bc036600461665f565b6128c9565b348015610bd157600080fd5b5061050a610be036600461608d565b6129d9565b348015610bf157600080fd5b50610446610c003660046166a2565b612a13565b348015610c1157600080fd5b5061022b546001600160a01b03166105cd565b348015610c3057600080fd5b5061050a610c3f3660046166cb565b612a9b565b348015610c5057600080fd5b5060408051808201909152601a81527f737570706f72743d627261766f2671756f72756d3d627261766f0000000000006020820152610582565b348015610c9657600080fd5b50610446610ca5366004615c39565b612b22565b348015610cb657600080fd5b5061050a7f150214d74d59b7d1e90c73fc22ef3d991dd0a76b046543d4d80ab92d2a50328f81565b348015610cea57600080fd5b50610d79610cf93660046162db565b60408051606081018252600080825260208201819052918101919091525060009182526101c6602090815260408084206001600160a01b0393909316845260089092018152918190208151606081018352905460ff8082161515835261010082041693820193909352620100009092046001600160601b03169082015290565b6040805182511515815260208084015160ff1690820152918101516001600160601b0316908201526060016104bf565b348015610db557600080fd5b50610446610dc4366004615c39565b612b45565b348015610dd557600080fd5b5061050a610de436600461676c565b612bcd565b348015610df557600080fd5b50610446610e04366004615c39565b612bee565b348015610e1557600080fd5b50610610610e24366004616798565b63f23a6e6160e01b95945050505050565b348015610e4157600080fd5b5061050a610e50366004615c39565b612c76565b348015610e6157600080fd5b506101f8546105cd906001600160a01b031681565b610446610e84366004615c39565b612d05565b6000610e9e61022b546001600160a01b031690565b905090565b8060008080808080808080610eb78a6120d1565b60008c815261016360205260409020549098506001600160401b03169650610ede8b6128be565b60008c81526101c66020526040812080546005820154600683015460078401546001600160a01b039093169e50949a509850929650919450610f1f8d611721565b90506002816007811115610f3557610f3561629d565b1493506007816007811115610f4c57610f4c61629d565b14925050509193959799509193959799565b6000610f6982612d28565b92915050565b60008061101361100b7fb3b3f3b703cd84ce352197dcff232b1b5d3cfb2025ce47cf04742d0651f1af888c8c8c8c604051610fab929190616800565b60405180910390208b80519060200120604051602001610ff0959493929190948552602085019390935260ff9190911660408401526060830152608082015260a00190565b60405160208183030381529060405280519060200120612d4d565b868686612d7a565b90506110598a828b8b8b8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152508d9250612d98915050565b9a9950505050505050505050565b600054630100000090046001600160a01b03163314611099576040516306fbb1e360e01b815260040160405180910390fd5b60005462010000900460ff166110c257604051636cd6020160e01b815260040160405180910390fd5b6000805462ff0000191681556040517f62451d457bc659158be6e6247f56ec1df424a5c7597f71c20c2bc44e0965c8f99190a1565b6110ff610e89565b6001600160a01b0316336001600160a01b03161461112f5760405162461bcd60e51b815260040161043d90616810565b30611138610e89565b6001600160a01b0316146111765760008036604051611158929190616800565b604051809103902090505b8061116f610164612e01565b0361116357505b61117f81612e80565b50565b6060610162805461119290616847565b80601f01602080910402602001604051908101604052809291908181526020018280546111be90616847565b801561120b5780601f106111e05761010080835404028352916020019161120b565b820191906000526020600020905b8154815290600101906020018083116111ee57829003601f168201915b5050505050905090565b6000805462010000900460ff161561124057604051631785c68160e01b815260040160405180910390fd5b3360009081526001602052604090205460ff16156112715760405163b1d02c3d60e01b815260040160405180910390fd5b60005b85518110156112ea576102c1600087838151811061129457611294616881565b6020908102919091018101516001600160a01b031682528101919091526040016000205460ff166112d857604051630b094f2760e31b815260040160405180910390fd5b806112e2816168ad565b915050611274565b506112f785858585612ff1565b95945050505050565b6000610e9e600161130f611f91565b61131991906168c6565b65ffffffffffff16612c76565b600080611335868686866129d9565b9050600061134282611721565b905060048160078111156113585761135861629d565b1480611375575060058160078111156113735761137361629d565b145b6113915760405162461bcd60e51b815260040161043d906168ec565b6000828152610163602052604090819020600201805460ff19166001179055517f712ae1383f79ac853f8d882153778e0260ef8f03b504e2866e0593e04d2b291f906113e09084815260200190565b60405180910390a16113f582888888886131f6565b6114028288888888613297565b61140f8288888888613379565b5095945050505050565b60608060608060006101c660008781526020019081526020016000209050806001018160020182600301836004018380548060200260200160405190810160405280929190818152602001828054801561149c57602002820191906000526020600020905b81546001600160a01b0316815260019091019060200180831161147e575b50505050509350828054806020026020016040519081016040528092919081815260200182805480156114ee57602002820191906000526020600020905b8154815260200190600101908083116114da575b5050505050925081805480602002602001604051908101604052809291908181526020016000905b828210156115c257838290600052602060002001805461153590616847565b80601f016020809104026020016040519081016040528092919081815260200182805461156190616847565b80156115ae5780601f10611583576101008083540402835291602001916115ae565b820191906000526020600020905b81548152906001019060200180831161159157829003601f168201915b505050505081526020019060010190611516565b50505050915080805480602002602001604051908101604052809291908181526020016000905b8282101561169557838290600052602060002001805461160890616847565b80601f016020809104026020016040519081016040528092919081815260200182805461163490616847565b80156116815780601f1061165657610100808354040283529160200191611681565b820191906000526020600020905b81548152906001019060200180831161166457829003601f168201915b5050505050815260200190600101906115e9565b5050505090509450945094509450509193509193565b604080517f150214d74d59b7d1e90c73fc22ef3d991dd0a76b046543d4d80ab92d2a50328f602082015290810186905260ff8516606082015260009081906116f99061100b90608001610ff0565b9050611716878288604051806020016040528060008152506133b4565b979650505050505050565b6000610f69826133d7565b60008060008061173b85613524565b935093509350935061174f848484846117d8565b505050505050565b600054630100000090046001600160a01b03163314611789576040516306fbb1e360e01b815260040160405180910390fd5b6001600160a01b0381166000818152600160208190526040808320805460ff1916909217909155517f7fd26be6fc92aff63f1f4409b2b2ddeb272a888031d7f55ec830485ec61941869190a250565b60006112f7858585856137b5565b600054630100000090046001600160a01b03163314611818576040516306fbb1e360e01b815260040160405180910390fd5b6001600160a01b038116600081815260016020526040808220805460ff19169055517fe0db3499b7fdc3da4cddff5f45d694549c19835e7f719fb5606d3ad1a5de40119190a250565b6101f85460408051634bf5d7e960e01b815290516060926001600160a01b031691634bf5d7e99160048083019260009291908290030181865afa9250505080156118cd57506040513d6000823e601f3d908101601f191682016040526118ca919081019061692d565b60015b611909575060408051808201909152601d81527f6d6f64653d626c6f636b6e756d6265722666726f6d3d64656661756c74000000602082015290565b919050565b60008033905061192f848285604051806020016040528060008152506133b4565b949350505050565b60008033905061171687828888888080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152508a9250612d98915050565b61025e5460009080820361199a57505061025d54919050565b600061025e6119aa60018461699a565b815481106119ba576119ba616881565b60009182526020918290206040805180820190915291015463ffffffff8116808352600160201b9091046001600160e01b03169282019290925291508410611a1057602001516001600160e01b03169392505050565b611a25611a1c85613880565b61025e906138e9565b6001600160e01b0316949350505050565b611a3e610e89565b6001600160a01b0316336001600160a01b031614611a6e5760405162461bcd60e51b815260040161043d90616810565b30611a77610e89565b6001600160a01b031614611ab55760008036604051611a97929190616800565b604051809103902090505b80611aae610164612e01565b03611aa257505b61117f8161399c565b600080339050611b0686828787878080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506133b492505050565b9695505050505050565b6000805462010000900460ff1615611b3b57604051631785c68160e01b815260040160405180910390fd5b3360009081526001602052604090205460ff1615611b6c5760405163b1d02c3d60e01b815260040160405180910390fd5b611b746139df565b3360009081526102c360205260409020548015611be9576000611b9682611721565b90506001816007811115611bac57611bac61629d565b1480611bc957506000816007811115611bc757611bc761629d565b145b15611be75760405163867f3ee560e01b815260040160405180910390fd5b505b825160208401206000611bfe888888856129d9565b3360009081526102c3602052604090208190559050611c1f88888888613a8a565b98975050505050505050565b600054610100900460ff1615808015611c4b5750600054600160ff909116105b80611c655750303b158015611c65575060005460ff166001145b611cc85760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b606482015260840161043d565b6000805460ff191660011790558015611ceb576000805461ff0019166101001790555b334114611d0b5760405163022d8c9560e31b815260040160405180910390fd5b3a15611d2a576040516383f1b1d360e01b815260040160405180910390fd5b611d566040518060400160405280600b81526020016a2129a1a3b7bb32b93737b960a91b815250613af2565b611d82611d65600360006169c3565b611d73600362093a806169c3565b680ad78ebc5ac6200000613b49565b611d8a613b80565b611d95612005613ba7565b611da0612006613bd7565b611daa600a613c07565b611dc0611dbb6003620151806169c3565b613c37565b6110076000526102c16020527f2f832952f0ef896b8c8edd6d16a2e4f2591a90375e33021e3b9ff197f3793fc0805460ff19166001179055611e157308e68ec70fa3b629784fdb28887e206ce8561e08613c67565b801561117f576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a150565b600054630100000090046001600160a01b03163314611e8f576040516306fbb1e360e01b815260040160405180910390fd5b60005462010000900460ff1615611eb957604051631785c68160e01b815260040160405180910390fd5b6000805462ff00001916620100001781556040517f9e87fac88ff661f02d44f95383c817fece4bce600a3dab7a54406878b965e7529190a1565b6000606080600080600060606098546000801b148015611f135750609954155b611f575760405162461bcd60e51b81526020600482015260156024820152741152540dcc4c8e88155b9a5b9a5d1a585b1a5e9959605a1b604482015260640161043d565b611f5f613cba565b611f67613cc9565b60408051600080825260208201909252600f60f81b9b939a50919850469750309650945092509050565b6101f854604080516324776b7d60e21b815290516000926001600160a01b0316916391ddadf49160048083019260209291908290030181865afa925050508015611ff8575060408051601f3d908101601f19168201909252611ff5918101906169e5565b60015b61190957610e9e43613cd8565b6000612012848484613d3f565b90505b9392505050565b61025e54600090156120415761203361025e613db6565b6001600160e01b0316905090565b5061025d5490565b612051610e89565b6001600160a01b0316336001600160a01b0316146120815760405162461bcd60e51b815260040161043d90616810565b3061208a610e89565b6001600160a01b0316146120c857600080366040516120aa929190616800565b604051809103902090505b806120c1610164612e01565b036120b557505b61117f81613de6565b61022b54600082815261022c602052604080822054905163d45c443560e01b81526004810191909152909182916001600160a01b039091169063d45c443590602401602060405180830381865afa158015612130573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121549190616a0d565b9050806001146121645780612015565b60009392505050565b336110071461219357604051630f22c43960e41b8152611007600482015260240161043d565b6121f96040518060400160405280600b81526020016a766f74696e6744656c617960a81b81525085858080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509293925050613e519050565b156122ae57602081146122275783838383604051630a5a604160e01b815260040161043d9493929190616a4f565b604080516020601f8401819004810282018101909252828152600091612268918585808385018382808284376000920191909152509293925050613eaa9050565b905080158061227957506201518081115b1561229f5784848484604051630a5a604160e01b815260040161043d9493929190616a4f565b6122a88161399c565b5061286f565b6123156040518060400160405280600c81526020016b1d9bdd1a5b99d4195c9a5bd960a21b81525085858080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509293925050613e519050565b156123c457602081146123435783838383604051630a5a604160e01b815260040161043d9493929190616a4f565b604080516020601f8401819004810282018101909252828152600091612384918585808385018382808284376000920191909152509293925050613eaa9050565b9050801580612395575062278d0081115b156123bb5784848484604051630a5a604160e01b815260040161043d9493929190616a4f565b6122a881613eaf565b612430604051806040016040528060118152602001701c1c9bdc1bdcd85b151a1c995cda1bdb19607a1b81525085858080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509293925050613e519050565b156124e6576020811461245e5783838383604051630a5a604160e01b815260040161043d9493929190616a4f565b604080516020601f840181900481028201810190925282815260009161249f918585808385018382808284376000920191909152509293925050613eaa9050565b90508015806124b7575069021e19e0c9bab240000081115b156124dd5784848484604051630a5a604160e01b815260040161043d9493929190616a4f565b6122a881613f52565b6125506040518060400160405280600f81526020016e38bab7b93ab6a73ab6b2b930ba37b960891b81525085858080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509293925050613e519050565b156125ff576020811461257e5783838383604051630a5a604160e01b815260040161043d9493929190616a4f565b604080516020601f84018190048102820181019092528281526000916125bf918585808385018382808284376000920191909152509293925050613eaa9050565b905060058110806125d05750601481115b156125f65784848484604051630a5a604160e01b815260040161043d9493929190616a4f565b6122a881612e80565b61266e604051806040016040528060148152602001736d696e506572696f64416674657251756f72756d60601b81525085858080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509293925050613e519050565b15612734576008811461269c5783838383604051630a5a604160e01b815260040161043d9493929190616a4f565b60006126e2600884848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509293925050613eaa9050565b90506001600160401b038116158061270557506202a300816001600160401b0316115b1561272b5784848484604051630a5a604160e01b815260040161043d9493929190616a4f565b6122a881613f95565b6127a06040518060400160405280601181526020017033b7bb32b93737b9283937ba32b1ba37b960791b81525085858080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509293925050613e519050565b1561284e57601481146127ce5783838383604051630a5a604160e01b815260040161043d9493929190616a4f565b6000612814601484848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509293925050613eaa9050565b90506001600160a01b0381166128455784848484604051630a5a604160e01b815260040161043d9493929190616a4f565b6122a881614001565b838383836040516325ee20d560e21b815260040161043d9493929190616a4f565b7ff1ce9b2cbf50eeb05769a29e2543fd350cab46894a7dd9978a12d534bb20e633848484846040516128a49493929190616a4f565b60405180910390a150505050565b6000610e9e6101965490565b6000610f698261406d565b6128d1610e89565b6001600160a01b0316336001600160a01b0316146129015760405162461bcd60e51b815260040161043d90616810565b3061290a610e89565b6001600160a01b031614612948576000803660405161292a929190616800565b604051809103902090505b80612941610164612e01565b0361293557505b600080856001600160a01b0316858585604051612966929190616800565b60006040518083038185875af1925050503d80600081146129a3576040519150601f19603f3d011682016040523d82523d6000602084013e6129a8565b606091505b50915091506129d08282604051806060016040528060288152602001616eac602891396140ab565b50505050505050565b6000848484846040516020016129f29493929190616a76565b60408051601f19818403018152919052805160209091012095945050505050565b612a1b610e89565b6001600160a01b0316336001600160a01b031614612a4b5760405162461bcd60e51b815260040161043d90616810565b30612a54610e89565b6001600160a01b031614612a925760008036604051612a74929190616800565b604051809103902090505b80612a8b610164612e01565b03612a7f57505b61117f81613f95565b60008251845114612aff5760405162461bcd60e51b815260206004820152602860248201527f476f7665726e6f72427261766f3a20696e76616c6964207369676e61747572656044820152670e640d8cadccee8d60c31b606482015260840161043d565b612b0d3387878787876140c4565b611b068686612b1c8787614182565b85611b10565b600080600080612b3185613524565b935093509350935061174f84848484611215565b612b4d610e89565b6001600160a01b0316336001600160a01b031614612b7d5760405162461bcd60e51b815260040161043d90616810565b30612b86610e89565b6001600160a01b031614612bc45760008036604051612ba6929190616800565b604051809103902090505b80612bbd610164612e01565b03612bb157505b61117f81613eaf565b60006120158383612be960408051602081019091526000815290565b613d3f565b612bf6610e89565b6001600160a01b0316336001600160a01b031614612c265760405162461bcd60e51b815260040161043d90616810565b30612c2f610e89565b6001600160a01b031614612c6d5760008036604051612c4f929190616800565b604051809103902090505b80612c66610164612e01565b03612c5a57505b61117f81613f52565b60006064612c8383611981565b6101f854604051632394e7a360e21b8152600481018690526001600160a01b0390911690638e539e8c90602401602060405180830381865afa158015612ccd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612cf19190616a0d565b612cfb9190616ac1565b610f6991906169c3565b600080600080612d1485613524565b935093509350935061174f84848484611326565b60006001600160e01b03198216636e665ced60e01b1480610f695750610f69826142b4565b6000610f69612d5a614350565b8360405161190160f01b8152600281019290925260228201526042902090565b6000806000612d8b8787878761435a565b9150915061140f8161441e565b6000805462010000900460ff1615612dc357604051631785c68160e01b815260040160405180910390fd5b3360009081526001602052604090205460ff1615612df45760405163b1d02c3d60e01b815260040160405180910390fd5b611b068686868686614568565b6000612e1c8254600f81810b600160801b909204900b131590565b15612e3a57604051631ed9509560e11b815260040160405180910390fd5b508054600f0b6000818152600180840160205260408220805492905583546fffffffffffffffffffffffffffffffff191692016001600160801b03169190911790915590565b6064811115612f035760405162461bcd60e51b815260206004820152604360248201527f476f7665726e6f72566f74657351756f72756d4672616374696f6e3a2071756f60448201527f72756d4e756d657261746f72206f7665722071756f72756d44656e6f6d696e616064820152623a37b960e91b608482015260a40161043d565b6000612f0d61201c565b90508015801590612f1f575061025e54155b15612f8457604080518082019091526000815261025e9060208101612f438461466b565b6001600160e01b039081169091528254600181018455600093845260209384902083519490930151909116600160201b0263ffffffff909316929092179101555b612fb2612f9f612f92611f91565b65ffffffffffff16613880565b612fa88461466b565b61025e91906146d4565b505060408051828152602081018490527f0553476bf02ef2726e8ce5ced78d63e26e602e4a2257b1f559418e24b4633997910160405180910390a15050565b600080613000868686866129d9565b9050600461300d82611721565b600781111561301e5761301e61629d565b1461303b5760405162461bcd60e51b815260040161043d906168ec565b61022b546040805163793d064960e11b815290516000926001600160a01b03169163f27a0c929160048083019260209291908290030181865afa158015613086573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906130aa9190616a0d565b61022b5460405163b1c5f42760e01b81529192506001600160a01b03169063b1c5f427906130e5908a908a908a906000908b90600401616ad8565b602060405180830381865afa158015613102573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906131269190616a0d565b600083815261022c60205260408082209290925561022b5491516308f2a0bb60e41b81526001600160a01b0390921691638f2a0bb091613173918b918b918b91908b908990600401616b26565b600060405180830381600087803b15801561318d57600080fd5b505af11580156131a1573d6000803e3d6000fd5b505050507f9a2e42fd6722813d69113e7d0079d3d940171428df7373df9c7f7617cfda28928282426131d39190616b7e565b604080519283526020830191909152015b60405180910390a15095945050505050565b306131ff610e89565b6001600160a01b0316146132905760005b845181101561174f57306001600160a01b031685828151811061323557613235616881565b60200260200101516001600160a01b0316036132805761328083828151811061326057613260616881565b6020026020010151805190602001206101646146ef90919063ffffffff16565b613289816168ad565b9050613210565b5050505050565b60005462010000900460ff16156132c157604051631785c68160e01b815260040160405180910390fd5b3360009081526001602052604090205460ff16156132f25760405163b1d02c3d60e01b815260040160405180910390fd5b60005b845181101561336b576102c1600086838151811061331557613315616881565b6020908102919091018101516001600160a01b031682528101919091526040016000205460ff1661335957604051630b094f2760e31b815260040160405180910390fd5b80613363816168ad565b9150506132f5565b50613290858585858561472b565b30613382610e89565b6001600160a01b0316146132905761016454600f81810b600160801b909204900b131561329057600061016455613290565b60006112f7858585856133d260408051602081019091526000815290565b612d98565b6000806133e3836147a0565b905060048160078111156133f9576133f961629d565b146134045792915050565b600083815261022c602052604090205480613420575092915050565b61022b54604051632ab0f52960e01b8152600481018390526001600160a01b0390911690632ab0f52990602401602060405180830381865afa15801561346a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061348e9190616b91565b1561349d575060079392505050565b61022b54604051632c258a9f60e11b8152600481018390526001600160a01b039091169063584b153e90602401602060405180830381865afa1580156134e7573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061350b9190616b91565b1561351a575060059392505050565b5060029392505050565b60608060606000806101c66000878152602001908152602001600020905080600101816002016136f683600301805480602002602001604051908101604052809291908181526020016000905b8282101561361d57838290600052602060002001805461359090616847565b80601f01602080910402602001604051908101604052809291908181526020018280546135bc90616847565b80156136095780601f106135de57610100808354040283529160200191613609565b820191906000526020600020905b8154815290600101906020018083116135ec57829003601f168201915b505050505081526020019060010190613571565b50505060048601805460408051602080840282018101909252828152935060009084015b828210156136ed57838290600052602060002001805461366090616847565b80601f016020809104026020016040519081016040528092919081815260200182805461368c90616847565b80156136d95780601f106136ae576101008083540402835291602001916136d9565b820191906000526020600020905b8154815290600101906020018083116136bc57829003601f168201915b505050505081526020019060010190613641565b50505050614182565b600984015483546040805160208084028201810190925282815291869183018282801561374c57602002820191906000526020600020905b81546001600160a01b0316815260019091019060200180831161372e575b505050505093508280548060200260200160405190810160405280929190818152602001828054801561379e57602002820191906000526020600020905b81548152602001906001019080831161378a575b505050505092509450945094509450509193509193565b6000806137c4868686866129d9565b60008181526101c660205260409020549091506001600160a01b03163381148061381857506137f16128b2565b6138168260016137ff611f91565b61380991906168c6565b65ffffffffffff16612bcd565b105b6138745760405162461bcd60e51b815260206004820152602760248201527f476f7665726e6f72427261766f3a2070726f706f7365722061626f76652074686044820152661c995cda1bdb1960ca1b606482015260840161043d565b611716878787876148d8565b600063ffffffff8211156138e55760405162461bcd60e51b815260206004820152602660248201527f53616665436173743a2076616c756520646f65736e27742066697420696e203360448201526532206269747360d01b606482015260840161043d565b5090565b815460009081816005811115613946576000613904846148e6565b61390e908561699a565b60008881526020902090915081015463ffffffff908116908716101561393657809150613944565b613941816001616b7e565b92505b505b6000613954878785856149ce565b9050801561398f576139798761396b60018461699a565b600091825260209091200190565b54600160201b90046001600160e01b0316611716565b6000979650505050505050565b6101945460408051918252602082018390527fc565b045403dc03c2eea82b81a0465edad9e2e7fc4d97e11421c209da93d7a93910160405180910390a161019455565b6102c25460ff16613a88576a084595161401484a0000006120056001600160a01b03166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015613a36573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613a5a9190616a0d565b1015613a79576040516311b6707f60e01b815260040160405180910390fd5b6102c2805460ff191660011790555b565b6000613ae633868686516001600160401b03811115613aab57613aab615cd5565b604051908082528060200260200182016040528015613ade57816020015b6060815260200190600190039081613ac95790505b5087876140c4565b6112f785858585614a24565b600054610100900460ff16613b195760405162461bcd60e51b815260040161043d90616bb3565b613b4081613b3b6040805180820190915260018152603160f81b602082015290565b614e03565b61117f81614e52565b600054610100900460ff16613b705760405162461bcd60e51b815260040161043d90616bb3565b613b7b838383614e8a565b505050565b600054610100900460ff16613a885760405162461bcd60e51b815260040161043d90616bb3565b600054610100900460ff16613bce5760405162461bcd60e51b815260040161043d90616bb3565b61117f81614ecc565b600054610100900460ff16613bfe5760405162461bcd60e51b815260040161043d90616bb3565b61117f81614f16565b600054610100900460ff16613c2e5760405162461bcd60e51b815260040161043d90616bb3565b61117f81614f3d565b600054610100900460ff16613c5e5760405162461bcd60e51b815260040161043d90616bb3565b61117f81614f64565b600054610100900460ff16613c8e5760405162461bcd60e51b815260040161043d90616bb3565b600080546001600160a01b039092166301000000026301000000600160b81b0319909216919091179055565b6060609a805461119290616847565b6060609b805461119290616847565b600065ffffffffffff8211156138e55760405162461bcd60e51b815260206004820152602660248201527f53616665436173743a2076616c756520646f65736e27742066697420696e203460448201526538206269747360d01b606482015260840161043d565b6101f854604051630748d63560e31b81526001600160a01b038581166004830152602482018590526000921690633a46b1a890604401602060405180830381865afa158015613d92573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120129190616a0d565b8054600090801561216457613dd08361396b60018461699a565b54600160201b90046001600160e01b0316612015565b61022b54604080516001600160a01b03928316815291831660208301527f08f74ea46ef7894f65eabfb5e6e695de773a000b47c529ab559178069b226401910160405180910390a161022b80546001600160a01b0319166001600160a01b0392909216919091179055565b600081604051602001613e649190616bfe565b6040516020818303038152906040528051906020012083604051602001613e8b9190616bfe565b6040516020818303038152906040528051906020012014905092915050565b015190565b60008111613f0f5760405162461bcd60e51b815260206004820152602760248201527f476f7665726e6f7253657474696e67733a20766f74696e6720706572696f6420604482015266746f6f206c6f7760c81b606482015260840161043d565b6101955460408051918252602082018390527f7e3f7f0708a84de9203036abaa450dccc85ad5ff52f78c170f3edb55cf5e8828910160405180910390a161019555565b6101965460408051918252602082018390527fccb45da8d5717e6c4544694297c4ba5cf151d455c9bb0ed4fc7a38411bc05461910160405180910390a161019655565b61028f54604080516001600160401b03928316815291831660208301527f7ca4ac117ed3cdce75c1161d8207c440389b1a15d69d096831664657c07dafc2910160405180910390a161028f805467ffffffffffffffff19166001600160401b0392909216919091179055565b600080546040516001600160a01b0380851693630100000090930416917f44fc1b38a4abaa91ebd1b628a5b259a698f86238c8217d68f516e87769c60c0b91a3600080546001600160a01b039092166301000000026301000000600160b81b0319909216919091179055565b60008181526101636020526040812060010154610f69906001600160401b0316600084815261029060205260409020546001600160401b0316614f8b565b606083156140ba575081612015565b6120158383614fa1565b8051602082012060006140e287876140dc8888614182565b856129d9565b60008181526101c6602052604090206009810154919250906141775780546001600160a01b0319166001600160a01b038a16178155875161412c90600183019060208b0190615a70565b50865161414290600283019060208a0190615ad1565b5085516141589060038301906020890190615b0c565b50845161416e9060048301906020880190615b5e565b50600981018390555b505050505050505050565b6060600082516001600160401b0381111561419f5761419f615cd5565b6040519080825280602002602001820160405280156141d257816020015b60608152602001906001900390816141bd5790505b50905060005b81518110156142ac578481815181106141f3576141f3616881565b6020026020010151516000146142635784818151811061421557614215616881565b60200260200101518051906020012084828151811061423657614236616881565b602002602001015160405160200161424f929190616c1a565b60405160208183030381529060405261427e565b83818151811061427557614275616881565b60200260200101515b82828151811061429057614290616881565b6020026020010181905250806142a5906168ad565b90506141d8565b509392505050565b600063288ace0360e11b6318df743f60e31b63bf26d89760e01b6379dd796f60e01b6001600160e01b031986168214806142fa57506001600160e01b0319868116908216145b8061431157506001600160e01b0319868116908516145b8061432c57506001600160e01b03198616630271189760e51b145b80611b0657506301ffc9a760e01b6001600160e01b03198716149695505050505050565b6000610e9e614fcb565b6000807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a08311156143915750600090506003614415565b6040805160008082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa1580156143e5573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b03811661440e57600060019250925050614415565b9150600090505b94509492505050565b60008160048111156144325761443261629d565b0361443a5750565b600181600481111561444e5761444e61629d565b0361449b5760405162461bcd60e51b815260206004820152601860248201527f45434453413a20696e76616c6964207369676e61747572650000000000000000604482015260640161043d565b60028160048111156144af576144af61629d565b036144fc5760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e67746800604482015260640161043d565b60038160048111156145105761451061629d565b0361117f5760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b606482015260840161043d565b600080614578878787878761503f565b600088815261029060205260409020549091506001600160401b03161580156145a557506145a587615195565b15611b065760006145bf61028f546001600160401b031690565b6145c7611f91565b65ffffffffffff166145d99190616c4b565b90506145e4886128be565b816001600160401b03161115614633576040516001600160401b038216815288907f541f725fb9f7c98a30cc9c0ff32fbb14358cd7159c847a3aa20a2bdc442ba5119060200160405180910390a25b600088815261029060205260409020805467ffffffffffffffff19166001600160401b03929092169190911790559695505050505050565b60006001600160e01b038211156138e55760405162461bcd60e51b815260206004820152602760248201527f53616665436173743a2076616c756520646f65736e27742066697420696e20326044820152663234206269747360c81b606482015260840161043d565b6000806146e28585856151d5565b915091505b935093915050565b8154600160801b90819004600f0b6000818152600180860160205260409091209390935583546001600160801b03908116939091011602179055565b61022b5460405163e38335e560e01b81526001600160a01b039091169063e38335e5903490614767908890889088906000908990600401616ad8565b6000604051808303818588803b15801561478057600080fd5b505af1158015614794573d6000803e3d6000fd5b50505050505050505050565b600081815261016360205260408120600281015460ff16156147c55750600792915050565b6002810154610100900460ff16156147e05750600292915050565b600083815261016360205260408120546001600160401b0316908190036148495760405162461bcd60e51b815260206004820152601d60248201527f476f7665726e6f723a20756e6b6e6f776e2070726f706f73616c206964000000604482015260640161043d565b6000614853611f91565b65ffffffffffff16905080821061486f57506000949350505050565b600061487a866128be565b905081811061488f5750600195945050505050565b61489886615195565b80156148bb575060008681526101c6602052604090206006810154600590910154115b156148cc5750600495945050505050565b50600395945050505050565b60006112f785858585615374565b6000816000036148f857506000919050565b600060016149058461542a565b901c6001901b9050600181848161491e5761491e6169ad565b048201901c90506001818481614936576149366169ad565b048201901c9050600181848161494e5761494e6169ad565b048201901c90506001818481614966576149666169ad565b048201901c9050600181848161497e5761497e6169ad565b048201901c90506001818481614996576149966169ad565b048201901c905060018184816149ae576149ae6169ad565b048201901c9050612015818285816149c8576149c86169ad565b046154be565b60005b818310156142ac5760006149e584846154cd565b60008781526020902090915063ffffffff86169082015463ffffffff161115614a1057809250614a1e565b614a1b816001616b7e565b93505b506149d1565b600033614a3181846154e8565b614a7d5760405162461bcd60e51b815260206004820152601d60248201527f476f7665726e6f723a2070726f706f7365722072657374726963746564000000604482015260640161043d565b6000614a87611f91565b65ffffffffffff169050614a996128b2565b614aa883610de460018561699a565b1015614b105760405162461bcd60e51b815260206004820152603160248201527f476f7665726e6f723a2070726f706f73657220766f7465732062656c6f7720706044820152701c9bdc1bdcd85b081d1a1c995cda1bdb19607a1b606482015260840161043d565b6000614b2588888888805190602001206129d9565b90508651885114614b485760405162461bcd60e51b815260040161043d90616c6b565b8551885114614b695760405162461bcd60e51b815260040161043d90616c6b565b6000885111614bba5760405162461bcd60e51b815260206004820152601860248201527f476f7665726e6f723a20656d7074792070726f706f73616c0000000000000000604482015260640161043d565b600081815261016360205260409020546001600160401b031615614c2a5760405162461bcd60e51b815260206004820152602160248201527f476f7665726e6f723a2070726f706f73616c20616c72656164792065786973746044820152607360f81b606482015260840161043d565b6000614c366101945490565b614c409084616b7e565b90506000614c4e6101955490565b614c589083616b7e565b90506040518060e00160405280614c6e846155d9565b6001600160401b031681526001600160a01b038716602082015260006040820152606001614c9b836155d9565b6001600160401b03908116825260006020808401829052604080850183905260609485018390528883526101638252918290208551815492870151878501519186166001600160e01b031990941693909317600160401b6001600160a01b039094168402176001600160e01b0316600160e01b60e09290921c91909102178155938501516080860151908416921c0217600183015560a08301516002909201805460c09094015161ffff1990941692151561ff00191692909217610100931515939093029290921790558a517f7d84a6263ae0d98d3329bd7b46bb4e8d6f98cd35a7adb45c274c8b7fd5ebd5e091859188918e918e91811115614da057614da0615cd5565b604051908082528060200260200182016040528015614dd357816020015b6060815260200190600190039081614dbe5790505b508d88888f604051614ded99989796959493929190616cac565b60405180910390a1509098975050505050505050565b600054610100900460ff16614e2a5760405162461bcd60e51b815260040161043d90616bb3565b609a614e368382616d8a565b50609b614e438282616d8a565b50506000609881905560995550565b600054610100900460ff16614e795760405162461bcd60e51b815260040161043d90616bb3565b610162614e868282616d8a565b5050565b600054610100900460ff16614eb15760405162461bcd60e51b815260040161043d90616bb3565b614eba8361399c565b614ec382613eaf565b613b7b81613f52565b600054610100900460ff16614ef35760405162461bcd60e51b815260040161043d90616bb3565b6101f880546001600160a01b0319166001600160a01b0392909216919091179055565b600054610100900460ff166120c85760405162461bcd60e51b815260040161043d90616bb3565b600054610100900460ff166111765760405162461bcd60e51b815260040161043d90616bb3565b600054610100900460ff16612a925760405162461bcd60e51b815260040161043d90616bb3565b6000818311614f9a5781612015565b5090919050565b815115614fb15781518083602001fd5b8060405162461bcd60e51b815260040161043d9190615e8e565b60007f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f614ff6615641565b614ffe61569a565b60408051602081019490945283019190915260608201524660808201523060a082015260c00160405160208183030381529060405280519060200120905090565b600085815261016360205260408120600161505988611721565b600781111561506a5761506a61629d565b146150c35760405162461bcd60e51b815260206004820152602360248201527f476f7665726e6f723a20766f7465206e6f742063757272656e746c792061637460448201526269766560e81b606482015260840161043d565b80546000906150dd9088906001600160401b031686613d3f565b90506150ec88888884886156cb565b835160000361514157866001600160a01b03167fb8e138887d0aa13bab447e82de9d5c1777041ecd21ca36ba824ff1e6c07ddda4898884896040516151349493929190616e49565b60405180910390a2611716565b866001600160a01b03167fe2babfbac5889a709b63bb7f598b324e08bc5a4fb9ec647fb3cbc9ec07eb87128988848989604051615182959493929190616e71565b60405180910390a2979650505050505050565b60008181526101c66020526040812060058101546151cc610e5085600090815261016360205260409020546001600160401b031690565b11159392505050565b82546000908190801561531b5760006151f38761396b60018561699a565b60408051808201909152905463ffffffff808216808452600160201b9092046001600160e01b0316602084015291925090871610156152745760405162461bcd60e51b815260206004820152601b60248201527f436865636b706f696e743a2064656372656173696e67206b6579730000000000604482015260640161043d565b805163ffffffff8088169116036152bc57846152958861396b60018661699a565b80546001600160e01b0392909216600160201b0263ffffffff90921691909117905561530b565b6040805180820190915263ffffffff80881682526001600160e01b0380881660208085019182528b54600181018d5560008d81529190912094519151909216600160201b029216919091179101555b6020015192508391506146e79050565b50506040805180820190915263ffffffff80851682526001600160e01b0380851660208085019182528854600181018a5560008a815291822095519251909316600160201b0291909316179201919091559050816146e7565b60008061538386868686615869565b600081815261022c6020526040902054909150156112f75761022b54600082815261022c60205260409081902054905163c4d252f560e01b81526001600160a01b039092169163c4d252f5916153df9160040190815260200190565b600060405180830381600087803b1580156153f957600080fd5b505af115801561540d573d6000803e3d6000fd5b505050600082815261022c60205260408120555095945050505050565b600080608083901c1561543f57608092831c92015b604083901c1561545157604092831c92015b602083901c1561546357602092831c92015b601083901c1561547557601092831c92015b600883901c1561548757600892831c92015b600483901c1561549957600492831c92015b600283901c156154ab57600292831c92015b600183901c15610f695760010192915050565b6000818310614f9a5781612015565b60006154dc60028484186169c3565b61201590848416616b7e565b80516000906034811015615500576001915050610f69565b82810160131901516001600160a01b031981166b046e0e4dee0dee6cae47a60f60a31b1461553357600192505050610f69565b60008061554160288561699a565b90505b838110156155b85760008061557888848151811061556457615564616881565b01602001516001600160f81b031916615976565b91509150816155905760019650505050505050610f69565b8060ff166004856001600160a01b0316901b1793505050806155b1906168ad565b9050615544565b50856001600160a01b0316816001600160a01b031614935050505092915050565b60006001600160401b038211156138e55760405162461bcd60e51b815260206004820152602660248201527f53616665436173743a2076616c756520646f65736e27742066697420696e203660448201526534206269747360d01b606482015260840161043d565b60008061564c613cba565b805190915015615663578051602090910120919050565b60985480156156725792915050565b7fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a4709250505090565b6000806156a5613cc9565b8051909150156156bc578051602090910120919050565b60995480156156725792915050565b60008581526101c6602090815260408083206001600160a01b038816845260088101909252909120805460ff161561575b5760405162461bcd60e51b815260206004820152602d60248201527f476f7665726e6f72436f6d7061746962696c697479427261766f3a20766f746560448201526c08185b1c9958591e4818d85cdd609a1b606482015260840161043d565b805460ff86166101000261ffff1990911617600117815561577b84615a08565b81546001600160601b039190911662010000026dffffffffffffffffffffffff00001990911617815560ff85166157cb57838260060160008282546157c09190616b7e565b909155506129d09050565b60001960ff8616016157eb57838260050160008282546157c09190616b7e565b60011960ff86160161580b57838260070160008282546157c09190616b7e565b60405162461bcd60e51b815260206004820152602d60248201527f476f7665726e6f72436f6d7061746962696c697479427261766f3a20696e766160448201526c6c696420766f7465207479706560981b606482015260840161043d565b600080615878868686866129d9565b9050600061588582611721565b9050600281600781111561589b5761589b61629d565b141580156158bb575060068160078111156158b8576158b861629d565b14155b80156158d9575060078160078111156158d6576158d661629d565b14155b6159255760405162461bcd60e51b815260206004820152601d60248201527f476f7665726e6f723a2070726f706f73616c206e6f7420616374697665000000604482015260640161043d565b6000828152610163602052604090819020600201805461ff001916610100179055517f789cf55be980739dad1d0699b93b58e806b51c9d96619bfa8fe0a28abaa7b30c906131e49084815260200190565b60008060f883901c602f811180156159915750603a8160ff16105b156159a657600194602f199091019350915050565b8060ff1660401080156159bc575060478160ff16105b156159d1576001946036199091019350915050565b8060ff1660601080156159e7575060678160ff16105b156159fc576001946056199091019350915050565b50600093849350915050565b60006001600160601b038211156138e55760405162461bcd60e51b815260206004820152602660248201527f53616665436173743a2076616c756520646f65736e27742066697420696e203960448201526536206269747360d01b606482015260840161043d565b828054828255906000526020600020908101928215615ac5579160200282015b82811115615ac557825182546001600160a01b0319166001600160a01b03909116178255602090920191600190910190615a90565b506138e5929150615bb0565b828054828255906000526020600020908101928215615ac5579160200282015b82811115615ac5578251825591602001919060010190615af1565b828054828255906000526020600020908101928215615b52579160200282015b82811115615b525782518290615b429082616d8a565b5091602001919060010190615b2c565b506138e5929150615bc5565b828054828255906000526020600020908101928215615ba4579160200282015b82811115615ba45782518290615b949082616d8a565b5091602001919060010190615b7e565b506138e5929150615be2565b5b808211156138e55760008155600101615bb1565b808211156138e5576000615bd98282615bff565b50600101615bc5565b808211156138e5576000615bf68282615bff565b50600101615be2565b508054615c0b90616847565b6000825580601f10615c1b575050565b601f01602090049060005260206000209081019061117f9190615bb0565b600060208284031215615c4b57600080fd5b5035919050565b600060208284031215615c6457600080fd5b81356001600160e01b03198116811461201557600080fd5b803560ff8116811461190957600080fd5b60008083601f840112615c9f57600080fd5b5081356001600160401b03811115615cb657600080fd5b602083019150836020828501011115615cce57600080fd5b9250929050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b0381118282101715615d1357615d13615cd5565b604052919050565b60006001600160401b03821115615d3457615d34615cd5565b50601f01601f191660200190565b600082601f830112615d5357600080fd5b8135615d66615d6182615d1b565b615ceb565b818152846020838601011115615d7b57600080fd5b816020850160208301376000918101602001919091529392505050565b60008060008060008060008060e0898b031215615db457600080fd5b88359750615dc460208a01615c7c565b965060408901356001600160401b0380821115615de057600080fd5b615dec8c838d01615c8d565b909850965060608b0135915080821115615e0557600080fd5b50615e128b828c01615d42565b945050615e2160808a01615c7c565b925060a0890135915060c089013590509295985092959890939650565b60005b83811015615e59578181015183820152602001615e41565b50506000910152565b60008151808452615e7a816020860160208601615e3e565b601f01601f19169290920160200192915050565b6020815260006120156020830184615e62565b6001600160a01b038116811461117f57600080fd5b60008060008060808587031215615ecc57600080fd5b8435615ed781615ea1565b93506020850135615ee781615ea1565b92506040850135915060608501356001600160401b03811115615f0957600080fd5b615f1587828801615d42565b91505092959194509250565b60006001600160401b03821115615f3a57615f3a615cd5565b5060051b60200190565b600082601f830112615f5557600080fd5b81356020615f65615d6183615f21565b82815260059290921b84018101918181019086841115615f8457600080fd5b8286015b84811015615fa8578035615f9b81615ea1565b8352918301918301615f88565b509695505050505050565b600082601f830112615fc457600080fd5b81356020615fd4615d6183615f21565b82815260059290921b84018101918181019086841115615ff357600080fd5b8286015b84811015615fa85780358352918301918301615ff7565b600082601f83011261601f57600080fd5b8135602061602f615d6183615f21565b82815260059290921b8401810191818101908684111561604e57600080fd5b8286015b84811015615fa85780356001600160401b038111156160715760008081fd5b61607f8986838b0101615d42565b845250918301918301616052565b600080600080608085870312156160a357600080fd5b84356001600160401b03808211156160ba57600080fd5b6160c688838901615f44565b955060208701359150808211156160dc57600080fd5b6160e888838901615fb3565b945060408701359150808211156160fe57600080fd5b5061610b8782880161600e565b949793965093946060013593505050565b60006020828403121561612e57600080fd5b813561201581615ea1565b600081518084526020808501945080840160005b838110156161725781516001600160a01b03168752958201959082019060010161614d565b509495945050505050565b600081518084526020808501945080840160005b8381101561617257815187529582019590820190600101616191565b600081518084526020808501808196508360051b8101915082860160005b858110156161f55782840389526161e3848351615e62565b988501989350908401906001016161cb565b5091979650505050505050565b6080815260006162156080830187616139565b8281036020840152616227818761617d565b9050828103604084015261623b81866161ad565b9050828103606084015261171681856161ad565b600080600080600060a0868803121561626757600080fd5b8535945061627760208701615c7c565b935061628560408701615c7c565b94979396509394606081013594506080013592915050565b634e487b7160e01b600052602160045260246000fd5b60208101600883106162d557634e487b7160e01b600052602160045260246000fd5b91905290565b600080604083850312156162ee57600080fd5b82359150602083013561630081615ea1565b809150509250929050565b6000806040838503121561631e57600080fd5b8235915061632e60208401615c7c565b90509250929050565b60008060008060006080868803121561634f57600080fd5b8535945061635f60208701615c7c565b935060408601356001600160401b038082111561637b57600080fd5b61638789838a01615c8d565b909550935060608801359150808211156163a057600080fd5b506163ad88828901615d42565b9150509295509295909350565b600080600080606085870312156163d057600080fd5b843593506163e060208601615c7c565b925060408501356001600160401b038111156163fb57600080fd5b61640787828801615c8d565b95989497509550505050565b6000806000806080858703121561642957600080fd5b84356001600160401b038082111561644057600080fd5b61644c88838901615f44565b9550602087013591508082111561646257600080fd5b61646e88838901615fb3565b9450604087013591508082111561648457600080fd5b6164908883890161600e565b935060608701359150808211156164a657600080fd5b50615f1587828801615d42565b60ff60f81b8816815260e0602082015260006164d260e0830189615e62565b82810360408401526164e48189615e62565b606084018890526001600160a01b038716608085015260a0840186905283810360c08501529050611059818561617d565b60008060006060848603121561652a57600080fd5b833561653581615ea1565b92506020840135915060408401356001600160401b0381111561655757600080fd5b61656386828701615d42565b9150509250925092565b6000806000806040858703121561658357600080fd5b84356001600160401b038082111561659a57600080fd5b6165a688838901615c8d565b909650945060208701359150808211156165bf57600080fd5b5061640787828801615c8d565b600080600080600060a086880312156165e457600080fd5b85356165ef81615ea1565b945060208601356165ff81615ea1565b935060408601356001600160401b038082111561661b57600080fd5b61662789838a01615fb3565b9450606088013591508082111561663d57600080fd5b61664989838a01615fb3565b935060808801359150808211156163a057600080fd5b6000806000806060858703121561667557600080fd5b843561668081615ea1565b93506020850135925060408501356001600160401b038111156163fb57600080fd5b6000602082840312156166b457600080fd5b81356001600160401b038116811461201557600080fd5b600080600080600060a086880312156166e357600080fd5b85356001600160401b03808211156166fa57600080fd5b61670689838a01615f44565b9650602088013591508082111561671c57600080fd5b61672889838a01615fb3565b9550604088013591508082111561673e57600080fd5b61674a89838a0161600e565b9450606088013591508082111561676057600080fd5b61664989838a0161600e565b6000806040838503121561677f57600080fd5b823561678a81615ea1565b946020939093013593505050565b600080600080600060a086880312156167b057600080fd5b85356167bb81615ea1565b945060208601356167cb81615ea1565b9350604086013592506060860135915060808601356001600160401b038111156167f457600080fd5b6163ad88828901615d42565b8183823760009101908152919050565b60208082526018908201527f476f7665726e6f723a206f6e6c79476f7665726e616e63650000000000000000604082015260600190565b600181811c9082168061685b57607f821691505b60208210810361687b57634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b6000600182016168bf576168bf616897565b5060010190565b65ffffffffffff8281168282160390808211156168e5576168e5616897565b5092915050565b60208082526021908201527f476f7665726e6f723a2070726f706f73616c206e6f74207375636365737366756040820152601b60fa1b606082015260800190565b60006020828403121561693f57600080fd5b81516001600160401b0381111561695557600080fd5b8201601f8101841361696657600080fd5b8051616974615d6182615d1b565b81815285602083850101111561698957600080fd5b6112f7826020830160208601615e3e565b81810381811115610f6957610f69616897565b634e487b7160e01b600052601260045260246000fd5b6000826169e057634e487b7160e01b600052601260045260246000fd5b500490565b6000602082840312156169f757600080fd5b815165ffffffffffff8116811461201557600080fd5b600060208284031215616a1f57600080fd5b5051919050565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b604081526000616a63604083018688616a26565b8281036020840152611716818587616a26565b608081526000616a896080830187616139565b8281036020840152616a9b818761617d565b90508281036040840152616aaf81866161ad565b91505082606083015295945050505050565b8082028115828204841417610f6957610f69616897565b60a081526000616aeb60a0830188616139565b8281036020840152616afd818861617d565b90508281036040840152616b1181876161ad565b60608401959095525050608001529392505050565b60c081526000616b3960c0830189616139565b8281036020840152616b4b818961617d565b90508281036040840152616b5f81886161ad565b60608401969096525050608081019290925260a0909101529392505050565b80820180821115610f6957610f69616897565b600060208284031215616ba357600080fd5b8151801515811461201557600080fd5b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b60008251616c10818460208701615e3e565b9190910192915050565b6001600160e01b0319831681528151600090616c3d816004850160208701615e3e565b919091016004019392505050565b6001600160401b038181168382160190808211156168e5576168e5616897565b60208082526021908201527f476f7665726e6f723a20696e76616c69642070726f706f73616c206c656e67746040820152600d60fb1b606082015260800190565b8981526001600160a01b038916602082015261012060408201819052600090616cd78382018b616139565b90508281036060840152616ceb818a61617d565b90508281036080840152616cff81896161ad565b905082810360a0840152616d1381886161ad565b90508560c08401528460e0840152828103610100840152616d348185615e62565b9c9b505050505050505050505050565b601f821115613b7b57600081815260208120601f850160051c81016020861015616d6b5750805b601f850160051c820191505b8181101561174f57828155600101616d77565b81516001600160401b03811115616da357616da3615cd5565b616db781616db18454616847565b84616d44565b602080601f831160018114616dec5760008415616dd45750858301515b600019600386901b1c1916600185901b17855561174f565b600085815260208120601f198616915b82811015616e1b57888601518255948401946001909101908401616dfc565b5085821015616e395787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b84815260ff84166020820152826040820152608060608201526000611b066080830184615e62565b85815260ff8516602082015283604082015260a060608201526000616e9960a0830185615e62565b8281036080840152611c1f8185615e6256fe476f7665726e6f723a2072656c617920726576657274656420776974686f7574206d657373616765a164736f6c6343000811000a \ No newline at end of file diff --git a/core/systemcontracts/pascal/mainnet/LightClientContract b/core/systemcontracts/pascal/mainnet/LightClientContract new file mode 100644 index 0000000000..b8599febf6 --- /dev/null +++ b/core/systemcontracts/pascal/mainnet/LightClientContract @@ -0,0 +1 @@ +608060405234801561001057600080fd5b50600436106102115760003560e01c8063aad5606311610125578063dda83148116100ad578063e2761af01161007c578063e2761af01461064f578063e405bbc314610673578063ea54b2aa1461067b578063f9a2bbc714610683578063fd6a68791461068b57610211565b8063dda83148146105f3578063df5fe70414610619578063df8079e91461063f578063e1c7392a1461064757610211565b8063c81b1662116100f4578063c81b16621461051e578063cba510a914610526578063d81698791461054c578063da8d08f0146105c5578063dc927faf146105eb57610211565b8063aad5606314610429578063ab51bb9614610431578063ac43175114610452578063adc879e91461051657610211565b8063564b81ef116101a85780637e434d54116101775780637e434d54146103ed5780639dc09262146103f5578063a1a11bf5146103fd578063a78abc1614610405578063aa82dce11461042157610211565b8063564b81ef1461029b5780635c5ae8db146103185780636e47b482146103dd57806375d47a0a146103e557610211565b806343756e5c116101e457806343756e5c14610264578063493279b11461026c57806351b4dce31461028b57806351e806721461029357610211565b80630e2374a5146102165780632657e9b61461023a578063280870281461025457806333f7798d1461025c575b600080fd5b61021e610693565b604080516001600160a01b039092168252519081900360200190f35b610242610699565b60408051918252519081900360200190f35b61021e6106a4565b6102426106aa565b61021e6106b0565b6102746106b6565b6040805161ffff9092168252519081900360200190f35b61021e6106bb565b61021e6106c1565b6102a36106c7565b6040805160208082528351818301528351919283929083019185019080838360005b838110156102dd5781810151838201526020016102c5565b50505050905090810190601f16801561030a5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b61033e6004803603602081101561032e57600080fd5b50356001600160401b03166107d2565b60405180856001600160401b03166001600160401b0316815260200184815260200183815260200180602001828103825283818151815260200191508051906020019080838360005b8381101561039f578181015183820152602001610387565b50505050905090810190601f1680156103cc5780820380516001836020036101000a031916815260200191505b509550505050505060405180910390f35b61021e61088d565b61021e610893565b61021e610899565b61021e61089f565b61021e6108a5565b61040d6108ab565b604080519115158252519081900360200190f35b61021e6108b4565b61021e6108ba565b6104396108c0565b6040805163ffffffff9092168252519081900360200190f35b6105146004803603604081101561046857600080fd5b81019060208101813564010000000081111561048357600080fd5b82018360208201111561049557600080fd5b803590602001918460018302840111640100000000831117156104b757600080fd5b9193909290916020810190356401000000008111156104d557600080fd5b8201836020820111156104e757600080fd5b8035906020019184600183028401116401000000008311171561050957600080fd5b5090925090506108c5565b005b610242610996565b61021e61099c565b6102426004803603602081101561053c57600080fd5b50356001600160401b03166109a2565b61040d6004803603604081101561056257600080fd5b81019060208101813564010000000081111561057d57600080fd5b82018360208201111561058f57600080fd5b803590602001918460018302840111640100000000831117156105b157600080fd5b9193509150356001600160401b03166109c1565b61021e600480360360208110156105db57600080fd5b50356001600160401b0316610a81565b61021e610a9c565b61021e6004803603602081101561060957600080fd5b50356001600160401b0316610aa2565b61040d6004803603602081101561062f57600080fd5b50356001600160401b0316610ac6565b61021e610b08565b610514610b0e565b610657610bae565b604080516001600160401b039092168252519081900360200190f35b610657610bbd565b6102a3610bd8565b61021e610bf7565b61021e610bfd565b61200181565b662386f26fc1000081565b61200581565b60055481565b61100181565b603881565b61200681565b61200081565b604080516020808252818301909252606091829190602082018180368337505060045460208301525090506000805b60208160ff16101561073d57828160ff168151811061071157fe5b01602001516001600160f81b0319161561073057816001019150610735565b61073d565b6001016106f6565b5060608160ff166040519080825280601f01601f19166020018201604052801561076e576020820181803683370190505b50905060005b8260ff168160ff1610156107ca57838160ff168151811061079157fe5b602001015160f81c60f81b828260ff16815181106107ab57fe5b60200101906001600160f81b031916908160001a905350600101610774565b509250505090565b60016020818152600092835260409283902080548184015460028084015460038501805489516101009982161599909902600019011692909204601f81018790048702880187019098528787526001600160401b0390931696919592949091908301828280156108835780601f1061085857610100808354040283529160200191610883565b820191906000526020600020905b81548152906001019060200180831161086657829003601f168201915b5050505050905084565b61100581565b61100881565b61200381565b61100781565b61100681565b60005460ff1681565b61200281565b61300081565b600081565b60005460ff1661091c576040805162461bcd60e51b815260206004820152601960248201527f74686520636f6e7472616374206e6f7420696e69742079657400000000000000604482015290519081900360640190fd5b336110071461095c5760405162461bcd60e51b815260040180806020018281038252602e815260200180610c0e602e913960400191505060405180910390fd5b6040805162461bcd60e51b815260206004820152600a60248201526919195c1c9958d85d195960b21b604482015290519081900360640190fd5b60045481565b61100281565b6001600160401b03166000908152600160208190526040909120015490565b60408051630a83aaa960e31b815233600482015290516000916110069163541d554891602480820192602092909190829003018186803b158015610a0457600080fd5b505afa158015610a18573d6000803e3d6000fd5b505050506040513d6020811015610a2e57600080fd5b505161095c576040805162461bcd60e51b815260206004820152601f60248201527f746865206d73672073656e646572206973206e6f7420612072656c6179657200604482015290519081900360640190fd5b6002602052600090815260409020546001600160a01b031681565b61100381565b6001600160401b03166000908152600260205260409020546001600160a01b031690565b6001600160401b0381166000908152600260205260408120546001600160a01b0316151580610b0257506003546001600160401b038381169116145b92915050565b61200481565b60005460ff1615610b66576040805162461bcd60e51b815260206004820152601960248201527f74686520636f6e747261637420616c726561647920696e697400000000000000604482015290519081900360640190fd5b600080610b8d6040518061024001604052806102208152602001610c3c6102209139610c03565b505160045550506000805460ff19166001179055662386f26fc10000600555565b6003546001600160401b031681565b6003546801000000000000000090046001600160401b031681565b6040518061024001604052806102208152602001610c3c610220913981565b61100081565b61100481565b805160209091019156fe746865206d6573736167652073656e646572206d75737420626520676f7665726e616e636520636f6e747261637442696e616e63652d436861696e2d5469677269730000000000000000000000000000000006915167cedaf7bbf7df47d932fdda630527ee648562cf3e52c5e5f46156a3a971a4ceb443c53a50d8653ef8cf1e5716da68120fb51b636dc6d111ec3277b098ecd42d49d3769d8a1f78b4c17a965f7a30d4181fabbd1f969f46d3c8e83b5ad4845421d8000000e8d4a510002ba4e81542f437b7ae1f8a35ddb233c789a8dc22734377d9b6d63af1ca403b61000000e8d4a51000df8da8c5abfdb38595391308bb71e5a1e0aabdc1d0cf38315d50d6be939b2606000000e8d4a51000b6619edca4143484800281d698b70c935e9152ad57b31d85c05f2f79f64b39f3000000e8d4a510009446d14ad86c8d2d74780b0847110001a1c2e252eedfea4753ebbbfce3a22f52000000e8d4a510000353c639f80cc8015944436dab1032245d44f912edc31ef668ff9f4a45cd0599000000e8d4a51000e81d3797e0544c3a718e1f05f0fb782212e248e784c1a851be87e77ae0db230e000000e8d4a510005e3fcda30bd19d45c4b73688da35e7da1fce7c6859b2c1f20ed5202d24144e3e000000e8d4a51000b06a59a2d75bf5d014fce7c999b5e71e7a960870f725847d4ba3235baeaa08ef000000e8d4a510000c910e2fe650e4e01406b3310b489fb60a84bc3ff5c5bee3a56d5898b6a8af32000000e8d4a5100071f2d7b8ec1c8b99a653429b0118cd201f794f409d0fea4d65b1b662f2b00063000000e8d4a51000a164736f6c6343000604000a \ No newline at end of file diff --git a/core/systemcontracts/pascal/mainnet/RelayerHubContract b/core/systemcontracts/pascal/mainnet/RelayerHubContract new file mode 100644 index 0000000000..b663bb471a --- /dev/null +++ b/core/systemcontracts/pascal/mainnet/RelayerHubContract @@ -0,0 +1 @@ +608060405234801561001057600080fd5b50600436106101fb5760003560e01c80639dc092621161011a578063dc927faf116100ad578063e79a198f1161007c578063e79a198f1461047e578063f3ae241514610486578063f9a2bbc7146104ac578063fd30d9b8146104b4578063fd6a6879146104bc576101fb565b8063dc927faf14610466578063dd91d1c514610200578063df8079e91461046e578063e1c7392a14610476576101fb565b8063aad56063116100e9578063aad5606314610373578063ab51bb961461037b578063ac4317511461039c578063c81b16621461045e576101fb565b80639dc0926214610353578063a1a11bf51461035b578063a78abc1614610363578063aa82dce11461036b576101fb565b80636a6a419e116101925780637ae23088116101615780637ae23088146103035780637e434d541461031d5780638f83ab131461032557806395468d261461034b576101fb565b80636a6a419e146102a75780636e47b482146102cd57806375d47a0a146102d557806378beee67146102dd576101fb565b8063493279b1116101ce578063493279b11461023e57806351b4dce31461025d57806351e8067214610265578063541d55481461026d576101fb565b806303aff02b146102005780630e2374a51461020a578063280870281461022e57806343756e5c14610236575b600080fd5b6102086104c4565b005b6102126104fe565b604080516001600160a01b039092168252519081900360200190f35b610212610504565b61021261050a565b610246610510565b6040805161ffff9092168252519081900360200190f35b610212610515565b61021261051b565b6102936004803603602081101561028357600080fd5b50356001600160a01b0316610521565b604080519115158252519081900360200190f35b610293600480360360208110156102bd57600080fd5b50356001600160a01b031661053f565b61021261055d565b610212610563565b610208600480360360208110156102f357600080fd5b50356001600160a01b0316610569565b61030b6105b7565b60408051918252519081900360200190f35b6102126105c4565b6102086004803603602081101561033b57600080fd5b50356001600160a01b03166105ca565b61030b610627565b610212610633565b610212610639565b61029361063f565b610212610648565b61021261064e565b610383610654565b6040805163ffffffff9092168252519081900360200190f35b610208600480360360408110156103b257600080fd5b8101906020810181356401000000008111156103cd57600080fd5b8201836020820111156103df57600080fd5b8035906020019184600183028401116401000000008311171561040157600080fd5b91939092909160208101903564010000000081111561041f57600080fd5b82018360208201111561043157600080fd5b8035906020019184600183028401116401000000008311171561045357600080fd5b509092509050610659565b6102126106ec565b6102126106f2565b6102126106f8565b6102086106fe565b610208610780565b6102936004803603602081101561049c57600080fd5b50356001600160a01b0316610939565b610212610957565b61029361095d565b610212610966565b6040805162461bcd60e51b815260206004820152600a60248201526919195c1c9958d85d195960b21b604482015290519081900360640190fd5b61200181565b61200581565b61100181565b603881565b61200681565b61200081565b6001600160a01b031660009081526007602052604090205460ff1690565b6001600160a01b031660009081526008602052604090205460ff1690565b61100581565b61100881565b3360009081526008602052604090205460ff166104c45760405162461bcd60e51b8152600401808060200182810382526024815260200180610a676024913960400191505060405180910390fd5b68056bc75e2d6310000081565b61200381565b3360009081526005602052604090205460ff166104c4576040805162461bcd60e51b81526020600482015260166024820152751b585b9859d95c88191bd95cc81b9bdd08195e1a5cdd60521b604482015290519081900360640190fd5b67016345785d8a000081565b61100781565b61100681565b60005460ff1681565b61200281565b61300081565b600081565b60005460ff166106ac576040805162461bcd60e51b81526020600482015260196024820152781d1a194818dbdb9d1c9858dd081b9bdd081a5b9a5d081e595d603a1b604482015290519081900360640190fd5b33611007146104c45760405162461bcd60e51b815260040180806020018281038252602e815260200180610a8b602e913960400191505060405180910390fd5b61100281565b61100381565b61200481565b60005460ff1615610756576040805162461bcd60e51b815260206004820152601960248201527f74686520636f6e747261637420616c726561647920696e697400000000000000604482015290519081900360640190fd5b68056bc75e2d63100000600190815567016345785d8a00006002556000805460ff19169091179055565b3360009081526004602052604090205460ff166107db576040805162461bcd60e51b81526020600482015260146024820152731c995b185e595c88191bc81b9bdd08195e1a5cdd60621b604482015290519081900360640190fd5b60005460ff1661082e576040805162461bcd60e51b81526020600482015260196024820152781d1a194818dbdb9d1c9858dd081b9bdd081a5b9a5d081e595d603a1b604482015290519081900360640190fd5b610836610a4c565b5033600081815260036020908152604091829020825180840190935280548084526001909101549183018290529192916108fc9161087a919063ffffffff61096c16565b6040518115909202916000818181858888f193505050501580156108a2573d6000803e3d6000fd5b50602081015160405161100291829181156108fc0291906000818181858888f193505050501580156108d8573d6000803e3d6000fd5b50336000818152600460209081526040808320805460ff191690556003825280832083815560010192909255815192835290517fd17202129b83db7880d6b9f25df81c58ad46f7e0e2c92236b1aa10663a4876679281900390910190a15050565b6001600160a01b031660009081526005602052604090205460ff1690565b61100081565b600a5460ff1681565b61100481565b60006109ae83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506109b5565b9392505050565b60008184841115610a445760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b83811015610a095781810151838201526020016109f1565b50505050905090810190601f168015610a365780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b60405180604001604052806000815260200160008152509056fe72656c61796572206973206e6f7420612070726f766973696f6e616c2072656c61796572746865206d6573736167652073656e646572206d75737420626520676f7665726e616e636520636f6e7472616374a164736f6c6343000604000a \ No newline at end of file diff --git a/core/systemcontracts/pascal/mainnet/RelayerIncentivizeContract b/core/systemcontracts/pascal/mainnet/RelayerIncentivizeContract new file mode 100644 index 0000000000..4780b146e0 --- /dev/null +++ b/core/systemcontracts/pascal/mainnet/RelayerIncentivizeContract @@ -0,0 +1 @@ +60806040526004361061024a5760003560e01c8063930e1b0911610139578063ace9fcc2116100b6578063df8079e91161007a578063df8079e9146106d5578063e1c7392a146106ea578063e89a3020146106ff578063f9a2bbc714610729578063fd6a68791461073e578063fdd31fcd1461075357610251565b8063ace9fcc21461066c578063c81b166214610681578063d0ab528a14610696578063dc927faf146106ab578063dcae76ab146106c057610251565b8063a7c6a59d116100fd578063a7c6a59d1461052e578063aa82dce114610543578063aad5606314610558578063ab51bb961461056d578063ac4317511461059b57610251565b8063930e1b09146104a75780639dc09262146104da578063a1a11bf5146104ef578063a3c3c0ad14610504578063a78abc161461051957610251565b806343756e5c116101c75780636f93d2e61161018b5780636f93d2e6146103f457806374f2272d1461045357806375d47a0a146104685780637e146cc51461047d5780637e434d541461049257610251565b806343756e5c14610374578063493279b11461038957806351b4dce3146103b557806351e80672146103ca5780636e47b482146103df57610251565b80631b20087c1161020e5780631b20087c146102ed5780631c64331214610302578063280870281461032c5780633a9756121461025657806340bb43c01461034157610251565b8063081e9d1314610256578063093f2fc41461027d5780630e2374a51461029257806310e06a76146102c357806312950c46146102d857610251565b3661025157005b600080fd5b34801561026257600080fd5b5061026b610786565b60408051918252519081900360200190f35b34801561028957600080fd5b5061026b61078b565b34801561029e57600080fd5b506102a7610790565b604080516001600160a01b039092168252519081900360200190f35b3480156102cf57600080fd5b5061026b610796565b3480156102e457600080fd5b5061026b61079c565b3480156102f957600080fd5b5061026b6107a2565b34801561030e57600080fd5b506102a76004803603602081101561032557600080fd5b50356107a8565b34801561033857600080fd5b506102a76107cf565b34801561034d57600080fd5b5061026b6004803603602081101561036457600080fd5b50356001600160a01b03166107d5565b34801561038057600080fd5b506102a76107e7565b34801561039557600080fd5b5061039e6107ed565b6040805161ffff9092168252519081900360200190f35b3480156103c157600080fd5b506102a76107f2565b3480156103d657600080fd5b506102a76107f8565b3480156103eb57600080fd5b506102a76107fe565b34801561040057600080fd5b5061043f6004803603608081101561041757600080fd5b506001600160a01b038135811691602081013590911690604081013590606001351515610804565b604080519115158252519081900360200190f35b34801561045f57600080fd5b5061026b6108d6565b34801561047457600080fd5b506102a76108dc565b34801561048957600080fd5b5061026b6108e2565b34801561049e57600080fd5b506102a76108e7565b3480156104b357600080fd5b5061026b600480360360208110156104ca57600080fd5b50356001600160a01b03166108ed565b3480156104e657600080fd5b506102a76108ff565b3480156104fb57600080fd5b506102a7610905565b34801561051057600080fd5b5061026b61090b565b34801561052557600080fd5b5061043f610911565b34801561053a57600080fd5b5061026b61091a565b34801561054f57600080fd5b506102a7610920565b34801561056457600080fd5b506102a7610926565b34801561057957600080fd5b5061058261092c565b6040805163ffffffff9092168252519081900360200190f35b3480156105a757600080fd5b5061066a600480360360408110156105be57600080fd5b8101906020810181356401000000008111156105d957600080fd5b8201836020820111156105eb57600080fd5b8035906020019184600183028401116401000000008311171561060d57600080fd5b91939092909160208101903564010000000081111561062b57600080fd5b82018360208201111561063d57600080fd5b8035906020019184600183028401116401000000008311171561065f57600080fd5b509092509050610931565b005b34801561067857600080fd5b5061026b610971565b34801561068d57600080fd5b506102a7610977565b3480156106a257600080fd5b5061026b61097d565b3480156106b757600080fd5b506102a7610983565b3480156106cc57600080fd5b5061026b610989565b3480156106e157600080fd5b506102a761098f565b3480156106f657600080fd5b5061066a610995565b34801561070b57600080fd5b506102a76004803603602081101561072257600080fd5b5035610a5e565b34801561073557600080fd5b506102a7610a6b565b34801561074a57600080fd5b506102a7610a71565b34801561075f57600080fd5b5061026b6004803603602081101561077657600080fd5b50356001600160a01b0316610a77565b600181565b605081565b61200181565b600b5481565b60015481565b600c5481565b600681815481106107b557fe5b6000918252602090912001546001600160a01b0316905081565b61200581565b60076020526000908152604090205481565b61100181565b603881565b61200681565b61200081565b61100581565b6000805460ff1661085c576040805162461bcd60e51b815260206004820152601960248201527f74686520636f6e7472616374206e6f7420696e69742079657400000000000000604482015290519081900360640190fd5b336120001461089c5760405162461bcd60e51b815260040180806020018281038252602f815260200180610ab8602f913960400191505060405180910390fd5b6040805162461bcd60e51b815260206004820152600a60248201526919195c1c9958d85d195960b21b604482015290519081900360640190fd5b60035481565b61100881565b600581565b61200381565b60056020526000908152604090205481565b61100781565b61100681565b600a5481565b60005460ff1681565b60045481565b61200281565b61300081565b600081565b336110071461089c5760405162461bcd60e51b815260040180806020018281038252602e815260200180610a8a602e913960400191505060405180910390fd5b60025481565b61100281565b600e5481565b61100381565b60095481565b61200481565b60005460ff16156109ed576040805162461bcd60e51b815260206004820152601960248201527f74686520636f6e747261637420616c726561647920696e697400000000000000604482015290519081900360640190fd5b60005460ff1615610a3b576040805162461bcd60e51b8152602060048201526013602482015272185b1c9958591e481a5b9a5d1a585b1a5e9959606a1b604482015290519081900360640190fd5b60018080556005600255600381905560506004556000805460ff19169091179055565b600881815481106107b557fe5b61100081565b61100481565b600d602052600090815260409020548156fe746865206d6573736167652073656e646572206d75737420626520676f7665726e616e636520636f6e7472616374746865206d6573736167652073656e646572206d7573742062652063726f737320636861696e20636f6e7472616374a164736f6c6343000604000a \ No newline at end of file diff --git a/core/systemcontracts/pascal/mainnet/SlashContract b/core/systemcontracts/pascal/mainnet/SlashContract new file mode 100644 index 0000000000..8a2791a3f6 --- /dev/null +++ b/core/systemcontracts/pascal/mainnet/SlashContract @@ -0,0 +1 @@ +608060405234801561001057600080fd5b506004361061028a5760003560e01c80638256ace61161015c578063c80d4b8f116100ce578063dcc6f15611610087578063dcc6f156146104b6578063df8079e9146104be578063e1c7392a146104c6578063f9a2bbc7146104ce578063fc4333cd146104d6578063fd6a6879146104de5761028a565b8063c80d4b8f14610478578063c81b166214610480578063c8509d8114610405578063c96be4cb14610488578063cc844b731461049b578063dc927faf146104ae5761028a565b8063a78abc1611610120578063a78abc1614610430578063aa82dce114610438578063aad5606314610440578063ab51bb9614610448578063ac0af6291461045d578063ac431751146104655761028a565b80638256ace6146103fd578063831d65d1146104055780639dc09262146104185780639f804f5f14610420578063a1a11bf5146104285761028a565b806343756e5c116102005780635bfb4990116101b95780635bfb4990146103c257806362b72cf5146103d55780636e47b482146103dd57806375d47a0a146103e55780637912a65d146103ed5780637e434d54146103f55761028a565b806343756e5c14610385578063493279b11461038d57806350055f90146103a257806351b4dce3146103aa57806351e80672146103b2578063567a372d146103ba5761028a565b80632808702811610252578063280870281461031957806328aa02b1146103215780633306ccca1461033457806335aa2e441461034957806337c8dab91461035c578063389f4f711461037d5761028a565b80630e2374a51461028f5780631182b875146102ad57806322d1e80b146102cd57806323bac5a2146102e25780632796211814610304575b600080fd5b6102976104e6565b6040516102a49190612b25565b60405180910390f35b6102c06102bb366004612a3e565b6104ec565b6040516102a49190612b5d565b6102d5610552565b6040516102a49190612b52565b6102f56102f0366004612743565b61055b565b6040516102a4939291906132c0565b61031761031236600461289b565b61057e565b005b6102976108d3565b61031761032f36600461277b565b6108d9565b61033c61090a565b6040516102a49190613288565b610297610357366004612a0e565b610910565b61036f61036a366004612743565b610937565b6040516102a49291906132b2565b61033c61098e565b610297610994565b61039561099a565b6040516102a49190613279565b61033c61099f565b6102976109a5565b6102976109ab565b61033c6109b1565b6103176103d0366004612743565b6109b7565b61033c610a3f565b610297610a45565b610297610a4b565b61033c610a51565b610297610a56565b61036f610a5c565b610317610413366004612a3e565b610a66565b610297610a87565b61033c610a8d565b610297610a93565b6102d5610a99565b610297610aa2565b610297610aa8565b610450610aae565b6040516102a491906132d8565b61033c610ab3565b6103176104733660046128f2565b610ab8565b61033c611054565b610297611059565b610317610496366004612743565b61105f565b6103176104a936600461295b565b61137c565b61029761181b565b61033c611821565b610297611826565b61031761182c565b610297611868565b61031761186e565b610297611cb7565b61200181565b606033612000146105185760405162461bcd60e51b815260040161050f90613153565b60405180910390fd5b60005460ff1661053a5760405162461bcd60e51b815260040161050f90612c49565b60405162461bcd60e51b815260040161050f90612e18565b60075460ff1681565b600260208190526000918252604090912080546001820154919092015460ff1683565b60005460ff166105a05760405162461bcd60e51b815260040161050f90612c49565b6006546105ad5760146006555b6008546105bb576170806008555b8151158015906105cb5750805115155b6105e75760405162461bcd60e51b815260040161050f906130e8565b60408051600380825260808201909252606091816020015b60608152602001906001900390816105ff5790505090506106206038611cbd565b8160008151811061062d57fe5b602002602001018190525061064183611cd8565b8160018151811061064e57fe5b602002602001018190525061066282611cd8565b8160028151811061066f57fe5b6020026020010181905250606061068582611d2e565b60408051603480825260608281019093529293509091602082018180368337019050509050815160346020830182602086016068600019fa6106c657600080fd5b506014810151603482015160405163436aa28360e11b8152600090612002906386d54506906106f9908690600401612b25565b60206040518083038186803b15801561071157600080fd5b505afa158015610725573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610749919061275f565b6001600160a01b031614156107705760405162461bcd60e51b815260040161050f90612c19565b43600854820110156107945760405162461bcd60e51b815260040161050f90612bba565b604051631871f7d960e31b81526120029063c38fbec8906107b9908590600401612b25565b600060405180830381600087803b1580156107d357600080fd5b505af11580156107e7573d6000803e3d6000fd5b50506040516335409f7f60e01b815261100092506335409f7f9150610810908590600401612b25565b600060405180830381600087803b15801561082a57600080fd5b505af115801561083e573d6000803e3d6000fd5b50506006546040516309a99b4f60e41b815260646110028031909302049350909150639a99b4f0906108769033908590600401612b39565b602060405180830381600087803b15801561089057600080fd5b505af11580156108a4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108c89190612a26565b505050505050505050565b61200581565b33611000146108fa5760405162461bcd60e51b815260040161050f90612e9e565b610905838383611dbf565b505050565b61708081565b6001818154811061091d57fe5b6000918252602090912001546001600160a01b0316905081565b600080610942612576565b5050506001600160a01b0316600090815260026020818152604092839020835160608101855281548082526001830154938201849052919093015460ff16151592909301919091529091565b60055481565b61100181565b603881565b60065481565b61200681565b61200081565b60045481565b33611000146109d85760405162461bcd60e51b815260040161050f90612e9e565b60005460ff166109fa5760405162461bcd60e51b815260040161050f90612c49565b806001600160a01b03167fd7bc86ff5d08c8ab043edec743302aba2520e6635172a428bc956721db9e2d1c6000604051610a349190612b70565b60405180910390a250565b60035481565b61100581565b61100881565b603281565b61200381565b6004546005549091565b33612000146105185760405162461bcd60e51b815260040161050f90613153565b61100781565b60085481565b61100681565b60005460ff1681565b61200281565b61300081565b600081565b600481565b60005460ff16610ada5760405162461bcd60e51b815260040161050f90612c49565b3361100714610afb5760405162461bcd60e51b815260040161050f90612fd7565b610b6684848080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250506040805180820190915260148152731b5a5cd9195b59585b9bdc951a1c995cda1bdb1960621b60208201529150611ff89050565b15610c015760208114610b8b5760405162461bcd60e51b815260040161050f90612e2a565b604080516020601f8401819004810282018101909252828152600091610bc99185858083850183828082843760009201919091525061205292505050565b905060018110158015610bdd575060055481105b610bf95760405162461bcd60e51b815260040161050f9061310e565b600455611011565b610c6784848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505060408051808201909152600f81526e19995b1bdb9e551a1c995cda1bdb19608a1b60208201529150611ff89050565b15610d035760208114610c8c5760405162461bcd60e51b815260040161050f90613025565b604080516020601f8401819004810282018101909252828152600091610cca9185858083850183828082843760009201919091525061205292505050565b90506103e88111158015610cdf575060045481115b610cfb5760405162461bcd60e51b815260040161050f90612d02565b600555611011565b610d7084848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505060408051808201909152601681527566656c6f6e79536c617368526577617264526174696f60501b60208201529150611ff89050565b15610e0a5760208114610d955760405162461bcd60e51b815260040161050f90612f5f565b604080516020601f8401819004810282018101909252828152600091610dd39185858083850183828082843760009201919091525061205292505050565b9050600a8110158015610de65750606481105b610e025760405162461bcd60e51b815260040161050f90613067565b600655611011565b610e7e84848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505060408051808201909152601881527f656e61626c654d616c6963696f7573566f7465536c617368000000000000000060208201529150611ff89050565b15610ef55760208114610ea35760405162461bcd60e51b815260040161050f90612d37565b604080516020601f8401819004810282018101909252828152610edf919084848083850183828082843760009201919091525061205792505050565b6007805460ff1916911515919091179055611011565b610f5c84848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505060408051808201909152601081526f66656c6f6e79536c61736853636f706560801b60208201529150611ff89050565b15610ff95760208114610f815760405162461bcd60e51b815260040161050f90612eee565b604080516020601f8401819004810282018101909252828152600091610fbf9185858083850183828082843760009201919091525061205292505050565b90506170808110158015610fd55750620d2f0081105b610ff15760405162461bcd60e51b815260040161050f90612c80565b600855611011565b60405162461bcd60e51b815260040161050f906131ef565b7f6cdb0ac70ab7f2e2d035cca5be60d89906f2dede7648ddbd7402189c1eeed17a848484846040516110469493929190612b88565b60405180910390a150505050565b609681565b61100281565b33411461107e5760405162461bcd60e51b815260040161050f906131a2565b60005460ff166110a05760405162461bcd60e51b815260040161050f90612c49565b60035443116110c15760405162461bcd60e51b815260040161050f90613244565b3a156110df5760405162461bcd60e51b815260040161050f90612f31565b60405163155853f360e21b8152611000906355614fcc90611104908490600401612b25565b60206040518083038186803b15801561111c57600080fd5b505afa158015611130573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611154919061287f565b61115d57611375565b611165612576565b506001600160a01b0381166000908152600260208181526040928390208351606081018552815481526001820154928101929092529091015460ff1615801592820192909252906111c0576020810180516001019052611219565b60016040820181905260208201819052805480820182556000919091527fb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf60180546001600160a01b0319166001600160a01b0384161790555b43815260055460208201518161122b57fe5b066112a357600060208201526040516335409f7f60e01b8152611000906335409f7f9061125c908590600401612b25565b600060405180830381600087803b15801561127657600080fd5b505af115801561128a573d6000803e3d6000fd5b5050505061129e8282602001516000611dbf565b61130f565b6004548160200151816112b257fe5b0661130f576040516375abf10160e11b81526110009063eb57e202906112dc908590600401612b25565b600060405180830381600087803b1580156112f657600080fd5b505af115801561130a573d6000803e3d6000fd5b505050505b6001600160a01b0382166000818152600260208181526040808420865181559186015160018301558581015191909201805460ff1916911515919091179055517fddb6012116e51abf5436d956a4f0ebd927e92c576ff96d7918290c8782291e3e9190a2505b5043600355565b60005460ff1661139e5760405162461bcd60e51b815260040161050f90612c49565b60075460ff166113c05760405162461bcd60e51b815260040161050f90612be4565b6006546113cd5760146006555b6008546113db576170806008555b6008548151604001514391011180156113ff57504360085482602001516040015101115b61141b5760405162461bcd60e51b815260040161050f90613216565b8060200151602001518160000151602001511480156114495750806020015160600151816000015160600151145b156114665760405162461bcd60e51b815260040161050f90612e71565b8051604081015190511080156114855750602081015160408101519051105b6114a15760405162461bcd60e51b815260040161050f90612de1565b6020810151518151511080156114c65750806000015160400151816020015160400151105b806114f157508051516020820151511080156114f15750806020015160400151816000015160400151105b8061150b5750806020015160400151816000015160400151145b6115275760405162461bcd60e51b815260040161050f90612ccb565b604080820151905163ea321e4960e01b81526110009163ea321e49916115509190600401612b5d565b60206040518083038186803b15801561156857600080fd5b505afa15801561157c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115a0919061287f565b6115bc5760405162461bcd60e51b815260040161050f90612fa8565b6115ce8160000151826040015161207f565b80156115e757506115e78160200151826040015161207f565b6116035760405162461bcd60e51b815260040161050f90612d82565b6060806110006001600160a01b0316633b071dcc6040518163ffffffff1660e01b815260040160006040518083038186803b15801561164157600080fd5b505afa158015611655573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261167d91908101906127bc565b9150915060005b81518110156117ba576116ae82828151811061169c57fe5b60200260200101518560400151612257565b156117b2576006546040516309a99b4f60e41b815260646110028031909302049190639a99b4f0906116e69033908590600401612b39565b602060405180830381600087803b15801561170057600080fd5b505af1158015611714573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117389190612a26565b506110006001600160a01b03166335409f7f85848151811061175657fe5b60200260200101516040518263ffffffff1660e01b815260040161177a9190612b25565b600060405180830381600087803b15801561179457600080fd5b505af11580156117a8573d6000803e3d6000fd5b50505050506117ba565b600101611684565b506040808401519051630e9fbf5160e01b815261200291630e9fbf51916117e49190600401612b5d565b600060405180830381600087803b1580156117fe57600080fd5b505af1158015611812573d6000803e3d6000fd5b50505050505050565b61100381565b601481565b61200481565b60005460ff161561184f5760405162461bcd60e51b815260040161050f906130b1565b603260045560966005556000805460ff19166001179055565b61100081565b336110001461188f5760405162461bcd60e51b815260040161050f90612e9e565b60005460ff166118b15760405162461bcd60e51b815260040161050f90612c49565b6001546118bd57611cb5565b600154600090600019015b808211611c89576000805b828410156119ec576118e3612576565b60026000600187815481106118f457fe5b60009182526020808320909101546001600160a01b0316835282810193909352604091820190208151606081018352815481526001820154938101939093526002015460ff1615159082015260055490915060049004816020015111156119d65760046005548161196157fe5b0481602001510381602001818152505080600260006001888154811061198357fe5b6000918252602080832091909101546001600160a01b0316835282810193909352604091820190208351815591830151600183015591909101516002909101805460ff19169115159190911790556119e0565b60019250506119ec565b508360010193506118d3565b828411611b83576119fb612576565b6002600060018681548110611a0c57fe5b60009182526020808320909101546001600160a01b0316835282810193909352604091820190208151606081018352815481526001820154938101939093526002015460ff161515908201526005549091506004900481602001511115611af457600460055481611a7957fe5b04816020015103816020018181525050806002600060018781548110611a9b57fe5b6000918252602080832091909101546001600160a01b03168352828101939093526040918201902083518155918301516001808401919091559201516002909101805460ff19169115159190911790559150611b839050565b6002600060018681548110611b0557fe5b60009182526020808320909101546001600160a01b031683528201929092526040018120818155600181810192909255600201805460ff19169055805480611b4957fe5b600082815260209020810160001990810180546001600160a01b031916905501905583611b765750611b83565b50600019909201916119ec565b818015611b8d5750805b15611c6c576002600060018681548110611ba357fe5b60009182526020808320909101546001600160a01b031683528201929092526040018120818155600181810192909255600201805460ff19169055805484908110611bea57fe5b600091825260209091200154600180546001600160a01b039092169186908110611c1057fe5b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b031602179055506001805480611c4957fe5b600082815260209020810160001990810180546001600160a01b03191690550190555b82611c78575050611c89565b5050600190910190600019016118c8565b6040517fcfdb3b6ccaeccbdc68be3c59c840e3b3c90f0a7c491f5fff1cf56cfda200dd9c90600090a150505b565b61100481565b6060611cd0611ccb836122bb565b611cd8565b90505b919050565b606081516001148015611d0a5750607f60f81b82600081518110611cf857fe5b01602001516001600160f81b03191611155b15611d16575080611cd3565b611cd0611d288351608060ff166123a1565b83612473565b6060815160001415611d4f5750604080516000815260208101909152611cd3565b606082600081518110611d5e57fe5b602002602001015190506000600190505b8351811015611d9f57611d9582858381518110611d8857fe5b6020026020010151612473565b9150600101611d6f565b50611db8611db2825160c060ff166123a1565b82612473565b9392505050565b8015611e21576040516375cc7d8960e01b8152612002906375cc7d8990611dea908690600401612b25565b600060405180830381600087803b158015611e0457600080fd5b505af1158015611e18573d6000803e3d6000fd5b50505050610905565b6040516375cc7d8960e01b8152612002906375cc7d8990611e46908690600401612b25565b600060405180830381600087803b158015611e6057600080fd5b505af1925050508015611e71575060015b610905576040516000815260443d1015611e8d57506000611f2a565b60046000803e60005160e01c6308c379a08114611eae576000915050611f2a565b60043d036004833e81513d602482011167ffffffffffffffff82111715611eda57600092505050611f2a565b808301805167ffffffffffffffff811115611efc576000945050505050611f2a565b8060208301013d8601811115611f1a57600095505050505050611f2a565b601f01601f191660405250925050505b80611f355750611f7e565b836001600160a01b03167fd7bc86ff5d08c8ab043edec743302aba2520e6635172a428bc956721db9e2d1c8483604051611f70929190613291565b60405180910390a250611ff3565b3d808015611fa8576040519150601f19603f3d011682016040523d82523d6000602084013e611fad565b606091505b50836001600160a01b03167fd7bc86ff5d08c8ab043edec743302aba2520e6635172a428bc956721db9e2d1c8483604051611fe9929190613291565b60405180910390a2505b610905565b60008160405160200161200b9190612b09565b60405160208183030381529060405280519060200120836040516020016120329190612b09565b604051602081830303815290604052805190602001201490505b92915050565b015190565b8082015160009060ff811615612071576001915081612077565b60009150815b505092915050565b60408051600480825260a0820190925260009160609190816020015b606081526020019060019003908161209b5750506040805160208082528183019092529192506060919080820181803683370190505090506120e08560000151611cbd565b826000815181106120ed57fe5b602002602001018190525061210860208660200151836124f0565b61211181611cd8565b8260018151811061211e57fe5b60200260200101819052506121368560400151611cbd565b8260028151811061214357fe5b602002602001018190525061215e60208660600151836124f0565b61216781611cd8565b8260038151811061217457fe5b602002602001018190525061219a602061218d84611d2e565b80519060200120836124f0565b6040805160b080825260e082019092526060916020820181803683370190505090506121ca818360006020612500565b6121dc81876080015160206060612500565b6121ea818660806030612500565b604080516001808252818301909252606091602082018180368337019050509050815160016020830182602086016066600019fa61222757600080fd5b50600161223582600061255a565b60ff161461224a57600094505050505061204c565b5060019695505050505050565b81518151600091600191811480831461227357600092506122b1565b600160208701838101602088015b6002848385100114156122ac5780518351146122a05760009650600093505b60209283019201612281565b505050505b5090949350505050565b604080516020808252818301909252606091829190602082018180368337505050602081018490529050600067ffffffffffffffff1984166122ff57506018612323565b6fffffffffffffffffffffffffffffffff19841661231f57506010612323565b5060005b60208110156123595781818151811061233857fe5b01602001516001600160f81b0319161561235157612359565b600101612323565b60008160200390506060816040519080825280601f01601f19166020018201604052801561238e576020820181803683370190505b5080830196909652508452509192915050565b60606801000000000000000083106123cb5760405162461bcd60e51b815260040161050f90612db9565b604080516001808252818301909252606091602082018180368337019050509050603784116124255782840160f81b8160008151811061240757fe5b60200101906001600160f81b031916908160001a905350905061204c565b6060612430856122bb565b90508381510160370160f81b8260008151811061244957fe5b60200101906001600160f81b031916908160001a90535061246a8282612473565b95945050505050565b6060806040519050835180825260208201818101602087015b818310156124a457805183526020928301920161248c565b50855184518101855292509050808201602086015b818310156124d15780518352602092830192016124b9565b508651929092011591909101601f01601f191660405250905092915050565b9091018181526020918201910152565b60005b818110156125535783818151811061251757fe5b602001015160f81c60f81b85848060010195508151811061253457fe5b60200101906001600160f81b031916908160001a905350600101612503565b5050505050565b6000816001018351101561256d57600080fd5b50016001015190565b604051806060016040528060008152602001600081526020016000151581525090565b600082601f8301126125a9578081fd5b81516125bc6125b782613310565b6132e9565b818152915060208083019084810160005b84811015612632578151870188603f8201126125e857600080fd5b838101516125f86125b782613330565b81815260408b8184860101111561260e57600080fd5b61261d83888401838701613354565b508652505092820192908201906001016125cd565b505050505092915050565b60008083601f84011261264e578182fd5b50813567ffffffffffffffff811115612665578182fd5b60208301915083602082850101111561267d57600080fd5b9250929050565b600082601f830112612694578081fd5b81356126a26125b782613330565b91508082528360208285010111156126b957600080fd5b8060208401602084013760009082016020015292915050565b600060a082840312156126e3578081fd5b6126ed60a06132e9565b905081358152602082013560208201526040820135604082015260608201356060820152608082013567ffffffffffffffff81111561272b57600080fd5b61273784828501612684565b60808301525092915050565b600060208284031215612754578081fd5b8135611db881613384565b600060208284031215612770578081fd5b8151611db881613384565b60008060006060848603121561278f578182fd5b833561279a81613384565b92506020840135915060408401356127b18161339c565b809150509250925092565b600080604083850312156127ce578182fd5b825167ffffffffffffffff808211156127e5578384fd5b81850186601f8201126127f6578485fd5b805192506128066125b784613310565b80848252602080830192508084018a828389028701011115612826578889fd5b8894505b8685101561285157805161283d81613384565b84526001949094019392810192810161282a565b508801519096509350505080821115612868578283fd5b5061287585828601612599565b9150509250929050565b600060208284031215612890578081fd5b8151611db88161339c565b600080604083850312156128ad578182fd5b823567ffffffffffffffff808211156128c4578384fd5b6128d086838701612684565b935060208501359150808211156128e5578283fd5b5061287585828601612684565b60008060008060408587031215612907578182fd5b843567ffffffffffffffff8082111561291e578384fd5b61292a8883890161263d565b90965094506020870135915080821115612942578384fd5b5061294f8782880161263d565b95989497509550505050565b60006020828403121561296c578081fd5b813567ffffffffffffffff80821115612983578283fd5b81840160608187031215612995578384fd5b61299f60606132e9565b92508035828111156129af578485fd5b6129bb878284016126d2565b8452506020810135828111156129cf578485fd5b6129db878284016126d2565b6020850152506040810135828111156129f2578485fd5b6129fe87828401612684565b6040850152509195945050505050565b600060208284031215612a1f578081fd5b5035919050565b600060208284031215612a37578081fd5b5051919050565b600080600060408486031215612a52578081fd5b833560ff81168114612a62578182fd5b9250602084013567ffffffffffffffff811115612a7d578182fd5b612a898682870161263d565b9497909650939450505050565b60008284528282602086013780602084860101526020601f19601f85011685010190509392505050565b60008151808452612ad8816020860160208601613354565b601f01601f19169290920160200192915050565b600a81526919195c1c9958d85d195960b21b602082015260400190565b60008251612b1b818460208701613354565b9190910192915050565b6001600160a01b0391909116815260200190565b6001600160a01b03929092168252602082015260400190565b901515815260200190565b600060208252611db86020830184612ac0565b600082825260406020830152611db860408301612aec565b600060408252612b9c604083018688612a96565b8281036020840152612baf818587612a96565b979650505050505050565b60208082526010908201526f195d9a59195b98d9481d1bdbc81bdb1960821b604082015260600190565b6020808252818101527f6d616c6963696f757320766f746520736c617368206e6f7420656e61626c6564604082015260600190565b6020808252601690820152751d985b1a59185d1bdc881b9bdd081b5a59dc985d195960521b604082015260600190565b60208082526019908201527f74686520636f6e7472616374206e6f7420696e69742079657400000000000000604082015260600190565b6020808252602b908201527f746865206d616c6963696f757320766f746520736c6173682073636f7065206f60408201526a7574206f662072616e676560a81b606082015260800190565b6020808252601a908201527f6e6f2076696f6c6174696f6e206f6620766f74652072756c6573000000000000604082015260600190565b6020808252818101527f7468652066656c6f6e795468726573686f6c64206f7574206f662072616e6765604082015260600190565b6020808252602b908201527f6c656e677468206f6620656e61626c654d616c6963696f7573566f7465536c6160408201526a0e6d040dad2e6dac2e8c6d60ab1b606082015260800190565b60208082526017908201527f766572696679207369676e6174757265206661696c6564000000000000000000604082015260600190565b6020808252600e908201526d696e70757420746f6f206c6f6e6760901b604082015260600190565b60208082526019908201527f7372634e756d20626967676572207468616e207461724e756d00000000000000604082015260600190565b600060208252611cd060208301612aec565b60208082526027908201527f6c656e677468206f66206d697364656d65616e6f725468726573686f6c64206d6040820152660d2e6dac2e8c6d60cb1b606082015260800190565b60208082526013908201527274776f206964656e746963616c20766f74657360681b604082015260600190565b60208082526030908201527f746865206d6573736167652073656e646572206d7573742062652076616c696460408201526f185d1bdc94d95d0818dbdb9d1c9858dd60821b606082015260800190565b60208082526023908201527f6c656e677468206f662066656c6f6e79536c61736853636f7065206d69736d616040820152620e8c6d60eb1b606082015260800190565b6020808252601490820152736761737072696365206973206e6f74207a65726f60601b604082015260600190565b60208082526029908201527f6c656e677468206f662066656c6f6e79536c617368526577617264526174696f604082015268040dad2e6dac2e8c6d60bb1b606082015260800190565b6020808252601590820152741d9bdd195059191c881a5cc81b9bdd08199bdd5b99605a1b604082015260600190565b6020808252602e908201527f746865206d6573736167652073656e646572206d75737420626520676f76657260408201526d1b985b98d94818dbdb9d1c9858dd60921b606082015260800190565b60208082526022908201527f6c656e677468206f662066656c6f6e795468726573686f6c64206d69736d61746040820152610c6d60f31b606082015260800190565b6020808252602a908201527f7468652066656c6f6e7920736c6173682072657761726420726174696f206f7560408201526974206f662072616e676560b01b606082015260800190565b60208082526019908201527f74686520636f6e747261637420616c726561647920696e697400000000000000604082015260600190565b6020808252600c908201526b32b6b83a3c903432b0b232b960a11b604082015260600190565b60208082526025908201527f746865206d697364656d65616e6f725468726573686f6c64206f7574206f662060408201526472616e676560d81b606082015260800190565b6020808252602f908201527f746865206d6573736167652073656e646572206d7573742062652063726f737360408201526e0818da185a5b8818dbdb9d1c9858dd608a1b606082015260800190565b6020808252602d908201527f746865206d6573736167652073656e646572206d75737420626520746865206260408201526c3637b1b590383937b23ab1b2b960991b606082015260800190565b6020808252600d908201526c756e6b6e6f776e20706172616d60981b604082015260600190565b6020808252601490820152731d185c99d95d08189b1bd8dac81d1bdbc81bdb1960621b604082015260600190565b6020808252818101527f63616e206e6f7420736c61736820747769636520696e206f6e6520626c6f636b604082015260600190565b61ffff91909116815260200190565b90815260200190565b6000838252604060208301526132aa6040830184612ac0565b949350505050565b918252602082015260400190565b92835260208301919091521515604082015260600190565b63ffffffff91909116815260200190565b60405181810167ffffffffffffffff8111828210171561330857600080fd5b604052919050565b600067ffffffffffffffff821115613326578081fd5b5060209081020190565b600067ffffffffffffffff821115613346578081fd5b50601f01601f191660200190565b60005b8381101561336f578181015183820152602001613357565b8381111561337e576000848401525b50505050565b6001600160a01b038116811461339957600080fd5b50565b801515811461339957600080fdfea164736f6c6343000604000a \ No newline at end of file diff --git a/core/systemcontracts/pascal/mainnet/StakeCreditContract b/core/systemcontracts/pascal/mainnet/StakeCreditContract new file mode 100644 index 0000000000..60aeae58f9 --- /dev/null +++ b/core/systemcontracts/pascal/mainnet/StakeCreditContract @@ -0,0 +1 @@ +6080604052600436106101d15760003560e01c8063647df759116100f7578063a9059cbb11610095578063c2cde2b211610064578063c2cde2b21461063c578063d241c1ea1461065c578063dd62ed3e1461069e578063f399e22e146106be57600080fd5b8063a9059cbb146105af578063a9664feb146105cf578063aa1966cd146105ef578063aad3ec961461061c57600080fd5b806391faf0b4116100d157806391faf0b41461053a57806395d89b411461055a578063a457c2d71461056f578063a5d059ca1461058f57600080fd5b8063647df759146104b75780636bbf2249146104d757806370a082311461050457600080fd5b80632f2d448a1161016f57806345bc4d101161013e57806345bc4d101461044f5780634d99dd161461046f5780635c19a95c1461048f5780635e607d76146104a257600080fd5b80632f2d448a146103bb578063313ce567146103db57806339509351146103f75780633a5381b51461041757600080fd5b8063095ea7b3116101ab578063095ea7b31461034057806315d1f8981461037057806318160ddd1461038657806323b872dd1461039b57600080fd5b8063038c0023146102cb57806306fdde03146102fe5780630913db471461032057600080fd5b366102c657336120021461020157604051630f22c43960e41b815261200260048201526024015b60405180910390fd5b60006120026001600160a01b0316631fa8882b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610243573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102679190611d9e565b6102719042611dcd565b6098546000828152609d6020908152604080832093909355609c9052908120805492935034929091906102a5908490611def565b9250508190555034609860008282546102be9190611def565b925050819055005b600080fd5b3480156102d757600080fd5b506102eb6102e6366004611e1a565b6106d1565b6040519081526020015b60405180910390f35b34801561030a57600080fd5b50610313610701565b6040516102f59190611e3e565b34801561032c57600080fd5b506102eb61033b366004611e1a565b610793565b34801561034c57600080fd5b5061036061035b366004611e8c565b6107b5565b60405190151581526020016102f5565b34801561037c57600080fd5b506102eb60985481565b34801561039257600080fd5b506067546102eb565b3480156103a757600080fd5b506103606103b6366004611eb8565b6107cd565b3480156103c757600080fd5b506102eb6103d6366004611e1a565b6107f1565b3480156103e757600080fd5b50604051601281526020016102f5565b34801561040357600080fd5b50610360610412366004611e8c565b6108b6565b34801561042357600080fd5b50609754610437906001600160a01b031681565b6040516001600160a01b0390911681526020016102f5565b34801561045b57600080fd5b506102eb61046a366004611ef9565b6108d8565b34801561047b57600080fd5b506102eb61048a366004611e8c565b6109cb565b6102eb61049d366004611e1a565b610be2565b6104b56104b0366004611f12565b610c58565b005b3480156104c357600080fd5b506102eb6104d2366004611ef9565b610dcb565b3480156104e357600080fd5b506102eb6104f2366004611ef9565b609d6020526000908152604090205481565b34801561051057600080fd5b506102eb61051f366004611e1a565b6001600160a01b031660009081526065602052604090205490565b34801561054657600080fd5b506102eb610555366004611ef9565b610e0a565b34801561056657600080fd5b50610313610e45565b34801561057b57600080fd5b5061036061058a366004611e8c565b610e54565b34801561059b57600080fd5b506102eb6105aa366004611e8c565b610ecf565b3480156105bb57600080fd5b506103606105ca366004611e8c565b610fd0565b3480156105db57600080fd5b506102eb6105ea366004611e8c565b610fde565b3480156105fb57600080fd5b506102eb61060a366004611ef9565b609c6020526000908152604090205481565b34801561062857600080fd5b506102eb610637366004611e8c565b611107565b34801561064857600080fd5b506102eb610657366004611e1a565b6113aa565b34801561066857600080fd5b5061067c610677366004611e8c565b6113c8565b60408051825181526020808401519082015291810151908201526060016102f5565b3480156106aa57600080fd5b506102eb6106b9366004611f3c565b61144b565b6104b56106cc366004611f75565b611476565b6001600160a01b0381166000908152609a6020526040812054600f81810b600160801b909204900b035b92915050565b60606068805461071090611ffa565b80601f016020809104026020016040519081016040528092919081815260200182805461073c90611ffa565b80156107895780601f1061075e57610100808354040283529160200191610789565b820191906000526020600020905b81548152906001019060200180831161076c57829003601f168201915b5050505050905090565b6001600160a01b0381166000908152606560205260408120546106fb90610e0a565b6000336107c381858561162c565b5060019392505050565b6000336107db858285611645565b6107e68585856116b9565b506001949350505050565b6001600160a01b0381166000908152609a6020526040812054600f81810b600160801b909204900b0381805b828110156108ae576001600160a01b0385166000908152609a6020526040812061084790836116d2565b6000818152609960209081526040918290208251606081018452815481526001820154928101929092526002015491810182905291925042106108945761088d8461202e565b935061089b565b50506108ae565b5050806108a79061202e565b905061081d565b509392505050565b6000336107c38185856108c9838361144b565b6108d39190611def565b61162c565b6000336120021461090057604051630f22c43960e41b815261200260048201526024016101f8565b6097546001600160a01b03166000908152606560205260408120549061092584610dcb565b90508181116109345780610936565b815b609754909150600090610952906001600160a01b031683611743565b6040519091506000906110029083908381818185875af1925050503d8060008114610999576040519150601f19603f3d011682016040523d82523d6000602084013e61099e565b606091505b50509050806109c0576040516312171d8360e31b815260040160405180910390fd5b50925050505b919050565b600033612002146109f357604051630f22c43960e41b815261200260048201526024016101f8565b81600003610a1457604051639811e0c760e01b815260040160405180910390fd5b6001600160a01b038316600090815260656020526040902054821115610a4d57604051631e9acf1760e31b815260040160405180910390fd5b610a578383611743565b905060006120026001600160a01b031663fc0c5ff16040518163ffffffff1660e01b8152600401602060405180830381865afa158015610a9b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610abf9190611d9e565b610ac99042611def565b6040805160608101825285815260208101859052908101829052909150600085610af281611778565b60405160609290921b6bffffffffffffffffffffffff19166020830152603482015260540160408051601f1981840301815291815281516020928301206000818152609990935291205490915015610b5d5760405163b19e911560e01b815260040160405180910390fd5b600081815260996020908152604080832085518155828601516001820155818601516002909101556001600160a01b0389168352609a9091529020610bd990828154600160801b90819004600f0b6000818152600180860160205260409091209390935583546001600160801b03908116939091011602179055565b50505092915050565b60003361200214610c0a57604051630f22c43960e41b815261200260048201526024016101f8565b34600003610c2b57604051631f2a200560e01b815260040160405180910390fd5b610c3582346117a0565b9050806000036109c657604051639811e0c760e01b815260040160405180910390fd5b3361200214610c7e57604051630f22c43960e41b815261200260048201526024016101f8565b346000612710610c9867ffffffffffffffff851684612047565b610ca29190611dcd565b90506000610cb0828461205e565b905060006120026001600160a01b0316631fa8882b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610cf4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d189190611d9e565b610d229042611dcd565b6098546000828152609d6020908152604080832093909355609c905290812080549293508492909190610d56908490611def565b925050819055508160986000828254610d6f9190611def565b9091555050609754610d8a906001600160a01b0316846117a0565b5060408051838152602081018590527ffb0e1482d62102ab9594f69d4c6d693749e3e2bf1c21af272f5456b2d5a4f6b5910160405180910390a15050505050565b6000609854600003610df0576040516307b76ce760e51b815260040160405180910390fd5b609854606754610e009084612047565b6106fb9190611dcd565b6000610e1560675490565b600003610e3557604051632fe8dae960e01b815260040160405180910390fd5b606754609854610e009084612047565b60606069805461071090611ffa565b60003381610e62828661144b565b905083811015610ec25760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b60648201526084016101f8565b6107e6828686840361162c565b60003361200214610ef757604051630f22c43960e41b815261200260048201526024016101f8565b81600003610f1857604051639811e0c760e01b815260040160405180910390fd5b6001600160a01b038316600090815260656020526040902054821115610f5157604051631e9acf1760e31b815260040160405180910390fd5b610f5b8383611743565b6040519091506000906120029083908381818185875af1925050503d8060008114610fa2576040519150601f19603f3d011682016040523d82523d6000602084013e610fa7565b606091505b5050905080610fc9576040516312171d8360e31b815260040160405180910390fd5b5092915050565b6000336107c38185856116b9565b6001600160a01b0382166000908152609a6020526040812054600f81810b600160801b909204900b03600003611016575060006106fb565b81158061104a57506001600160a01b0383166000908152609a6020526040902054600f81810b600160801b909204900b0382115b611054578161107e565b6001600160a01b0383166000908152609a6020526040902054600f81810b600160801b909204900b035b91506000805b838110156108ae576001600160a01b0385166000908152609a602052604081206110ae90836116d2565b600081815260996020908152604091829020825160608101845281548152600182015492810183905260029091015492810192909252919250906110f29085611def565b93505050806111009061202e565b9050611084565b6000336120021461112f57604051630f22c43960e41b815261200260048201526024016101f8565b6111376117c9565b6001600160a01b0383166000908152609a6020526040902054600f81810b600160801b909204900b036000036111805760405163ad41893760e01b815260040160405180910390fd5b8115806111b457506001600160a01b0383166000908152609a6020526040902054600f81810b600160801b909204900b0382115b6111be57816111e8565b6001600160a01b0383166000908152609a6020526040902054600f81810b600160801b909204900b035b915060005b821561129e576001600160a01b0384166000908152609a6020526040812061121490611822565b6000818152609960209081526040918290208251606081018452815481526001820154928101929092526002015491810182905291925042101561125957505061129e565b6001600160a01b0386166000908152609a6020526040902061127a90611876565b50602081015161128a9084611def565b925061129585612071565b945050506111ed565b806000036112bf576040516303cd8e0960e21b815260040160405180910390fd5b60006120026001600160a01b031663e8f67c3b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611301573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113259190611d9e565b90506000856001600160a01b03168284604051600060405180830381858888f193505050503d8060008114611376576040519150601f19603f3d011682016040523d82523d6000602084013e61137b565b606091505b505090508061139d576040516312171d8360e31b815260040160405180910390fd5b50506001805590506106fb565b6001600160a01b0381166000908152609b60205260408120546106fb565b6113ec60405180606001604052806000815260200160008152602001600081525090565b6001600160a01b0383166000908152609a6020526040812061140e90846116d2565b6000908152609960209081526040918290208251606081018452815481526001820154928101929092526002015491810191909152949350505050565b6001600160a01b03918216600090815260666020908152604080832093909416825291909152205490565b600054610100900460ff16158080156114965750600054600160ff909116105b806114b05750303b1580156114b0575060005460ff166001145b6115135760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084016101f8565b6000805460ff191660011790558015611536576000805461ff0019166101001790555b336120021461155c57604051630f22c43960e41b815261200260048201526024016101f8565b60008383604051602001611571929190612088565b6040516020818303038152906040529050600084846040516020016115979291906120b8565b60405160208183030381529060405290506115b282826118fb565b6115ba611940565b609780546001600160a01b0319166001600160a01b0388161790556115de34611967565b50508015611626576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b50505050565b604051632028747160e01b815260040160405180910390fd5b6000611651848461144b565b9050600019811461162657818110156116ac5760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e636500000060448201526064016101f8565b611626848484840361162c565b604051638cd22d1960e01b815260040160405180910390fd5b6000806116f56116e184611ad7565b85546116f09190600f0b6120d6565b611b45565b8454909150600160801b9004600f90810b9082900b1261172857604051632d0483c560e21b815260040160405180910390fd5b600f0b60009081526001939093016020525050604090205490565b600061174e82610e0a565b905061175a8383611ba9565b806098600082825461176c919061205e565b90915550909392505050565b6001600160a01b0381166000908152609b602052604090208054600181018255905b50919050565b60006117ab82610dcb565b90506117b78382611cdd565b816098600082825461176c9190611def565b60026001540361181b5760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0060448201526064016101f8565b6002600155565b600061183d8254600f81810b600160801b909204900b131590565b1561185b57604051631ed9509560e11b815260040160405180910390fd5b508054600f0b60009081526001909101602052604090205490565b60006118918254600f81810b600160801b909204900b131590565b156118af57604051631ed9509560e11b815260040160405180910390fd5b508054600f0b6000818152600180840160205260408220805492905583546fffffffffffffffffffffffffffffffff191692016001600160801b03169190911790915590565b60018055565b600054610100900460ff166119225760405162461bcd60e51b81526004016101f8906120fe565b606861192e83826121ad565b50606961193b82826121ad565b505050565b600054610100900460ff166118f55760405162461bcd60e51b81526004016101f8906120fe565b600054610100900460ff1661198e5760405162461bcd60e51b81526004016101f8906120fe565b60006120026001600160a01b0316638a4d3fa86040518163ffffffff1660e01b8152600401602060405180830381865afa1580156119d0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119f49190611d9e565b90508082111580611a0e57506097546001600160a01b0316155b80611a1a575060675415155b15611a3857604051632163e6b960e21b815260040160405180910390fd5b60006120026001600160a01b0316634e6fd6c46040518163ffffffff1660e01b8152600401602060405180830381865afa158015611a7a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a9e919061226d565b9050611aaa8183611cdd565b6000611ab6838561205e565b609754909150611acf906001600160a01b031682611cdd565b505050609855565b60006001600160ff1b03821115611b415760405162461bcd60e51b815260206004820152602860248201527f53616665436173743a2076616c756520646f65736e27742066697420696e2061604482015267371034b73a191a9b60c11b60648201526084016101f8565b5090565b80600f81900b81146109c65760405162461bcd60e51b815260206004820152602760248201527f53616665436173743a2076616c756520646f65736e27742066697420696e20316044820152663238206269747360c81b60648201526084016101f8565b6001600160a01b038216611c095760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b60648201526084016101f8565b6001600160a01b03821660009081526065602052604090205481811015611c7d5760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e604482015261636560f01b60648201526084016101f8565b6001600160a01b03831660008181526065602090815260408083208686039055606780548790039055518581529192917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a3505050565b6001600160a01b038216611d335760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f20616464726573730060448201526064016101f8565b8060676000828254611d459190611def565b90915550506001600160a01b0382166000818152606560209081526040808320805486019055518481527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a35050565b600060208284031215611db057600080fd5b5051919050565b634e487b7160e01b600052601160045260246000fd5b600082611dea57634e487b7160e01b600052601260045260246000fd5b500490565b808201808211156106fb576106fb611db7565b6001600160a01b0381168114611e1757600080fd5b50565b600060208284031215611e2c57600080fd5b8135611e3781611e02565b9392505050565b600060208083528351808285015260005b81811015611e6b57858101830151858201604001528201611e4f565b506000604082860101526040601f19601f8301168501019250505092915050565b60008060408385031215611e9f57600080fd5b8235611eaa81611e02565b946020939093013593505050565b600080600060608486031215611ecd57600080fd5b8335611ed881611e02565b92506020840135611ee881611e02565b929592945050506040919091013590565b600060208284031215611f0b57600080fd5b5035919050565b600060208284031215611f2457600080fd5b813567ffffffffffffffff81168114611e3757600080fd5b60008060408385031215611f4f57600080fd5b8235611f5a81611e02565b91506020830135611f6a81611e02565b809150509250929050565b600080600060408486031215611f8a57600080fd5b8335611f9581611e02565b9250602084013567ffffffffffffffff80821115611fb257600080fd5b818601915086601f830112611fc657600080fd5b813581811115611fd557600080fd5b876020828501011115611fe757600080fd5b6020830194508093505050509250925092565b600181811c9082168061200e57607f821691505b60208210810361179a57634e487b7160e01b600052602260045260246000fd5b60006001820161204057612040611db7565b5060010190565b80820281158282048414176106fb576106fb611db7565b818103818111156106fb576106fb611db7565b60008161208057612080611db7565b506000190190565b65029ba30b5b2960d51b815281836006830137660810dc99591a5d60ca1b91016006810191909152600d01919050565b611cdd60f21b81528183600283013760009101600201908152919050565b80820182811260008312801582168215821617156120f6576120f6611db7565b505092915050565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b634e487b7160e01b600052604160045260246000fd5b601f82111561193b57600081815260208120601f850160051c810160208610156121865750805b601f850160051c820191505b818110156121a557828155600101612192565b505050505050565b815167ffffffffffffffff8111156121c7576121c7612149565b6121db816121d58454611ffa565b8461215f565b602080601f83116001811461221057600084156121f85750858301515b600019600386901b1c1916600185901b1785556121a5565b600085815260208120601f198616915b8281101561223f57888601518255948401946001909101908401612220565b508582101561225d5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b60006020828403121561227f57600080fd5b8151611e3781611e0256fea164736f6c6343000811000a \ No newline at end of file diff --git a/core/systemcontracts/pascal/mainnet/StakeHubContract b/core/systemcontracts/pascal/mainnet/StakeHubContract new file mode 100644 index 0000000000..239fac931a --- /dev/null +++ b/core/systemcontracts/pascal/mainnet/StakeHubContract @@ -0,0 +1 @@ +608060405260043610620003e75760003560e01c80638456cb591162000203578063cbb04d9d1162000117578063e8f67c3b11620000ad578063f80a34021162000078578063f80a34021462000c3f578063fb50b31f1462000c64578063fc0c5ff11462000c89578063ff69ab611462000ca157600080fd5b8063e8f67c3b1462000bbb578063e992aaf51462000bd3578063efdbf0e11462000beb578063f1f74d841462000c2757600080fd5b8063d7c2dfc811620000ee578063d7c2dfc81462000b41578063d8ca511f1462000b66578063daacdb661462000b7e578063dbda7fb31462000b9657600080fd5b8063cbb04d9d1462000ac2578063d115a2061462000b03578063d6ca429d1462000b1c57600080fd5b8063ac4317511162000199578063bff02e201162000164578063bff02e201462000a4f578063c38fbec81462000a85578063c473318f1462000aaa578063c8509d8114620008a357600080fd5b8063ac43175114620009cd578063b187bd2614620009f2578063baa7199e1462000a12578063bdceadf31462000a3757600080fd5b80638cd22b2211620001da5780638cd22b221462000938578063982ef0a7146200095d578063a43569b31462000974578063aad3ec9614620009a857600080fd5b80638456cb5914620008c857806386d5450614620008e05780638a4d3fa8146200091a57600080fd5b806349f41a4211620002fb57806364028fbd116200029157806375cc7d89116200025c57806375cc7d89146200084e57806376e7d6d614620008735780638129fc1c146200088b578063831d65d114620008a357600080fd5b806364028fbd1462000789578063663706d314620007a05780636ec01b2714620007d15780636f8e2fa4146200082957600080fd5b80634e6fd6c411620002d25780634e6fd6c414620006f05780635949187114620007085780635e7cc1c9146200072d57806363a036b5146200075257600080fd5b806349f41a4214620006815780634a49ac4c14620006a65780634d99dd1614620006cb57600080fd5b80631fa8882b116200037d578063417c73a71162000348578063417c73a714620005cd578063449ecfe614620005f257806345211bfd14620006175780634838d165146200063c57600080fd5b80631fa8882b146200053d5780632b727c8614620005565780632e8e8c71146200057b5780633840998814620005b557600080fd5b8063092193ab11620003be578063092193ab14620004885780630e9fbf51146200049f5780631182b87514620004c457806317b4f35314620004f857600080fd5b8063046f7da21462000407578063059ddd22146200041f5780630661806e146200046157600080fd5b36620004025760345460ff166001146200040057600080fd5b005b600080fd5b3480156200041457600080fd5b506200040062000cb9565b3480156200042c57600080fd5b50620004446200043e36600462008787565b62000d4b565b6040516001600160a01b0390911681526020015b60405180910390f35b3480156200046e57600080fd5b506200047960365481565b60405190815260200162000458565b620004006200049936600462008787565b62001173565b348015620004ac57600080fd5b5062000400620004be366004620087e9565b620017c4565b348015620004d157600080fd5b50620004e9620004e33660046200882e565b62001af0565b604051620004589190620088e1565b3480156200050557600080fd5b506200044462000517366004620089b3565b80516020818301810180516045825292820191909301209152546001600160a01b031681565b3480156200054a57600080fd5b50620004796201518081565b3480156200056357600080fd5b50620004446200057536600462008787565b62001b88565b3480156200058857600080fd5b50620004446200059a36600462008787565b604d602052600090815260409020546001600160a01b031681565b348015620005c257600080fd5b506200047960375481565b348015620005da57600080fd5b5062000400620005ec36600462008787565b62001bdd565b348015620005ff57600080fd5b50620004006200061136600462008787565b62001c5f565b3480156200062457600080fd5b50620004006200063636600462008787565b62001e44565b3480156200064957600080fd5b50620006706200065b36600462008787565b60016020526000908152604090205460ff1681565b604051901515815260200162000458565b3480156200068e57600080fd5b5062000400620006a036600462008787565b6200201d565b348015620006b357600080fd5b5062000400620006c536600462008787565b62002239565b348015620006d857600080fd5b5062000400620006ea36600462008a08565b620022b5565b348015620006fd57600080fd5b506200044461dead81565b3480156200071557600080fd5b50620004006200072736600462008a46565b620028e5565b3480156200073a57600080fd5b50620004006200074c36600462008ab0565b620036de565b3480156200075f57600080fd5b50620007776200077136600462008ad7565b62003908565b60405162000458949392919062008b40565b620004006200079a36600462008bfc565b62003fad565b348015620007ad57600080fd5b5062000479620007bf36600462008787565b60446020526000908152604090205481565b348015620007de57600080fd5b50620007f6620007f036600462008787565b620045fc565b6040805182516001600160401b039081168252602080850151821690830152928201519092169082015260600162000458565b3480156200083657600080fd5b50620004e96200084836600462008787565b620046a1565b3480156200085b57600080fd5b50620004006200086d36600462008787565b62004acd565b3480156200088057600080fd5b5062000479603d5481565b3480156200089857600080fd5b506200040062004c9f565b348015620008b057600080fd5b5062000400620008c23660046200882e565b62004e6a565b348015620008d557600080fd5b506200040062004ec8565b348015620008ed57600080fd5b5062000444620008ff36600462008787565b6043602052600090815260409020546001600160a01b031681565b3480156200092757600080fd5b5062000479670de0b6b3a764000081565b3480156200094557600080fd5b50620004796200095736600462008a08565b62004f60565b620004006200096e36600462008cd2565b62005019565b3480156200098157600080fd5b50620009996200099336600462008787565b620056c7565b60405162000458919062008d0a565b348015620009b557600080fd5b5062000400620009c736600462008a08565b620059b4565b348015620009da57600080fd5b5062000400620009ec36600462008d87565b62005a21565b348015620009ff57600080fd5b5060005462010000900460ff1662000670565b34801562000a1f57600080fd5b506200040062000a3136600462008e40565b620068c0565b34801562000a4457600080fd5b5062000479603c5481565b34801562000a5c57600080fd5b5062000a7462000a6e36600462008ad7565b62006a8d565b604051620004589392919062008e99565b34801562000a9257600080fd5b506200040062000aa436600462008787565b62006c69565b34801562000ab757600080fd5b506200047960385481565b34801562000acf57600080fd5b5062000ae762000ae136600462008787565b62006f2b565b6040805193845291151560208401529082015260600162000458565b34801562000b1057600080fd5b5062000479620186a081565b34801562000b2957600080fd5b506200040062000b3b36600462008ef6565b6200736e565b34801562000b4e57600080fd5b506200040062000b6036600462008fdf565b62007594565b34801562000b7357600080fd5b5062000479603b5481565b34801562000b8b57600080fd5b506200047960495481565b34801562000ba357600080fd5b506200044462000bb536600462008787565b6200768a565b34801562000bc857600080fd5b506200047960355481565b34801562000be057600080fd5b5062000479603a5481565b34801562000bf857600080fd5b506200047962000c0a366004620089b3565b805160208183018101805160468252928201919093012091525481565b34801562000c3457600080fd5b5062000479603e5481565b34801562000c4c57600080fd5b506200047962000c5e36600462008a08565b62007ab4565b34801562000c7157600080fd5b506200040062000c8336600462008d87565b62007b25565b34801562000c9657600080fd5b506200047960395481565b34801562000cae57600080fd5b5062000479604a5481565b600054630100000090046001600160a01b0316331462000cec576040516306fbb1e360e01b815260040160405180910390fd5b60005462010000900460ff1662000d1657604051636cd6020160e01b815260040160405180910390fd5b6000805462ff0000191681556040517f62451d457bc659158be6e6247f56ec1df424a5c7597f71c20c2bc44e0965c8f99190a1565b6001600160a01b038082166000908152604160209081526040808320815161018081018352815486168152600182015486169381019390935260028101549094169082015260038301546060820152600483018054929384939091608084019162000db69062009045565b80601f016020809104026020016040519081016040528092919081815260200182805462000de49062009045565b801562000e355780601f1062000e095761010080835404028352916020019162000e35565b820191906000526020600020905b81548152906001019060200180831162000e1757829003601f168201915b505050505081526020016005820160405180608001604052908160008201805462000e609062009045565b80601f016020809104026020016040519081016040528092919081815260200182805462000e8e9062009045565b801562000edf5780601f1062000eb35761010080835404028352916020019162000edf565b820191906000526020600020905b81548152906001019060200180831162000ec157829003601f168201915b5050505050815260200160018201805462000efa9062009045565b80601f016020809104026020016040519081016040528092919081815260200182805462000f289062009045565b801562000f795780601f1062000f4d5761010080835404028352916020019162000f79565b820191906000526020600020905b81548152906001019060200180831162000f5b57829003601f168201915b5050505050815260200160028201805462000f949062009045565b80601f016020809104026020016040519081016040528092919081815260200182805462000fc29062009045565b8015620010135780601f1062000fe75761010080835404028352916020019162001013565b820191906000526020600020905b81548152906001019060200180831162000ff557829003601f168201915b505050505081526020016003820180546200102e9062009045565b80601f01602080910402602001604051908101604052809291908181526020018280546200105c9062009045565b8015620010ad5780601f106200108157610100808354040283529160200191620010ad565b820191906000526020600020905b8154815290600101906020018083116200108f57829003601f168201915b505050919092525050508152604080516060808201835260098501546001600160401b038082168452600160401b82048116602080860191909152600160801b9092041683850152840191909152600a84015460ff16151582840152600b84015490830152600c8301546080830152600d8301546001600160a01b031660a0830152805161026081019182905260c09092019190600e84019060139082845b8154815260200190600101908083116200114c575050509190925250509051949350505050565b33611000146200119f57604051630f22c43960e41b815261100060048201526024015b60405180910390fd5b6001600160a01b03808216600090815260436020908152604080832054841680845260418352818420825161018081018452815487168152600182015487169481019490945260028101549095169183019190915260038401546060830152600484018054919491608084019190620012189062009045565b80601f0160208091040260200160405190810160405280929190818152602001828054620012469062009045565b8015620012975780601f106200126b5761010080835404028352916020019162001297565b820191906000526020600020905b8154815290600101906020018083116200127957829003601f168201915b5050505050815260200160058201604051806080016040529081600082018054620012c29062009045565b80601f0160208091040260200160405190810160405280929190818152602001828054620012f09062009045565b8015620013415780601f10620013155761010080835404028352916020019162001341565b820191906000526020600020905b8154815290600101906020018083116200132357829003601f168201915b505050505081526020016001820180546200135c9062009045565b80601f01602080910402602001604051908101604052809291908181526020018280546200138a9062009045565b8015620013db5780601f10620013af57610100808354040283529160200191620013db565b820191906000526020600020905b815481529060010190602001808311620013bd57829003601f168201915b50505050508152602001600282018054620013f69062009045565b80601f0160208091040260200160405190810160405280929190818152602001828054620014249062009045565b8015620014755780601f10620014495761010080835404028352916020019162001475565b820191906000526020600020905b8154815290600101906020018083116200145757829003601f168201915b50505050508152602001600382018054620014909062009045565b80601f0160208091040260200160405190810160405280929190818152602001828054620014be9062009045565b80156200150f5780601f10620014e3576101008083540402835291602001916200150f565b820191906000526020600020905b815481529060010190602001808311620014f157829003601f168201915b505050919092525050508152604080516060808201835260098501546001600160401b038082168452600160401b82048116602080860191909152600160801b9092041683850152840191909152600a84015460ff16151582840152600b84015490830152600c8301546080830152600d8301546001600160a01b031660a0830152805161026081019182905260c09092019190600e84019060139082845b815481526020019060010190808311620015ae575050509190925250505060408101519091506001600160a01b03161580620015eb57508060e001515b15620016a857604051611002903490600081818185875af1925050503d806000811462001635576040519150601f19603f3d011682016040523d82523d6000602084013e6200163a565b606091505b505050816001600160a01b03167ffc8bff675087dd2da069cc3fb517b9ed001e19750c0865241a5542dba1ba170d6040516200169b9060208082526011908201527024a72b20a624a22fab20a624a220aa27a960791b604082015260600190565b60405180910390a2505050565b60408181015160c0830151519151632f303ebb60e11b81526001600160401b0390921660048301526001600160a01b031690635e607d769034906024016000604051808303818588803b158015620016ff57600080fd5b505af115801562001714573d6000803e3d6000fd5b5050505050816001600160a01b03167fe34918ff1c7084970068b53fd71ad6d8b04e9f15d3886cbf006443e6cdc52ea6346040516200175591815260200190565b60405180910390a26040808201519051633041949b60e01b815261200591633041949b916200178a919086906004016200907b565b600060405180830381600087803b158015620017a557600080fd5b505af1158015620017ba573d6000803e3d6000fd5b5050505050505b50565b3361100114620017ec57604051630f22c43960e41b8152611001600482015260240162001196565b60005462010000900460ff16156200181757604051631785c68160e01b815260040160405180910390fd5b6000604583836040516200182d92919062009095565b908152604051908190036020019020546001600160a01b0316905062001855603f8262007d5e565b620018735760405163056e881160e01b815260040160405180910390fd5b6001600160a01b0381166000908152604160205260408120906200189b6201518042620090bb565b604a546000828152604b602052604090205491925011620018cf5760405163bd52fcdb60e01b815260040160405180910390fd5b6000818152604b60205260408120805460019290620018f0908490620090de565b90915550506040516046906200190a908790879062009095565b9081526020016040518091039020546000141580156200195b57504262015180604687876040516200193e92919062009095565b908152602001604051809103902054620019599190620090de565b105b156200197a57604051631898eb6b60e01b815260040160405180910390fd5b6000806200198a85600262007d81565b9150915081620019ad57604051631b919bb160e11b815260040160405180910390fd5b6002840154603c5460405163045bc4d160e41b815260048101919091526000916001600160a01b0316906345bc4d10906024016020604051808303816000875af115801562001a00573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001a269190620090f4565b905062001a34858362007e0b565b856001600160a01b03167f6e9a2ee7aee95665e3a774a212eb11441b217e3e4656ab9563793094689aabb28383600260405162001a74939291906200910e565b60405180910390a26002850154604051633041949b60e01b815261200591633041949b9162001ab2916001600160a01b0316908a906004016200907b565b600060405180830381600087803b15801562001acd57600080fd5b505af115801562001ae2573d6000803e3d6000fd5b505050505050505050505050565b6060336120001462001b1a57604051630f22c43960e41b8152612000600482015260240162001196565b60005462010000900460ff161562001b4557604051631785c68160e01b815260040160405180910390fd5b6034805460ff1916600117905560405162461bcd60e51b815260206004820152600a60248201526919195c1c9958d85d195960b21b604482015260640162001196565b60008162001b98603f8262007d5e565b62001bb65760405163056e881160e01b815260040160405180910390fd5b6001600160a01b038084166000908152604160205260409020600d01541691505b50919050565b600054630100000090046001600160a01b0316331462001c10576040516306fbb1e360e01b815260040160405180910390fd5b6001600160a01b0381166000818152600160208190526040808320805460ff1916909217909155517f7fd26be6fc92aff63f1f4409b2b2ddeb272a888031d7f55ec830485ec61941869190a250565b60005462010000900460ff161562001c8a57604051631785c68160e01b815260040160405180910390fd5b3360009081526001602052604090205460ff161562001cbc5760405163b1d02c3d60e01b815260040160405180910390fd5b8062001cca603f8262007d5e565b62001ce85760405163056e881160e01b815260040160405180910390fd5b6001600160a01b0382166000908152604160205260409020600a81015460ff1662001d2657604051634b6b857d60e01b815260040160405180910390fd5b6036546002820154604051630913db4760e01b81526001600160a01b03868116600483015290911690630913db4790602401602060405180830381865afa15801562001d76573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001d9c9190620090f4565b101562001dbc576040516317b204bf60e11b815260040160405180910390fd5b4281600b0154111562001de25760405163170cb76760e21b815260040160405180910390fd5b600a8101805460ff19169055604980546001919060009062001e0690849062009149565b90915550506040516001600160a01b038416907f9390b453426557da5ebdc31f19a37753ca04addf656d32f35232211bb2af3f1990600090a2505050565b60005462010000900460ff161562001e6f57604051631785c68160e01b815260040160405180910390fd5b3360009081526001602052604090205460ff161562001ea15760405163b1d02c3d60e01b815260040160405180910390fd5b62001eab62007f00565b62001eb8603f8262007d5e565b62001ed65760405163056e881160e01b815260040160405180910390fd5b6001600160a01b03821662001efe57604051636520611b60e11b815260040160405180910390fd5b6001600160a01b03828116600090815260436020526040902054161562001f3857604051631e6f587560e11b815260040160405180910390fd5b600062001f4462007f00565b6001600160a01b0381166000908152604160205260409020600c81015491925090429062001f77906201518090620090de565b111562001f9757604051631f92cdbd60e11b815260040160405180910390fd5b80546001600160a01b039081166000908152604460209081526040808320429081905585548986166001600160a01b031991821681178855600c88019290925581855260439093528184208054958816959093168517909255519092917f6e4e747ca35203f16401c69805c7dd52fff67ef60b0ebc5c7fe16890530f223591a350505050565b336200202b603f8262007d5e565b620020495760405163056e881160e01b815260040160405180910390fd5b60005462010000900460ff16156200207457604051631785c68160e01b815260040160405180910390fd5b3360009081526001602052604090205460ff1615620020a65760405163b1d02c3d60e01b815260040160405180910390fd5b6001600160a01b038281166000908152604d60205260409020541615620020e05760405163bebdc75760e01b815260040160405180910390fd5b620020ed603f8362007d5e565b156200210c5760405163bebdc75760e01b815260040160405180910390fd5b336000818152604160205260409020600d01546001600160a01b0390811690841681036200214d5760405163bebdc75760e01b815260040160405180910390fd5b6001600160a01b0381161562002184576001600160a01b0381166000908152604d6020526040902080546001600160a01b03191690555b6001600160a01b038281166000908152604160205260409020600d0180546001600160a01b031916918616918217905515620021e9576001600160a01b038481166000908152604d6020526040902080546001600160a01b0319169184169190911790555b836001600160a01b0316816001600160a01b0316836001600160a01b03167fcbb728765de145e99c00e8ae32a325231e850359b7b8a6da3b84d672ab3f1d0a60405160405180910390a450505050565b600054630100000090046001600160a01b031633146200226c576040516306fbb1e360e01b815260040160405180910390fd5b6001600160a01b038116600081815260016020526040808220805460ff19169055517fe0db3499b7fdc3da4cddff5f45d694549c19835e7f719fb5606d3ad1a5de40119190a250565b60005462010000900460ff1615620022e057604051631785c68160e01b815260040160405180910390fd5b3360009081526001602052604090205460ff1615620023125760405163b1d02c3d60e01b815260040160405180910390fd5b8162002320603f8262007d5e565b6200233e5760405163056e881160e01b815260040160405180910390fd5b816000036200236057604051639811e0c760e01b815260040160405180910390fd5b6001600160a01b0380841660009081526041602090815260408083208151610180810183528154861681526001820154861693810193909352600281015490941690820152600383015460608201526004830180543394916080840191620023c89062009045565b80601f0160208091040260200160405190810160405280929190818152602001828054620023f69062009045565b8015620024475780601f106200241b5761010080835404028352916020019162002447565b820191906000526020600020905b8154815290600101906020018083116200242957829003601f168201915b5050505050815260200160058201604051806080016040529081600082018054620024729062009045565b80601f0160208091040260200160405190810160405280929190818152602001828054620024a09062009045565b8015620024f15780601f10620024c557610100808354040283529160200191620024f1565b820191906000526020600020905b815481529060010190602001808311620024d357829003601f168201915b505050505081526020016001820180546200250c9062009045565b80601f01602080910402602001604051908101604052809291908181526020018280546200253a9062009045565b80156200258b5780601f106200255f576101008083540402835291602001916200258b565b820191906000526020600020905b8154815290600101906020018083116200256d57829003601f168201915b50505050508152602001600282018054620025a69062009045565b80601f0160208091040260200160405190810160405280929190818152602001828054620025d49062009045565b8015620026255780601f10620025f95761010080835404028352916020019162002625565b820191906000526020600020905b8154815290600101906020018083116200260757829003601f168201915b50505050508152602001600382018054620026409062009045565b80601f01602080910402602001604051908101604052809291908181526020018280546200266e9062009045565b8015620026bf5780601f106200269357610100808354040283529160200191620026bf565b820191906000526020600020905b815481529060010190602001808311620026a157829003601f168201915b505050919092525050508152604080516060808201835260098501546001600160401b038082168452600160401b82048116602080860191909152600160801b9092041683850152840191909152600a84015460ff16151582840152600b84015490830152600c8301546080830152600d8301546001600160a01b031660a0830152805161026081019182905260c09092019190600e84019060139082845b8154815260200190600101908083116200275e575050509190925250505060408082015190516326ccee8b60e11b81526001600160a01b0385811660048301526024820188905292935060009290911690634d99dd16906044016020604051808303816000875af1158015620027d8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620027fe9190620090f4565b9050826001600160a01b0316866001600160a01b03167f3aace7340547de7b9156593a7652dc07ee900cea3fd8f82cb6c9d38b4082980287846040516200284f929190918252602082015260400190565b60405180910390a3856001600160a01b0316836001600160a01b0316036200287c576200287c8662007f41565b6040808301519051633041949b60e01b815261200591633041949b91620028a9919087906004016200907b565b600060405180830381600087803b158015620028c457600080fd5b505af1158015620028d9573d6000803e3d6000fd5b50505050505050505050565b60005462010000900460ff16156200291057604051631785c68160e01b815260040160405180910390fd5b3360009081526001602052604090205460ff1615620029425760405163b1d02c3d60e01b815260040160405180910390fd5b8362002950603f8262007d5e565b6200296e5760405163056e881160e01b815260040160405180910390fd5b836200297c603f8262007d5e565b6200299a5760405163056e881160e01b815260040160405180910390fd5b6034805460ff191660011790556000849003620029ca57604051639811e0c760e01b815260040160405180910390fd5b846001600160a01b0316866001600160a01b031603620029fd5760405163f0e3e62960e01b815260040160405180910390fd5b6001600160a01b038087166000908152604160209081526040808320815161018081018352815486168152600182015486169381019390935260028101549094169082015260038301546060820152600483018054339491608084019162002a659062009045565b80601f016020809104026020016040519081016040528092919081815260200182805462002a939062009045565b801562002ae45780601f1062002ab85761010080835404028352916020019162002ae4565b820191906000526020600020905b81548152906001019060200180831162002ac657829003601f168201915b505050505081526020016005820160405180608001604052908160008201805462002b0f9062009045565b80601f016020809104026020016040519081016040528092919081815260200182805462002b3d9062009045565b801562002b8e5780601f1062002b625761010080835404028352916020019162002b8e565b820191906000526020600020905b81548152906001019060200180831162002b7057829003601f168201915b5050505050815260200160018201805462002ba99062009045565b80601f016020809104026020016040519081016040528092919081815260200182805462002bd79062009045565b801562002c285780601f1062002bfc5761010080835404028352916020019162002c28565b820191906000526020600020905b81548152906001019060200180831162002c0a57829003601f168201915b5050505050815260200160028201805462002c439062009045565b80601f016020809104026020016040519081016040528092919081815260200182805462002c719062009045565b801562002cc25780601f1062002c965761010080835404028352916020019162002cc2565b820191906000526020600020905b81548152906001019060200180831162002ca457829003601f168201915b5050505050815260200160038201805462002cdd9062009045565b80601f016020809104026020016040519081016040528092919081815260200182805462002d0b9062009045565b801562002d5c5780601f1062002d305761010080835404028352916020019162002d5c565b820191906000526020600020905b81548152906001019060200180831162002d3e57829003601f168201915b505050919092525050508152604080516060808201835260098501546001600160401b038082168452600160401b82048116602080860191909152600160801b9092041683850152840191909152600a84015460ff16151582840152600b84015490830152600c8301546080830152600d8301546001600160a01b031660a0830152805161026081019182905260c09092019190600e84019060139082845b81548152602001906001019080831162002dfb57505050919092525050506001600160a01b0380891660009081526041602090815260408083208151610180810183528154861681526001820154861693810193909352600281015490941690820152600383015460608201526004830180549495509193909291608084019162002e869062009045565b80601f016020809104026020016040519081016040528092919081815260200182805462002eb49062009045565b801562002f055780601f1062002ed95761010080835404028352916020019162002f05565b820191906000526020600020905b81548152906001019060200180831162002ee757829003601f168201915b505050505081526020016005820160405180608001604052908160008201805462002f309062009045565b80601f016020809104026020016040519081016040528092919081815260200182805462002f5e9062009045565b801562002faf5780601f1062002f835761010080835404028352916020019162002faf565b820191906000526020600020905b81548152906001019060200180831162002f9157829003601f168201915b5050505050815260200160018201805462002fca9062009045565b80601f016020809104026020016040519081016040528092919081815260200182805462002ff89062009045565b8015620030495780601f106200301d5761010080835404028352916020019162003049565b820191906000526020600020905b8154815290600101906020018083116200302b57829003601f168201915b50505050508152602001600282018054620030649062009045565b80601f0160208091040260200160405190810160405280929190818152602001828054620030929062009045565b8015620030e35780601f10620030b757610100808354040283529160200191620030e3565b820191906000526020600020905b815481529060010190602001808311620030c557829003601f168201915b50505050508152602001600382018054620030fe9062009045565b80601f01602080910402602001604051908101604052809291908181526020018280546200312c9062009045565b80156200317d5780601f1062003151576101008083540402835291602001916200317d565b820191906000526020600020905b8154815290600101906020018083116200315f57829003601f168201915b505050919092525050508152604080516060808201835260098501546001600160401b038082168452600160401b82048116602080860191909152600160801b9092041683850152840191909152600a84015460ff16151582840152600b84015490830152600c8301546080830152600d8301546001600160a01b031660a0830152805161026081019182905260c09092019190600e84019060139082845b8154815260200190600101908083116200321c5750505050508152505090508060e0015180156200325f5750876001600160a01b0316836001600160a01b031614155b156200327e57604051636468920360e01b815260040160405180910390fd5b60408083015190516352e82ce560e11b81526001600160a01b038581166004830152602482018a9052600092169063a5d059ca906044016020604051808303816000875af1158015620032d5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620032fb9190620090f4565b9050603754811015620033215760405163dc6f0bdd60e01b815260040160405180910390fd5b896001600160a01b0316846001600160a01b0316148015620033b657506036546040808501519051630913db4760e01b81526001600160a01b038d8116600483015290911690630913db4790602401602060405180830381865afa1580156200338e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620033b49190620090f4565b105b15620033d5576040516317b204bf60e11b815260040160405180910390fd5b6000620186a0603a5483620033eb91906200915f565b620033f79190620090bb565b9050600083604001516001600160a01b03168260405160006040518083038185875af1925050503d80600081146200344c576040519150601f19603f3d011682016040523d82523d6000602084013e62003451565b606091505b505090508062003474576040516312171d8360e31b815260040160405180910390fd5b62003480828462009149565b60408086015190516317066a5760e21b81526001600160a01b03898116600483015292955060009290911690635c19a95c90869060240160206040518083038185885af1158015620034d6573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190620034fd9190620090f4565b9050866001600160a01b03168c6001600160a01b03168e6001600160a01b03167ffdac6e81913996d95abcc289e90f2d8bd235487ce6fe6f821e7d21002a1915b48e858960405162003562939291909283526020830191909152604082015260600190565b60405180910390a4604080516002808252606082018352600092602083019080368337019050509050866040015181600081518110620035a657620035a662009179565b60200260200101906001600160a01b031690816001600160a01b031681525050856040015181600181518110620035e157620035e162009179565b6001600160a01b0390921660209283029190910190910152604051634484077560e01b815261200590634484077590620036229084908c906004016200918f565b600060405180830381600087803b1580156200363d57600080fd5b505af115801562003652573d6000803e3d6000fd5b505050508a15620036c4576120056001600160a01b031663e5ed5b1e898f6040518363ffffffff1660e01b81526004016200368f9291906200907b565b600060405180830381600087803b158015620036aa57600080fd5b505af1158015620036bf573d6000803e3d6000fd5b505050505b50506034805460ff19169055505050505050505050505050565b60005462010000900460ff16156200370957604051631785c68160e01b815260040160405180910390fd5b3360009081526001602052604090205460ff16156200373b5760405163b1d02c3d60e01b815260040160405180910390fd5b6200374562007f00565b62003752603f8262007d5e565b620037705760405163056e881160e01b815260040160405180910390fd5b60006200377c62007f00565b6001600160a01b0381166000908152604160205260409020600c810154919250904290620037af906201518090620090de565b1115620037cf57604051631f92cdbd60e11b815260040160405180910390fd5b60098101546001600160401b03600160401b90910481169085161115620038095760405163dc81db8560e01b815260040160405180910390fd5b60098101546000906001600160401b03908116908616101562003847576009820154620038419086906001600160401b0316620091bb565b62003861565b600982015462003861906001600160401b031686620091bb565b60098301546001600160401b039182169250600160801b9004168111156200389c5760405163dc81db8560e01b815260040160405180910390fd5b60098201805467ffffffffffffffff19166001600160401b03871690811790915542600c8401556040519081526001600160a01b038416907f78cdd96edf59e09cfd4d26ef6ef6c92d166effe6a40970c54821206d541932cb9060200160405180910390a25050505050565b606080606060006200391b603f62008067565b90508086101562003fa457841562003934578462003936565b805b945060008562003947888462009149565b116200395f5762003959878362009149565b62003961565b855b9050806001600160401b038111156200397e576200397e620088f6565b604051908082528060200260200182016040528015620039a8578160200160208202803683370190505b509450806001600160401b03811115620039c657620039c6620088f6565b604051908082528060200260200182016040528015620039f0578160200160208202803683370190505b509350806001600160401b0381111562003a0e5762003a0e620088f6565b60405190808252806020026020018201604052801562003a4357816020015b606081526020019060019003908162003a2d5790505b50925060005b8181101562003fa157600062003a6d62003a64838b620090de565b603f9062008072565b6001600160a01b0380821660009081526041602090815260408083208151610180810183528154861681526001820154861693810193909352600281015490941690820152600383015460608201526004830180549495509193909291608084019162003ada9062009045565b80601f016020809104026020016040519081016040528092919081815260200182805462003b089062009045565b801562003b595780601f1062003b2d5761010080835404028352916020019162003b59565b820191906000526020600020905b81548152906001019060200180831162003b3b57829003601f168201915b505050505081526020016005820160405180608001604052908160008201805462003b849062009045565b80601f016020809104026020016040519081016040528092919081815260200182805462003bb29062009045565b801562003c035780601f1062003bd75761010080835404028352916020019162003c03565b820191906000526020600020905b81548152906001019060200180831162003be557829003601f168201915b5050505050815260200160018201805462003c1e9062009045565b80601f016020809104026020016040519081016040528092919081815260200182805462003c4c9062009045565b801562003c9d5780601f1062003c715761010080835404028352916020019162003c9d565b820191906000526020600020905b81548152906001019060200180831162003c7f57829003601f168201915b5050505050815260200160028201805462003cb89062009045565b80601f016020809104026020016040519081016040528092919081815260200182805462003ce69062009045565b801562003d375780601f1062003d0b5761010080835404028352916020019162003d37565b820191906000526020600020905b81548152906001019060200180831162003d1957829003601f168201915b5050505050815260200160038201805462003d529062009045565b80601f016020809104026020016040519081016040528092919081815260200182805462003d809062009045565b801562003dd15780601f1062003da55761010080835404028352916020019162003dd1565b820191906000526020600020905b81548152906001019060200180831162003db357829003601f168201915b505050919092525050508152604080516060808201835260098501546001600160401b038082168452600160401b82048116602080860191909152600160801b9092041683850152840191909152600a84015460ff16151582840152600b84015490830152600c8301546080830152600d8301546001600160a01b031660a0830152805161026081019182905260c09092019190600e84019060139082845b81548152602001906001019080831162003e70575050505050815250509050806000015188848151811062003ea95762003ea962009179565b60200260200101906001600160a01b031690816001600160a01b0316815250508060e0015162003f425780604001516001600160a01b03166315d1f8986040518163ffffffff1660e01b8152600401602060405180830381865afa15801562003f16573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062003f3c9190620090f4565b62003f45565b60005b87848151811062003f5a5762003f5a62009179565b602002602001018181525050806080015186848151811062003f805762003f8062009179565b602002602001018190525050508062003f9990620091e5565b905062003a49565b50505b92959194509250565b60005462010000900460ff161562003fd857604051631785c68160e01b815260040160405180910390fd5b3360009081526001602052604090205460ff16156200400a5760405163b1d02c3d60e01b815260040160405180910390fd5b3362004018603f8262007d5e565b156200403757604051635f28f62b60e01b815260040160405180910390fd5b6001600160a01b038181166000908152604d602052604090205416156200407157604051631a0a9b9f60e21b815260040160405180910390fd5b6001600160a01b038881166000908152604360205260409020541615620040ab57604051631e6f587560e11b815260040160405180910390fd5b60006001600160a01b031660458888604051620040ca92919062009095565b908152604051908190036020019020546001600160a01b03161462004102576040516311fdb94760e01b815260040160405180910390fd5b600062004110838062009201565b6040516020016200412392919062009095565b60408051601f1981840301815291815281516020928301206000818152604290935291205490915060ff16156200416d5760405163c0bf414360e01b815260040160405180910390fd5b600062004183670de0b6b3a76400003462009149565b9050603654811015620041a9576040516317b204bf60e11b815260040160405180910390fd5b6001600160a01b038a16620041d157604051636520611b60e11b815260040160405180910390fd5b611388620041e6604087016020880162008ab0565b6001600160401b031611806200422c575062004209604086016020870162008ab0565b6001600160401b031662004221602087018762008ab0565b6001600160401b0316115b806200426b575062004245604086016020870162008ab0565b6001600160401b031662004260606087016040880162008ab0565b6001600160401b0316115b156200428a5760405163dc81db8560e01b815260040160405180910390fd5b620042d56200429a858062009201565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506200808092505050565b620042f357604051635dba5ad760e01b815260040160405180910390fd5b62004302838a8a8a8a62008222565b6200432057604051631647e3cb60e11b815260040160405180910390fd5b60006200436e8462004333878062009201565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506200835292505050565b90506200437d603f8562008453565b506000838152604260209081526040808320805460ff191660019081179091556001600160a01b0380891680865260419094529190932080548f83166001600160a01b031991821617825593810180548516909317909255600282018054918516919093161790915542600382015560048101620043fd8b8d83620092a9565b5085600582016200440f828262009371565b5087905060098201620044238282620094aa565b505042600c8201556001600160a01b038c81166000908152604360205260409081902080546001600160a01b0319169288169290921790915551859060459062004471908e908e9062009095565b908152602001604051809103902060006101000a8154816001600160a01b0302191690836001600160a01b03160217905550816001600160a01b0316856001600160a01b03168d6001600160a01b03167faecd9fb95e79c75a3a1de93362c6be5fe6ab65770d8614be583884161cd8228d8e8e604051620044f49291906200957a565b60405180910390a460408051848152602081018590526001600160a01b0387169182917f24d7bda8602b916d64417f0dbfe2e2e88ec9b1157bd9f596dfdb91ba26624e04910160405180910390a360408051670de0b6b3a7640000808252602082015261dead916001600160a01b038816917f24d7bda8602b916d64417f0dbfe2e2e88ec9b1157bd9f596dfdb91ba26624e04910160405180910390a3604051633041949b60e01b815261200590633041949b90620045ba90859089906004016200907b565b600060405180830381600087803b158015620045d557600080fd5b505af1158015620045ea573d6000803e3d6000fd5b50505050505050505050505050505050565b60408051606081018252600080825260208201819052918101919091528162004627603f8262007d5e565b620046455760405163056e881160e01b815260040160405180910390fd5b50506001600160a01b031660009081526041602090815260409182902082516060810184526009909101546001600160401b038082168352600160401b8204811693830193909352600160801b90049091169181019190915290565b6001600160a01b038082166000908152604160209081526040808320815161018081018352815486168152600182015486169381019390935260028101549094169082015260038301546060828101919091526004840180549194916080840191906200470e9062009045565b80601f01602080910402602001604051908101604052809291908181526020018280546200473c9062009045565b80156200478d5780601f1062004761576101008083540402835291602001916200478d565b820191906000526020600020905b8154815290600101906020018083116200476f57829003601f168201915b5050505050815260200160058201604051806080016040529081600082018054620047b89062009045565b80601f0160208091040260200160405190810160405280929190818152602001828054620047e69062009045565b8015620048375780601f106200480b5761010080835404028352916020019162004837565b820191906000526020600020905b8154815290600101906020018083116200481957829003601f168201915b50505050508152602001600182018054620048529062009045565b80601f0160208091040260200160405190810160405280929190818152602001828054620048809062009045565b8015620048d15780601f10620048a557610100808354040283529160200191620048d1565b820191906000526020600020905b815481529060010190602001808311620048b357829003601f168201915b50505050508152602001600282018054620048ec9062009045565b80601f01602080910402602001604051908101604052809291908181526020018280546200491a9062009045565b80156200496b5780601f106200493f576101008083540402835291602001916200496b565b820191906000526020600020905b8154815290600101906020018083116200494d57829003601f168201915b50505050508152602001600382018054620049869062009045565b80601f0160208091040260200160405190810160405280929190818152602001828054620049b49062009045565b801562004a055780601f10620049d95761010080835404028352916020019162004a05565b820191906000526020600020905b815481529060010190602001808311620049e757829003601f168201915b505050919092525050508152604080516060808201835260098501546001600160401b038082168452600160401b82048116602080860191909152600160801b9092041683850152840191909152600a84015460ff16151582840152600b84015490830152600c8301546080830152600d8301546001600160a01b031660a0830152805161026081019182905260c09092019190600e84019060139082845b81548152602001906001019080831162004aa45750505091909252505050608001519392505050565b336110011462004af557604051630f22c43960e41b8152611001600482015260240162001196565b6001600160a01b038082166000908152604360205260409020541662004b1d603f8262007d5e565b62004b3b5760405163056e881160e01b815260040160405180910390fd5b6001600160a01b038181166000908152604160205260408082206002810154603b54925163045bc4d160e41b81526004810193909352909316906345bc4d10906024016020604051808303816000875af115801562004b9e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062004bc49190620090f4565b90506000603d544262004bd89190620090de565b905062004be6838262007e0b565b836001600160a01b03167f6e9a2ee7aee95665e3a774a212eb11441b217e3e4656ab9563793094689aabb28284600160405162004c26939291906200910e565b60405180910390a26002830154604051633041949b60e01b815261200591633041949b9162004c64916001600160a01b03169088906004016200907b565b600060405180830381600087803b15801562004c7f57600080fd5b505af115801562004c94573d6000803e3d6000fd5b505050505050505050565b600054610100900460ff161580801562004cc05750600054600160ff909116105b8062004cdc5750303b15801562004cdc575060005460ff166001145b62004d415760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b606482015260840162001196565b6000805460ff19166001179055801562004d65576000805461ff0019166101001790555b33411462004d865760405163022d8c9560e31b815260040160405180910390fd5b3a1562004da6576040516383f1b1d360e01b815260040160405180910390fd5b611388603555686c6b935b8bbd400000603655670de0b6b3a7640000603755602d60385562093a806039556002603a819055678ac7230489e80000603b55680ad78ebc5ac6200000603c556202a300603d5562278d00603e55604a5562004e217308e68ec70fa3b629784fdb28887e206ce8561e086200846a565b8015620017c1576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a150565b336120001462004e9257604051630f22c43960e41b8152612000600482015260240162001196565b60405162461bcd60e51b815260206004820152600a60248201526919195c1c9958d85d195960b21b604482015260640162001196565b600054630100000090046001600160a01b0316331462004efb576040516306fbb1e360e01b815260040160405180910390fd5b60005462010000900460ff161562004f2657604051631785c68160e01b815260040160405180910390fd5b6000805462ff00001916620100001781556040517f9e87fac88ff661f02d44f95383c817fece4bce600a3dab7a54406878b965e7529190a1565b600062004f6f603f8462007d5e565b62004f8d5760405163056e881160e01b815260040160405180910390fd5b6001600160a01b0383811660009081526041602052604090819020600201549051636bbf224960e01b815260048101859052911690636bbf2249906024015b602060405180830381865afa15801562004fea573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620050109190620090f4565b90505b92915050565b60005462010000900460ff16156200504457604051631785c68160e01b815260040160405180910390fd5b3360009081526001602052604090205460ff1615620050765760405163b1d02c3d60e01b815260040160405180910390fd5b8162005084603f8262007d5e565b620050a25760405163056e881160e01b815260040160405180910390fd5b6037543490811015620050c85760405163dc6f0bdd60e01b815260040160405180910390fd5b6001600160a01b0380851660009081526041602090815260408083208151610180810183528154861681526001820154861693810193909352600281015490941690820152600383015460608201526004830180543394916080840191620051309062009045565b80601f01602080910402602001604051908101604052809291908181526020018280546200515e9062009045565b8015620051af5780601f106200518357610100808354040283529160200191620051af565b820191906000526020600020905b8154815290600101906020018083116200519157829003601f168201915b5050505050815260200160058201604051806080016040529081600082018054620051da9062009045565b80601f0160208091040260200160405190810160405280929190818152602001828054620052089062009045565b8015620052595780601f106200522d5761010080835404028352916020019162005259565b820191906000526020600020905b8154815290600101906020018083116200523b57829003601f168201915b50505050508152602001600182018054620052749062009045565b80601f0160208091040260200160405190810160405280929190818152602001828054620052a29062009045565b8015620052f35780601f10620052c757610100808354040283529160200191620052f3565b820191906000526020600020905b815481529060010190602001808311620052d557829003601f168201915b505050505081526020016002820180546200530e9062009045565b80601f01602080910402602001604051908101604052809291908181526020018280546200533c9062009045565b80156200538d5780601f1062005361576101008083540402835291602001916200538d565b820191906000526020600020905b8154815290600101906020018083116200536f57829003601f168201915b50505050508152602001600382018054620053a89062009045565b80601f0160208091040260200160405190810160405280929190818152602001828054620053d69062009045565b8015620054275780601f10620053fb5761010080835404028352916020019162005427565b820191906000526020600020905b8154815290600101906020018083116200540957829003601f168201915b505050919092525050508152604080516060808201835260098501546001600160401b038082168452600160401b82048116602080860191909152600160801b9092041683850152840191909152600a84015460ff16151582840152600b84015490830152600c8301546080830152600d8301546001600160a01b031660a0830152805161026081019182905260c09092019190600e84019060139082845b815481526020019060010190808311620054c65750505050508152505090508060e001518015620055095750856001600160a01b0316826001600160a01b031614155b156200552857604051636468920360e01b815260040160405180910390fd5b60408082015190516317066a5760e21b81526001600160a01b0384811660048301526000921690635c19a95c90869060240160206040518083038185885af115801562005579573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190620055a09190620090f4565b9050826001600160a01b0316876001600160a01b03167f24d7bda8602b916d64417f0dbfe2e2e88ec9b1157bd9f596dfdb91ba26624e048387604051620055f1929190918252602082015260400190565b60405180910390a36040808301519051633041949b60e01b815261200591633041949b9162005626919087906004016200907b565b600060405180830381600087803b1580156200564157600080fd5b505af115801562005656573d6000803e3d6000fd5b505050508515620017ba576040516372f6ad8f60e11b81526120059063e5ed5b1e906200568a9086908b906004016200907b565b600060405180830381600087803b158015620056a557600080fd5b505af1158015620056ba573d6000803e3d6000fd5b5050505050505050505050565b620056f36040518060800160405280606081526020016060815260200160608152602001606081525090565b8162005701603f8262007d5e565b6200571f5760405163056e881160e01b815260040160405180910390fd5b6001600160a01b03831660009081526041602052604090819020815160808101909252600501805482908290620057569062009045565b80601f0160208091040260200160405190810160405280929190818152602001828054620057849062009045565b8015620057d55780601f10620057a957610100808354040283529160200191620057d5565b820191906000526020600020905b815481529060010190602001808311620057b757829003601f168201915b50505050508152602001600182018054620057f09062009045565b80601f01602080910402602001604051908101604052809291908181526020018280546200581e9062009045565b80156200586f5780601f1062005843576101008083540402835291602001916200586f565b820191906000526020600020905b8154815290600101906020018083116200585157829003601f168201915b505050505081526020016002820180546200588a9062009045565b80601f0160208091040260200160405190810160405280929190818152602001828054620058b89062009045565b8015620059095780601f10620058dd5761010080835404028352916020019162005909565b820191906000526020600020905b815481529060010190602001808311620058eb57829003601f168201915b50505050508152602001600382018054620059249062009045565b80601f0160208091040260200160405190810160405280929190818152602001828054620059529062009045565b8015620059a35780601f106200597757610100808354040283529160200191620059a3565b820191906000526020600020905b8154815290600101906020018083116200598557829003601f168201915b505050505081525050915050919050565b60005462010000900460ff1615620059df57604051631785c68160e01b815260040160405180910390fd5b3360009081526001602052604090205460ff161562005a115760405163b1d02c3d60e01b815260040160405180910390fd5b62005a1d828262008503565b5050565b336110071462005a4957604051630f22c43960e41b8152611007600482015260240162001196565b62005ab66040518060400160405280601081526020016f1d1c985b9cd9995c91d85cd31a5b5a5d60821b81525085858080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092939250506200860f9050565b1562005b71576020811462005ae85783838383604051630a5a604160e01b815260040162001196949392919062009590565b604080516020601f840181900481028201810190925282815260009162005b2b9185858083850183828082843760009201919091525092939250506200866c9050565b90506108fc81108062005b3f575061271081115b1562005b685784848484604051630a5a604160e01b815260040162001196949392919062009590565b6035556200687b565b62005be26040518060400160405280601481526020017336b4b729b2b6332232b632b3b0ba34b7b721272160611b81525085858080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092939250506200860f9050565b1562005cac576020811462005c145783838383604051630a5a604160e01b815260040162001196949392919062009590565b604080516020601f840181900481028201810190925282815260009162005c579185858083850183828082843760009201919091525092939250506200866c9050565b9050683635c9adc5dea0000081108062005c7a575069152d02c7e14af680000081115b1562005ca35784848484604051630a5a604160e01b815260040162001196949392919062009590565b6036556200687b565b62005d1f604051806040016040528060168152602001756d696e44656c65676174696f6e424e424368616e676560501b81525085858080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092939250506200860f9050565b1562005de6576020811462005d515783838383604051630a5a604160e01b815260040162001196949392919062009590565b604080516020601f840181900481028201810190925282815260009162005d949185858083850183828082843760009201919091525092939250506200866c9050565b905067016345785d8a000081108062005db45750678ac7230489e8000081115b1562005ddd5784848484604051630a5a604160e01b815260040162001196949392919062009590565b6037556200687b565b62005e57604051806040016040528060148152602001736d6178456c656374656456616c696461746f727360601b81525085858080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092939250506200860f9050565b1562005f0f576020811462005e895783838383604051630a5a604160e01b815260040162001196949392919062009590565b604080516020601f840181900481028201810190925282815260009162005ecc9185858083850183828082843760009201919091525092939250506200866c9050565b905080158062005edd57506101f481115b1562005f065784848484604051630a5a604160e01b815260040162001196949392919062009590565b6038556200687b565b62005f786040518060400160405280600c81526020016b1d5b989bdb9914195c9a5bd960a21b81525085858080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092939250506200860f9050565b1562006035576020811462005faa5783838383604051630a5a604160e01b815260040162001196949392919062009590565b604080516020601f840181900481028201810190925282815260009162005fed9185858083850183828082843760009201919091525092939250506200866c9050565b90506203f48081108062006003575062278d0081115b156200602c5784848484604051630a5a604160e01b815260040162001196949392919062009590565b6039556200687b565b620060a360405180604001604052806011815260200170726564656c65676174654665655261746560781b81525085858080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092939250506200860f9050565b15620061505760208114620060d55783838383604051630a5a604160e01b815260040162001196949392919062009590565b604080516020601f8401819004810282018101909252828152600091620061189185858083850183828082843760009201919091525092939250506200866c9050565b90506064811115620061475784848484604051630a5a604160e01b815260040162001196949392919062009590565b603a556200687b565b620061c060405180604001604052806013815260200172191bdddb9d1a5b5954db185cda105b5bdd5b9d606a1b81525085858080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092939250506200860f9050565b15620062815760208114620061f25783838383604051630a5a604160e01b815260040162001196949392919062009590565b604080516020601f8401819004810282018101909252828152600091620062359185858083850183828082843760009201919091525092939250506200866c9050565b9050674563918244f400008110806200624f5750603c5481115b15620062785784848484604051630a5a604160e01b815260040162001196949392919062009590565b603b556200687b565b620062ef6040518060400160405280601181526020017019995b1bdb9e54db185cda105b5bdd5b9d607a1b81525085858080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092939250506200860f9050565b15620063b25760208114620063215783838383604051630a5a604160e01b815260040162001196949392919062009590565b604080516020601f8401819004810282018101909252828152600091620063649185858083850183828082843760009201919091525092939250506200866c9050565b905068056bc75e2d63100000811080620063805750603b548111155b15620063a95784848484604051630a5a604160e01b815260040162001196949392919062009590565b603c556200687b565b6200641f6040518060400160405280601081526020016f646f776e74696d654a61696c54696d6560801b81525085858080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092939250506200860f9050565b15620064dc5760208114620064515783838383604051630a5a604160e01b815260040162001196949392919062009590565b604080516020601f8401819004810282018101909252828152600091620064949185858083850183828082843760009201919091525092939250506200866c9050565b90506202a300811080620064aa5750603e548110155b15620064d35784848484604051630a5a604160e01b815260040162001196949392919062009590565b603d556200687b565b620065476040518060400160405280600e81526020016d66656c6f6e794a61696c54696d6560901b81525085858080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092939250506200860f9050565b15620066045760208114620065795783838383604051630a5a604160e01b815260040162001196949392919062009590565b604080516020601f8401819004810282018101909252828152600091620065bc9185858083850183828082843760009201919091525092939250506200866c9050565b9050620d2f00811080620065d25750603d548111155b15620065fb5784848484604051630a5a604160e01b815260040162001196949392919062009590565b603e556200687b565b6200667e6040518060400160405280601c81526020017f6d617846656c6f6e794265747765656e42726561746865426c6f636b0000000081525085858080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092939250506200860f9050565b156200672a5760208114620066b05783838383604051630a5a604160e01b815260040162001196949392919062009590565b604080516020601f8401819004810282018101909252828152600091620066f39185858083850183828082843760009201919091525092939250506200866c9050565b905080600003620067215784848484604051630a5a604160e01b815260040162001196949392919062009590565b604a556200687b565b620067986040518060400160405280601181526020017039ba30b5b2a43ab1283937ba32b1ba37b960791b81525085858080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092939250506200860f9050565b15620068585760148114620067ca5783838383604051630a5a604160e01b815260040162001196949392919062009590565b600062006812601484848080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092939250506200866c9050565b90506001600160a01b038116620068465784848484604051630a5a604160e01b815260040162001196949392919062009590565b620068518162008671565b506200687b565b838383836040516325ee20d560e21b815260040162001196949392919062009590565b7ff1ce9b2cbf50eeb05769a29e2543fd350cab46894a7dd9978a12d534bb20e63384848484604051620068b2949392919062009590565b60405180910390a150505050565b60005462010000900460ff1615620068eb57604051631785c68160e01b815260040160405180910390fd5b3360009081526001602052604090205460ff16156200691d5760405163b1d02c3d60e01b815260040160405180910390fd5b816000816001600160401b038111156200693b576200693b620088f6565b60405190808252806020026020018201604052801562006965578160200160208202803683370190505b5090506000805b8381101562006a6357620069ae8787838181106200698e576200698e62009179565b9050602002016020810190620069a5919062008787565b603f9062007d5e565b620069cc5760405163056e881160e01b815260040160405180910390fd5b60416000888884818110620069e557620069e562009179565b9050602002016020810190620069fc919062008787565b6001600160a01b039081168252602082019290925260400160002060020154845191169250829084908390811062006a385762006a3862009179565b6001600160a01b039092166020928302919091019091015262006a5b81620091e5565b90506200696c565b50604051634484077560e01b815261200590634484077590620028a990859088906004016200918f565b606080600062006a9e603f62008067565b90508085101562006c6257831562006ab7578362006ab9565b805b935060008462006aca878462009149565b1162006ae25762006adc868362009149565b62006ae4565b845b9050806001600160401b0381111562006b015762006b01620088f6565b60405190808252806020026020018201604052801562006b2b578160200160208202803683370190505b509350806001600160401b0381111562006b495762006b49620088f6565b60405190808252806020026020018201604052801562006b73578160200160208202803683370190505b50925060005b8181101562006c5f5762006b9262003a648289620090de565b85828151811062006ba75762006ba762009179565b60200260200101906001600160a01b031690816001600160a01b0316815250506041600086838151811062006be05762006be062009179565b60200260200101516001600160a01b03166001600160a01b0316815260200190815260200160002060020160009054906101000a90046001600160a01b031684828151811062006c345762006c3462009179565b6001600160a01b039092166020928302919091019091015262006c5781620091e5565b905062006b79565b50505b9250925092565b336110011462006c9157604051630f22c43960e41b8152611001600482015260240162001196565b60005462010000900460ff161562006cbc57604051631785c68160e01b815260040160405180910390fd5b6001600160a01b038082166000908152604360205260409020541662006ce4603f8262007d5e565b62006d025760405163056e881160e01b815260040160405180910390fd5b6001600160a01b03811660009081526041602052604081209062006d2a6201518042620090bb565b604a546000828152604b60205260409020549192501162006d5e5760405163bd52fcdb60e01b815260040160405180910390fd5b6000818152604b6020526040812080546001929062006d7f908490620090de565b90915550506001600160a01b0384166000908152604460205260409020541580159062006dd457506001600160a01b038416600090815260446020526040902054429062006dd2906201518090620090de565b105b1562006df3576040516330abb81d60e21b815260040160405180910390fd5b60008062006e0385600062007d81565b915091508162006e2657604051631b919bb160e11b815260040160405180910390fd5b6002840154603c5460405163045bc4d160e41b815260048101919091526000916001600160a01b0316906345bc4d10906024016020604051808303816000875af115801562006e79573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062006e9f9190620090f4565b905062006ead858362007e0b565b856001600160a01b03167f6e9a2ee7aee95665e3a774a212eb11441b217e3e4656ab9563793094689aabb28383600060405162006eed939291906200910e565b60405180910390a26002850154604051633041949b60e01b815261200591633041949b916200568a916001600160a01b0316908a906004016200907b565b6001600160a01b038082166000908152604160209081526040808320815161018081018352815486168152600182015486169381019390935260028101549094169082015260038301546060820152600483018054929384938493849390929160808401919062006f9c9062009045565b80601f016020809104026020016040519081016040528092919081815260200182805462006fca9062009045565b80156200701b5780601f1062006fef576101008083540402835291602001916200701b565b820191906000526020600020905b81548152906001019060200180831162006ffd57829003601f168201915b5050505050815260200160058201604051806080016040529081600082018054620070469062009045565b80601f0160208091040260200160405190810160405280929190818152602001828054620070749062009045565b8015620070c55780601f106200709957610100808354040283529160200191620070c5565b820191906000526020600020905b815481529060010190602001808311620070a757829003601f168201915b50505050508152602001600182018054620070e09062009045565b80601f01602080910402602001604051908101604052809291908181526020018280546200710e9062009045565b80156200715f5780601f1062007133576101008083540402835291602001916200715f565b820191906000526020600020905b8154815290600101906020018083116200714157829003601f168201915b505050505081526020016002820180546200717a9062009045565b80601f0160208091040260200160405190810160405280929190818152602001828054620071a89062009045565b8015620071f95780601f10620071cd57610100808354040283529160200191620071f9565b820191906000526020600020905b815481529060010190602001808311620071db57829003601f168201915b50505050508152602001600382018054620072149062009045565b80601f0160208091040260200160405190810160405280929190818152602001828054620072429062009045565b8015620072935780601f10620072675761010080835404028352916020019162007293565b820191906000526020600020905b8154815290600101906020018083116200727557829003601f168201915b505050919092525050508152604080516060808201835260098501546001600160401b038082168452600160401b82048116602080860191909152600160801b9092041683850152840191909152600a84015460ff16151582840152600b84015490830152600c8301546080830152600d8301546001600160a01b031660a0830152805161026081019182905260c09092019190600e84019060139082845b815481526020019060010190808311620073325750505091909252505050606081015160e0820151610100909201519097919650945092505050565b60005462010000900460ff16156200739957604051631785c68160e01b815260040160405180910390fd5b3360009081526001602052604090205460ff1615620073cb5760405163b1d02c3d60e01b815260040160405180910390fd5b620073d562007f00565b620073e2603f8262007d5e565b620074005760405163056e881160e01b815260040160405180910390fd5b60006200740c62007f00565b6001600160a01b0381166000908152604160205260409020600c8101549192509042906200743f906201518090620090de565b11156200745f57604051631f92cdbd60e11b815260040160405180910390fd5b600581018054620074709062009045565b80601f01602080910402602001604051908101604052809291908181526020018280546200749e9062009045565b8015620074ef5780601f10620074c357610100808354040283529160200191620074ef565b820191906000526020600020905b815481529060010190602001808311620074d157829003601f168201915b50505082875250859160058401915081906200750c9082620095c6565b5060208201516001820190620075239082620095c6565b50604082015160028201906200753a9082620095c6565b5060608201516003820190620075519082620095c6565b505042600c830155506040516001600160a01b038316907f85d6366b336ade7f106987ec7a8eac1e8799e508aeab045a39d2f63e0dc969d990600090a250505050565b60005462010000900460ff1615620075bf57604051631785c68160e01b815260040160405180910390fd5b3360009081526001602052604090205460ff1615620075f15760405163b1d02c3d60e01b815260040160405180910390fd5b82811462007612576040516341abc80160e01b815260040160405180910390fd5b60005b8381101562007683576200767085858381811062007637576200763762009179565b90506020020160208101906200764e919062008787565b84848481811062007663576200766362009179565b9050602002013562008503565b6200767b81620091e5565b905062007615565b5050505050565b6001600160a01b0380821660009081526041602090815260408083208151610180810183528154861681526001820154861693810193909352600281015490941690820152600383015460608201526004830180549293849390916080840191620076f59062009045565b80601f0160208091040260200160405190810160405280929190818152602001828054620077239062009045565b8015620077745780601f10620077485761010080835404028352916020019162007774565b820191906000526020600020905b8154815290600101906020018083116200775657829003601f168201915b50505050508152602001600582016040518060800160405290816000820180546200779f9062009045565b80601f0160208091040260200160405190810160405280929190818152602001828054620077cd9062009045565b80156200781e5780601f10620077f2576101008083540402835291602001916200781e565b820191906000526020600020905b8154815290600101906020018083116200780057829003601f168201915b50505050508152602001600182018054620078399062009045565b80601f0160208091040260200160405190810160405280929190818152602001828054620078679062009045565b8015620078b85780601f106200788c57610100808354040283529160200191620078b8565b820191906000526020600020905b8154815290600101906020018083116200789a57829003601f168201915b50505050508152602001600282018054620078d39062009045565b80601f0160208091040260200160405190810160405280929190818152602001828054620079019062009045565b8015620079525780601f10620079265761010080835404028352916020019162007952565b820191906000526020600020905b8154815290600101906020018083116200793457829003601f168201915b505050505081526020016003820180546200796d9062009045565b80601f01602080910402602001604051908101604052809291908181526020018280546200799b9062009045565b8015620079ec5780601f10620079c057610100808354040283529160200191620079ec565b820191906000526020600020905b815481529060010190602001808311620079ce57829003601f168201915b505050919092525050508152604080516060808201835260098501546001600160401b038082168452600160401b82048116602080860191909152600160801b9092041683850152840191909152600a84015460ff16151582840152600b84015490830152600c8301546080830152600d8301546001600160a01b031660a0830152805161026081019182905260c09092019190600e84019060139082845b81548152602001906001019080831162007a8b5750505091909252505050604001519392505050565b600062007ac3603f8462007d5e565b62007ae15760405163056e881160e01b815260040160405180910390fd5b6001600160a01b038381166000908152604160205260409081902060020154905163aa1966cd60e01b81526004810185905291169063aa1966cd9060240162004fcc565b60005462010000900460ff161562007b5057604051631785c68160e01b815260040160405180910390fd5b3360009081526001602052604090205460ff161562007b825760405163b1d02c3d60e01b815260040160405180910390fd5b62007b8c62007f00565b62007b99603f8262007d5e565b62007bb75760405163056e881160e01b815260040160405180910390fd5b600062007bc362007f00565b905062007bd4818787878762008222565b62007bf257604051631647e3cb60e11b815260040160405180910390fd5b60006001600160a01b03166045878760405162007c1192919062009095565b908152604051908190036020019020546001600160a01b03161462007c49576040516311fdb94760e01b815260040160405180910390fd5b6001600160a01b0381166000908152604160205260409020600c810154429062007c78906201518090620090de565b111562007c9857604051631f92cdbd60e11b815260040160405180910390fd5b4260468260040160405162007cae91906200968e565b908152604051908190036020019020556004810162007ccf878983620092a9565b5042600c820155604051829060459062007ced908a908a9062009095565b90815260405190819003602001812080546001600160a01b039384166001600160a01b0319909116179055908316907f783156582145bd0ff7924fae6953ba054cf1233eb60739a200ddb10de068ff0d9062007d4d908a908a906200957a565b60405180910390a250505050505050565b6001600160a01b0381166000908152600183016020526040812054151562005010565b6000806000848460405160200162007d9b9291906200970c565b60408051601f1981840301815291815281516020928301206000818152604c9093529120549091504281111562007ddb5760008093509350505062007e04565b603e5462007dea9042620090de565b6000928352604c6020526040909220829055506001925090505b9250929050565b6000600162007e1b603f62008067565b62007e27919062009149565b604954108015915062007e735760018301546040516001600160a01b03909116907f2afdc18061ac21cff7d9f11527ab9c8dec6fabd4edf6f894ed634bebd6a20d4590600090a2505050565b82600b015482111562007e8857600b83018290555b600a83015460ff1662007efb57600a8301805460ff191660019081179091556049805460009062007ebb908490620090de565b909155505060018301546040516001600160a01b03909116907f4905ac32602da3fb8b4b7b00c285e5fc4c6c2308cc908b4a1e4e9625a29c90a390600090a25b505050565b336000908152604d60205260408120546001600160a01b03161562007f3c5750336000908152604d60205260409020546001600160a01b031690565b503390565b6001600160a01b0381166000908152604160205260409020600a81015460ff161562007f6b575050565b6036546002820154604051630913db4760e01b81526001600160a01b03858116600483015290911690630913db4790602401602060405180830381865afa15801562007fbb573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062007fe19190620090f4565b101562005a1d576200800381603d544262007ffd9190620090de565b62007e0b565b80546040516335409f7f60e01b81526001600160a01b039091166004820152611000906335409f7f90602401600060405180830381600087803b1580156200804a57600080fd5b505af11580156200805f573d6000803e3d6000fd5b505050505050565b600062005013825490565b6000620050108383620086dd565b60008082905060038151108062008098575060098151115b15620080a75750600092915050565b604181600081518110620080bf57620080bf62009179565b016020015160f81c1080620080f15750605a81600081518110620080e757620080e762009179565b016020015160f81c115b15620081005750600092915050565b60015b81518110156200821857603082828151811062008124576200812462009179565b016020015160f81c108062008155575060398282815181106200814b576200814b62009179565b016020015160f81c115b8015620081a55750604182828151811062008174576200817462009179565b016020015160f81c1080620081a55750605a8282815181106200819b576200819b62009179565b016020015160f81c115b8015620081f557506061828281518110620081c457620081c462009179565b016020015160f81c1080620081f55750607a828281518110620081eb57620081eb62009179565b016020015160f81c115b1562008205575060009392505050565b6200821081620091e5565b905062008103565b5060019392505050565b600060308414158062008236575060608214155b15620082455750600062008349565b60008686864660405160200162008260949392919062009756565b60408051808303601f1901815282825280516020918201208184528383019092529092506000919060208201818036833701905050905081602082015260008186868a8a604051602001620082ba95949392919062009783565b60408051808303601f190181526001808452838301909252925060009190602082018180368337019050509050815160016020830182602086016066600019fa6200830457600080fd5b506000816000815181106200831d576200831d62009179565b016020015160f81c9050600181146200833f5760009550505050505062008349565b6001955050505050505b95945050505050565b60008061200361dead60405162008369906200875c565b6001600160a01b03928316815291166020820152606060408201819052600090820152608001604051809103906000f080158015620083ac573d6000803e3d6000fd5b509050806001600160a01b031663f399e22e3486866040518463ffffffff1660e01b8152600401620083e0929190620097bb565b6000604051808303818588803b158015620083fa57600080fd5b505af11580156200840f573d6000803e3d6000fd5b50506040516001600160a01b038086169450881692507fd481492e4e93bb36b4c12a5af93f03be3bf04b454dfbc35dd2663fa26f44d5b09150600090a39392505050565b600062005010836001600160a01b0384166200870a565b600054610100900460ff16620084d75760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b606482015260840162001196565b600080546001600160a01b039092166301000000026301000000600160b81b0319909216919091179055565b8162008511603f8262007d5e565b6200852f5760405163056e881160e01b815260040160405180910390fd5b6001600160a01b03838116600090815260416020526040808220600201549051635569f64b60e11b8152336004820152602481018690529192169063aad3ec96906044016020604051808303816000875af115801562008593573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620085b99190620090f4565b9050336001600160a01b0316846001600160a01b03167ff7a40077ff7a04c7e61f6f26fb13774259ddf1b6bce9ecf26a8276cdd3992683836040516200860191815260200190565b60405180910390a350505050565b600081604051602001620086249190620097e1565b60405160208183030381529060405280519060200120836040516020016200864d9190620097e1565b6040516020818303038152906040528051906020012014905092915050565b015190565b600080546040516001600160a01b0380851693630100000090930416917f44fc1b38a4abaa91ebd1b628a5b259a698f86238c8217d68f516e87769c60c0b91a3600080546001600160a01b039092166301000000026301000000600160b81b0319909216919091179055565b6000826000018281548110620086f757620086f762009179565b9060005260206000200154905092915050565b6000818152600183016020526040812054620087535750815460018181018455600084815260208082209093018490558454848252828601909352604090209190915562005013565b50600062005013565b610e96806200980083390190565b80356001600160a01b03811681146200878257600080fd5b919050565b6000602082840312156200879a57600080fd5b62005010826200876a565b60008083601f840112620087b857600080fd5b5081356001600160401b03811115620087d057600080fd5b60208301915083602082850101111562007e0457600080fd5b60008060208385031215620087fd57600080fd5b82356001600160401b038111156200881457600080fd5b6200882285828601620087a5565b90969095509350505050565b6000806000604084860312156200884457600080fd5b833560ff811681146200885657600080fd5b925060208401356001600160401b038111156200887257600080fd5b6200888086828701620087a5565b9497909650939450505050565b60005b83811015620088aa57818101518382015260200162008890565b50506000910152565b60008151808452620088cd8160208601602086016200888d565b601f01601f19169290920160200192915050565b602081526000620050106020830184620088b3565b634e487b7160e01b600052604160045260246000fd5b604051608081016001600160401b0381118282101715620089315762008931620088f6565b60405290565b60006001600160401b0380841115620089545762008954620088f6565b604051601f8501601f19908116603f011681019082821181831017156200897f576200897f620088f6565b816040528093508581528686860111156200899957600080fd5b858560208301376000602087830101525050509392505050565b600060208284031215620089c657600080fd5b81356001600160401b03811115620089dd57600080fd5b8201601f81018413620089ef57600080fd5b62008a008482356020840162008937565b949350505050565b6000806040838503121562008a1c57600080fd5b62008a27836200876a565b946020939093013593505050565b803580151581146200878257600080fd5b6000806000806080858703121562008a5d57600080fd5b62008a68856200876a565b935062008a78602086016200876a565b92506040850135915062008a8f6060860162008a35565b905092959194509250565b6001600160401b0381168114620017c157600080fd5b60006020828403121562008ac357600080fd5b813562008ad08162008a9a565b9392505050565b6000806040838503121562008aeb57600080fd5b50508035926020909101359150565b600081518084526020808501945080840160005b8381101562008b355781516001600160a01b03168752958201959082019060010162008b0e565b509495945050505050565b60808152600062008b55608083018762008afa565b82810360208481019190915286518083528782019282019060005b8181101562008b8e5784518352938301939183019160010162008b70565b5050848103604086015286518082528282019350600581901b8201830183890160005b8381101562008be357601f1985840301875262008bd0838351620088b3565b9686019692509085019060010162008bb1565b5050809550505050505082606083015295945050505050565b600080600080600080600087890360e081121562008c1957600080fd5b62008c24896200876a565b975060208901356001600160401b038082111562008c4157600080fd5b62008c4f8c838d01620087a5565b909950975060408b013591508082111562008c6957600080fd5b62008c778c838d01620087a5565b90975095508591506060605f198401121562008c9257600080fd5b60608b01945060c08b013592508083111562008cad57600080fd5b505088016080818b03121562008cc257600080fd5b8091505092959891949750929550565b6000806040838503121562008ce657600080fd5b62008cf1836200876a565b915062008d016020840162008a35565b90509250929050565b60208152600082516080602084015262008d2860a0840182620088b3565b90506020840151601f198085840301604086015262008d488383620088b3565b9250604086015191508085840301606086015262008d678383620088b3565b9250606086015191508085840301608086015250620083498282620088b3565b6000806000806040858703121562008d9e57600080fd5b84356001600160401b038082111562008db657600080fd5b62008dc488838901620087a5565b9096509450602087013591508082111562008dde57600080fd5b5062008ded87828801620087a5565b95989497509550505050565b60008083601f84011262008e0c57600080fd5b5081356001600160401b0381111562008e2457600080fd5b6020830191508360208260051b850101111562007e0457600080fd5b60008060006040848603121562008e5657600080fd5b83356001600160401b0381111562008e6d57600080fd5b62008e7b8682870162008df9565b909450925062008e909050602085016200876a565b90509250925092565b60608152600062008eae606083018662008afa565b828103602084015262008ec2818662008afa565b915050826040830152949350505050565b600082601f83011262008ee557600080fd5b620050108383356020850162008937565b60006020828403121562008f0957600080fd5b81356001600160401b038082111562008f2157600080fd5b908301906080828603121562008f3657600080fd5b62008f406200890c565b82358281111562008f5057600080fd5b62008f5e8782860162008ed3565b82525060208301358281111562008f7457600080fd5b62008f828782860162008ed3565b60208301525060408301358281111562008f9b57600080fd5b62008fa98782860162008ed3565b60408301525060608301358281111562008fc257600080fd5b62008fd08782860162008ed3565b60608301525095945050505050565b6000806000806040858703121562008ff657600080fd5b84356001600160401b03808211156200900e57600080fd5b6200901c8883890162008df9565b909650945060208701359150808211156200903657600080fd5b5062008ded8782880162008df9565b600181811c908216806200905a57607f821691505b60208210810362001bd757634e487b7160e01b600052602260045260246000fd5b6001600160a01b0392831681529116602082015260400190565b8183823760009101908152919050565b634e487b7160e01b600052601160045260246000fd5b600082620090d957634e487b7160e01b600052601260045260246000fd5b500490565b80820180821115620050135762005013620090a5565b6000602082840312156200910757600080fd5b5051919050565b8381526020810183905260608101600383106200913b57634e487b7160e01b600052602160045260246000fd5b826040830152949350505050565b81810381811115620050135762005013620090a5565b8082028115828204841417620050135762005013620090a5565b634e487b7160e01b600052603260045260246000fd5b604081526000620091a4604083018562008afa565b905060018060a01b03831660208301529392505050565b6001600160401b03828116828216039080821115620091de57620091de620090a5565b5092915050565b600060018201620091fa57620091fa620090a5565b5060010190565b6000808335601e198436030181126200921957600080fd5b8301803591506001600160401b038211156200923457600080fd5b60200191503681900382131562007e0457600080fd5b601f82111562007efb57600081815260208120601f850160051c81016020861015620092735750805b601f850160051c820191505b818110156200805f578281556001016200927f565b600019600383901b1c191660019190911b1790565b6001600160401b03831115620092c357620092c3620088f6565b620092db83620092d4835462009045565b836200924a565b6000601f8411600181146200930e5760008515620092f95750838201355b62009305868262009294565b84555062007683565b600083815260209020601f19861690835b828110156200934157868501358255602094850194600190920191016200931f565b50868210156200935f5760001960f88860031b161c19848701351681555b505060018560011b0183555050505050565b6200937d828362009201565b6001600160401b03811115620093975762009397620088f6565b620093af81620093a8855462009045565b856200924a565b6000601f821160018114620093e25760008315620093cd5750838201355b620093d9848262009294565b8655506200943f565b600085815260209020601f19841690835b82811015620094155786850135825560209485019460019092019101620093f3565b5084821015620094335760001960f88660031b161c19848701351681555b505060018360011b0185555b5050505062009452602083018362009201565b62009462818360018601620092a9565b505062009473604083018362009201565b62009483818360028601620092a9565b505062009494606083018362009201565b620094a4818360038601620092a9565b50505050565b8135620094b78162008a9a565b6001600160401b03811690508154816001600160401b031982161783556020840135620094e48162008a9a565b6fffffffffffffffff0000000000000000604091821b166fffffffffffffffffffffffffffffffff19831684178117855590850135620095248162008a9a565b6001600160c01b0319929092169092179190911760809190911b67ffffffffffffffff60801b1617905550565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b60208152600062008a0060208301848662009551565b604081526000620095a660408301868862009551565b8281036020840152620095bb81858762009551565b979650505050505050565b81516001600160401b03811115620095e257620095e2620088f6565b620095fa81620095f3845462009045565b846200924a565b602080601f8311600181146200962e5760008415620096195750858301515b62009625858262009294565b8655506200805f565b600085815260208120601f198616915b828110156200965f578886015182559484019460019091019084016200963e565b50858210156200967e5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b60008083546200969e8162009045565b60018281168015620096b95760018114620096cf5762009700565b60ff198416875282151583028701945062009700565b8760005260208060002060005b85811015620096f75781548a820152908401908201620096dc565b50505082870194505b50929695505050505050565b6bffffffffffffffffffffffff198360601b1681526000600383106200974257634e487b7160e01b600052602160045260246000fd5b5060f89190911b6014820152601501919050565b6bffffffffffffffffffffffff198560601b16815282846014830137601492019182015260340192915050565b6000865162009797818460208b016200888d565b82018587823760009086019081528385823760009301928352509095945050505050565b6001600160a01b038316815260406020820181905260009062008a0090830184620088b3565b60008251620097f58184602087016200888d565b919091019291505056fe608060405260405162000e9638038062000e96833981016040819052620000269162000497565b828162000036828260006200004d565b50620000449050826200008a565b505050620005ca565b6200005883620000e5565b600082511180620000665750805b1562000085576200008383836200012760201b620001691760201c565b505b505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f620000b562000156565b604080516001600160a01b03928316815291841660208301520160405180910390a1620000e2816200018f565b50565b620000f08162000244565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b60606200014f838360405180606001604052806027815260200162000e6f60279139620002f8565b9392505050565b60006200018060008051602062000e4f83398151915260001b6200037760201b620001951760201c565b546001600160a01b0316919050565b6001600160a01b038116620001fa5760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b60648201526084015b60405180910390fd5b806200022360008051602062000e4f83398151915260001b6200037760201b620001951760201c565b80546001600160a01b0319166001600160a01b039290921691909117905550565b6200025a816200037a60201b620001981760201c565b620002be5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b6064820152608401620001f1565b80620002237f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc60001b6200037760201b620001951760201c565b6060600080856001600160a01b03168560405162000317919062000577565b600060405180830381855af49150503d806000811462000354576040519150601f19603f3d011682016040523d82523d6000602084013e62000359565b606091505b5090925090506200036d8683838762000389565b9695505050505050565b90565b6001600160a01b03163b151590565b60608315620003fd578251600003620003f5576001600160a01b0385163b620003f55760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401620001f1565b508162000409565b62000409838362000411565b949350505050565b815115620004225781518083602001fd5b8060405162461bcd60e51b8152600401620001f1919062000595565b80516001600160a01b03811681146200045657600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b60005b838110156200048e57818101518382015260200162000474565b50506000910152565b600080600060608486031215620004ad57600080fd5b620004b8846200043e565b9250620004c8602085016200043e565b60408501519092506001600160401b0380821115620004e657600080fd5b818601915086601f830112620004fb57600080fd5b8151818111156200051057620005106200045b565b604051601f8201601f19908116603f011681019083821181831017156200053b576200053b6200045b565b816040528281528960208487010111156200055557600080fd5b6200056883602083016020880162000471565b80955050505050509250925092565b600082516200058b81846020870162000471565b9190910192915050565b6020815260008251806020840152620005b681604085016020870162000471565b601f01601f19169190910160400192915050565b61087580620005da6000396000f3fe60806040523661001357610011610017565b005b6100115b61001f6101a7565b6001600160a01b0316330361015f5760606001600160e01b0319600035166364d3180d60e11b810161005a576100536101da565b9150610157565b63587086bd60e11b6001600160e01b031982160161007a57610053610231565b63070d7c6960e41b6001600160e01b031982160161009a57610053610277565b621eb96f60e61b6001600160e01b03198216016100b9576100536102a8565b63a39f25e560e01b6001600160e01b03198216016100d9576100536102e8565b60405162461bcd60e51b815260206004820152604260248201527f5472616e73706172656e745570677261646561626c6550726f78793a2061646d60448201527f696e2063616e6e6f742066616c6c6261636b20746f2070726f78792074617267606482015261195d60f21b608482015260a4015b60405180910390fd5b815160208301f35b6101676102fc565b565b606061018e83836040518060600160405280602781526020016108426027913961030c565b9392505050565b90565b6001600160a01b03163b151590565b60007fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b546001600160a01b0316919050565b60606101e4610384565b60006101f33660048184610695565b81019061020091906106db565b905061021d8160405180602001604052806000815250600061038f565b505060408051602081019091526000815290565b60606000806102433660048184610695565b810190610250919061070c565b915091506102608282600161038f565b604051806020016040528060008152509250505090565b6060610281610384565b60006102903660048184610695565b81019061029d91906106db565b905061021d816103bb565b60606102b2610384565b60006102bc6101a7565b604080516001600160a01b03831660208201529192500160405160208183030381529060405291505090565b60606102f2610384565b60006102bc610412565b610167610307610412565b610421565b6060600080856001600160a01b03168560405161032991906107f2565b600060405180830381855af49150503d8060008114610364576040519150601f19603f3d011682016040523d82523d6000602084013e610369565b606091505b509150915061037a86838387610445565b9695505050505050565b341561016757600080fd5b610398836104c6565b6000825111806103a55750805b156103b6576103b48383610169565b505b505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f6103e46101a7565b604080516001600160a01b03928316815291841660208301520160405180910390a161040f81610506565b50565b600061041c6105af565b905090565b3660008037600080366000845af43d6000803e808015610440573d6000f35b3d6000fd5b606083156104b45782516000036104ad576001600160a01b0385163b6104ad5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015260640161014e565b50816104be565b6104be83836105d7565b949350505050565b6104cf81610601565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b6001600160a01b03811661056b5760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b606482015260840161014e565b807fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b80546001600160a01b0319166001600160a01b039290921691909117905550565b60007f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc6101cb565b8151156105e75781518083602001fd5b8060405162461bcd60e51b815260040161014e919061080e565b6001600160a01b0381163b61066e5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b606482015260840161014e565b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc61058e565b600080858511156106a557600080fd5b838611156106b257600080fd5b5050820193919092039150565b80356001600160a01b03811681146106d657600080fd5b919050565b6000602082840312156106ed57600080fd5b61018e826106bf565b634e487b7160e01b600052604160045260246000fd5b6000806040838503121561071f57600080fd5b610728836106bf565b9150602083013567ffffffffffffffff8082111561074557600080fd5b818501915085601f83011261075957600080fd5b81358181111561076b5761076b6106f6565b604051601f8201601f19908116603f01168101908382118183101715610793576107936106f6565b816040528281528860208487010111156107ac57600080fd5b8260208601602083013760006020848301015280955050505050509250929050565b60005b838110156107e95781810151838201526020016107d1565b50506000910152565b600082516108048184602087016107ce565b9190910192915050565b602081526000825180602084015261082d8160408501602087016107ce565b601f01601f1916919091016040019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a164736f6c6343000811000ab53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a164736f6c6343000811000a \ No newline at end of file diff --git a/core/systemcontracts/pascal/mainnet/StakingContract b/core/systemcontracts/pascal/mainnet/StakingContract new file mode 100644 index 0000000000..7ea29ddb5d --- /dev/null +++ b/core/systemcontracts/pascal/mainnet/StakingContract @@ -0,0 +1 @@ +60806040526004361061028c5760003560e01c806375d47a0a1161015a578063bf8546ca116100c1578063df8079e91161007a578063df8079e9146109aa578063edc1a5b0146109bf578063f45fd80b146109d4578063f9a2bbc714610a19578063fa03f79714610a2e578063fd6a687914610a4357610293565b8063bf8546ca146108f5578063c2117d8214610930578063c81b166214610945578063c8509d81146106d0578063d61b9b931461095a578063dc927faf1461099557610293565b8063aa82dce111610113578063aa82dce1146107a8578063aad56063146107bd578063ab51bb96146107d2578063ac43175114610800578063b88a802f146108cb578063baaafd3b146108e057610293565b806375d47a0a146106a65780637e434d54146106bb578063831d65d1146106d05780639dc0926214610755578063a1a11bf51461076a578063a78abc161461077f57610293565b8063493279b1116101fe57806362b171d2116101b757806362b171d2146105cb57806369b635b6146105e05780636bd8f804146105f55780636e47b4821461062b5780636fb7f7eb1461064057806375aca5931461067357610293565b8063493279b11461051f5780634d99dd161461054b57806351b4dce31461057757806351e806721461058c5780635d17c8bd146105a15780635d499b1b146105b657610293565b80631182b875116102505780631182b8751461039e57806311fe9ec61461049857806328087028146104cb5780632fdeb111146104e057806334c43354146104f557806343756e5c1461050a57610293565b8063026e402b1461029857806302985992146102c6578063047636d1146102ed5780630c795715146103585780630e2374a51461036d57610293565b3661029357005b600080fd5b6102c4600480360360408110156102ae57600080fd5b506001600160a01b038135169060200135610a58565b005b3480156102d257600080fd5b506102db610a95565b60408051918252519081900360200190f35b3480156102f957600080fd5b506103206004803603602081101561031057600080fd5b50356001600160a01b0316610a9b565b6040518082606080838360005b8381101561034557818101518382015260200161032d565b5050505090500191505060405180910390f35b34801561036457600080fd5b506102db610aed565b34801561037957600080fd5b50610382610af3565b604080516001600160a01b039092168252519081900360200190f35b3480156103aa57600080fd5b50610423600480360360408110156103c157600080fd5b60ff8235169190810190604081016020820135600160201b8111156103e557600080fd5b8201836020820111156103f757600080fd5b803590602001918460018302840111600160201b8311171561041857600080fd5b509092509050610af9565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561045d578181015183820152602001610445565b50505050905090810190601f16801561048a5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3480156104a457600080fd5b506102db600480360360208110156104bb57600080fd5b50356001600160a01b0316610bb8565b3480156104d757600080fd5b50610382610bd3565b3480156104ec57600080fd5b506102db610bd9565b34801561050157600080fd5b506102db610bdf565b34801561051657600080fd5b50610382610bea565b34801561052b57600080fd5b50610534610bf0565b6040805161ffff9092168252519081900360200190f35b6102c46004803603604081101561056157600080fd5b506001600160a01b038135169060200135610bf5565b34801561058357600080fd5b50610382610cba565b34801561059857600080fd5b50610382610cc0565b3480156105ad57600080fd5b506102db610cc6565b3480156105c257600080fd5b506102db610ccc565b3480156105d757600080fd5b506102db610cd5565b3480156105ec57600080fd5b506102db610e75565b6102c46004803603606081101561060b57600080fd5b506001600160a01b03813581169160208101359091169060400135610a58565b34801561063757600080fd5b50610382610e7b565b34801561064c57600080fd5b506102db6004803603602081101561066357600080fd5b50356001600160a01b0316610e81565b34801561067f57600080fd5b506102db6004803603602081101561069657600080fd5b50356001600160a01b0316610e9c565b3480156106b257600080fd5b50610382610eb7565b3480156106c757600080fd5b50610382610ebd565b3480156106dc57600080fd5b506102c4600480360360408110156106f357600080fd5b60ff8235169190810190604081016020820135600160201b81111561071757600080fd5b82018360208201111561072957600080fd5b803590602001918460018302840111600160201b8311171561074a57600080fd5b509092509050610ec3565b34801561076157600080fd5b50610382610f03565b34801561077657600080fd5b50610382610f09565b34801561078b57600080fd5b50610794610f0f565b604080519115158252519081900360200190f35b3480156107b457600080fd5b50610382610f18565b3480156107c957600080fd5b50610382610f1e565b3480156107de57600080fd5b506107e7610f24565b6040805163ffffffff9092168252519081900360200190f35b34801561080c57600080fd5b506102c46004803603604081101561082357600080fd5b810190602081018135600160201b81111561083d57600080fd5b82018360208201111561084f57600080fd5b803590602001918460018302840111600160201b8311171561087057600080fd5b919390929091602081019035600160201b81111561088d57600080fd5b82018360208201111561089f57600080fd5b803590602001918460018302840111600160201b831117156108c057600080fd5b509092509050610f29565b3480156108d757600080fd5b506102db610fc0565b3480156108ec57600080fd5b506102db61115d565b34801561090157600080fd5b506102db6004803603604081101561091857600080fd5b506001600160a01b0381358116916020013516611168565b34801561093c57600080fd5b506102db611193565b34801561095157600080fd5b50610382611199565b34801561096657600080fd5b506102db6004803603604081101561097d57600080fd5b506001600160a01b038135811691602001351661119f565b3480156109a157600080fd5b506103826111ca565b3480156109b657600080fd5b506103826111d0565b3480156109cb57600080fd5b506102db6111d6565b3480156109e057600080fd5b506102db600480360360608110156109f757600080fd5b506001600160a01b0381358116916020810135821691604090910135166111e3565b348015610a2557600080fd5b50610382611218565b348015610a3a57600080fd5b506102db61121e565b348015610a4f57600080fd5b50610382611224565b6040805162461bcd60e51b815260206004820152600d60248201526c1b9bdd081cdd5c1c1bdc9d1959609a1b604482015290519081900360640190fd5b60035481565b610aa361122a565b610aab61122a565b6001600160a01b03929092166000818152600b60209081526040808320548652838352600c82528083205486830152928252600d905281902054908301525090565b6108fc81565b61200181565b60603361200014610b3b5760405162461bcd60e51b815260040180806020018281038252602f815260200180611277602f913960400191505060405180910390fd5b60005460ff16610b7e576638d7ea4c6800006001908155662386f26fc1000060025568056bc75e2d631000006003556108fc6011556000805460ff191690911790555b6040805162461bcd60e51b815260206004820152600a60248201526919195c1c9958d85d195960b21b604482015290519081900360640190fd5b6001600160a01b031660009081526006602052604090205490565b61200581565b60015481565b662386f26fc1000081565b61100181565b603881565b60105460ff1660021415610c41576040805162461bcd60e51b815260206004820152600e60248201526d4e6f2072652d656e7472616e637960901b604482015290519081900360640190fd5b6010805460ff19166002179055806402540be4003406158015610c6957506402540be4008106155b610b3b576040805162461bcd60e51b815260206004820152601c60248201527f707265636973696f6e206c6f737320696e20636f6e76657273696f6e00000000604482015290519081900360640190fd5b61200681565b61200081565b60025481565b6402540be40081565b60105460009060ff1660021415610d24576040805162461bcd60e51b815260206004820152600e60248201526d4e6f2072652d656e7472616e637960901b604482015290519081900360640190fd5b506010805460ff191660021790553360009081526008602052604090205480610d8b576040805162461bcd60e51b81526020600482015260146024820152736e6f20756e64656c6567617465642066756e647360601b604482015290519081900360640190fd5b336000818152600860205260408082208290556011549051919291849084818181858888f193505050503d8060008114610de1576040519150601f19603f3d011682016040523d82523d6000602084013e610de6565b606091505b5050905080610e2e576040805162461bcd60e51b815260206004820152600f60248201526e1d1c985b9cd9995c8819985a5b1959608a1b604482015290519081900360640190fd5b60408051838152905133917fc712d133b8d448221aaed2198ed1f0db6dfc860fb01bc3a630916fe6cbef946f919081900360200190a2506010805460ff1916600117905590565b60035490565b61100581565b6001600160a01b031660009081526004602052604090205490565b6001600160a01b031660009081526008602052604090205490565b61100881565b61200381565b3361200014610b3b5760405162461bcd60e51b815260040180806020018281038252602f815260200180611277602f913960400191505060405180910390fd5b61100781565b61100681565b60005460ff1681565b61200281565b61300081565b600081565b60005460ff16610f80576040805162461bcd60e51b815260206004820152601960248201527f74686520636f6e7472616374206e6f7420696e69742079657400000000000000604482015290519081900360640190fd5b3361100714610b7e5760405162461bcd60e51b815260040180806020018281038252602e815260200180611249602e913960400191505060405180910390fd5b60105460009060ff166002141561100f576040805162461bcd60e51b815260206004820152600e60248201526d4e6f2072652d656e7472616e637960901b604482015290519081900360640190fd5b506010805460ff191660021790553360009081526006602052604090205480611073576040805162461bcd60e51b81526020600482015260116024820152701b9bc81c195b991a5b99c81c995dd85c99607a1b604482015290519081900360640190fd5b336000818152600660205260408082208290556011549051919291849084818181858888f193505050503d80600081146110c9576040519150601f19603f3d011682016040523d82523d6000602084013e6110ce565b606091505b5050905080611116576040805162461bcd60e51b815260206004820152600f60248201526e1d1c985b9cd9995c8819985a5b1959608a1b604482015290519081900360640190fd5b60408051838152905133917f83b78188b13346b2ffb484da70d42ee27de7fbf9f2bd8045269e10ed643ccd76919081900360200190a2506010805460ff1916600117905590565b6638d7ea4c68000081565b6001600160a01b03918216600090815260076020908152604080832093909416825291909152205490565b60015490565b61100281565b6001600160a01b03918216600090815260056020908152604080832093909416825291909152205490565b61100381565b61200481565b68056bc75e2d6310000081565b6001600160a01b0392831660009081526009602090815260408083209486168352938152838220929094168152925290205490565b61100081565b60115481565b61100481565b6040518060600160405280600390602082028036833750919291505056fe746865206d6573736167652073656e646572206d75737420626520676f7665726e616e636520636f6e7472616374746865206d6573736167652073656e646572206d7573742062652063726f737320636861696e20636f6e7472616374a164736f6c6343000604000a \ No newline at end of file diff --git a/core/systemcontracts/pascal/mainnet/SystemRewardContract b/core/systemcontracts/pascal/mainnet/SystemRewardContract new file mode 100644 index 0000000000..4891109a5d --- /dev/null +++ b/core/systemcontracts/pascal/mainnet/SystemRewardContract @@ -0,0 +1 @@ +60806040526004361061016a5760003560e01c80639dc09262116100d1578063ac4317511161008a578063df8079e911610064578063df8079e9146104da578063f9a2bbc7146104ef578063fb5478b314610504578063fd6a687914610519576101ae565b8063ac431751146103e1578063c81b1662146104b0578063dc927faf146104c5576101ae565b80639dc092621461034a578063a1a11bf51461035f578063a78abc1614610374578063aa82dce114610389578063aad560631461039e578063ab51bb96146103b3576101ae565b806351e806721161012357806351e80672146102765780636d70f7ae1461028b5780636e47b482146102d257806375d47a0a146102e75780637e434d54146102fc5780639a99b4f014610311576101ae565b80630e2374a5146101b357806328087028146101e45780633a0b0eff146101f957806343756e5c14610220578063493279b11461023557806351b4dce314610261576101ae565b366101ae5734156101ac5760408051348152905133917f6c98249d85d88c3753a04a22230f595e4dc8d3dc86c34af35deeeedc861b89db919081900360200190a25b005b600080fd5b3480156101bf57600080fd5b506101c861052e565b604080516001600160a01b039092168252519081900360200190f35b3480156101f057600080fd5b506101c8610534565b34801561020557600080fd5b5061020e61053a565b60408051918252519081900360200190f35b34801561022c57600080fd5b506101c8610540565b34801561024157600080fd5b5061024a610546565b6040805161ffff9092168252519081900360200190f35b34801561026d57600080fd5b506101c861054b565b34801561028257600080fd5b506101c8610551565b34801561029757600080fd5b506102be600480360360208110156102ae57600080fd5b50356001600160a01b0316610557565b604080519115158252519081900360200190f35b3480156102de57600080fd5b506101c8610575565b3480156102f357600080fd5b506101c861057b565b34801561030857600080fd5b506101c8610581565b34801561031d57600080fd5b5061020e6004803603604081101561033457600080fd5b506001600160a01b038135169060200135610587565b34801561035657600080fd5b506101c8610732565b34801561036b57600080fd5b506101c8610738565b34801561038057600080fd5b506102be61073e565b34801561039557600080fd5b506101c8610747565b3480156103aa57600080fd5b506101c861074d565b3480156103bf57600080fd5b506103c8610753565b6040805163ffffffff9092168252519081900360200190f35b3480156103ed57600080fd5b506101ac6004803603604081101561040457600080fd5b81019060208101813564010000000081111561041f57600080fd5b82018360208201111561043157600080fd5b8035906020019184600183028401116401000000008311171561045357600080fd5b91939092909160208101903564010000000081111561047157600080fd5b82018360208201111561048357600080fd5b803590602001918460018302840111640100000000831117156104a557600080fd5b509092509050610758565b3480156104bc57600080fd5b506101c8610adb565b3480156104d157600080fd5b506101c8610ae1565b3480156104e657600080fd5b506101c8610ae7565b3480156104fb57600080fd5b506101c8610aed565b34801561051057600080fd5b5061020e610af3565b34801561052557600080fd5b506101c8610aff565b61200181565b61200581565b60015481565b61100181565b603881565b61200681565b61200081565b6001600160a01b031660009081526002602052604090205460ff1690565b61100581565b61100881565b61200381565b6000805460ff1661060457600260208190527fe57bda0a954a7c7381b17b2c763e646ba2c60f67292d287ba583603e2c1c41668054600160ff19918216811790925561100560009081527fe25235fc0de9d7165652bef0846fefda506174abb9a190f03d0f7bcc6146dbce80548316841790559282558254161790555b3360009081526002602052604090205460ff166106525760405162461bcd60e51b815260040180806020018281038252602b815260200180610bed602b913960400191505060405180910390fd5b60004783106106615747610663565b825b9050674563918244f400008111156106805750674563918244f400005b8015610701576040516001600160a01b0385169082156108fc029083906000818181858888f193505050501580156106bc573d6000803e3d6000fd5b506040805182815290516001600160a01b038616917ff8b71c64315fc33b2ead2adfa487955065152a8ac33d9d5193aafd7f45dc15a0919081900360200190a261072b565b6040517fe589651933c2457488cc0d8e0941518abf748e799435e4e396d9c4d0b2db2d4d90600090a15b9392505050565b61100781565b61100681565b60005460ff1681565b61200281565b61300081565b600081565b33611007146107985760405162461bcd60e51b815260040180806020018281038252602e815260200180610c47602e913960400191505060405180910390fd5b6107fa84848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505060408051808201909152600b81526a30b23227b832b930ba37b960a91b60208201529150610b059050565b156108d257606082828080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250508251929350506014909114905061087d5760405162461bcd60e51b815260040180806020018281038252602c815260200180610c75602c913960400191505060405180910390fd5b60148101516001600160a01b038116600081815260026020526040808220805460ff19166001179055517f9870d7fe5d112134c55844951dedf365363006d9c588db07c4c85af6322a06199190a25050610a49565b61093784848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505060408051808201909152600e81526d3232b632ba32a7b832b930ba37b960911b60208201529150610b059050565b15610a0c57606082828080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050825192935050601490911490506109ba5760405162461bcd60e51b815260040180806020018281038252602f815260200180610c18602f913960400191505060405180910390fd5b60148101516001600160a01b038116600081815260026020526040808220805460ff19169055517fb40992a19dba61ea600e87fce607102bf5908dc89076217b6ca6ae195224f7029190a25050610a49565b6040805162461bcd60e51b815260206004820152600d60248201526c756e6b6e6f776e20706172616d60981b604482015290519081900360640190fd5b7f6cdb0ac70ab7f2e2d035cca5be60d89906f2dede7648ddbd7402189c1eeed17a848484846040518080602001806020018381038352878782818152602001925080828437600083820152601f01601f191690910184810383528581526020019050858580828437600083820152604051601f909101601f19169092018290039850909650505050505050a150505050565b61100281565b61100381565b61200481565b61100081565b674563918244f4000081565b61100481565b6000816040516020018082805190602001908083835b60208310610b3a5780518252601f199092019160209182019101610b1b565b6001836020036101000a03801982511681845116808217855250505050505090500191505060405160208183030381529060405280519060200120836040516020018082805190602001908083835b60208310610ba85780518252601f199092019160209182019101610b89565b6001836020036101000a038019825116818451168082178552505050505050905001915050604051602081830303815290604052805190602001201490509291505056fe6f6e6c79206f70657261746f7220697320616c6c6f77656420746f2063616c6c20746865206d6574686f646c656e677468206f662076616c756520666f722064656c6574654f70657261746f722073686f756c64206265203230746865206d6573736167652073656e646572206d75737420626520676f7665726e616e636520636f6e74726163746c656e677468206f662076616c756520666f72206164644f70657261746f722073686f756c64206265203230a164736f6c6343000604000a \ No newline at end of file diff --git a/core/systemcontracts/pascal/mainnet/TimelockContract b/core/systemcontracts/pascal/mainnet/TimelockContract new file mode 100644 index 0000000000..67136c3c9e --- /dev/null +++ b/core/systemcontracts/pascal/mainnet/TimelockContract @@ -0,0 +1 @@ +6080604052600436106101d15760003560e01c80638129fc1c116100f7578063b1c5f42711610095578063d547741f11610064578063d547741f14610584578063e38335e5146105a4578063f23a6e61146105b7578063f27a0c92146105e357600080fd5b8063b1c5f427146104eb578063bc197c811461050b578063c4d252f514610537578063d45c44351461055757600080fd5b806391d14854116100d157806391d1485414610474578063a217fddf14610494578063ac431751146104a9578063b08e51c0146104c957600080fd5b80638129fc1c1461041d5780638f2a0bb0146104325780638f61f4f51461045257600080fd5b8063248a9ca31161016f57806336568abe1161013e57806336568abe1461039d578063584b153e146103bd57806364d62353146103dd5780638065657f146103fd57600080fd5b8063248a9ca3146102fd5780632ab0f5291461032d5780632f2ff15d1461035d57806331d507501461037d57600080fd5b80630d3cf6fc116101ab5780630d3cf6fc14610264578063134008d31461028657806313bc9f2014610299578063150b7a02146102b957600080fd5b806301d5062a146101dd57806301ffc9a7146101ff57806307bd02651461023457600080fd5b366101d857005b600080fd5b3480156101e957600080fd5b506101fd6101f8366004611a54565b6105f8565b005b34801561020b57600080fd5b5061021f61021a366004611ac8565b6106bc565b60405190151581526020015b60405180910390f35b34801561024057600080fd5b5061025660008051602061253b83398151915281565b60405190815260200161022b565b34801561027057600080fd5b506102566000805160206124fb83398151915281565b6101fd610294366004611af2565b6106e7565b3480156102a557600080fd5b5061021f6102b4366004611b5d565b61078a565b3480156102c557600080fd5b506102e46102d4366004611c2b565b630a85bd0160e11b949350505050565b6040516001600160e01b0319909116815260200161022b565b34801561030957600080fd5b50610256610318366004611b5d565b60009081526065602052604090206001015490565b34801561033957600080fd5b5061021f610348366004611b5d565b60009081526097602052604090205460011490565b34801561036957600080fd5b506101fd610378366004611c92565b6107b0565b34801561038957600080fd5b5061021f610398366004611b5d565b6107da565b3480156103a957600080fd5b506101fd6103b8366004611c92565b6107f3565b3480156103c957600080fd5b5061021f6103d8366004611b5d565b610876565b3480156103e957600080fd5b506101fd6103f8366004611b5d565b61088d565b34801561040957600080fd5b50610256610418366004611af2565b610931565b34801561042957600080fd5b506101fd610970565b34801561043e57600080fd5b506101fd61044d366004611d02565b610b22565b34801561045e57600080fd5b5061025660008051602061251b83398151915281565b34801561048057600080fd5b5061021f61048f366004611c92565b610ca3565b3480156104a057600080fd5b50610256600081565b3480156104b557600080fd5b506101fd6104c4366004611db3565b610cce565b3480156104d557600080fd5b5061025660008051602061255b83398151915281565b3480156104f757600080fd5b50610256610506366004611e1e565b610eb8565b34801561051757600080fd5b506102e4610526366004611f45565b63bc197c8160e01b95945050505050565b34801561054357600080fd5b506101fd610552366004611b5d565b610efd565b34801561056357600080fd5b50610256610572366004611b5d565b60009081526097602052604090205490565b34801561059057600080fd5b506101fd61059f366004611c92565b610fc0565b6101fd6105b2366004611e1e565b610fe5565b3480156105c357600080fd5b506102e46105d2366004611fee565b63f23a6e6160e01b95945050505050565b3480156105ef57600080fd5b50609854610256565b60008051602061251b8339815191526106108161115d565b6000610620898989898989610931565b905061062c8184611167565b6000817f4cf4410cc57040e44862ef0f45f3dd5a5e02db8eb8add648d4b0e236f1d07dca8b8b8b8b8b8a6040516106689695949392919061207b565b60405180910390a383156106b157807f20fda5fd27a1ea7bf5b9567f143ac5470bb059374a27e8f67cb44f946f6d0387856040516106a891815260200190565b60405180910390a25b505050505050505050565b60006001600160e01b03198216630271189760e51b14806106e157506106e182611256565b92915050565b60008051602061253b833981519152610701816000610ca3565b61070f5761070f813361128b565b600061071f888888888888610931565b905061072b81856112e4565b6107378888888861137f565b6000817fc2617efa69bab66782fa219543714338489c4e9e178271560a91b82c3f612b588a8a8a8a60405161076f94939291906120b8565b60405180910390a361078081611452565b5050505050505050565b6000818152609760205260408120546001811180156107a95750428111155b9392505050565b6000828152606560205260409020600101546107cb8161115d565b6107d5838361148b565b505050565b60008181526097602052604081205481905b1192915050565b6001600160a01b03811633146108685760405162461bcd60e51b815260206004820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201526e103937b632b9903337b91039b2b63360891b60648201526084015b60405180910390fd5b6108728282611511565b5050565b6000818152609760205260408120546001906107ec565b3330146108f05760405162461bcd60e51b815260206004820152602b60248201527f54696d656c6f636b436f6e74726f6c6c65723a2063616c6c6572206d7573742060448201526a62652074696d656c6f636b60a81b606482015260840161085f565b60985460408051918252602082018390527f11c24f4ead16507c69ac467fbd5e4eed5fb5c699626d2cc6d66421df253886d5910160405180910390a1609855565b600086868686868660405160200161094e9695949392919061207b565b6040516020818303038152906040528051906020012090509695505050505050565b600054610100900460ff16158080156109905750600054600160ff909116105b806109aa5750303b1580156109aa575060005460ff166001145b610a0d5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b606482015260840161085f565b6000805460ff191660011790558015610a30576000805461ff0019166101001790555b334114610a505760405163022d8c9560e31b815260040160405180910390fd5b3a15610a6f576040516383f1b1d360e01b815260040160405180910390fd5b6040805160018082528183019092526000916020808301908036833701905050905061200481600081518110610aa757610aa76120ea565b60200260200101906001600160a01b031690816001600160a01b031681525050610ad8620151808283612004611578565b508015610b1f576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b50565b60008051602061251b833981519152610b3a8161115d565b888714610b595760405162461bcd60e51b815260040161085f90612100565b888514610b785760405162461bcd60e51b815260040161085f90612100565b6000610b8a8b8b8b8b8b8b8b8b610eb8565b9050610b968184611167565b60005b8a811015610c545780827f4cf4410cc57040e44862ef0f45f3dd5a5e02db8eb8add648d4b0e236f1d07dca8e8e85818110610bd657610bd66120ea565b9050602002016020810190610beb9190612143565b8d8d86818110610bfd57610bfd6120ea565b905060200201358c8c87818110610c1657610c166120ea565b9050602002810190610c28919061215e565b8c8b604051610c3c9695949392919061207b565b60405180910390a3610c4d816121ba565b9050610b99565b508315610c9657807f20fda5fd27a1ea7bf5b9567f143ac5470bb059374a27e8f67cb44f946f6d038785604051610c8d91815260200190565b60405180910390a25b5050505050505050505050565b60009182526065602090815260408084206001600160a01b0393909316845291905290205460ff1690565b3361100714610cf457604051630f22c43960e41b8152611007600482015260240161085f565b610d57604051806040016040528060088152602001676d696e44656c617960c01b81525085858080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092939250506115b19050565b15610e545760208114610d855783838383604051630a5a604160e01b815260040161085f94939291906121d3565b604080516020601f8401819004810282018101909252828152600091610dc691858580838501838280828437600092019190915250929392505061160a9050565b9050801580610dd757506212750081115b15610dfd5784848484604051630a5a604160e01b815260040161085f94939291906121d3565b6040516364d6235360e01b81526004810182905230906364d6235390602401600060405180830381600087803b158015610e3657600080fd5b505af1158015610e4a573d6000803e3d6000fd5b5050505050610e75565b838383836040516325ee20d560e21b815260040161085f94939291906121d3565b7ff1ce9b2cbf50eeb05769a29e2543fd350cab46894a7dd9978a12d534bb20e63384848484604051610eaa94939291906121d3565b60405180910390a150505050565b60008888888888888888604051602001610ed998979695949392919061228b565b60405160208183030381529060405280519060200120905098975050505050505050565b60008051602061255b833981519152610f158161115d565b610f1e82610876565b610f845760405162461bcd60e51b815260206004820152603160248201527f54696d656c6f636b436f6e74726f6c6c65723a206f7065726174696f6e2063616044820152701b9b9bdd0818994818d85b98d95b1b1959607a1b606482015260840161085f565b6000828152609760205260408082208290555183917fbaa1eb22f2a492ba1a5fea61b8df4d27c6c8b5f3971e63bb58fa14ff72eedb7091a25050565b600082815260656020526040902060010154610fdb8161115d565b6107d58383611511565b60008051602061253b833981519152610fff816000610ca3565b61100d5761100d813361128b565b87861461102c5760405162461bcd60e51b815260040161085f90612100565b87841461104b5760405162461bcd60e51b815260040161085f90612100565b600061105d8a8a8a8a8a8a8a8a610eb8565b905061106981856112e4565b60005b898110156111475760008b8b83818110611088576110886120ea565b905060200201602081019061109d9190612143565b905060008a8a848181106110b3576110b36120ea565b9050602002013590503660008a8a868181106110d1576110d16120ea565b90506020028101906110e3919061215e565b915091506110f38484848461137f565b84867fc2617efa69bab66782fa219543714338489c4e9e178271560a91b82c3f612b588686868660405161112a94939291906120b8565b60405180910390a35050505080611140906121ba565b905061106c565b5061115181611452565b50505050505050505050565b610b1f813361128b565b611170826107da565b156111d55760405162461bcd60e51b815260206004820152602f60248201527f54696d656c6f636b436f6e74726f6c6c65723a206f7065726174696f6e20616c60448201526e1c9958591e481cd8da19591d5b1959608a1b606482015260840161085f565b6098548110156112365760405162461bcd60e51b815260206004820152602660248201527f54696d656c6f636b436f6e74726f6c6c65723a20696e73756666696369656e746044820152652064656c617960d01b606482015260840161085f565b611240814261232c565b6000928352609760205260409092209190915550565b60006001600160e01b03198216637965db0b60e01b14806106e157506301ffc9a760e01b6001600160e01b03198316146106e1565b6112958282610ca3565b610872576112a28161160f565b6112ad836020611621565b6040516020016112be929190612363565b60408051601f198184030181529082905262461bcd60e51b825261085f916004016123d8565b6112ed8261078a565b6113095760405162461bcd60e51b815260040161085f9061240b565b80158061132457506000818152609760205260409020546001145b6108725760405162461bcd60e51b815260206004820152602660248201527f54696d656c6f636b436f6e74726f6c6c65723a206d697373696e6720646570656044820152656e64656e637960d01b606482015260840161085f565b6000846001600160a01b031684848460405161139c929190612455565b60006040518083038185875af1925050503d80600081146113d9576040519150601f19603f3d011682016040523d82523d6000602084013e6113de565b606091505b505090508061144b5760405162461bcd60e51b815260206004820152603360248201527f54696d656c6f636b436f6e74726f6c6c65723a20756e6465726c79696e6720746044820152721c985b9cd858dd1a5bdb881c995d995c9d1959606a1b606482015260840161085f565b5050505050565b61145b8161078a565b6114775760405162461bcd60e51b815260040161085f9061240b565b600090815260976020526040902060019055565b6114958282610ca3565b6108725760008281526065602090815260408083206001600160a01b03851684529091529020805460ff191660011790556114cd3390565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b61151b8282610ca3565b156108725760008281526065602090815260408083206001600160a01b0385168085529252808320805460ff1916905551339285917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45050565b600054610100900460ff1661159f5760405162461bcd60e51b815260040161085f90612465565b6115ab848484846117bc565b50505050565b6000816040516020016115c491906124b0565b60405160208183030381529060405280519060200120836040516020016115eb91906124b0565b6040516020818303038152906040528051906020012014905092915050565b015190565b60606106e16001600160a01b03831660145b606060006116308360026124cc565b61163b90600261232c565b6001600160401b0381111561165257611652611b76565b6040519080825280601f01601f19166020018201604052801561167c576020820181803683370190505b509050600360fc1b81600081518110611697576116976120ea565b60200101906001600160f81b031916908160001a905350600f60fb1b816001815181106116c6576116c66120ea565b60200101906001600160f81b031916908160001a90535060006116ea8460026124cc565b6116f590600161232c565b90505b600181111561176d576f181899199a1a9b1b9c1cb0b131b232b360811b85600f1660108110611729576117296120ea565b1a60f81b82828151811061173f5761173f6120ea565b60200101906001600160f81b031916908160001a90535060049490941c93611766816124e3565b90506116f8565b5083156107a95760405162461bcd60e51b815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e74604482015260640161085f565b600054610100900460ff166117e35760405162461bcd60e51b815260040161085f90612465565b6117fb6000805160206124fb8339815191528061199b565b61182160008051602061251b8339815191526000805160206124fb83398151915261199b565b61184760008051602061253b8339815191526000805160206124fb83398151915261199b565b61186d60008051602061255b8339815191526000805160206124fb83398151915261199b565b6118856000805160206124fb833981519152306119e6565b6001600160a01b038116156118ac576118ac6000805160206124fb833981519152826119e6565b60005b835181101561191d576118e960008051602061251b8339815191528583815181106118dc576118dc6120ea565b60200260200101516119e6565b61190d60008051602061255b8339815191528583815181106118dc576118dc6120ea565b611916816121ba565b90506118af565b5060005b825181101561195e5761194e60008051602061253b8339815191528483815181106118dc576118dc6120ea565b611957816121ba565b9050611921565b5060988490556040805160008152602081018690527f11c24f4ead16507c69ac467fbd5e4eed5fb5c699626d2cc6d66421df253886d59101610eaa565b600082815260656020526040808220600101805490849055905190918391839186917fbd79b86ffe0ab8e8776151514217cd7cacd52c909f66475c3af44e129f0b00ff9190a4505050565b610872828261148b565b80356001600160a01b0381168114611a0757600080fd5b919050565b60008083601f840112611a1e57600080fd5b5081356001600160401b03811115611a3557600080fd5b602083019150836020828501011115611a4d57600080fd5b9250929050565b600080600080600080600060c0888a031215611a6f57600080fd5b611a78886119f0565b96506020880135955060408801356001600160401b03811115611a9a57600080fd5b611aa68a828b01611a0c565b989b979a50986060810135976080820135975060a09091013595509350505050565b600060208284031215611ada57600080fd5b81356001600160e01b0319811681146107a957600080fd5b60008060008060008060a08789031215611b0b57600080fd5b611b14876119f0565b95506020870135945060408701356001600160401b03811115611b3657600080fd5b611b4289828a01611a0c565b979a9699509760608101359660809091013595509350505050565b600060208284031215611b6f57600080fd5b5035919050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b0381118282101715611bb457611bb4611b76565b604052919050565b600082601f830112611bcd57600080fd5b81356001600160401b03811115611be657611be6611b76565b611bf9601f8201601f1916602001611b8c565b818152846020838601011115611c0e57600080fd5b816020850160208301376000918101602001919091529392505050565b60008060008060808587031215611c4157600080fd5b611c4a856119f0565b9350611c58602086016119f0565b92506040850135915060608501356001600160401b03811115611c7a57600080fd5b611c8687828801611bbc565b91505092959194509250565b60008060408385031215611ca557600080fd5b82359150611cb5602084016119f0565b90509250929050565b60008083601f840112611cd057600080fd5b5081356001600160401b03811115611ce757600080fd5b6020830191508360208260051b8501011115611a4d57600080fd5b600080600080600080600080600060c08a8c031215611d2057600080fd5b89356001600160401b0380821115611d3757600080fd5b611d438d838e01611cbe565b909b50995060208c0135915080821115611d5c57600080fd5b611d688d838e01611cbe565b909950975060408c0135915080821115611d8157600080fd5b50611d8e8c828d01611cbe565b9a9d999c50979a969997986060880135976080810135975060a0013595509350505050565b60008060008060408587031215611dc957600080fd5b84356001600160401b0380821115611de057600080fd5b611dec88838901611a0c565b90965094506020870135915080821115611e0557600080fd5b50611e1287828801611a0c565b95989497509550505050565b60008060008060008060008060a0898b031215611e3a57600080fd5b88356001600160401b0380821115611e5157600080fd5b611e5d8c838d01611cbe565b909a50985060208b0135915080821115611e7657600080fd5b611e828c838d01611cbe565b909850965060408b0135915080821115611e9b57600080fd5b50611ea88b828c01611cbe565b999c989b509699959896976060870135966080013595509350505050565b600082601f830112611ed757600080fd5b813560206001600160401b03821115611ef257611ef2611b76565b8160051b611f01828201611b8c565b9283528481018201928281019087851115611f1b57600080fd5b83870192505b84831015611f3a57823582529183019190830190611f21565b979650505050505050565b600080600080600060a08688031215611f5d57600080fd5b611f66866119f0565b9450611f74602087016119f0565b935060408601356001600160401b0380821115611f9057600080fd5b611f9c89838a01611ec6565b94506060880135915080821115611fb257600080fd5b611fbe89838a01611ec6565b93506080880135915080821115611fd457600080fd5b50611fe188828901611bbc565b9150509295509295909350565b600080600080600060a0868803121561200657600080fd5b61200f866119f0565b945061201d602087016119f0565b9350604086013592506060860135915060808601356001600160401b0381111561204657600080fd5b611fe188828901611bbc565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b60018060a01b038716815285602082015260a0604082015260006120a360a083018688612052565b60608301949094525060800152949350505050565b60018060a01b03851681528360208201526060604082015260006120e0606083018486612052565b9695505050505050565b634e487b7160e01b600052603260045260246000fd5b60208082526023908201527f54696d656c6f636b436f6e74726f6c6c65723a206c656e677468206d69736d616040820152620e8c6d60eb1b606082015260800190565b60006020828403121561215557600080fd5b6107a9826119f0565b6000808335601e1984360301811261217557600080fd5b8301803591506001600160401b0382111561218f57600080fd5b602001915036819003821315611a4d57600080fd5b634e487b7160e01b600052601160045260246000fd5b6000600182016121cc576121cc6121a4565b5060010190565b6040815260006121e7604083018688612052565b8281036020840152611f3a818587612052565b81835260006020808501808196508560051b810191508460005b8781101561227e5782840389528135601e1988360301811261223557600080fd5b870185810190356001600160401b0381111561225057600080fd5b80360382131561225f57600080fd5b61226a868284612052565b9a87019a9550505090840190600101612214565b5091979650505050505050565b60a0808252810188905260008960c08301825b8b8110156122cc576001600160a01b036122b7846119f0565b1682526020928301929091019060010161229e565b5083810360208501528881526001600160fb1b038911156122ec57600080fd5b8860051b9150818a6020830137018281036020908101604085015261231490820187896121fa565b60608401959095525050608001529695505050505050565b808201808211156106e1576106e16121a4565b60005b8381101561235a578181015183820152602001612342565b50506000910152565b7f416363657373436f6e74726f6c3a206163636f756e742000000000000000000081526000835161239b81601785016020880161233f565b7001034b99036b4b9b9b4b733903937b6329607d1b60179184019182015283516123cc81602884016020880161233f565b01602801949350505050565b60208152600082518060208401526123f781604085016020870161233f565b601f01601f19169190910160400192915050565b6020808252602a908201527f54696d656c6f636b436f6e74726f6c6c65723a206f7065726174696f6e206973604082015269206e6f7420726561647960b01b606082015260800190565b8183823760009101908152919050565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b600082516124c281846020870161233f565b9190910192915050565b80820281158282048414176106e1576106e16121a4565b6000816124f2576124f26121a4565b50600019019056fe5f58e3a2316349923ce3780f8d587db2d72378aed66a8261c916544fa6846ca5b09aa5aeb3702cfd50b6b62bc4532604938f21248a27a1d5ca736082b6819cc1d8aa0f3194971a2a116679f7c2090f6939c8d4e01a2a8d7e41d55e5351469e63fd643c72710c63c0180259aba6b2d05451e3591a24e58b62239378085726f783a164736f6c6343000811000a \ No newline at end of file diff --git a/core/systemcontracts/pascal/mainnet/TokenHubContract b/core/systemcontracts/pascal/mainnet/TokenHubContract new file mode 100644 index 0000000000..325fd93a82 --- /dev/null +++ b/core/systemcontracts/pascal/mainnet/TokenHubContract @@ -0,0 +1 @@ +6080604052600436106103395760003560e01c806393ab703f116101ab578063b9fd21e3116100f7578063df8079e911610095578063e8f35cea1161006f578063e8f35cea14610dd9578063f9a2bbc714610e0c578063fc1a598f14610e21578063fd6a687914610e5457610381565b8063df8079e914610d85578063e04c83a714610d9a578063e1c7392a14610dc457610381565b8063c81b1662116100d1578063c81b166214610d20578063c8509d811461092a578063cf41984414610d35578063dc927faf14610d7057610381565b8063b9fd21e314610ca5578063bbface1f14610cba578063bd46646114610ced57610381565b8063a78abc1611610164578063aad560631161013e578063aad5606314610b5e578063ab51bb9614610b73578063ac43175114610ba1578063b99328c514610c6c57610381565b8063a78abc1614610aed578063aa7415f514610b02578063aa82dce114610b4957610381565b806393ab703f14610a275780639509b98014610a3c5780639a854bbd14610a755780639a99b4f014610a8a5780639dc0926214610ac3578063a1a11bf514610ad857610381565b806351e8067211610285578063727be1f8116102235780637e434d54116101fd5780637e434d5414610915578063831d65d11461092a5780638525db03146109af5780638eff336c146109e857610381565b8063727be1f81461089757806375d47a0a146108c1578063799758b9146108d657610381565b8063613684751161025f57806361368475146107165780636e056520146107415780636e47b4821461086d57806371d308631461088257610381565b806351e80672146106c257806359b92789146106d75780635d499b1b1461070157610381565b80633d713223116102f257806343a368b9116102cc57806343a368b914610657578063493279b11461066c57806350432d321461069857806351b4dce3146106ad57610381565b80633d7132231461057c5780633fd8b02f1461062d57806343756e5c1461064257610381565b80630e2374a5146103865780631182b875146103b757806312234582146104b1578063149d14d9146104ec57806328087028146105135780632ae454831461052857610381565b3661038157341561037f576040805133815234602082015281517f6c98249d85d88c3753a04a22230f595e4dc8d3dc86c34af35deeeedc861b89db929181900390910190a15b005b600080fd5b34801561039257600080fd5b5061039b610e69565b604080516001600160a01b039092168252519081900360200190f35b3480156103c357600080fd5b5061043c600480360360408110156103da57600080fd5b60ff8235169190810190604081016020820135600160201b8111156103fe57600080fd5b82018360208201111561041057600080fd5b803590602001918460018302840111600160201b8311171561043157600080fd5b509092509050610e6f565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561047657818101518382015260200161045e565b50505050905090810190601f1680156104a35780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3480156104bd57600080fd5b5061037f600480360360408110156104d457600080fd5b506001600160a01b0381358116916020013516610eb7565b3480156104f857600080fd5b50610501610f31565b60408051918252519081900360200190f35b34801561051f57600080fd5b5061039b610f37565b34801561053457600080fd5b506105636004803603604081101561054b57600080fd5b506001600160a01b0381358116916020013516610f3d565b6040805192835260208301919091528051918290030190f35b34801561058857600080fd5b5061039b6004803603602081101561059f57600080fd5b810190602081018135600160201b8111156105b957600080fd5b8201836020820111156105cb57600080fd5b803590602001918460018302840111600160201b831117156105ec57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550610f61945050505050565b34801561063957600080fd5b50610501610f82565b34801561064e57600080fd5b5061039b610f88565b34801561066357600080fd5b50610501610f8e565b34801561067857600080fd5b50610681610f9a565b6040805161ffff9092168252519081900360200190f35b3480156106a457600080fd5b50610501610f9f565b3480156106b957600080fd5b5061039b610faa565b3480156106ce57600080fd5b5061039b610fb0565b3480156106e357600080fd5b5061039b600480360360208110156106fa57600080fd5b5035610fb6565b34801561070d57600080fd5b50610501610fd1565b34801561072257600080fd5b5061072b610fda565b6040805160ff9092168252519081900360200190f35b6108596004803603608081101561075757600080fd5b810190602081018135600160201b81111561077157600080fd5b82018360208201111561078357600080fd5b803590602001918460208302840111600160201b831117156107a457600080fd5b919390929091602081019035600160201b8111156107c157600080fd5b8201836020820111156107d357600080fd5b803590602001918460208302840111600160201b831117156107f457600080fd5b919390929091602081019035600160201b81111561081157600080fd5b82018360208201111561082357600080fd5b803590602001918460208302840111600160201b8311171561084457600080fd5b91935091503567ffffffffffffffff16610fdf565b604080519115158252519081900360200190f35b34801561087957600080fd5b5061039b611025565b34801561088e57600080fd5b5061050161102b565b3480156108a357600080fd5b50610859600480360360208110156108ba57600080fd5b5035611031565b3480156108cd57600080fd5b5061039b61106d565b3480156108e257600080fd5b5061037f600480360360608110156108f957600080fd5b508035906001600160a01b036020820135169060400135611073565b34801561092157600080fd5b5061039b611323565b34801561093657600080fd5b5061037f6004803603604081101561094d57600080fd5b60ff8235169190810190604081016020820135600160201b81111561097157600080fd5b82018360208201111561098357600080fd5b803590602001918460018302840111600160201b831117156109a457600080fd5b509092509050611329565b3480156109bb57600080fd5b5061037f600480360360408110156109d257600080fd5b50803590602001356001600160a01b031661136e565b3480156109f457600080fd5b5061037f60048036036060811015610a0b57600080fd5b508035906001600160a01b0360208201351690604001356114d7565b348015610a3357600080fd5b50610501611517565b348015610a4857600080fd5b5061037f60048036036040811015610a5f57600080fd5b506001600160a01b03813516906020013561151e565b348015610a8157600080fd5b506105016115e0565b348015610a9657600080fd5b5061050160048036036040811015610aad57600080fd5b506001600160a01b0381351690602001356115ec565b348015610acf57600080fd5b5061039b611672565b348015610ae457600080fd5b5061039b611678565b348015610af957600080fd5b5061085961167e565b61085960048036036080811015610b1857600080fd5b5080356001600160a01b03908116916020810135909116906040810135906060013567ffffffffffffffff16610fdf565b348015610b5557600080fd5b5061039b611687565b348015610b6a57600080fd5b5061039b61168d565b348015610b7f57600080fd5b50610b88611693565b6040805163ffffffff9092168252519081900360200190f35b348015610bad57600080fd5b5061037f60048036036040811015610bc457600080fd5b810190602081018135600160201b811115610bde57600080fd5b820183602082011115610bf057600080fd5b803590602001918460018302840111600160201b83111715610c1157600080fd5b919390929091602081019035600160201b811115610c2e57600080fd5b820183602082011115610c4057600080fd5b803590602001918460018302840111600160201b83111715610c6157600080fd5b509092509050611698565b348015610c7857600080fd5b5061037f60048036036040811015610c8f57600080fd5b50803590602001356001600160a01b03166114d7565b348015610cb157600080fd5b506105016116d8565b348015610cc657600080fd5b5061050160048036036020811015610cdd57600080fd5b50356001600160a01b03166116e2565b348015610cf957600080fd5b5061050160048036036020811015610d1057600080fd5b50356001600160a01b03166116f4565b348015610d2c57600080fd5b5061039b61170f565b348015610d4157600080fd5b5061037f60048036036040811015610d5857600080fd5b506001600160a01b0381358116916020013516611715565b348015610d7c57600080fd5b5061039b6117a8565b348015610d9157600080fd5b5061039b6117ae565b348015610da657600080fd5b5061085960048036036020811015610dbd57600080fd5b50356117b4565b348015610dd057600080fd5b5061037f61180c565b348015610de557600080fd5b5061050160048036036020811015610dfc57600080fd5b50356001600160a01b03166118ac565b348015610e1857600080fd5b5061039b6118be565b348015610e2d57600080fd5b5061043c60048036036020811015610e4457600080fd5b50356001600160a01b03166118c4565b348015610e6057600080fd5b5061039b6119eb565b61200181565b60005460609060ff16610eb7576040805162461bcd60e51b81526020600482015260196024820152600080516020611d9c833981519152604482015290519081900360640190fd5b3361200014610ef75760405162461bcd60e51b815260040180806020018281038252602f815260200180611d4a602f913960400191505060405180910390fd5b6040805162461bcd60e51b815260206004820152600a60248201526919195c1c9958d85d195960b21b604482015290519081900360640190fd5b60015490565b61200581565b60076020908152600092835260408084209091529082529020805460019091015482565b6020908101516000908152600490915260409020546001600160a01b031690565b60055481565b61100181565b670de0b6b3a764000081565b603881565b66071afd498d000081565b61200681565b61200081565b6000908152600460205260409020546001600160a01b031690565b6402540be40081565b600881565b6000805460ff16610ef7576040805162461bcd60e51b81526020600482015260196024820152600080516020611d9c833981519152604482015290519081900360640190fd5b61100581565b60015481565b6040805162461bcd60e51b815260206004820152600a60248201526919195c1c9958d85d195960b21b6044820152905160009181900360640190fd5b61100881565b60005460ff166110b8576040805162461bcd60e51b81526020600482015260196024820152600080516020611d9c833981519152604482015290519081900360640190fd5b33613000146110f85760405162461bcd60e51b815260040180806020018281038252602b815260200180611cd0602b913960400191505060405180910390fd5b677ce66c50e284000081111561113f5760405162461bcd60e51b8152600401808060200182810382526035815260200180611c9b6035913960400191505060405180910390fd5b60006221272160e91b84146112a9576000848152600460205260409020546001600160a01b0316806111b2576040805184815290516001600160a01b0386169187917fc16ee9013bf67c846d37735983debb0acc5b2d1419cb5931c9843ad4689505499181900360200190a3505061131e565b6001600160a01b0381166000908152600260205260409020546111d584826119f1565b604080516370a0823160e01b8152306004820152905191945084916001600160a01b038516916370a08231916024808301926020929190829003018186803b15801561122057600080fd5b505afa158015611234573d6000803e3d6000fd5b505050506040513d602081101561124a57600080fd5b50511015611296576040805162461bcd60e51b8152602060048201526014602482015273696e73756666696369656e742062616c616e636560601b604482015290519081900360640190fd5b6112a286838588611a3a565b505061131c565b6112be826402540be40063ffffffff611ad416565b90508047101561130c576040805162461bcd60e51b8152602060048201526014602482015273696e73756666696369656e742062616c616e636560601b604482015290519081900360640190fd5b600061131a85828487611a3a565b505b505b505050565b61200381565b60005460ff16610eb7576040805162461bcd60e51b81526020600482015260196024820152600080516020611d9c833981519152604482015290519081900360640190fd5b33613000146113ae5760405162461bcd60e51b815260040180806020018281038252602b815260200180611cd0602b913960400191505060405180910390fd5b60006221272160e91b831461141957506000828152600460205260409020546001600160a01b031680611419576040805162461bcd60e51b815260206004820152600e60248201526d1a5b9d985b1a59081cde5b589bdb60921b604482015290519081900360640190fd5b6001600160a01b0380821660009081526007602090815260408083209386168352929052208054611484576040805162461bcd60e51b815260206004820152601060248201526f1b9bc81b1bd8dad95908185b5bdd5b9d60821b604482015290519081900360640190fd5b8054600082556040805182815290516001600160a01b03808716929086169188917f8041a9a8704332594e2884f5e0f942281cdd7611854c365b4d0aa70b2295d6b6919081900360200190a45050505050565b3361100814610ef75760405162461bcd60e51b8152600401808060200182810382526023815260200180611d796023913960400191505060405180910390fd5b62093a8081565b81806001600160a01b031663893d20e86040518163ffffffff1660e01b815260040160206040518083038186803b15801561155857600080fd5b505afa15801561156c573d6000803e3d6000fd5b505050506040513d602081101561158257600080fd5b50516001600160a01b03163314610ef7576040805162461bcd60e51b815260206004820152601860248201527f6e6f74206f776e6572206f6620424550323020746f6b656e0000000000000000604482015290519081900360640190fd5b677ce66c50e284000081565b6000805460ff16611632576040805162461bcd60e51b81526020600482015260196024820152600080516020611d9c833981519152604482015290519081900360640190fd5b3361100514610ef75760405162461bcd60e51b815260040180806020018281038252602f815260200180611c6c602f913960400191505060405180910390fd5b61100781565b61100681565b60005460ff1681565b61200281565b61300081565b600081565b3361100714610ef75760405162461bcd60e51b815260040180806020018281038252602e815260200180611d1c602e913960400191505060405180910390fd5b6221272160e91b81565b60026020526000908152604090205481565b6001600160a01b031660009081526003602052604090205490565b61100281565b60085460ff1660021415611761576040805162461bcd60e51b815260206004820152600e60248201526d4e6f2072652d656e7472616e637960901b604482015290519081900360640190fd5b6008805460ff191660021790556040805162461bcd60e51b815260206004820152600a60248201526919195c1c9958d85d195960b21b604482015290519081900360640190fd5b61100381565b61200481565b60003361200214610ef7576040805162461bcd60e51b815260206004820152601f60248201527f746865206d73672073656e646572206d757374206265207374616b6548756200604482015290519081900360640190fd5b60005460ff1615611864576040805162461bcd60e51b815260206004820152601960248201527f74686520636f6e747261637420616c726561647920696e697400000000000000604482015290519081900360640190fd5b66071afd498d000060019081556000808052600260205260127fac33ff75c19e70fe83507db0d683fd3465c996598dc972688b7ace676c89077b55805460ff19169091179055565b60066020526000908152604090205481565b61100081565b6001600160a01b03811660009081526003602090815260409182902054825182815280840190935260609290918391906020820181803683375050506020810183905290506000805b60208160ff16101561195457828160ff168151811061192857fe5b01602001516001600160f81b031916156119475781600101915061194c565b611954565b60010161190d565b5060608160ff166040519080825280601f01601f191660200182016040528015611985576020820181803683370190505b50905060005b8260ff168160ff1610156119e157838160ff16815181106119a857fe5b602001015160f81c60f81b828260ff16815181106119c257fe5b60200101906001600160f81b031916908160001a90535060010161198b565b5095945050505050565b61100481565b60006008821115611a1a57611a13836007198401600a0a63ffffffff611ad416565b9050611a34565b611a31836008849003600a0a63ffffffff611b2d16565b90505b92915050565b6001600160a01b0380841660009081526007602090815260408083209385168352929052208054611a71908463ffffffff611b6f16565b81554262093a80016001820181905560408051858152602081019290925280516001600160a01b03808616939088169289927f446d1aa056e7b903901f49880e9f252762c1b81dc4301cf28db6dae526497eaa9281900390910190a45050505050565b600082611ae357506000611a34565b82820282848281611af057fe5b0414611a315760405162461bcd60e51b8152600401808060200182810382526021815260200180611cfb6021913960400191505060405180910390fd5b6000611a3183836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250611bc9565b600082820183811015611a31576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b60008183611c555760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b83811015611c1a578181015183820152602001611c02565b50505050905090810190601f168015611c475780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b506000838581611c6157fe5b049594505050505056fe746865206d6573736167652073656e646572206d75737420626520696e63656e746976697a6520636f6e7472616374616d6f756e7420697320746f6f206c617267652c20657863656564206d6178696d756d206265703220746f6b656e20616d6f756e74746865206d73672073656e646572206d75737420626520746f6b656e207265636f76657220706f7274616c536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f77746865206d6573736167652073656e646572206d75737420626520676f7665726e616e636520636f6e7472616374746865206d6573736167652073656e646572206d7573742062652063726f737320636861696e20636f6e7472616374746865206d73672073656e646572206d75737420626520746f6b656e4d616e6167657274686520636f6e7472616374206e6f7420696e69742079657400000000000000a164736f6c6343000604000a \ No newline at end of file diff --git a/core/systemcontracts/pascal/mainnet/TokenManagerContract b/core/systemcontracts/pascal/mainnet/TokenManagerContract new file mode 100644 index 0000000000..8de11282a7 --- /dev/null +++ b/core/systemcontracts/pascal/mainnet/TokenManagerContract @@ -0,0 +1 @@ +6080604052600436106102045760003560e01c80637ec816dd11610118578063ac431751116100a0578063dc927faf1161006f578063dc927faf146108de578063df8079e9146108f3578063e605bca014610908578063f9a2bbc71461091d578063fd6a68791461093257610204565b8063ac4317511461077d578063c81b166214610848578063c8509d811461065f578063d117a1101461085d57610204565b8063a1a11bf5116100e7578063a1a11bf5146106fb578063a78abc1614610710578063aa82dce114610725578063aad560631461073a578063ab51bb961461074f57610204565b80637ec816dd1461064a578063831d65d11461065f57806394553a4e146103345780639dc09262146106e657610204565b8063493279b11161019b5780636e47b4821161016a5780636e47b482146105db57806372c4e086146105f057806375d47a0a1461062057806377d9dae8146105275780637e434d541461063557610204565b8063493279b1146104d157806351b4dce3146104fd57806351e80672146105125780636b3f13071461052757610204565b80632e02d776116101d75780632e02d7761461039357806337e6ecda146103c657806343756e5c146103f9578063445fcefe1461040e57610204565b80630e2374a5146102095780631182b8751461023a57806325c751b714610334578063280870281461037e575b600080fd5b34801561021557600080fd5b5061021e610947565b604080516001600160a01b039092168252519081900360200190f35b34801561024657600080fd5b506102bf6004803603604081101561025d57600080fd5b60ff8235169190810190604081016020820135600160201b81111561028157600080fd5b82018360208201111561029357600080fd5b803590602001918460018302840111600160201b831117156102b457600080fd5b50909250905061094d565b6040805160208082528351818301528351919283929083019185019080838360005b838110156102f95781810151838201526020016102e1565b50505050905090810190601f1680156103265780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b61036a6004803603604081101561034a57600080fd5b5080356001600160a01b0316906020013567ffffffffffffffff166109c9565b604080519115158252519081900360200190f35b34801561038a57600080fd5b5061021e610a05565b34801561039f57600080fd5b5061036a600480360360208110156103b657600080fd5b50356001600160a01b0316610a0b565b3480156103d257600080fd5b5061036a600480360360208110156103e957600080fd5b50356001600160a01b0316610a20565b34801561040557600080fd5b5061021e610a35565b34801561041a57600080fd5b506104bf6004803603602081101561043157600080fd5b810190602081018135600160201b81111561044b57600080fd5b82018360208201111561045d57600080fd5b803590602001918460018302840111600160201b8311171561047e57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550610a3b945050505050565b60408051918252519081900360200190f35b3480156104dd57600080fd5b506104e6610b9a565b6040805161ffff9092168252519081900360200190f35b34801561050957600080fd5b5061021e610b9f565b34801561051e57600080fd5b5061021e610ba5565b61036a6004803603604081101561053d57600080fd5b6001600160a01b038235169190810190604081016020820135600160201b81111561056757600080fd5b82018360208201111561057957600080fd5b803590602001918460018302840111600160201b8311171561059a57600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295506109c9945050505050565b3480156105e757600080fd5b5061021e610bab565b61036a6004803603602081101561060657600080fd5b810190602081018135600160201b81111561056757600080fd5b34801561062c57600080fd5b5061021e610bb1565b34801561064157600080fd5b5061021e610bb7565b34801561065657600080fd5b506104bf610bbd565b34801561066b57600080fd5b506106e46004803603604081101561068257600080fd5b60ff8235169190810190604081016020820135600160201b8111156106a657600080fd5b8201836020820111156106b857600080fd5b803590602001918460018302840111600160201b831117156106d957600080fd5b509092509050610bc3565b005b3480156106f257600080fd5b5061021e610c03565b34801561070757600080fd5b5061021e610c09565b34801561071c57600080fd5b5061036a610c0f565b34801561073157600080fd5b5061021e610c18565b34801561074657600080fd5b5061021e610c1e565b34801561075b57600080fd5b50610764610c24565b6040805163ffffffff9092168252519081900360200190f35b34801561078957600080fd5b506106e4600480360360408110156107a057600080fd5b810190602081018135600160201b8111156107ba57600080fd5b8201836020820111156107cc57600080fd5b803590602001918460018302840111600160201b831117156107ed57600080fd5b919390929091602081019035600160201b81111561080a57600080fd5b82018360208201111561081c57600080fd5b803590602001918460018302840111600160201b8311171561083d57600080fd5b509092509050610c29565b34801561085457600080fd5b5061021e610c69565b34801561086957600080fd5b506108876004803603602081101561088057600080fd5b5035610c6f565b6040805160ff988916815260208101979097526001600160a01b03909516868601526060860193909352608085019190915290931660a083015267ffffffffffffffff90921660c082015290519081900360e00190f35b3480156108ea57600080fd5b5061021e610cc7565b3480156108ff57600080fd5b5061021e610ccd565b34801561091457600080fd5b506104bf610cd3565b34801561092957600080fd5b5061021e610cd9565b34801561093e57600080fd5b5061021e610cdf565b61200181565b6060336120001461098f5760405162461bcd60e51b815260040180806020018281038252602f815260200180610e30602f913960400191505060405180910390fd5b6040805162461bcd60e51b815260206004820152600a60248201526919195c1c9958d85d195960b21b604482015290519081900360640190fd5b6040805162461bcd60e51b815260206004820152600a60248201526919195c1c9958d85d195960b21b6044820152905160009181900360640190fd5b61200581565b60036020526000908152604090205460ff1681565b60026020526000908152604090205460ff1681565b61100181565b6020810151600090610a4b610dc5565b50600081815260016020818152604092839020835160e081018552815460ff9081168252938201549281019290925260028101546001600160a01b031693820184905260038101546060830152600481015460808301526005015491821660a082015261010090910467ffffffffffffffff1660c082015290610ad357600092505050610b95565b600081604001516001600160a01b03166370a082316110046040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060206040518083038186803b158015610b3157600080fd5b505afa158015610b45573d6000803e3d6000fd5b505050506040513d6020811015610b5b57600080fd5b505160808301516060840151919250600091610b7c9163ffffffff610ce516565b9050610b8e818363ffffffff610ce516565b9450505050505b919050565b603881565b61200681565b61200081565b61100581565b61100881565b61200381565b60045481565b336120001461098f5760405162461bcd60e51b815260040180806020018281038252602f815260200180610e30602f913960400191505060405180910390fd5b61100781565b61100681565b60005460ff1681565b61200281565b61300081565b600081565b336110071461098f5760405162461bcd60e51b815260040180806020018281038252602e815260200180610e02602e913960400191505060405180910390fd5b61100281565b600160208190526000918252604090912080549181015460028201546003830154600484015460059094015460ff9586169593946001600160a01b0390931693919291811690610100900467ffffffffffffffff1687565b61100381565b61200481565b60055481565b61100081565b61100481565b6000610d2783836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250610d2e565b9392505050565b60008184841115610dbd5760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b83811015610d82578181015183820152602001610d6a565b50505050905090810190601f168015610daf5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b6040805160e081018252600080825260208201819052918101829052606081018290526080810182905260a0810182905260c08101919091529056fe746865206d6573736167652073656e646572206d75737420626520676f7665726e616e636520636f6e7472616374746865206d6573736167652073656e646572206d7573742062652063726f737320636861696e20636f6e7472616374a164736f6c6343000604000a \ No newline at end of file diff --git a/core/systemcontracts/pascal/mainnet/TokenRecoverPortalContract b/core/systemcontracts/pascal/mainnet/TokenRecoverPortalContract new file mode 100644 index 0000000000..62e5193f62 --- /dev/null +++ b/core/systemcontracts/pascal/mainnet/TokenRecoverPortalContract @@ -0,0 +1 @@ +608060405234801561001057600080fd5b50600436106100f55760003560e01c80638129fc1c11610097578063b187bd2611610066578063b187bd26146101fc578063bfb5a6a114610207578063e33f8d321461021a578063e842426a1461023d57600080fd5b80638129fc1c146101cc5780638456cb59146101d45780639fcb5012146101dc578063ac431751146101e957600080fd5b80634838d165116100d35780634838d165146101335780634a49ac4c14610166578063572c99801461017957806374be21501461018c57600080fd5b8063046f7da2146100fa5780632eb4a7ab14610104578063417c73a714610120575b600080fd5b610102610268565b005b61010d60685481565b6040519081526020015b60405180910390f35b61010261012e366004611670565b6102f0565b610156610141366004611670565b60346020526000908152604090205460ff1681565b6040519015158152602001610117565b610102610174366004611670565b61036c565b61010261018736600461168b565b6103e5565b6101bf6040518060400160405280601481526020017342696e616e63652d436861696e2d54696772697360601b81525081565b6040516101179190611707565b61010261047b565b6101026105ed565b6069546101569060ff1681565b6101026101f7366004611763565b610679565b60335460ff16610156565b610102610215366004611814565b610a98565b6101566102283660046118ee565b6000908152606a602052604090205460ff1690565b606754610250906001600160a01b031681565b6040516001600160a01b039091168152602001610117565b60335461010090046001600160a01b03163314610298576040516306fbb1e360e01b815260040160405180910390fd5b60335460ff166102bb57604051636cd6020160e01b815260040160405180910390fd5b6033805460ff191690556040517f62451d457bc659158be6e6247f56ec1df424a5c7597f71c20c2bc44e0965c8f990600090a1565b60335461010090046001600160a01b03163314610320576040516306fbb1e360e01b815260040160405180910390fd5b6001600160a01b038116600081815260346020526040808220805460ff19166001179055517f7fd26be6fc92aff63f1f4409b2b2ddeb272a888031d7f55ec830485ec61941869190a250565b60335461010090046001600160a01b0316331461039c576040516306fbb1e360e01b815260040160405180910390fd5b6001600160a01b038116600081815260346020526040808220805460ff19169055517fe0db3499b7fdc3da4cddff5f45d694549c19835e7f719fb5606d3ad1a5de40119190a250565b60335461010090046001600160a01b03163314610415576040516306fbb1e360e01b815260040160405180910390fd5b604051638525db0360e01b8152600481018390526001600160a01b038216602482015261100490638525db0390604401600060405180830381600087803b15801561045f57600080fd5b505af1158015610473573d6000803e3d6000fd5b505050505050565b600054610100900460ff161580801561049b5750600054600160ff909116105b806104b55750303b1580156104b5575060005460ff166001145b61051d5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084015b60405180910390fd5b6000805460ff191660011790558015610540576000805461ff0019166101001790555b3341146105605760405163022d8c9560e31b815260040160405180910390fd5b3a1561057f576040516383f1b1d360e01b815260040160405180910390fd5b610587610df8565b6105a47308e68ec70fa3b629784fdb28887e206ce8561e08610e25565b80156105ea576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b50565b60335461010090046001600160a01b0316331461061d576040516306fbb1e360e01b815260040160405180910390fd5b60335460ff161561064157604051631785c68160e01b815260040160405180910390fd5b6033805460ff191660011790556040517f9e87fac88ff661f02d44f95383c817fece4bce600a3dab7a54406878b965e75290600090a1565b336110071461069f57604051630f22c43960e41b81526110076004820152602401610514565b6107096040518060400160405280600f81526020016e617070726f76616c4164647265737360881b81525085858080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509293925050610e749050565b156107d357601481146107375783838383604051630a5a604160e01b81526004016105149493929190611930565b600061077d601484848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509293925050610ece9050565b90506001600160a01b0381166107ae5784848484604051630a5a604160e01b81526004016105149493929190611930565b606780546001600160a01b0319166001600160a01b0392909216919091179055610a55565b6108386040518060400160405280600a8152602001691b595c9adb19549bdbdd60b21b81525085858080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509293925050610e749050565b156109085760695460ff1615610861576040516379b3306f60e11b815260040160405180910390fd5b6020811461088a5783838383604051630a5a604160e01b81526004016105149493929190611930565b604080516020601f84018190048102820181019092528281526000916108cb918585808385018382808284376000920191909152509293925050610ece9050565b9050806108f35784848484604051630a5a604160e01b81526004016105149493929190611930565b6068556069805460ff19166001179055610a55565b6109806040518060400160405280601b81526020017f746f6b656e5265636f766572506f7274616c50726f746563746f72000000000081525085858080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509293925050610e749050565b15610a3457601481146109ae5783838383604051630a5a604160e01b81526004016105149493929190611930565b60006109f4601484848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509293925050610ece9050565b90506001600160a01b038116610a255784848484604051630a5a604160e01b81526004016105149493929190611930565b610a2e81610ed3565b50610a55565b838383836040516325ee20d560e21b81526004016105149493929190611930565b7ff1ce9b2cbf50eeb05769a29e2543fd350cab46894a7dd9978a12d534bb20e63384848484604051610a8a9493929190611930565b60405180910390a150505050565b60695460ff16610abb5760405163678f619760e11b815260040160405180910390fd5b606854610adb5760405163678f619760e11b815260040160405180910390fd5b6067546001600160a01b0316610b0457604051631a1b977b60e31b815260040160405180910390fd5b60335460ff1615610b2857604051631785c68160e01b815260040160405180910390fd5b610b30610f3a565b6000610bbe89898080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050604080516020601f8d018190048102820181019092528b815292508b91508a9081908401838280828437600081840152601f19601f82011690508083019250505050505050610bb98e8e33610f93565b6110b4565b90506000818c8c604051602001610bd793929190611962565b604051602081830303815290604052805190602001209050610c08816000908152606a602052604090205460ff1690565b15610c2557604051623e493160e81b815260040160405180910390fd5b610ccd3389898080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050604080516020601f8d018190048102820181019092528b815292508b91508a908190840183828082843760009201919091525050604080516020808c0282810182019093528b82528994509092508b918b9182919085019084908082843760009201919091525061118c92505050565b610d0e848480806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250506068549150849050611297565b610d2b576040516309bde33960e01b815260040160405180910390fd5b6000818152606a602052604090819020805460ff191660011790555163799758b960e01b8152600481018d9052336024820152604481018c90526110049063799758b990606401600060405180830381600087803b158015610d8c57600080fd5b505af1158015610da0573d6000803e3d6000fd5b505050507f39cc0b7297a0ef9102d75ebc4919ffec0347d50008c2b865eda4125d5812cb64828d338e604051610dd99493929190611989565b60405180910390a15050610dec60018055565b50505050505050505050565b600054610100900460ff16610e1f5760405162461bcd60e51b8152600401610514906119c1565b60018055565b600054610100900460ff16610e4c5760405162461bcd60e51b8152600401610514906119c1565b603380546001600160a01b0390921661010002610100600160a81b0319909216919091179055565b600081604051602001610e879190611a0c565b6040516020818303038152906040528051906020012083604051602001610eae9190611a0c565b604051602081830303815290604052805190602001201490505b92915050565b015190565b6033546040516001600160a01b0380841692610100900416907f44fc1b38a4abaa91ebd1b628a5b259a698f86238c8217d68f516e87769c60c0b90600090a3603380546001600160a01b0390921661010002610100600160a81b0319909216919091179055565b600260015403610f8c5760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610514565b6002600155565b600060026040518060400160405280601481526020017342696e616e63652d436861696e2d54696772697360601b815250610ff085604051602001610fda91815260200190565b60405160208183030381529060405260006112ad565b6040516bffffffffffffffffffffffff19606087901b1660208201526110299060340160405160208183030381529060405260016112ad565b61103f88604051602001610fda91815260200190565b6040516020016110529493929190611a28565b60408051601f198184030181529082905261106c91611a0c565b602060405180830381855afa158015611089573d6000803e3d6000fd5b5050506040513d601f19601f820116820180604052508101906110ac9190611b57565b949350505050565b606083516021146110d857604051638152ea1b60e01b815260040160405180910390fd5b82516040146110fa57604051635e4bd79760e11b815260040160405180910390fd5b604080516020808252818301909252600091602082018180368337019050509050826020820152600085858360405160200161113893929190611b86565b60408051808303601f190181526014808452838301909252925060009190602082018180368337019050509050815160146020830182602086016069600019fa61118157600080fd5b509695505050505050565b606060005b82518110156111ea57818382815181106111ad576111ad611bc9565b60200260200101516040516020016111c6929190611bdf565b604051602081830303815290604052915080806111e290611c17565b915050611191565b5060006040518060400160405280601481526020017342696e616e63652d436861696e2d54696772697360601b8152508787866068548660405160200161123696959493929190611c30565b60408051601f1981840301815291905280516020909101206067549091506001600160a01b0316611267868361147f565b6001600160a01b03161461128e576040516356b00a4f60e11b815260040160405180910390fd5b50505050505050565b6000826112a48584611519565b14949350505050565b60606000835160026112bf9190611ca1565b67ffffffffffffffff8111156112d7576112d7611b70565b6040519080825280601f01601f191660200182016040528015611301576020820181803683370190505b5060408051808201909152601081526f181899199a1a9b1b9c1cb0b131b232b360811b602082015290915060005b85518110156114475781825187838151811061134d5761134d611bc9565b016020015161135f919060f81c611cce565b8151811061136f5761136f611bc9565b01602001516001600160f81b0319168361138a836002611ca1565b8151811061139a5761139a611bc9565b60200101906001600160f81b031916908160001a9053508182518783815181106113c6576113c6611bc9565b01602001516113d8919060f81c611ce2565b815181106113e8576113e8611bc9565b01602001516001600160f81b03191683611403836002611ca1565b61140e906001611cf6565b8151811061141e5761141e611bc9565b60200101906001600160f81b031916908160001a9053508061143f81611c17565b91505061132f565b508315611477578160405160200161145f9190611d09565b60405160208183030381529060405292505050610ec8565b509392505050565b600082516041146114a3576040516356b00a4f60e11b815260040160405180910390fd5b60208301516040840151606085015160001a601b8110156114cc576114c9601b82611d33565b90505b601b8160ff1610806114e15750601c8160ff16115b156114ff576040516356b00a4f60e11b815260040160405180910390fd5b600061150d8683868661155e565b50979650505050505050565b600081815b84518110156114775761154a8286838151811061153d5761153d611bc9565b6020026020010151611622565b91508061155681611c17565b91505061151e565b6000807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a08311156115955750600090506003611619565b6040805160008082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa1580156115e9573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b03811661161257600060019250925050611619565b9150600090505b94509492505050565b600081831061163e57600082815260208490526040902061164d565b60008381526020839052604090205b9392505050565b80356001600160a01b038116811461166b57600080fd5b919050565b60006020828403121561168257600080fd5b61164d82611654565b6000806040838503121561169e57600080fd5b823591506116ae60208401611654565b90509250929050565b60005b838110156116d25781810151838201526020016116ba565b50506000910152565b600081518084526116f38160208601602086016116b7565b601f01601f19169290920160200192915050565b60208152600061164d60208301846116db565b60008083601f84011261172c57600080fd5b50813567ffffffffffffffff81111561174457600080fd5b60208301915083602082850101111561175c57600080fd5b9250929050565b6000806000806040858703121561177957600080fd5b843567ffffffffffffffff8082111561179157600080fd5b61179d8883890161171a565b909650945060208701359150808211156117b657600080fd5b506117c38782880161171a565b95989497509550505050565b60008083601f8401126117e157600080fd5b50813567ffffffffffffffff8111156117f957600080fd5b6020830191508360208260051b850101111561175c57600080fd5b60008060008060008060008060008060c08b8d03121561183357600080fd5b8a35995060208b0135985060408b013567ffffffffffffffff8082111561185957600080fd5b6118658e838f0161171a565b909a50985060608d013591508082111561187e57600080fd5b61188a8e838f0161171a565b909850965060808d01359150808211156118a357600080fd5b6118af8e838f0161171a565b909650945060a08d01359150808211156118c857600080fd5b506118d58d828e016117cf565b915080935050809150509295989b9194979a5092959850565b60006020828403121561190057600080fd5b5035919050565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b604081526000611944604083018688611907565b8281036020840152611957818587611907565b979650505050505050565b600084516119748184602089016116b7565b91909101928352506020820152604001919050565b60808152600061199c60808301876116db565b6020830195909552506001600160a01b03929092166040830152606090910152919050565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b60008251611a1e8184602087016116b7565b9190910192915050565b7f7b226163636f756e745f6e756d626572223a2230222c22636861696e5f6964228152611d1160f11b602082015260008551611a6b816022850160208a016116b7565b7f222c2264617461223a6e756c6c2c226d656d6f223a22222c226d736773223a5b6022918401918201526a3d9130b6b7bab73a111d1160a91b60428201528551611abc81604d840160208a016116b7565b6e1116113932b1b4b834b2b73a111d1160891b604d92909101918201528451611aec81605c8401602089016116b7565b711116113a37b5b2b72fb9bcb6b137b6111d1160711b605c92909101918201528351611b1f81606e8401602088016116b7565b7f227d5d2c2273657175656e6365223a2230222c22736f75726365223a2230227d606e9290910191820152608e019695505050505050565b600060208284031215611b6957600080fd5b5051919050565b634e487b7160e01b600052604160045260246000fd5b60008451611b988184602089016116b7565b845190830190611bac8183602089016116b7565b8451910190611bbf8183602088016116b7565b0195945050505050565b634e487b7160e01b600052603260045260246000fd5b60008351611bf18184602088016116b7565b9190910191825250602001919050565b634e487b7160e01b600052601160045260246000fd5b600060018201611c2957611c29611c01565b5060010190565b60008751611c42818460208c016116b7565b606088901b6bffffffffffffffffffffffff19169083019081528651611c6f816014840160208b016116b7565b0160148101869052603481018590528351611c918160548401602088016116b7565b0160540198975050505050505050565b8082028115828204841417610ec857610ec8611c01565b634e487b7160e01b600052601260045260246000fd5b600082611cdd57611cdd611cb8565b500490565b600082611cf157611cf1611cb8565b500690565b80820180821115610ec857610ec8611c01565b61060f60f31b815260008251611d268160028501602087016116b7565b9190910160020192915050565b60ff8181168382160190811115610ec857610ec8611c0156fea164736f6c6343000811000a \ No newline at end of file diff --git a/core/systemcontracts/pascal/mainnet/ValidatorContract b/core/systemcontracts/pascal/mainnet/ValidatorContract new file mode 100644 index 0000000000..4137ae8504 --- /dev/null +++ b/core/systemcontracts/pascal/mainnet/ValidatorContract @@ -0,0 +1 @@ +6080604052600436106104565760003560e01c80638c5d749d1161023f578063c81b166211610139578063e1c7392a116100b6578063f92eb86b1161007a578063f92eb86b14610b7f578063f9a2bbc714610b94578063fccc281314610ba9578063fd4ad81f14610bbe578063fd6a687914610bed5761045d565b8063e1c7392a14610b02578063e40716a114610b17578063ea321e4914610b2c578063eb57e20214610b4c578063f340fa0114610b6c5761045d565b8063d68fb56a116100fd578063d68fb56a14610a99578063daacdb6614610aae578063dc927faf14610ac3578063df8079e914610ad8578063e086c7b114610aed5761045d565b8063c81b166214610a3a578063c8509d81146107fc578063cb75a59214610a4f578063ce910b0c14610a64578063d58918ae14610a845761045d565b8063aa82dce1116101c7578063aef198a91161018b578063aef198a9146109c4578063b7ab4db5146109d9578063b8cf4ef1146109fb578063c466689d14610a10578063c6d3394514610a255761045d565b8063aa82dce114610938578063aad560631461094d578063ab51bb9614610962578063ac43175114610984578063ad3c9da6146109a45761045d565b80639fe0f8161161020e5780639fe0f816146108cf578063a0dc2758146108e4578063a1a11bf5146108f9578063a5422d5c1461090e578063a78abc16146109235761045d565b80638c5d749d146108705780638d19a410146108855780639369d7de146108a55780639dc09262146108ba5761045d565b80635192c82c1161035057806375d47a0a116102d8578063831d65d11161029c578063831d65d1146107fc578063862498821461081c57806388b32f11146108315780638a7beb01146108465780638b5ad0c91461085b5761045d565b806375d47a0a1461079357806378dfed4a146107a85780637a84ca2a146107bd5780637e434d54146107d2578063820dcaa8146107e75761045d565b8063565c56b31161031f578063565c56b3146106f757806360eba4fe1461071757806362b72cf5146107375780636969a25c1461074c5780636e47b4821461077e5761045d565b80635192c82c1461069857806351b4dce3146106ad57806351e80672146106c257806355614fcc146106d75761045d565b80632a0ffb6e116103de5780633b071dcc116103a25780633b071dcc1461061457806343756e5c1461063757806345cf9daf1461064c578063493279b1146106615780634df6e0c3146106835761045d565b80632a0ffb6e14610574578063300c356714610594578063321d398a146105b45780633365af3a146105d457806335409f7f146105f45761045d565b8063152ad3b811610425578063152ad3b8146104f35780631bd14ed8146105155780631e4c15241461052a5780631ff180691461054a578063280870281461055f5761045d565b806304c4fec61461046257806307a56847146104795780630e2374a5146104a45780631182b875146104c65761045d565b3661045d57005b600080fd5b34801561046e57600080fd5b50610477610c02565b005b34801561048557600080fd5b5061048e610c76565b60405161049b9190616d4d565b60405180910390f35b3480156104b057600080fd5b506104b9610c7c565b60405161049b9190616103565b3480156104d257600080fd5b506104e66104e1366004615fe9565b610c82565b60405161049b9190616223565b3480156104ff57600080fd5b50610508610d9e565b60405161049b9190616218565b34801561052157600080fd5b5061048e610da7565b34801561053657600080fd5b50610477610545366004615e17565b610dad565b34801561055657600080fd5b5061048e6110e1565b34801561056b57600080fd5b506104b96110e7565b34801561058057600080fd5b5061047761058f366004615d77565b6110ed565b3480156105a057600080fd5b506104776105af366004615daf565b61110e565b3480156105c057600080fd5b506105086105cf366004615f96565b611457565b3480156105e057600080fd5b506105086105ef366004615f96565b611526565b34801561060057600080fd5b5061047761060f366004615d77565b6115d7565b34801561062057600080fd5b5061062961173c565b60405161049b9291906161a8565b34801561064357600080fd5b506104b9611a18565b34801561065857600080fd5b5061048e611a1e565b34801561066d57600080fd5b50610676611a24565b60405161049b9190616d3e565b34801561068f57600080fd5b50610629611a29565b3480156106a457600080fd5b5061048e611bb5565b3480156106b957600080fd5b506104b9611bbb565b3480156106ce57600080fd5b506104b9611bc1565b3480156106e357600080fd5b506105086106f2366004615d77565b611bc7565b34801561070357600080fd5b5061048e610712366004615d77565b611c03565b34801561072357600080fd5b506104e6610732366004615f96565b611c54565b34801561074357600080fd5b5061048e611cfa565b34801561075857600080fd5b5061076c610767366004615f96565b611d00565b60405161049b96959493929190616130565b34801561078a57600080fd5b506104b9611d64565b34801561079f57600080fd5b506104b9611d6a565b3480156107b457600080fd5b5061048e611d70565b3480156107c957600080fd5b5061048e611d76565b3480156107de57600080fd5b506104b9611d7c565b3480156107f357600080fd5b5061048e611d82565b34801561080857600080fd5b50610477610817366004615fe9565b611d88565b34801561082857600080fd5b5061048e611da9565b34801561083d57600080fd5b5061048e611daf565b34801561085257600080fd5b50610508611db5565b34801561086757600080fd5b5061048e611dbe565b34801561087c57600080fd5b5061048e611dc4565b34801561089157600080fd5b5061048e6108a0366004615d77565b611de1565b3480156108b157600080fd5b50610477611e21565b3480156108c657600080fd5b506104b9611f35565b3480156108db57600080fd5b5061048e611f3b565b3480156108f057600080fd5b5061048e611f40565b34801561090557600080fd5b506104b9611f45565b34801561091a57600080fd5b506104e6611f4b565b34801561092f57600080fd5b50610508611f6a565b34801561094457600080fd5b506104b9611f73565b34801561095957600080fd5b506104b9611f79565b34801561096e57600080fd5b50610977611f7f565b60405161049b9190616d80565b34801561099057600080fd5b5061047761099f366004615f3a565b611f84565b3480156109b057600080fd5b5061048e6109bf366004615d77565b612976565b3480156109d057600080fd5b5061048e612988565b3480156109e557600080fd5b506109ee612995565b60405161049b9190616195565b348015610a0757600080fd5b5061048e612a80565b348015610a1c57600080fd5b5061048e612a85565b348015610a3157600080fd5b5061048e612a8b565b348015610a4657600080fd5b506104b9612a90565b348015610a5b57600080fd5b5061048e612a96565b348015610a7057600080fd5b506104e6610a7f366004615f96565b612a9c565b348015610a9057600080fd5b5061048e612aa9565b348015610aa557600080fd5b5061048e612aaf565b348015610aba57600080fd5b5061048e612aee565b348015610acf57600080fd5b506104b9612af4565b348015610ae457600080fd5b506104b9612afa565b348015610af957600080fd5b5061048e612b00565b348015610b0e57600080fd5b50610477612b05565b348015610b2357600080fd5b5061048e612cae565b348015610b3857600080fd5b50610508610b47366004615efb565b612cb4565b348015610b5857600080fd5b50610477610b67366004615d77565b612e3a565b610477610b7a366004615d77565b612f42565b348015610b8b57600080fd5b5061048e6132f8565b348015610ba057600080fd5b506104b96132fe565b348015610bb557600080fd5b506104b9613304565b348015610bca57600080fd5b50610bde610bd9366004615f96565b61330a565b60405161049b93929190616d56565b348015610bf957600080fd5b506104b96133cc565b6000610c0d33611de1565b9050600b8181548110610c1c57fe5b600091825260209091206001601690920201015460ff16610c585760405162461bcd60e51b8152600401610c4f906169f5565b60405180910390fd5b6000610c62612aaf565b9050610c7133838360016133d2565b505050565b60095481565b61200181565b60005460609060ff16610ca75760405162461bcd60e51b8152600401610c4f906163ab565b3361200014610cc85760405162461bcd60e51b8152600401610c4f90616b56565b600b54610d8657610cd7615923565b60015460005b81811015610d8257600b80546001810182556000919091528351600080516020616e1883398151915260169092029182019081556020808601516000805160206174478339815191528401805460ff1916911515919091179055604086015180518794610d5e93600080516020616e38833981519152909101920190615952565b506060820151610d7490600383019060136159cc565b505050806001019050610cdd565b5050505b60405162461bcd60e51b8152600401610c4f9061665a565b60075460ff1681565b600f5481565b334114610dcc5760405162461bcd60e51b8152600401610c4f90616ba5565b3a15610dea5760405162461bcd60e51b8152600401610c4f90616934565b8251604080518281526020808402820101909152606090828015610e2857816020015b610e156159f9565b815260200190600190039081610e0d5790505b50905060005b82811015610ed2576040518060c00160405280878381518110610e4d57fe5b60200260200101516001600160a01b0316815260200160006001600160a01b0316815260200160006001600160a01b03168152602001868381518110610e8f57fe5b60200260200101516001600160401b031681526020016000151581526020016000815250828281518110610ebf57fe5b6020908102919091010152600101610e2e565b50606080610ee083866135c4565b9150915060005b600154811015610fd657600060018281548110610f0057fe5b906000526020600020906004020160030154905080600014610fcd57600060018381548110610f2b57fe5b9060005260206000209060040201600301819055506120026001600160a01b031663092193ab8260018581548110610f5f57fe5b60009182526020909120600491820201546040516001600160e01b031960e086901b168152610f9a926001600160a01b039092169101616103565b6000604051808303818588803b158015610fb357600080fd5b505af1158015610fc7573d6000803e3d6000fd5b50505050505b50600101610ee7565b504715611044577f6ecc855f9440a9282c90913bbc91619fd44f5ec0b462af28d127b116f130aa4d4760405161100c9190616d4d565b60405180910390a1604051611002904780156108fc02916000818181858888f19350505050158015611042573d6000803e3d6000fd5b505b600060035581511561105a5761105a8282613aae565b6110016001600160a01b031663fc4333cd6040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561109757600080fd5b505af11580156110ab573d6000803e3d6000fd5b50506040517fedd8d7296956dd970ab4de3f2fc03be2b0ffc615d20cd4c72c6e44f928630ebf925060009150a150505050505050565b60035481565b61200581565b3361200214610d865760405162461bcd60e51b8152600401610c4f90616d07565b33411461112d5760405162461bcd60e51b8152600401610c4f90616ba5565b601054431161114e5760405162461bcd60e51b8152600401610c4f90616584565b3a1561116c5760405162461bcd60e51b8152600401610c4f90616934565b60005460ff1661118e5760405162461bcd60e51b8152600401610c4f906163ab565b60006110023168056bc75e2d631000008111156111c5576111be8168056bc75e2d6310000063ffffffff61429d16565b91506111cc565b505061144d565b6040516309a99b4f60e41b815261100290639a99b4f0906111f39030908690600401616117565b602060405180830381600087803b15801561120d57600080fd5b505af1158015611221573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112459190615fae565b91508161125357505061144d565b6000805b848110156112815785858281811061126b57fe5b9050602002013582019150806001019050611257565b508061128f5750505061144d565b6000806000805b8981101561144557848989838181106112ab57fe5b905060200201358802816112bb57fe5b0493508a8a828181106112ca57fe5b90506020020160208101906112df9190615d77565b6001600160a01b038116600090815260046020526040902054909350915081156113fb57600060018084038154811061131457fe5b9060005260206000209060040201905080600201601c9054906101000a900460ff161561138157836001600160a01b03167fb9c75cbbfde137c4281689580799ef5f52144e78858f776a5979b2b212137d85866040516113749190616d4d565b60405180910390a26113f5565b600354611394908663ffffffff6142df16565b60039081558101546113ac908663ffffffff6142df16565b60038201556040516001600160a01b038516907fcb0aad6cf9cd03bdf6137e359f541c42f38b39f007cae8e89e88aa7d8c6617b2906113ec908890616d4d565b60405180910390a25b5061143d565b826001600160a01b03167fb9c75cbbfde137c4281689580799ef5f52144e78858f776a5979b2b212137d85856040516114349190616d4d565b60405180910390a25b600101611296565b505050505050505b5050436010555050565b600154600090821061146b57506000611521565b60006001600160a01b03166001838154811061148357fe5b60009182526020909120600490910201546001600160a01b031614806114b3575060085415806114b35750600a54155b806114c2575060085460095410155b806114d357506114d182611526565b155b806114fc57506000600b83815481106114e857fe5b906000526020600020906016020160000154115b806115105750600161150c612995565b5111155b1561151d57506000611521565b5060015b919050565b600154600090821061153a57506000611521565b600b548210611577576001828154811061155057fe5b9060005260206000209060040201600201601c9054906101000a900460ff16159050611521565b6001828154811061158457fe5b9060005260206000209060040201600201601c9054906101000a900460ff161580156115d15750600b82815481106115b857fe5b600091825260209091206001601690920201015460ff16155b92915050565b600b54611695576115e6615923565b60015460005b8181101561169157600b80546001810182556000919091528351600080516020616e1883398151915260169092029182019081556020808601516000805160206174478339815191528401805460ff191691151591909117905560408601518051879461166d93600080516020616e38833981519152909101920190615952565b50606082015161168390600383019060136159cc565b5050508060010190506115ec565b5050505b3361100114806116a6575033612002145b6116c25760405162461bcd60e51b8152600401610c4f906163e2565b6001600160a01b038116600090815260046020526040902054806116e65750611739565b6001810390506000600b82815481106116fb57fe5b600091825260209091206001601690920201015460ff16905061171e8383614304565b80156117275750805b15610c71576009805460001901905550505b50565b60015460609081906000805b8281101561178f576001818154811061175d57fe5b9060005260206000209060040201600201601c9054906101000a900460ff16611787576001909101905b600101611748565b506060816040519080825280602002602001820160405280156117bc578160200160208202803683370190505b5090506060826040519080825280602002602001820160405280156117f557816020015b60608152602001906001900390816117e05790505b50600b54600094509091508414156119705760005b8481101561196a576001818154811061181f57fe5b9060005260206000209060040201600201601c9054906101000a900460ff16611962576001818154811061184f57fe5b600091825260209091206004909102015483516001600160a01b039091169084908690811061187a57fe5b60200260200101906001600160a01b031690816001600160a01b031681525050600b81815481106118a757fe5b600091825260209182902060026016909202018101805460408051601f60001961010060018616150201909316949094049182018590048502840185019052808352919290919083018282801561193f5780601f106119145761010080835404028352916020019161193f565b820191906000526020600020905b81548152906001019060200180831161192257829003601f168201915b505050505082858151811061195057fe5b60209081029190910101526001909301925b60010161180a565b50611a0c565b60005b84811015611a0a576001818154811061198857fe5b9060005260206000209060040201600201601c9054906101000a900460ff16611a0257600181815481106119b857fe5b600091825260209091206004909102015483516001600160a01b03909116908490869081106119e357fe5b6001600160a01b03909216602092830291909101909101526001909301925b600101611973565b505b909450925050505b9091565b61100181565b60085481565b603881565b6060806000600e549050600080600c5411611a45576015611a49565b600c545b90506060611a55612995565b90506060611a62826146c7565b905082825111611a79579094509250611a14915050565b83838351031015611a8b578282510393505b8315611ac15760c84304611aa783838388880360008a8a614835565b611abf8383838888038989038a8b8b8b510301614835565b505b606083604051908082528060200260200182016040528015611aed578160200160208202803683370190505b509050606084604051908082528060200260200182016040528015611b2657816020015b6060815260200190600190039081611b115790505b50905060005b85811015611ba757848181518110611b4057fe5b6020026020010151838281518110611b5457fe5b60200260200101906001600160a01b031690816001600160a01b031681525050838181518110611b8057fe5b6020026020010151828281518110611b9457fe5b6020908102919091010152600101611b2c565b509096509450505050509091565b60065481565b61200681565b61200081565b6001600160a01b03811660009081526004602052604081205480611bef576000915050611521565b60001901611bfc81611526565b9392505050565b6001600160a01b03811660009081526004602052604081205480611c2b576000915050611521565b600180820381548110611c3a57fe5b906000526020600020906004020160030154915050919050565b60128181548110611c6157fe5b600091825260209182902001805460408051601f6002600019610100600187161502019094169390930492830185900485028101850190915281815293509091830182828015611cf25780601f10611cc757610100808354040283529160200191611cf2565b820191906000526020600020905b815481529060010190602001808311611cd557829003601f168201915b505050505081565b60105481565b60018181548110611d0d57fe5b600091825260209091206004909102018054600182015460028301546003909301546001600160a01b0392831694509082169291821691600160a01b81046001600160401b031691600160e01b90910460ff169086565b61100581565b61100881565b6103e881565b600c5481565b61200381565b61271081565b3361200014610d865760405162461bcd60e51b8152600401610c4f90616b56565b60025481565b60115481565b60145460ff1681565b600a5481565b600060175460001415611dd957506001611dde565b506017545b90565b6001600160a01b03811660009081526004602052604081205480611e175760405162461bcd60e51b8152600401610c4f90616ade565b6000190192915050565b600b54611edf57611e30615923565b60015460005b81811015611edb57600b80546001810182556000919091528351600080516020616e1883398151915260169092029182019081556020808601516000805160206174478339815191528401805460ff1916911515919091179055604086015180518794611eb793600080516020616e38833981519152909101920190615952565b506060820151611ecd90600383019060136159cc565b505050806001019050611e36565b5050505b600854611eec5760036008555b600a54611ef9576002600a555b6000611f0433611de1565b9050611f0f81611457565b611f2b5760405162461bcd60e51b8152600401610c4f906168b0565b611739338261498c565b61100781565b600381565b60c881565b61100681565b6040518061062001604052806105ef8152602001616e586105ef913981565b60005460ff1681565b61200281565b61300081565b600081565b60005460ff16611fa65760405162461bcd60e51b8152600401610c4f906163ab565b3361100714611fc75760405162461bcd60e51b8152600401610c4f90616962565b61202784848080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250506040805180820190915260098152686275726e526174696f60b81b60208201529150614a249050565b156120dc576020811461204c5760405162461bcd60e51b8152600401610c4f90616268565b604080516020601f840181900481028201810190925282815260009161208a91858580838501838280828437600092019190915250614a7d92505050565b90506127106120b66018546120aa600f54856142df90919063ffffffff16565b9063ffffffff6142df16565b11156120d45760405162461bcd60e51b8152600401610c4f9061667e565b600655612933565b61214684848080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250506040805180820190915260138152726d61784e756d4f664d61696e7461696e696e6760681b60208201529150614a249050565b156121e0576020811461216b5760405162461bcd60e51b8152600401610c4f9061629f565b604080516020601f84018190048102820181019092528281526000916121a991858580838501838280828437600092019190915250614a7d92505050565b600c54909150806121b8575060155b8082106121d75760405162461bcd60e51b8152600401610c4f906165c6565b50600855612933565b61224984848080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250506040805180820190915260128152716d61696e7461696e536c6173685363616c6560701b60208201529150614a249050565b156122e2576020811461226e5760405162461bcd60e51b8152600401610c4f90616331565b604080516020601f84018190048102820181019092528281526000916122ac91858580838501838280828437600092019190915250614a7d92505050565b90506000811180156122be5750600a81105b6122da5760405162461bcd60e51b8152600401610c4f90616c3a565b600a55612933565b61235684848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505060408051808201909152601981527f6d61784e756d4f66576f726b696e6743616e646964617465730000000000000060208201529150614a249050565b156123e5576020811461237b5760405162461bcd60e51b8152600401610c4f906162e5565b604080516020601f84018190048102820181019092528281526000916123b991858580838501838280828437600092019190915250614a7d92505050565b9050600d548111156123dd5760405162461bcd60e51b8152600401610c4f90616787565b600e55612933565b61244e84848080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250506040805180820190915260128152716d61784e756d4f6643616e6469646174657360701b60208201529150614a249050565b156124d057602081146124735760405162461bcd60e51b8152600401610c4f906169b0565b604080516020601f84018190048102820181019092528281526000916124b191858580838501838280828437600092019190915250614a7d92505050565b600d819055600e549091508110156124ca57600d54600e555b50612933565b61253484848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505060408051808201909152600d81526c6e756d4f66436162696e65747360981b60208201529150614a249050565b156125e257602081146125595760405162461bcd60e51b8152600401610c4f90616376565b604080516020601f840181900481028201810190925282815260009161259791858580838501838280828437600092019190915250614a7d92505050565b9050600081116125b95760405162461bcd60e51b8152600401610c4f906164df565b60648111156125da5760405162461bcd60e51b8152600401610c4f90616527565b600c55612933565b61264e84848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505060408051808201909152601581527473797374656d52657761726442617365526174696f60581b60208201529150614a249050565b156126f757602081146126735760405162461bcd60e51b8152600401610c4f90616bf2565b604080516020601f84018190048102820181019092528281526000916126b191858580838501838280828437600092019190915250614a7d92505050565b90506127106126d16018546120aa600654856142df90919063ffffffff16565b11156126ef5760405162461bcd60e51b8152600401610c4f90616450565b600f55612933565b61276b84848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505060408051808201909152601881527f73797374656d526577617264416e74694d4556526174696f000000000000000060208201529150614a249050565b1561281457602081146127905760405162461bcd60e51b8152600401610c4f9061670d565b604080516020601f84018190048102820181019092528281526000916127ce91858580838501838280828437600092019190915250614a7d92505050565b90506127106127ee600f546120aa600654856142df90919063ffffffff16565b111561280c5760405162461bcd60e51b8152600401610c4f90616821565b601855612933565b61287584848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505060408051808201909152600a8152690e8eae4dc98cadccee8d60b31b60208201529150614a249050565b1561291b576020811461289a5760405162461bcd60e51b8152600401610c4f90616623565b604080516020601f84018190048102820181019092528281526000916128d891858580838501838280828437600092019190915250614a7d92505050565b9050600381101580156128ec575060098111155b806128f75750806001145b6129135760405162461bcd60e51b8152600401610c4f90616a58565b601755612933565b60405162461bcd60e51b8152600401610c4f90616c97565b7f6cdb0ac70ab7f2e2d035cca5be60d89906f2dede7648ddbd7402189c1eeed17a848484846040516129689493929190616236565b60405180910390a150505050565b60046020526000908152604090205481565b68056bc75e2d6310000081565b6001546060906000805b828110156129c4576129b081611526565b156129bc578160010191505b60010161299f565b506060816040519080825280602002602001820160405280156129f1578160200160208202803683370190505b5090506000915060005b83811015612a7857612a0c81611526565b15612a705760018181548110612a1e57fe5b600091825260209091206004909102015482516001600160a01b0390911690839085908110612a4957fe5b60200260200101906001600160a01b031690816001600160a01b0316815250508260010192505b6001016129fb565b509250505090565b601581565b61027181565b600281565b61100281565b60175481565b60138181548110611c6157fe5b60185481565b6000612ab9612995565b519050600080600c5411612ace576015612ad2565b600c545b905080821115612ae0578091505b81612aea57600191505b5090565b60055481565b61100381565b61200481565b606481565b60005460ff1615612b285760405162461bcd60e51b8152600401610c4f90616a21565b612b30615a2e565b6000612b566040518061062001604052806105ef8152602001616e586105ef9139614a82565b9150915080612b775760405162461bcd60e51b8152600401610c4f90616b15565b60005b826020015151811015612c9c57600183602001518281518110612b9957fe5b60209081029190910181015182546001818101855560009485528385208351600493840290910180546001600160a01b039283166001600160a01b03199182161782558587015182850180549185169183169190911790556040860151600283018054606089015160808a01511515600160e01b0260ff60e01b196001600160401b03909216600160a01b0267ffffffffffffffff60a01b199590981692909516919091179290921694909417161790915560a090930151600390930192909255918601518051918501939185908110612c6f57fe5b602090810291909101810151516001600160a01b0316825281019190915260400160002055600101612b7a565b50506000805460ff1916600117905550565b600d5481565b601354600090815b81811015612dbd57612da585858080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050601380549092508591508110612d0d57fe5b600091825260209182902001805460408051601f6002600019610100600187161502019094169390930492830185900485028101850190915281815292830182828015612d9b5780601f10612d7057610100808354040283529160200191612d9b565b820191906000526020600020905b815481529060010190602001808311612d7e57829003601f168201915b5050505050614c3e565b15612db5576001925050506115d1565b600101612cbc565b5060125460005b81811015612e2e57612e1586868080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050601280549092508591508110612d0d57fe5b15612e2657600193505050506115d1565b600101612dc4565b50600095945050505050565b3361100114612e5b5760405162461bcd60e51b8152600401610c4f90616cbe565b600b54612f1957612e6a615923565b60015460005b81811015612f1557600b80546001810182556000919091528351600080516020616e1883398151915260169092029182019081556020808601516000805160206174478339815191528401805460ff1916911515919091179055604086015180518794612ef193600080516020616e38833981519152909101920190615952565b506060820151612f0790600383019060136159cc565b505050806001019050612e70565b5050505b6000612f2482614ca2565b9050612f2f81611457565b15612f3e57612f3e828261498c565b5050565b334114612f615760405162461bcd60e51b8152600401610c4f90616ba5565b60005460ff16612f835760405162461bcd60e51b8152600401610c4f906163ab565b60003411612fa35760405162461bcd60e51b8152600401610c4f90616758565b3a15612fc15760405162461bcd60e51b8152600401610c4f90616934565b6001600160a01b03811660009081526004602052604090205460145434919060ff1661300157610271600f556103e86006556014805460ff191660011790555b600f54601754600110801561301857506000601854115b1561303d57600160175403601754438161302e57fe5b06601854028161303a57fe5b04015b60008311801561304d5750600081115b156130fa57600061307661271061306a348563ffffffff614e2516565b9063ffffffff614e5f16565b905080156130f8576040516110029082156108fc029083906000818181858888f193505050501580156130ad573d6000803e3d6000fd5b507f6ecc855f9440a9282c90913bbc91619fd44f5ec0b462af28d127b116f130aa4d816040516130dd9190616d4d565b60405180910390a16130f5848263ffffffff61429d16565b93505b505b60008311801561310c57506000600654115b156131b257600061312e61271061306a60065434614e2590919063ffffffff16565b905080156131b05760405161dead9082156108fc029083906000818181858888f19350505050158015613165573d6000803e3d6000fd5b507f627059660ea01c4733a328effb2294d2f86905bf806da763a89cee254de8bee5816040516131959190616d4d565b60405180910390a16131ad848263ffffffff61429d16565b93505b505b81156132b05760006001808403815481106131c957fe5b9060005260206000209060040201905080600201601c9054906101000a900460ff161561323657846001600160a01b03167ff177e5d6c5764d79c32883ed824111d9b13f5668cf6ab1cc12dd36791dd955b4856040516132299190616d4d565b60405180910390a26132aa565b600354613249908563ffffffff6142df16565b6003908155810154613261908563ffffffff6142df16565b60038201556040516001600160a01b038616907f93a090ecc682c002995fad3c85b30c5651d7fd29b0be5da9d784a3302aedc055906132a1908790616d4d565b60405180910390a25b506132f2565b836001600160a01b03167ff177e5d6c5764d79c32883ed824111d9b13f5668cf6ab1cc12dd36791dd955b4846040516132e99190616d4d565b60405180910390a25b50505050565b600e5481565b61100081565b61dead81565b600b818154811061331757fe5b6000918252602091829020601691909102018054600180830154600280850180546040805161010096831615969096026000190190911692909204601f810188900488028501880190925281845293965060ff909116949192918301828280156133c25780601f10613397576101008083540402835291602001916133c2565b820191906000526020600020905b8154815290600101906020018083116133a557829003601f168201915b5050505050905083565b61100481565b6000600a54600014806133e3575082155b806133ee5750600954155b156133fb575060006135bc565b60096000815460019003919050819055506000613446600a5461306a8661306a600b8a8154811061342857fe5b6000918252602090912060169091020154439063ffffffff61429d16565b90506000600b868154811061345757fe5b906000526020600020906016020160010160006101000a81548160ff0219169083151502179055506000806110016001600160a01b0316638256ace66040518163ffffffff1660e01b8152600401604080518083038186803b1580156134bc57600080fd5b505afa1580156134d0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906134f49190615fc6565b91509150600093508083106135725761350d8888614304565b506040516328aa02b160e01b8152611001906328aa02b190613537908b9087908a90600401616172565b600060405180830381600087803b15801561355157600080fd5b505af1158015613565573d6000803e3d6000fd5b5050505060019350613584565b8183106135845761358288614ca2565b505b6040516001600160a01b038916907fb9d38178dc641ff1817967a63c9078cbcd955a9f1fcd75e0e3636de615d44d3b90600090a25050505b949350505050565b6060806000808080806135d5612aaf565b6001549091505b801561380757600181039250600b83815481106135f557fe5b600091825260209091206001601690920201015460ff16613615576137fe565b6001838154811061362257fe5b600091825260208220600490910201546001600160a01b0316955061364c908690859085906133d2565b935083613658576137fe565b60405163436aa28360e11b81526000908190612002906386d5450690613682908a90600401616103565b60206040518083038186803b15801561369a57600080fd5b505afa1580156136ae573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906136d29190615d93565b90506001600160a01b0381161561375b576040516302ceee9160e11b81526120029063059ddd2290613708908490600401616103565b60206040518083038186803b15801561372057600080fd5b505afa158015613734573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906137589190615d93565b91505b60005b8c518110156137fa57876001600160a01b03168d828151811061377d57fe5b6020026020010151600001516001600160a01b031614806137c65750826001600160a01b03168d82815181106137af57fe5b6020026020010151600001516001600160a01b0316145b156137f25760018d82815181106137d957fe5b60209081029190910101519015156080909101526137fa565b60010161375e565b5050505b600019016135dc565b5060005b89518110156138745789818151811061382057fe5b60200260200101516080015180613860575060006001600160a01b03168a828151811061384957fe5b6020026020010151600001516001600160a01b0316145b1561386c578560010195505b60010161380b565b508851851061395c5760408051600180825281830190925290816020015b61389a6159f9565b815260200190600190039081613892575050604080516001808252818301909252919850602082015b60608152602001906001900390816138c3579050509550886000815181106138e757fe5b6020026020010151876000815181106138fc57fe5b60200260200101819052508760008151811061391457fe5b60200260200101518660008151811061392957fe5b602002602001018190525060008760008151811061394357fe5b6020908102919091010151901515608090910152613aa1565b8489510360405190808252806020026020018201604052801561399957816020015b6139866159f9565b81526020019060019003908161397e5790505b509650848951036040519080825280602002602001820160405280156139d357816020015b60608152602001906001900390816139be5790505b5095506000915060005b8951811015613a9f578981815181106139f257fe5b602002602001015160800151158015613a35575060006001600160a01b03168a8281518110613a1d57fe5b6020026020010151600001516001600160a01b031614155b15613a9757898181518110613a4657fe5b6020026020010151888481518110613a5a57fe5b6020026020010181905250888181518110613a7157fe5b6020026020010151878481518110613a8557fe5b60200260200101819052508260010192505b6001016139dd565b505b50505050505b9250929050565b600154825160005b82811015613bcb576001613ac86159f9565b60018381548110613ad557fe5b600091825260208083206040805160c08101825260049490940290910180546001600160a01b0390811685526001820154811693850193909352600281015492831691840191909152600160a01b82046001600160401b03166060840152600160e01b90910460ff16151560808301526003015460a082015291505b84811015613b9f57878181518110613b6557fe5b6020026020010151600001516001600160a01b031682600001516001600160a01b03161415613b975760009250613b9f565b600101613b51565b508115613bc15780516001600160a01b03166000908152600460205260408120555b5050600101613ab6565b5080821115613c8a57805b82811015613c88576001805480613be957fe5b60008281526020812060046000199093019283020180546001600160a01b0319908116825560018201805490911690556002810180546001600160e81b0319169055600301559055600b805480613c3c57fe5b60008281526020812060166000199093019283020181815560018101805460ff1916905590613c6e6002830182615a52565b613c7c600383016000615a96565b50509055600101613bd6565b505b6000818310613c995781613c9b565b825b905060005b8181101561403f57613d4d868281518110613cb757fe5b602002602001015160018381548110613ccc57fe5b60009182526020918290206040805160c08101825260049390930290910180546001600160a01b0390811684526001820154811694840194909452600281015493841691830191909152600160a01b83046001600160401b03166060830152600160e01b90920460ff161515608082015260039091015460a0820152614ea1565b613f01578060010160046000888481518110613d6557fe5b6020026020010151600001516001600160a01b03166001600160a01b0316815260200190815260200160002081905550858181518110613da157fe5b602002602001015160018281548110613db657fe5b6000918252602091829020835160049092020180546001600160a01b039283166001600160a01b0319918216178255928401516001820180549184169185169190911790556040840151600282018054606087015160808801511515600160e01b0260ff60e01b196001600160401b03909216600160a01b0267ffffffffffffffff60a01b1995909716929097169190911792909216939093171692909217905560a0909101516003909101558451859082908110613e7157fe5b6020026020010151600b8281548110613e8657fe5b90600052602060002090601602016002019080519060200190613eaa929190615952565b506000600b8281548110613eba57fe5b60009182526020822060169190910201600101805460ff191692151592909217909155600b805483908110613eeb57fe5b6000918252602090912060169091020155614037565b858181518110613f0d57fe5b60200260200101516060015160018281548110613f2657fe5b906000526020600020906004020160020160146101000a8154816001600160401b0302191690836001600160401b03160217905550613fec858281518110613f6a57fe5b6020026020010151600b8381548110613f7f57fe5b600091825260209182902060026016909202018101805460408051601f600019610100600186161502019093169490940491820185900485028401850190528083529192909190830182828015612d9b5780601f10612d7057610100808354040283529160200191612d9b565b61403757848181518110613ffc57fe5b6020026020010151600b828154811061401157fe5b90600052602060002090601602016002019080519060200190614035929190615952565b505b600101613ca0565b508282111561421757614050615923565b835b838110156142145785818151811061406657fe5b60200260200101518260400181905250600187828151811061408457fe5b6020908102919091018101518254600181810185556000948552838520835160049093020180546001600160a01b039384166001600160a01b0319918216178255848601518284018054918616918316919091179055604080860151600284018054606089015160808a01511515600160e01b0260ff60e01b196001600160401b03909216600160a01b0267ffffffffffffffff60a01b1995909a1692909616919091179290921696909617169190911790935560a090930151600390930192909255600b8054928301815590935284516016909102600080516020616e188339815191528101918255858301516000805160206174478339815191528201805491151560ff19909216919091179055928501518051869492936141ba93600080516020616e3883398151915201920190615952565b5060608201516141d090600383019060136159cc565b50505080600101600460008984815181106141e757fe5b602090810291909101810151516001600160a01b0316825281019190915260400160002055600101614052565b50505b61421f614efd565b6142276150df565b6000600981905560015493505b83811015614295576000600b828154811061424b57fe5b60009182526020822060169190910201600101805460ff191692151592909217909155600b80548390811061427c57fe5b6000918252602090912060169091020155600101614234565b505050505050565b6000611bfc83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506152cd565b600082820183811015611bfc5760405162461bcd60e51b8152600401610c4f90616419565b6000806001838154811061431457fe5b9060005260206000209060040201600301549050600060018080549050039050600161433e612995565b51116143735760006001858154811061435357fe5b9060005260206000209060040201600301819055506000925050506115d1565b846001600160a01b03167f3b6f9ef90462b512a1293ecec018670bf7b7f1876fb727590a8a6d7643130a70836040516143ac9190616d4d565b60405180910390a26001600160a01b038516600090815260046020526040812055835b6001546000190181101561459957600181600101815481106143ed57fe5b90600052602060002090600402016001828154811061440857fe5b60009182526020909120825460049092020180546001600160a01b03199081166001600160a01b0393841617825560018085015481840180548416918616919091179055600280860180549185018054909416919095161780835584546001600160401b03600160a01b91829004160267ffffffffffffffff60a01b1990911617808355935460ff600160e01b918290041615150260ff60e01b19909416939093179055600392830154920191909155600b8054909183019081106144c957fe5b9060005260206000209060160201600b82815481106144e457fe5b600091825260209091208254601690920201908155600180830154818301805460ff909216151560ff199092169190911790556002808401805461453b938386019390821615610100026000190190911604615aa5565b5061454e60038281019084016013615b1a565b5090505080600101600460006001848154811061456757fe5b600091825260208083206004909202909101546001600160a01b031683528201929092526040019020556001016143cf565b5060018054806145a557fe5b60008281526020812060046000199093019283020180546001600160a01b0319908116825560018201805490911690556002810180546001600160e81b0319169055600301559055600b8054806145f857fe5b60008281526020812060166000199093019283020181815560018101805460ff191690559061462a6002830182615a52565b614638600383016000615a96565b50509055600081838161464757fe5b04905080156146bb5760015460005b818110156146b85761468f836001838154811061466f57fe5b9060005260206000209060040201600301546142df90919063ffffffff16565b6001828154811061469c57fe5b6000918252602090912060036004909202010155600101614656565b50505b50600195945050505050565b60015481516040805182815260208084028201019091526060929190839082801561470657816020015b60608152602001906001900390816146f15790505b50600b54909150831461471d579250611521915050565b60005b8281101561482c57600b60016004600089858151811061473c57fe5b60200260200101516001600160a01b03166001600160a01b0316815260200190815260200160002054038154811061477057fe5b600091825260209182902060026016909202018101805460408051601f6000196101006001861615020190931694909404918201859004850284018501905280835291929091908301828280156148085780601f106147dd57610100808354040283529160200191614808565b820191906000526020600020905b8154815290600101906020018083116147eb57829003601f168201915b505050505082828151811061481957fe5b6020908102919091010152600101614720565b50949350505050565b60005b8281101561498257600082878388016040516020016148589291906160f5565b6040516020818303038152906040528051906020012060001c8161487857fe5b06905080850182870114614979576000898388018151811061489657fe5b60200260200101519050606089848901815181106148b057fe5b602002602001015190508a838801815181106148c857fe5b60200260200101518b858a01815181106148de57fe5b60200260200101906001600160a01b031690816001600160a01b031681525050818b8489018151811061490d57fe5b60200260200101906001600160a01b031690816001600160a01b031681525050898388018151811061493b57fe5b60200260200101518a858a018151811061495157fe5b6020026020010181905250808a8489018151811061496b57fe5b602002602001018190525050505b50600101614838565b5050505050505050565b600980546001908101909155600b8054839081106149a657fe5b906000526020600020906016020160010160006101000a81548160ff02191690831515021790555043600b82815481106149dc57fe5b600091825260208220601690910201919091556040516001600160a01b038416917ff62981a567ec3cec866c6fa93c55bcdf841d6292d18b8d522ececa769375d82d91a25050565b600081604051602001614a3791906160d9565b6040516020818303038152906040528051906020012083604051602001614a5e91906160d9565b6040516020818303038152906040528051906020012014905092915050565b015190565b614a8a615a2e565b6000614a94615a2e565b614a9c615b44565b614aad614aa8866152f9565b61531e565b90506000805b614abc83615368565b15614c305780614ae157614ad7614ad284615389565b6153d7565b60ff168452614c28565b8060011415614c23576060614afd614af885615389565b615457565b90508051604051908082528060200260200182016040528015614b3a57816020015b614b276159f9565b815260200190600190039081614b1f5790505b5085602001819052508051604051908082528060200260200182016040528015614b7857816020015b6060815260200190600190039081614b635790505b50604086015260005b8151811015614c1857614b926159f9565b60606000614bb2858581518110614ba557fe5b6020026020010151615528565b92509250925080614bd2578860009a509a50505050505050505050614c39565b8289602001518581518110614be357fe5b60200260200101819052508189604001518581518110614bff57fe5b6020026020010181905250505050806001019050614b81565b506001925050614c28565b614c30565b600101614ab3565b50919350909150505b915091565b815181516000916001918114808314614c5a5760009250614c98565b600160208701838101602088015b600284838510011415614c93578051835114614c875760009650600093505b60209283019201614c68565b505050505b5090949350505050565b6001600160a01b03811660009081526004602052604081205480614ccb57506000199050611521565b600181039050600060018281548110614ce057fe5b9060005260206000209060040201600301549050600060018381548110614d0357fe5b6000918252602090912060036004909202010155600154604051600019909101906001600160a01b038616907f8cd4e147d8af98a9e3b6724021b8bf6aed2e5dac71c38f2dce8161b82585b25d90614d5c908590616d4d565b60405180910390a280614d7457829350505050611521565b6000818381614d7f57fe5b0490508015614e1b5760005b84811015614dcd57614da4826001838154811061466f57fe5b60018281548110614db157fe5b6000918252602090912060036004909202010155600101614d8b565b50600180549085015b81811015614e1857614def836001838154811061466f57fe5b60018281548110614dfc57fe5b6000918252602090912060036004909202010155600101614dd6565b50505b5091949350505050565b600082614e34575060006115d1565b82820282848281614e4157fe5b0414611bfc5760405162461bcd60e51b8152600401610c4f906168f3565b6000611bfc83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250615642565b805182516000916001600160a01b039182169116148015614edb575081602001516001600160a01b031683602001516001600160a01b0316145b8015611bfc5750506040908101519101516001600160a01b0390811691161490565b60125460135480821115614f4857805b82811015614f46576012805480614f2057fe5b600190038181906000526020600020016000614f3c9190615a52565b9055600101614f0d565b505b6000818310614f575781614f59565b825b905060005b818110156150715761501660128281548110614f7657fe5b600091825260209182902001805460408051601f60026000196101006001871615020190941693909304928301859004850281018501909152818152928301828280156150045780601f10614fd957610100808354040283529160200191615004565b820191906000526020600020905b815481529060010190602001808311614fe757829003601f168201915b505050505060138381548110612d0d57fe5b615069576013818154811061502757fe5b906000526020600020016012828154811061503e57fe5b906000526020600020019080546001816001161561010002031660029004615067929190615aa5565b505b600101614f5e565b5082821115610c7157825b828110156132f25760126013828154811061509357fe5b60009182526020808320845460018181018755958552919093209290910180546150d6949390920192909160026101009282161592909202600019011604615aa5565b5060010161507c565b601354600b548082111561512a57805b8281101561512857601380548061510257fe5b60019003818190600052602060002001600061511e9190615a52565b90556001016150ef565b505b6000818310615139578161513b565b825b905060005b8181101561525a576151f86013828154811061515857fe5b600091825260209182902001805460408051601f60026000196101006001871615020190941693909304928301859004850281018501909152818152928301828280156151e65780601f106151bb576101008083540402835291602001916151e6565b820191906000526020600020905b8154815290600101906020018083116151c957829003601f168201915b5050505050600b8381548110613f7f57fe5b61525257600b818154811061520957fe5b90600052602060002090601602016002016013828154811061522757fe5b906000526020600020019080546001816001161561010002031660029004615250929190615aa5565b505b600101615140565b5082821115610c7157825b828110156132f2576013600b828154811061527c57fe5b6000918252602080832084546001808201875595855291909320601692909202909201600290810180546152c495939094019390926000199082161561010002011604615aa5565b50600101615265565b600081848411156152f15760405162461bcd60e51b8152600401610c4f9190616223565b505050900390565b615301615b64565b506040805180820190915281518152602082810190820152919050565b615326615b44565b61532f82615679565b61533857600080fd5b600061534783602001516156b3565b60208085015160408051808201909152868152920190820152915050919050565b6000615372615b64565b505080518051602091820151919092015191011190565b615391615b64565b61539a82615368565b6153a357600080fd5b602082015160006153b382615716565b80830160209586015260408051808201909152908152938401919091525090919050565b8051600090158015906153ec57508151602110155b6153f557600080fd5b600061540483602001516156b3565b9050808360000151101561542a5760405162461bcd60e51b8152600401610c4f90616aa7565b82516020808501518301805192849003929183101561482c57506020919091036101000a90049392505050565b606061546282615679565b61546b57600080fd5b6000615476836157f7565b90506060816040519080825280602002602001820160405280156154b457816020015b6154a1615b64565b8152602001906001900390816154995790505b50905060006154c685602001516156b3565b60208601510190506000805b8481101561551d576154e383615716565b915060405180604001604052808381526020018481525084828151811061550657fe5b6020908102919091010152918101916001016154d2565b509195945050505050565b6155306159f9565b6060600061553c6159f9565b6060615546615b44565b61554f8761531e565b90506000805b61555e83615368565b1561563357806155895761557961557484615389565b615853565b6001600160a01b0316855261562b565b80600114156155b15761559e61557484615389565b6001600160a01b0316602086015261562b565b80600214156155d9576155c661557484615389565b6001600160a01b0316604086015261562b565b8060031415615605576155ee614ad284615389565b6001600160401b031660608601526001915061562b565b80600414156156265761561f61561a84615389565b61586d565b935061562b565b615633565b600101615555565b50929791965091945092505050565b600081836156635760405162461bcd60e51b8152600401610c4f9190616223565b50600083858161566f57fe5b0495945050505050565b805160009061568a57506000611521565b6020820151805160001a9060c08210156156a957600092505050611521565b5060019392505050565b8051600090811a60808110156156cd576000915050611521565b60b88110806156e8575060c081108015906156e8575060f881105b156156f7576001915050611521565b60c081101561570b5760b519019050611521565b60f519019050611521565b80516000908190811a608081101561573157600191506157f0565b60b881101561574657607e19810191506157f0565b60c081101561579757600060b78203600186019550806020036101000a8651049150600181018201935050808310156157915760405162461bcd60e51b8152600401610c4f906167f6565b506157f0565b60f88110156157ac5760be19810191506157f0565b600060f78203600186019550806020036101000a8651049150600181018201935050808310156157ee5760405162461bcd60e51b8152600401610c4f906167f6565b505b5092915050565b805160009061580857506000611521565b6000809050600061581c84602001516156b3565b602085015185519181019250015b8082101561584a5761583b82615716565b8201915082600101925061582a565b50909392505050565b805160009060151461586457600080fd5b6115d1826153d7565b805160609061587b57600080fd5b600061588a83602001516156b3565b83516040805191839003808352601f19601f82011683016020019091529192506060908280156158c1576020820181803683370190505b509050600081602001905061482c848760200151018285806158e257610c71565b5b60208110615902578251825260209283019290910190601f19016158e3565b915181516020939093036101000a6000190180199091169216919091179052565b6040518060800160405280600081526020016000151581526020016060815260200161594d615b7e565b905290565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f1061599357805160ff19168380011785556159c0565b828001600101855582156159c0579182015b828111156159c05782518255916020019190600101906159a5565b50612aea929150615b9d565b82601381019282156159c057916020028201828111156159c05782518255916020019190600101906159a5565b6040805160c081018252600080825260208201819052918101829052606081018290526080810182905260a081019190915290565b6040518060600160405280600060ff16815260200160608152602001606081525090565b50805460018160011615610100020316600290046000825580601f10615a785750611739565b601f0160209004906000526020600020908101906117399190615b9d565b50611739906013810190615b9d565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10615ade57805485556159c0565b828001600101855582156159c057600052602060002091601f016020900482015b828111156159c0578254825591600101919060010190615aff565b82601381019282156159c057918201828111156159c0578254825591600101919060010190615aff565b6040518060400160405280615b57615b64565b8152602001600081525090565b604051806040016040528060008152602001600081525090565b6040518061026001604052806013906020820280368337509192915050565b611dde91905b80821115612aea5760008155600101615ba3565b80356115d181616e02565b60008083601f840112615bd3578182fd5b5081356001600160401b03811115615be9578182fd5b6020830191508360208083028501011115613aa757600080fd5b6000601f8381840112615c14578182fd5b8235615c27615c2282616db7565b616d91565b818152925060208084019085810160005b84811015615cb9578135880189603f820112615c5357600080fd5b838101356001600160401b03811115615c6b57600080fd5b615c7c818901601f19168601616d91565b81815260408c81848601011115615c9257600080fd5b82818501888401375060009181018601919091528552509282019290820190600101615c38565b50505050505092915050565b600082601f830112615cd5578081fd5b8135615ce3615c2282616db7565b818152915060208083019084810181840286018201871015615d0457600080fd5b6000805b85811015615cb95782356001600160401b0381168114615d26578283fd5b85529383019391830191600101615d08565b60008083601f840112615d49578182fd5b5081356001600160401b03811115615d5f578182fd5b602083019150836020828501011115613aa757600080fd5b600060208284031215615d88578081fd5b8135611bfc81616e02565b600060208284031215615da4578081fd5b8151611bfc81616e02565b60008060008060408587031215615dc4578283fd5b84356001600160401b0380821115615dda578485fd5b615de688838901615bc2565b90965094506020870135915080821115615dfe578384fd5b50615e0b87828801615bc2565b95989497509550505050565b600080600060608486031215615e2b578283fd5b83356001600160401b0380821115615e41578485fd5b81860187601f820112615e52578586fd5b80359250615e62615c2284616db7565b80848252602080830192508084018b828389028701011115615e8257898afd5b8994505b86851015615eac57615e988c82615bb7565b845260019490940193928101928101615e86565b509097508801359350505080821115615ec3578384fd5b615ecf87838801615cc5565b93506040860135915080821115615ee4578283fd5b50615ef186828701615c03565b9150509250925092565b60008060208385031215615f0d578182fd5b82356001600160401b03811115615f22578283fd5b615f2e85828601615d38565b90969095509350505050565b60008060008060408587031215615f4f578384fd5b84356001600160401b0380821115615f65578586fd5b615f7188838901615d38565b90965094506020870135915080821115615f89578384fd5b50615e0b87828801615d38565b600060208284031215615fa7578081fd5b5035919050565b600060208284031215615fbf578081fd5b5051919050565b60008060408385031215615fd8578182fd5b505080516020909101519092909150565b600080600060408486031215615ffd578081fd5b833560ff8116811461600d578182fd5b925060208401356001600160401b03811115616027578182fd5b61603386828701615d38565b9497909650939450505050565b6000815180845260208085019450808401835b838110156160785781516001600160a01b031687529582019590820190600101616053565b509495945050505050565b60008284528282602086013780602084860101526020601f19601f85011685010190509392505050565b600081518084526160c5816020860160208601616dd6565b601f01601f19169290920160200192915050565b600082516160eb818460208701616dd6565b9190910192915050565b918252602082015260400190565b6001600160a01b0391909116815260200190565b6001600160a01b03929092168252602082015260400190565b6001600160a01b03968716815294861660208601529290941660408401526001600160401b03166060830152911515608082015260a081019190915260c00190565b6001600160a01b0393909316835260208301919091521515604082015260600190565b600060208252611bfc6020830184616040565b6000604082526161bb6040830185616040565b602083820381850152818551808452828401915082838202850101838801865b8381101561620957601f198784030185526161f78383516160ad565b948601949250908501906001016161db565b50909998505050505050505050565b901515815260200190565b600060208252611bfc60208301846160ad565b60006040825261624a604083018688616083565b828103602084015261625d818587616083565b979650505050505050565b6020808252601c908201527f6c656e677468206f66206275726e526174696f206d69736d6174636800000000604082015260600190565b60208082526026908201527f6c656e677468206f66206d61784e756d4f664d61696e7461696e696e67206d696040820152650e6dac2e8c6d60d31b606082015260800190565b6020808252602c908201527f6c656e677468206f66206d61784e756d4f66576f726b696e6743616e6469646160408201526b0e8cae640dad2e6dac2e8c6d60a31b606082015260800190565b60208082526025908201527f6c656e677468206f66206d61696e7461696e536c6173685363616c65206d69736040820152640dac2e8c6d60db1b606082015260800190565b6020808252818101527f6c656e677468206f66206e756d4f66436162696e657473206d69736d61746368604082015260600190565b60208082526019908201527f74686520636f6e7472616374206e6f7420696e69742079657400000000000000604082015260600190565b6020808252601f908201527f6f6e6c7920736c617368206f72207374616b6548756220636f6e747261637400604082015260600190565b6020808252601b908201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604082015260600190565b60208082526063908201527f7468652073797374656d52657761726442617365526174696f20706c7573206260408201527f75726e526174696f20616e642073797374656d526577617264416e74694d455660608201527f526174696f206d757374206265206e6f2067726561746572207468616e20313060808201526203030360ec1b60a082015260c00190565b60208082526028908201527f746865206e756d4f66436162696e657473206d75737420626520677265617465604082015267072207468616e20360c41b606082015260800190565b60208082526039908201527f746865206e756d4f66436162696e657473206d757374206265206c657373207460408201527f68616e204d41585f4e554d5f4f465f56414c494441544f525300000000000000606082015260800190565b60208082526022908201527f63616e206e6f7420646f207468697320747769636520696e206f6e6520626c6f604082015261636b60f01b606082015260800190565b60208082526037908201527f746865206d61784e756d4f664d61696e7461696e696e67206d7573742062652060408201527f6c657373207468616e206e756d4f66436162696e657473000000000000000000606082015260800190565b6020808252601d908201527f6c656e677468206f66207475726e4c656e677468206d69736d61746368000000604082015260600190565b6020808252600a908201526919195c1c9958d85d195960b21b604082015260600190565b60208082526063908201527f746865206275726e526174696f20706c75732073797374656d5265776172644260408201527f617365526174696f20616e642073797374656d526577617264416e74694d455660608201527f526174696f206d757374206265206e6f2067726561746572207468616e20313060808201526203030360ec1b60a082015260c00190565b6020808252602b908201527f6c656e677468206f662073797374656d526577617264416e74694d455652617460408201526a0d2de40dad2e6dac2e8c6d60ab1b606082015260800190565b6020808252601590820152746465706f7369742076616c7565206973207a65726f60581b604082015260600190565b60208082526049908201527f746865206d61784e756d4f66576f726b696e6743616e64696461746573206d7560408201527f7374206265206e6f742067726561746572207468616e206d61784e756d4f6643606082015268616e6469646174657360b81b608082015260a00190565b6020808252601190820152706164646974696f6e206f766572666c6f7760781b604082015260600190565b60208082526063908201527f7468652073797374656d526577617264416e74694d4556526174696f20706c7560408201527f73206275726e526174696f20616e642073797374656d5265776172644261736560608201527f526174696f206d757374206265206e6f2067726561746572207468616e20313060808201526203030360ec1b60a082015260c00190565b60208082526023908201527f63616e206e6f7420656e7465722054656d706f72617279204d61696e74656e616040820152626e636560e81b606082015260800190565b60208082526021908201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6040820152607760f81b606082015260800190565b6020808252601490820152736761737072696365206973206e6f74207a65726f60601b604082015260600190565b6020808252602e908201527f746865206d6573736167652073656e646572206d75737420626520676f76657260408201526d1b985b98d94818dbdb9d1c9858dd60921b606082015260800190565b60208082526025908201527f6c656e677468206f66206d61784e756d4f6643616e64696461746573206d69736040820152640dac2e8c6d60db1b606082015260800190565b6020808252601290820152716e6f7420696e206d61696e74656e616e636560701b604082015260600190565b60208082526019908201527f74686520636f6e747261637420616c726561647920696e697400000000000000604082015260600190565b6020808252602f908201527f746865207475726e4c656e6774682073686f756c6420626520696e205b332c3960408201526e5d206f7220657175616c20746f203160881b606082015260800190565b6020808252601a908201527f6c656e677468206973206c657373207468616e206f6666736574000000000000604082015260600190565b60208082526017908201527f6f6e6c792063757272656e742076616c696461746f7273000000000000000000604082015260600190565b60208082526021908201527f6661696c656420746f20706172736520696e69742076616c696461746f7253656040820152601d60fa1b606082015260800190565b6020808252602f908201527f746865206d6573736167652073656e646572206d7573742062652063726f737360408201526e0818da185a5b8818dbdb9d1c9858dd608a1b606082015260800190565b6020808252602d908201527f746865206d6573736167652073656e646572206d75737420626520746865206260408201526c3637b1b590383937b23ab1b2b960991b606082015260800190565b60208082526028908201527f6c656e677468206f662073797374656d52657761726442617365526174696f206040820152670dad2e6dac2e8c6d60c31b606082015260800190565b6020808252603e908201527f746865206d61696e7461696e536c6173685363616c65206d757374206265206760408201527f726561746572207468616e203020616e64206c657373207468616e2031300000606082015260800190565b6020808252600d908201526c756e6b6e6f776e20706172616d60981b604082015260600190565b60208082526029908201527f746865206d6573736167652073656e646572206d75737420626520736c6173686040820152680818dbdb9d1c9858dd60ba1b606082015260800190565b6020808252601f908201527f746865206d73672073656e646572206d757374206265207374616b6548756200604082015260600190565b61ffff91909116815260200190565b90815260200190565b6000848252831515602083015260606040830152616d7760608301846160ad565b95945050505050565b63ffffffff91909116815260200190565b6040518181016001600160401b0381118282101715616daf57600080fd5b604052919050565b60006001600160401b03821115616dcc578081fd5b5060209081020190565b60005b83811015616df1578181015183820152602001616dd9565b838111156132f25750506000910152565b6001600160a01b038116811461173957600080fdfe0175b7a638427703f0dbe7bb9bbf987a2551717b34e79f33b5b1008d1fa01db90175b7a638427703f0dbe7bb9bbf987a2551717b34e79f33b5b1008d1fa01dbbf905ec80f905e8f846942a7cdd959bfe8d9487b2a43b33565295a698f7e294b6a7edd747c0554875d3fc531d19ba1497992c5e941ff80f3f7f110ffd8920a3ac38fdef318fe94a3f86048c27395000f846946488aa4d1955ee33403f8ccb1d4de5fb97c7ade294220f003d8bdfaadf52aa1e55ae4cc485e6794875941a87e90e440a39c99aa9cb5cea0ad6a3f0b2407b86048c27395000f846949ef9f4360c606c7ab4db26b016007d3ad0ab86a0946103af86a874b705854033438383c82575f25bc29418e2db06cbff3e3c5f856410a1838649e760175786048c27395000f84694ee01c3b1283aa067c58eab4709f85e99d46de5fe94ee4b9bfb1871c64e2bcabb1dc382dc8b7c4218a29415904ab26ab0e99d70b51c220ccdcccabee6e29786048c27395000f84694685b1ded8013785d6623cc18d214320b6bb6475994a20ef4e5e4e7e36258dbf51f4d905114cb1b34bc9413e39085dc88704f4394d35209a02b1a9520320c86048c27395000f8469478f3adfc719c99674c072166708589033e2d9afe9448a30d5eaa7b64492a160f139e2da2800ec3834e94055838358c29edf4dcc1ba1985ad58aedbb6be2b86048c27395000f84694c2be4ec20253b8642161bc3f444f53679c1f3d479466f50c616d737e60d7ca6311ff0d9c434197898a94d1d678a2506eeaa365056fe565df8bc8659f28b086048c27395000f846942f7be8361c80a4c1e7e9aaf001d0877f1cfde218945f93992ac37f3e61db2ef8a587a436a161fd210b94ecbc4fb1a97861344dad0867ca3cba2b860411f086048c27395000f84694ce2fd7544e0b2cc94692d4a704debef7bcb613289444abc67b4b2fba283c582387f54c9cba7c34bafa948acc2ab395ded08bb75ce85bf0f95ad2abc51ad586048c27395000f84694b8f7166496996a7da21cf1f1b04d9b3e26a3d077946770572763289aac606e4f327c2f6cc1aa3b3e3b94882d745ed97d4422ca8da1c22ec49d880c4c097286048c27395000f846942d4c407bbe49438ed859fe965b140dcf1aab71a9943ad0939e120f33518fbba04631afe7a3ed6327b194b2bbb170ca4e499a2b0f3cc85ebfa6e8c4dfcbea86048c27395000f846946bbad7cf34b5fa511d8e963dbba288b1960e75d694853b0f6c324d1f4e76c8266942337ac1b0af1a229442498946a51ca5924552ead6fc2af08b94fcba648601d1a94a2000f846944430b3230294d12c6ab2aac5c2cd68e80b16b581947b107f4976a252a6939b771202c28e64e03f52d694795811a7f214084116949fc4f53cedbf189eeab28601d1a94a2000f84694ea0a6e3c511bbd10f4519ece37dc24887e11b55d946811ca77acfb221a49393c193f3a22db829fcc8e9464feb7c04830dd9ace164fc5c52b3f5a29e5018a8601d1a94a2000f846947ae2f5b9e386cd1b50a4550696d957cb4900f03a94e83bcc5077e6b873995c24bac871b5ad856047e19464e48d4057a90b233e026c1041e6012ada897fe88601d1a94a2000f8469482012708dafc9e1b880fd083b32182b869be8e09948e5adc73a2d233a1b496ed3115464dd6c7b887509428b383d324bc9a37f4e276190796ba5a8947f5ed8601d1a94a2000f8469422b81f8e175ffde54d797fe11eb03f9e3bf75f1d94a1c3ef7ca38d8ba80cce3bfc53ebd2903ed21658942767f7447f7b9b70313d4147b795414aecea54718601d1a94a2000f8469468bf0b8b6fb4e317a0f9d6f03eaf8ce6675bc60d94675cfe570b7902623f47e7f59c9664b5f5065dcf94d84f0d2e50bcf00f2fc476e1c57f5ca2d57f625b8601d1a94a2000f846948c4d90829ce8f72d0163c1d5cf348a862d5506309485c42a7b34309bee2ed6a235f86d16f059deec5894cc2cedc53f0fa6d376336efb67e43d167169f3b78601d1a94a2000f8469435e7a025f4da968de7e4d7e4004197917f4070f194b1182abaeeb3b4d8eba7e6a4162eac7ace23d57394c4fd0d870da52e73de2dd8ded19fe3d26f43a1138601d1a94a2000f84694d6caa02bbebaebb5d7e581e4b66559e635f805ff94c07335cf083c1c46a487f0325769d88e163b653694efaff03b42e41f953a925fc43720e45fb61a19938601d1a94a20000175b7a638427703f0dbe7bb9bbf987a2551717b34e79f33b5b1008d1fa01dbaa164736f6c6343000604000a \ No newline at end of file diff --git a/core/systemcontracts/pascal/rialto/CrossChainContract b/core/systemcontracts/pascal/rialto/CrossChainContract new file mode 100644 index 0000000000..03766ae540 --- /dev/null +++ b/core/systemcontracts/pascal/rialto/CrossChainContract @@ -0,0 +1 @@ +608060405234801561001057600080fd5b50600436106102695760003560e01c806375d47a0a11610151578063c81b1662116100c3578063e1c7392a11610087578063e1c7392a14610839578063e3b0480514610841578063e6400bbe14610861578063f7a251d714610869578063f9a2bbc7146108e1578063fd6a6879146108e957610269565b8063c81b1662146107ea578063ccc108d7146107f2578063d31f968d146107fa578063dc927faf14610829578063df8079e91461083157610269565b8063a78abc1611610115578063a78abc16146106d3578063aa82dce1146106db578063aad56063146106e3578063ab51bb96146106eb578063ac4317511461070c578063c27cdcfb146107ca57610269565b806375d47a0a146105d85780637e434d54146105e057806384013b6a146105e85780639dc09262146106c3578063a1a11bf5146106cb57610269565b80633a648b15116101ea57806351e80672116101ae57806351e806721461052a5780635f832177146105325780636bacff2c146105605780636e47a51a146105a85780636e47b482146105c857806374f079b8146105d057610269565b80633a648b15146104b6578063422f9050146104f257806343756e5c14610512578063493279b11461051a57806351b4dce31461052257610269565b806328087028116102315780632808702814610434578063299b533d1461043c5780632af6f399146104705780632ff32aea1461048d578063308325f4146104ae57610269565b80630e2374a51461026e57806314b3023b146102925780631d130935146102ac5780631e275ae1146102c857806322556cdc1461042c575b600080fd5b6102766108f1565b604080516001600160a01b039092168252519081900360200190f35b61029a6108f7565b60408051918252519081900360200190f35b6102b46108fd565b604080519115158252519081900360200190f35b61042a60048036036101008110156102df57600080fd5b81018160a081016080820135600160201b8111156102fc57600080fd5b82018360208201111561030e57600080fd5b803590602001918460018302840111600160201b8311171561032f57600080fd5b919390929091602081019035600160201b81111561034c57600080fd5b82018360208201111561035e57600080fd5b803590602001918460018302840111600160201b8311171561037f57600080fd5b919390929091602081019035600160201b81111561039c57600080fd5b8201836020820111156103ae57600080fd5b803590602001918460018302840111600160201b831117156103cf57600080fd5b919390929091602081019035600160201b8111156103ec57600080fd5b8201836020820111156103fe57600080fd5b803590602001918460018302840111600160201b8311171561041f57600080fd5b509092509050610906565b005b61029a610ba7565b610276610bac565b6104596004803603602081101561045257600080fd5b5035610bb2565b6040805161ffff9092168252519081900360200190f35b6102b46004803603602081101561048657600080fd5b5035610bc8565b610495610bdd565b60408051600792830b90920b8252519081900360200190f35b61029a610be6565b6104d6600480360360208110156104cc57600080fd5b503560ff16610bec565b604080516001600160401b039092168252519081900360200190f35b6102b46004803603602081101561050857600080fd5b503560ff16610c07565b610276610c1c565b610459610c22565b610276610c28565b610276610c2e565b61042a6004803603604081101561054857600080fd5b506001600160a01b0381358116916020013516610c34565b61057d6004803603602081101561057657600080fd5b5035610dad565b6040805161ffff90941684526001600160801b03909216602084015282820152519081900360600190f35b610276600480360360208110156105be57600080fd5b503560ff16610ddc565b610276610df7565b61029a610dfd565b610276610e03565b610276610e09565b61042a600480360360a08110156105fe57600080fd5b810190602081018135600160201b81111561061857600080fd5b82018360208201111561062a57600080fd5b803590602001918460018302840111600160201b8311171561064b57600080fd5b919390929091602081019035600160201b81111561066857600080fd5b82018360208201111561067a57600080fd5b803590602001918460018302840111600160201b8311171561069b57600080fd5b919350915080356001600160401b03908116916020810135909116906040013560ff16610e0f565b6102766111c3565b6102766111c9565b6102b46111cf565b6102766111d8565b6102766111de565b6106f36111e4565b6040805163ffffffff9092168252519081900360200190f35b61042a6004803603604081101561072257600080fd5b810190602081018135600160201b81111561073c57600080fd5b82018360208201111561074e57600080fd5b803590602001918460018302840111600160201b8311171561076f57600080fd5b919390929091602081019035600160201b81111561078c57600080fd5b82018360208201111561079e57600080fd5b803590602001918460018302840111600160201b831117156107bf57600080fd5b5090925090506111e9565b6104d6600480360360208110156107e057600080fd5b503560ff16611229565b610276611244565b61042a61124a565b6102b46004803603604081101561081057600080fd5b5080356001600160a01b0316906020013560ff1661140a565b61027661142a565b610276611430565b61042a611436565b6104d66004803603602081101561085757600080fd5b503560ff166114c8565b61042a6114e3565b61042a6004803603606081101561087f57600080fd5b60ff8235169190810190604081016020820135600160201b8111156108a357600080fd5b8201836020820111156108b557600080fd5b803590602001918460018302840111600160201b831117156108d657600080fd5b91935091503561165c565b6102766116fe565b610276611704565b61200181565b60015481565b600b5460ff1681565b60005460ff1661094b576040805162461bcd60e51b8152602060048201526019602482015260008051602061176a833981519152604482015290519081900360640190fd5b604080516337d7f9c160e21b81526001600160401b038b35166004820181905291516110039163df5fe704916024808301926020929190829003018186803b15801561099657600080fd5b505afa1580156109aa573d6000803e3d6000fd5b505050506040513d60208110156109c057600080fd5b50516109fd5760405162461bcd60e51b815260040180806020018281038252602381526020018061178a6023913960400191505060405180910390fd5b604080516337d7f9c160e21b815260208c8101356001600160401b03166004830181905292516110039263df5fe704926024808301939192829003018186803b158015610a4957600080fd5b505afa158015610a5d573d6000803e3d6000fd5b505050506040513d6020811015610a7357600080fd5b5051610ab05760405162461bcd60e51b815260040180806020018281038252602381526020018061178a6023913960400191505060405180910390fd5b60608b013560ff81166000908152600560205260409020546001600160401b03909116906001600160a01b0316610b29576040805162461bcd60e51b815260206004820152601860248201527718da185b9b995b081a5cc81b9bdd081cdd5c1c1bdc9d195960421b604482015290519081900360640190fd5b600b5460ff1615610b6d576040805162461bcd60e51b81526020600482015260096024820152681cdd5cdc195b99195960ba1b604482015290519081900360640190fd5b6040805162461bcd60e51b815260206004820152600a60248201526919195c1c9958d85d195960b21b604482015290519081900360640190fd5b603281565b61200581565b600d6020526000908152604090205461ffff1681565b600e6020526000908152604090205460ff1681565b60045460070b81565b60025481565b600a602052600090815260409020546001600160401b031681565b60096020526000908152604090205460ff1681565b61100181565b6102ca81565b61200681565b61200081565b60005460ff16610c79576040805162461bcd60e51b8152602060048201526019602482015260008051602061176a833981519152604482015290519081900360640190fd5b6040805163569e4ed360e11b815233600482015290516000916110009163ad3c9da691602480820192602092909190829003018186803b158015610cbc57600080fd5b505afa158015610cd0573d6000803e3d6000fd5b505050506040513d6020811015610ce657600080fd5b505160408051633d42651560e11b8152905191925060009161100091637a84ca2a916004808301926020929190829003018186803b158015610d2757600080fd5b505afa158015610d3b573d6000803e3d6000fd5b505050506040513d6020811015610d5157600080fd5b5051905080610d5e575060155b600082118015610d6e5750808211155b610b6d576040805162461bcd60e51b815260206004820152600b60248201526a1b9bdd0818d8589a5b995d60aa1b604482015290519081900360640190fd5b600c602052600090815260409020805460019091015461ffff8216916201000090046001600160801b03169083565b6005602052600090815260409020546001600160a01b031681565b61100581565b60035481565b61100881565b61200381565b60005460ff16610e54576040805162461bcd60e51b8152602060048201526019602482015260008051602061176a833981519152604482015290519081900360640190fd5b60408051630a83aaa960e31b815233600482015290516110069163541d5548916024808301926020929190829003018186803b158015610e9357600080fd5b505afa158015610ea7573d6000803e3d6000fd5b505050506040513d6020811015610ebd57600080fd5b5051610f10576040805162461bcd60e51b815260206004820152601f60248201527f746865206d73672073656e646572206973206e6f7420612072656c6179657200604482015290519081900360640190fd5b60ff8116600090815260086020526040902054829082906001600160401b039081169083168114610f80576040805162461bcd60e51b815260206004820152601560248201527439b2b8bab2b731b2903737ba1034b71037b93232b960591b604482015290519081900360640190fd5b60ff8216600090815260086020908152604091829020805467ffffffffffffffff1916600185016001600160401b039081169190911790915582516337d7f9c160e21b81529089166004820152915188926110039263df5fe70492602480840193829003018186803b158015610ff557600080fd5b505afa158015611009573d6000803e3d6000fd5b505050506040513d602081101561101f57600080fd5b505161105c5760405162461bcd60e51b815260040180806020018281038252602381526020018061178a6023913960400191505060405180910390fd5b60ff851660009081526005602052604090205485906001600160a01b03166110c6576040805162461bcd60e51b815260206004820152601860248201527718da185b9b995b081a5cc81b9bdd081cdd5c1c1bdc9d195960421b604482015290519081900360640190fd5b60ff86166000908152600a6020526040902054889087906001600160401b03908116908316101561112f576040805162461bcd60e51b815260206004820152600e60248201526d3a37b79037b632103432b0b232b960911b604482015290519081900360640190fd5b60ff81166000908152600a60205260409020546001600160401b03838116911614610b295760ff8181166000908152600a60205260409020805467ffffffffffffffff19166001600160401b038516179055600b541615610b6d576040805162461bcd60e51b81526020600482015260096024820152681cdd5cdc195b99195960ba1b604482015290519081900360640190fd5b61100781565b61100681565b60005460ff1681565b61200281565b61300081565b600081565b3361100714610b295760405162461bcd60e51b815260040180806020018281038252602e81526020018061173c602e913960400191505060405180910390fd5b6008602052600090815260409020546001600160401b031681565b61100281565b60005460ff1661128f576040805162461bcd60e51b8152602060048201526019602482015260008051602061176a833981519152604482015290519081900360640190fd5b6040805163569e4ed360e11b815233600482015290516000916110009163ad3c9da691602480820192602092909190829003018186803b1580156112d257600080fd5b505afa1580156112e6573d6000803e3d6000fd5b505050506040513d60208110156112fc57600080fd5b505160408051633d42651560e11b8152905191925060009161100091637a84ca2a916004808301926020929190829003018186803b15801561133d57600080fd5b505afa158015611351573d6000803e3d6000fd5b505050506040513d602081101561136757600080fd5b5051905080611374575060155b6000821180156113845750808211155b6113c3576040805162461bcd60e51b815260206004820152600b60248201526a1b9bdd0818d8589a5b995d60aa1b604482015290519081900360640190fd5b600b5460ff16610b6d576040805162461bcd60e51b815260206004820152600d60248201526c1b9bdd081cdd5cdc195b991959609a1b604482015290519081900360640190fd5b600660209081526000928352604080842090915290825290205460ff1681565b61100381565b61200481565b60005460ff161561148e576040805162461bcd60e51b815260206004820152601960248201527f74686520636f6e747261637420616c726561647920696e697400000000000000604482015290519081900360640190fd5b603260019081556004805467ffffffffffffffff19166001600160401b03179055600060028190556003819055805460ff19169091179055565b6007602052600090815260409020546001600160401b031681565b60005460ff16611528576040805162461bcd60e51b8152602060048201526019602482015260008051602061176a833981519152604482015290519081900360640190fd5b6040805163569e4ed360e11b815233600482015290516000916110009163ad3c9da691602480820192602092909190829003018186803b15801561156b57600080fd5b505afa15801561157f573d6000803e3d6000fd5b505050506040513d602081101561159557600080fd5b505160408051633d42651560e11b8152905191925060009161100091637a84ca2a916004808301926020929190829003018186803b1580156115d657600080fd5b505afa1580156115ea573d6000803e3d6000fd5b505050506040513d602081101561160057600080fd5b505190508061160d575060155b60008211801561161d5750808211155b610b29576040805162461bcd60e51b815260206004820152600b60248201526a1b9bdd0818d8589a5b995d60aa1b604482015290519081900360640190fd5b60005460ff166116a1576040805162461bcd60e51b8152602060048201526019602482015260008051602061176a833981519152604482015290519081900360640190fd5b33600090815260066020908152604080832060ff8089168552925290912054859116610b6d5760405162461bcd60e51b815260040180806020018281038252603181526020018061170b6031913960400191505060405180910390fd5b61100081565b6110048156fe74686520636f6e747261637420616e64206368616e6e656c2068617665206e6f74206265656e2072656769737465726564746865206d6573736167652073656e646572206d75737420626520676f7665726e616e636520636f6e747261637474686520636f6e7472616374206e6f7420696e697420796574000000000000006c6967687420636c69656e74206e6f742073796e632074686520626c6f636b20796574a164736f6c6343000604000a \ No newline at end of file diff --git a/core/systemcontracts/pascal/rialto/GovHubContract b/core/systemcontracts/pascal/rialto/GovHubContract new file mode 100644 index 0000000000..f1e201881f --- /dev/null +++ b/core/systemcontracts/pascal/rialto/GovHubContract @@ -0,0 +1 @@ +608060405234801561001057600080fd5b506004361061018e5760003560e01c80639ab1a373116100de578063ab51bb9611610097578063dc927faf11610071578063dc927faf146104b1578063df8079e9146104b9578063f9a2bbc7146104c1578063fd6a6879146104c95761018e565b8063ab51bb96146104a1578063c81b1662146104a9578063c8509d811461031c5761018e565b80639ab1a3731461045d5780639dc0926214610465578063a1a11bf51461046d578063a78abc1614610475578063aa82dce114610491578063aad56063146104995761018e565b806351b4dce31161014b57806375d47a0a1161012557806375d47a0a1461030c5780637e434d5414610314578063831d65d11461031c57806388e4194e146103965761018e565b806351b4dce3146102f457806351e80672146102fc5780636e47b482146103045761018e565b80630e2374a5146101935780631182b875146101b757806328087028146102a45780633a21baae146102ac57806343756e5c146102cd578063493279b1146102d5575b600080fd5b61019b6104d1565b604080516001600160a01b039092168252519081900360200190f35b61022f600480360360408110156101cd57600080fd5b60ff8235169190810190604081016020820135600160201b8111156101f157600080fd5b82018360208201111561020357600080fd5b803590602001918460018302840111600160201b8311171561022457600080fd5b5090925090506104d7565b6040805160208082528351818301528351919283929083019185019080838360005b83811015610269578181015183820152602001610251565b50505050905090810190601f1680156102965780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b61019b610513565b6102b4610519565b6040805163ffffffff9092168252519081900360200190f35b61019b61051e565b6102dd610524565b6040805161ffff9092168252519081900360200190f35b61019b61052a565b61019b610530565b61019b610536565b61019b61053c565b61019b610542565b6103946004803603604081101561033257600080fd5b60ff8235169190810190604081016020820135600160201b81111561035657600080fd5b82018360208201111561036857600080fd5b803590602001918460018302840111600160201b8311171561038957600080fd5b509092509050610548565b005b610394600480360360608110156103ac57600080fd5b810190602081018135600160201b8111156103c657600080fd5b8201836020820111156103d857600080fd5b803590602001918460018302840111600160201b831117156103f957600080fd5b919390929091602081019035600160201b81111561041657600080fd5b82018360208201111561042857600080fd5b803590602001918460018302840111600160201b8311171561044957600080fd5b9193509150356001600160a01b03166105c2565b6102b46106ad565b61019b6106b2565b61019b6106b8565b61047d6106be565b604080519115158252519081900360200190f35b61019b6106c7565b61019b6106cd565b6102b46106d3565b61019b6106d8565b61019b6106de565b61019b6106e4565b61019b6106ea565b61019b6106f0565b61200181565b6040805162461bcd60e51b815260206004820152600a60248201526919195c1c9958d85d195960b21b6044820152905160609181900360640190fd5b61200581565b606681565b61100181565b6102ca81565b61200681565b61200081565b61100581565b61100881565b61200381565b33612000146105885760405162461bcd60e51b815260040180806020018281038252602f815260200180610ac9602f913960400191505060405180910390fd5b6040805162461bcd60e51b815260206004820152600a60248201526919195c1c9958d85d195960b21b604482015290519081900360640190fd5b33612006146106025760405162461bcd60e51b8152600401808060200182810382526031815260200180610af86031913960400191505060405180910390fd5b61060a610a9e565b604051806060016040528087878080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250505090825250604080516020601f8801819004810282018101909252868152918101919087908790819084018382808284376000920191909152505050908252506001600160a01b03841660209091015290506106a4816106f6565b50505050505050565b606581565b61100781565b61100681565b60005460ff1681565b61200281565b61300081565b600081565b61100281565b61100381565b61200481565b61100081565b61100481565b60006107058260400151610a98565b61077157604080516020808252601c908201527f74686520746172676574206973206e6f74206120636f6e7472616374000000008183015290517f70e72399380dcfb0338abc03dc8d47f9f470ada8e769c9a78d644ea97385ecb29181900360600190a1506065610a93565b81604001516001600160a01b031663ac431751836000015184602001516040518363ffffffff1660e01b8152600401808060200180602001838103835285818151815260200191508051906020019080838360005b838110156107de5781810151838201526020016107c6565b50505050905090810190601f16801561080b5780820380516001836020036101000a031916815260200191505b50838103825284518152845160209182019186019080838360005b8381101561083e578181015183820152602001610826565b50505050905090810190601f16801561086b5780820380516001836020036101000a031916815260200191505b50945050505050600060405180830381600087803b15801561088c57600080fd5b505af192505050801561089d575060015b610a8f576040516000815260443d10156108b957506000610956565b60046000803e60005160e01c6308c379a081146108da576000915050610956565b60043d036004833e81513d602482011167ffffffffffffffff8211171561090657600092505050610956565b808301805167ffffffffffffffff811115610928576000945050505050610956565b8060208301013d860181111561094657600095505050505050610956565b601f01601f191660405250925050505b806109615750610a04565b7f70e72399380dcfb0338abc03dc8d47f9f470ada8e769c9a78d644ea97385ecb2816040518080602001828103825283818151815260200191508051906020019080838360005b838110156109c05781810151838201526020016109a8565b50505050905090810190601f1680156109ed5780820380516001836020036101000a031916815260200191505b509250505060405180910390a16066915050610a93565b3d808015610a2e576040519150601f19603f3d011682016040523d82523d6000602084013e610a33565b606091505b5060408051602080825283518183015283517f1279f84165b4fd69c35e1f338ff107231b036c655cd1688851e011ce617c4e8d9385939283929183019190850190808383600083156109c05781810151838201526020016109a8565b5060005b919050565b3b151590565b6040518060600160405280606081526020016060815260200160006001600160a01b03168152509056fe746865206d6573736167652073656e646572206d7573742062652063726f737320636861696e20636f6e7472616374746865206d73672073656e646572206d75737420626520676f7665726e6f722074696d656c6f636b20636f6e7472616374a164736f6c6343000604000a \ No newline at end of file diff --git a/core/systemcontracts/pascal/rialto/GovTokenContract b/core/systemcontracts/pascal/rialto/GovTokenContract new file mode 100644 index 0000000000..313af63673 --- /dev/null +++ b/core/systemcontracts/pascal/rialto/GovTokenContract @@ -0,0 +1 @@ +608060405234801561001057600080fd5b50600436106101f05760003560e01c806370a082311161010f5780639ab24eb0116100a2578063d505accf11610071578063d505accf14610479578063dd62ed3e1461048c578063e5ed5b1e1461049f578063f1127ed8146104b257600080fd5b80639ab24eb01461042d578063a457c2d714610440578063a9059cbb14610453578063c3cda5201461046657600080fd5b806384b0196e116100de57806384b0196e146103d85780638e539e8c146103f357806391ddadf41461040657806395d89b411461042557600080fd5b806370a082311461038657806379cc6790146103af5780637ecebe00146103bd5780638129fc1c146103d057600080fd5b806339509351116101875780634bf5d7e9116101565780634bf5d7e9146102ff578063587cde1e146103075780635c19a95c1461034b5780636fcfff451461035e57600080fd5b806339509351146102b35780633a46b1a8146102c657806342966c68146102d957806344840775146102ec57600080fd5b806323b872dd116101c357806323b872dd146102745780633041949b14610287578063313ce5671461029c5780633644e515146102ab57600080fd5b8063039c91fc146101f557806306fdde0314610234578063095ea7b31461024957806318160ddd1461026c575b600080fd5b61022161020336600461209b565b61013060209081526000928352604080842090915290825290205481565b6040519081526020015b60405180910390f35b61023c6104ef565b60405161022b9190612114565b61025c610257366004612127565b610581565b604051901515815260200161022b565b603554610221565b61025c610282366004612151565b61059b565b61029a61029536600461209b565b6105bf565b005b6040516012815260200161022b565b6102216105f8565b61025c6102c1366004612127565b610607565b6102216102d4366004612127565b610629565b61029a6102e736600461218d565b6106ae565b61029a6102fa3660046121a6565b6106c7565b61023c610740565b61033361031536600461222a565b6001600160a01b03908116600090815260fe60205260409020541690565b6040516001600160a01b03909116815260200161022b565b61029a61035936600461222a565b6107d8565b61037161036c36600461222a565b6107e5565b60405163ffffffff909116815260200161022b565b61022161039436600461222a565b6001600160a01b031660009081526033602052604090205490565b61029a6102e7366004612127565b6102216103cb36600461222a565b610807565b61029a610825565b6103e0610a05565b60405161022b9796959493929190612245565b61022161040136600461218d565b610aa3565b61040e610b0b565b60405165ffffffffffff909116815260200161022b565b61023c610b16565b61022161043b36600461222a565b610b25565b61025c61044e366004612127565b610ba7565b61025c610461366004612127565b610c22565b61029a6104743660046122ec565b610c30565b61029a610487366004612344565b610d66565b61022161049a36600461209b565b610eca565b61029a6104ad36600461209b565b610ef5565b6104c56104c03660046123ae565b610f25565b60408051825163ffffffff1681526020928301516001600160e01b0316928101929092520161022b565b6060603680546104fe906123ee565b80601f016020809104026020016040519081016040528092919081815260200182805461052a906123ee565b80156105775780601f1061054c57610100808354040283529160200191610577565b820191906000526020600020905b81548152906001019060200180831161055a57829003601f168201915b5050505050905090565b60003361058f818585610fa9565b60019150505b92915050565b6000336105a9858285610fc2565b6105b485858561103c565b506001949350505050565b33612002146105ea57604051630f22c43960e41b815261200260048201526024015b60405180910390fd5b6105f48282611055565b5050565b6000610602611185565b905090565b60003361058f81858561061a8383610eca565b6106249190612438565b610fa9565b6000610633610b0b565b65ffffffffffff1682106106855760405162461bcd60e51b815260206004820152601960248201527804552433230566f7465733a20667574757265206c6f6f6b757603c1b60448201526064016105e1565b6001600160a01b038316600090815260ff602052604090206106a7908361118f565b9392505050565b60405163e5d8776760e01b815260040160405180910390fd5b33612002146106ed57604051630f22c43960e41b815261200260048201526024016105e1565b8160005b818110156107395761072985858381811061070e5761070e61244b565b9050602002016020810190610723919061222a565b84611055565b61073281612461565b90506106f1565b5050505050565b60604361074b610b0b565b65ffffffffffff16146107a05760405162461bcd60e51b815260206004820152601d60248201527f4552433230566f7465733a2062726f6b656e20636c6f636b206d6f646500000060448201526064016105e1565b5060408051808201909152601d81527f6d6f64653d626c6f636b6e756d6265722666726f6d3d64656661756c74000000602082015290565b6107e23382611278565b50565b6001600160a01b038116600090815260ff6020526040812054610595906112f2565b6001600160a01b038116600090815260cb6020526040812054610595565b600054610100900460ff16158080156108455750600054600160ff909116105b8061085f5750303b15801561085f575060005460ff166001145b6108c25760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084016105e1565b6000805460ff1916600117905580156108e5576000805461ff0019166101001790555b3341146109055760405163022d8c9560e31b815260040160405180910390fd5b3a15610924576040516383f1b1d360e01b815260040160405180910390fd5b610978604051806040016040528060148152602001732129a19023b7bb32b93730b731b2902a37b5b2b760611b8152506040518060400160405280600681526020016533b7bb21272160d11b81525061135b565b61098061138c565b6109b5604051806040016040528060148152602001732129a19023b7bb32b93730b731b2902a37b5b2b760611b8152506113b5565b6109bd61138c565b80156107e2576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a150565b6000606080600080600060606097546000801b148015610a255750609854155b610a695760405162461bcd60e51b81526020600482015260156024820152741152540dcc4c8e88155b9a5b9a5d1a585b1a5e9959605a1b60448201526064016105e1565b610a716113ff565b610a7961140e565b60408051600080825260208201909252600f60f81b9b939a50919850469750309650945092509050565b6000610aad610b0b565b65ffffffffffff168210610aff5760405162461bcd60e51b815260206004820152601960248201527804552433230566f7465733a20667574757265206c6f6f6b757603c1b60448201526064016105e1565b6105956101008361118f565b60006106024361141d565b6060603780546104fe906123ee565b6001600160a01b038116600090815260ff60205260408120548015610b94576001600160a01b038316600090815260ff6020526040902080546000198301908110610b7257610b7261244b565b60009182526020909120015464010000000090046001600160e01b0316610b97565b60005b6001600160e01b03169392505050565b60003381610bb58286610eca565b905083811015610c155760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b60648201526084016105e1565b6105b48286868403610fa9565b60003361058f81858561103c565b83421115610c805760405162461bcd60e51b815260206004820152601d60248201527f4552433230566f7465733a207369676e6174757265206578706972656400000060448201526064016105e1565b604080517fe48329057bfd03d55e49b547132e39cffd9c1820ad7b9d4c5307691425d15adf60208201526001600160a01b038816918101919091526060810186905260808101859052600090610cfa90610cf29060a00160405160208183030381529060405280519060200120611484565b8585856114b1565b9050610d05816114d9565b8614610d535760405162461bcd60e51b815260206004820152601960248201527f4552433230566f7465733a20696e76616c6964206e6f6e63650000000000000060448201526064016105e1565b610d5d8188611278565b50505050505050565b83421115610db65760405162461bcd60e51b815260206004820152601d60248201527f45524332305065726d69743a206578706972656420646561646c696e6500000060448201526064016105e1565b60007f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c9888888610de58c6114d9565b6040805160208101969096526001600160a01b0394851690860152929091166060840152608083015260a082015260c0810186905260e0016040516020818303038152906040528051906020012090506000610e4082611484565b90506000610e50828787876114b1565b9050896001600160a01b0316816001600160a01b031614610eb35760405162461bcd60e51b815260206004820152601e60248201527f45524332305065726d69743a20696e76616c6964207369676e6174757265000060448201526064016105e1565b610ebe8a8a8a610fa9565b50505050505050505050565b6001600160a01b03918216600090815260346020908152604080832093909416825291909152205490565b3361200214610f1b57604051630f22c43960e41b815261200260048201526024016105e1565b6105f48282611278565b60408051808201909152600080825260208201526001600160a01b038316600090815260ff60205260409020805463ffffffff8416908110610f6957610f6961244b565b60009182526020918290206040805180820190915291015463ffffffff8116825264010000000090046001600160e01b0316918101919091529392505050565b604051632028747160e01b815260040160405180910390fd5b6000610fce8484610eca565b9050600019811461103657818110156110295760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e636500000060448201526064016105e1565b6110368484848403610fa9565b50505050565b604051638cd22d1960e01b815260040160405180910390fd5b604051630913db4760e01b81526001600160a01b03828116600483015260009190841690630913db4790602401602060405180830381865afa15801561109f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110c39190612490565b6001600160a01b03808516600090815261013060209081526040808320938716835292905220549091508181101561113c57600061110182846124a9565b6001600160a01b0380871660009081526101306020908152604080832093891683529290522084905590506111368482611501565b50611036565b8181111561103657600061115083836124a9565b6001600160a01b038087166000908152610130602090815260408083209389168352929052208490559050610739848261150b565b6000610602611515565b8154600090818160058111156111e95760006111aa84611589565b6111b490856124a9565b600088815260209020909150869082015463ffffffff1611156111d9578091506111e7565b6111e4816001612438565b92505b505b808210156112365760006111fd8383611671565b600088815260209020909150869082015463ffffffff16111561122257809150611230565b61122d816001612438565b92505b506111e9565b8015611262576000868152602090208101600019015464010000000090046001600160e01b0316611265565b60005b6001600160e01b03169695505050505050565b6001600160a01b03828116600081815260fe6020818152604080842080546033845282862054949093528787166001600160a01b03198416811790915590519190951694919391928592917f3134e8a2e6d97e929a7e54011ea5485d7d196dd5f0ba4d4ef95803e8e3fc257f9190a461103682848361168c565b600063ffffffff8211156113575760405162461bcd60e51b815260206004820152602660248201527f53616665436173743a2076616c756520646f65736e27742066697420696e203360448201526532206269747360d01b60648201526084016105e1565b5090565b600054610100900460ff166113825760405162461bcd60e51b81526004016105e1906124bc565b6105f482826117ca565b600054610100900460ff166113b35760405162461bcd60e51b81526004016105e1906124bc565b565b600054610100900460ff166113dc5760405162461bcd60e51b81526004016105e1906124bc565b6107e281604051806040016040528060018152602001603160f81b81525061180a565b6060609980546104fe906123ee565b6060609a80546104fe906123ee565b600065ffffffffffff8211156113575760405162461bcd60e51b815260206004820152602660248201527f53616665436173743a2076616c756520646f65736e27742066697420696e203460448201526538206269747360d01b60648201526084016105e1565b6000610595611491611185565b8360405161190160f01b8152600281019290925260228201526042902090565b60008060006114c287878787611859565b915091506114cf8161191d565b5095945050505050565b6001600160a01b038116600090815260cb602052604090208054600181018255905b50919050565b6105f48282611a67565b6105f48282611af2565b60007f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f611540611b0b565b611548611b64565b60408051602081019490945283019190915260608201524660808201523060a082015260c00160405160208183030381529060405280519060200120905090565b60008160000361159b57506000919050565b600060016115a884611b95565b901c6001901b905060018184816115c1576115c1612507565b048201901c905060018184816115d9576115d9612507565b048201901c905060018184816115f1576115f1612507565b048201901c9050600181848161160957611609612507565b048201901c9050600181848161162157611621612507565b048201901c9050600181848161163957611639612507565b048201901c9050600181848161165157611651612507565b048201901c90506106a78182858161166b5761166b612507565b04611c29565b6000611680600284841861251d565b6106a790848416612438565b816001600160a01b0316836001600160a01b0316141580156116ae5750600081115b156117c5576001600160a01b0383161561173c576001600160a01b038316600090815260ff6020526040812081906116e990611c3f85611c4b565b91509150846001600160a01b03167fdec2bacdd2f05b59de34da9b523dff8be42e5e38e818c82fdb0bae774387a7248383604051611731929190918252602082015260400190565b60405180910390a250505b6001600160a01b038216156117c5576001600160a01b038216600090815260ff60205260408120819061177290611dc085611c4b565b91509150836001600160a01b03167fdec2bacdd2f05b59de34da9b523dff8be42e5e38e818c82fdb0bae774387a72483836040516117ba929190918252602082015260400190565b60405180910390a250505b505050565b600054610100900460ff166117f15760405162461bcd60e51b81526004016105e1906124bc565b60366117fd838261258d565b5060376117c5828261258d565b600054610100900460ff166118315760405162461bcd60e51b81526004016105e1906124bc565b609961183d838261258d565b50609a61184a828261258d565b50506000609781905560985550565b6000807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a08311156118905750600090506003611914565b6040805160008082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa1580156118e4573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b03811661190d57600060019250925050611914565b9150600090505b94509492505050565b60008160048111156119315761193161264d565b036119395750565b600181600481111561194d5761194d61264d565b0361199a5760405162461bcd60e51b815260206004820152601860248201527f45434453413a20696e76616c6964207369676e6174757265000000000000000060448201526064016105e1565b60028160048111156119ae576119ae61264d565b036119fb5760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e6774680060448201526064016105e1565b6003816004811115611a0f57611a0f61264d565b036107e25760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b60648201526084016105e1565b611a718282611dcc565b6035546001600160e01b031015611ae35760405162461bcd60e51b815260206004820152603060248201527f4552433230566f7465733a20746f74616c20737570706c79207269736b73206f60448201526f766572666c6f77696e6720766f74657360801b60648201526084016105e1565b611036610100611dc083611c4b565b611afc8282611e95565b611036610100611c3f83611c4b565b600080611b166113ff565b805190915015611b2d578051602090910120919050565b6097548015611b3c5792915050565b7fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a4709250505090565b600080611b6f61140e565b805190915015611b86578051602090910120919050565b6098548015611b3c5792915050565b600080608083901c15611baa57608092831c92015b604083901c15611bbc57604092831c92015b602083901c15611bce57602092831c92015b601083901c15611be057601092831c92015b600883901c15611bf257600892831c92015b600483901c15611c0457600492831c92015b600283901c15611c1657600292831c92015b600183901c156105955760010192915050565b6000818310611c3857816106a7565b5090919050565b60006106a782846124a9565b82546000908190818115611c985760008781526020902082016000190160408051808201909152905463ffffffff8116825264010000000090046001600160e01b03166020820152611cad565b60408051808201909152600080825260208201525b905080602001516001600160e01b03169350611ccd84868863ffffffff16565b9250600082118015611cf75750611ce2610b0b565b65ffffffffffff16816000015163ffffffff16145b15611d3c57611d0583611fd0565b60008881526020902083016000190180546001600160e01b03929092166401000000000263ffffffff909216919091179055611db6565b866040518060400160405280611d60611d53610b0b565b65ffffffffffff166112f2565b63ffffffff168152602001611d7486611fd0565b6001600160e01b0390811690915282546001810184556000938452602093849020835194909301519091166401000000000263ffffffff909316929092179101555b5050935093915050565b60006106a78284612438565b6001600160a01b038216611e225760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f20616464726573730060448201526064016105e1565b8060356000828254611e349190612438565b90915550506001600160a01b0382166000818152603360209081526040808320805486019055518481527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a36105f460008383612039565b6001600160a01b038216611ef55760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b60648201526084016105e1565b6001600160a01b03821660009081526033602052604090205481811015611f695760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e604482015261636560f01b60648201526084016105e1565b6001600160a01b03831660008181526033602090815260408083208686039055603580548790039055518581529192917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a36117c583600084612039565b60006001600160e01b038211156113575760405162461bcd60e51b815260206004820152602760248201527f53616665436173743a2076616c756520646f65736e27742066697420696e20326044820152663234206269747360c81b60648201526084016105e1565b6117c58383836001600160a01b03808416600090815260fe60205260409020546117c591166001600160a01b03808516600090815260fe6020526040902054168361168c565b80356001600160a01b038116811461209657600080fd5b919050565b600080604083850312156120ae57600080fd5b6120b78361207f565b91506120c56020840161207f565b90509250929050565b6000815180845260005b818110156120f4576020818501810151868301820152016120d8565b506000602082860101526020601f19601f83011685010191505092915050565b6020815260006106a760208301846120ce565b6000806040838503121561213a57600080fd5b6121438361207f565b946020939093013593505050565b60008060006060848603121561216657600080fd5b61216f8461207f565b925061217d6020850161207f565b9150604084013590509250925092565b60006020828403121561219f57600080fd5b5035919050565b6000806000604084860312156121bb57600080fd5b833567ffffffffffffffff808211156121d357600080fd5b818601915086601f8301126121e757600080fd5b8135818111156121f657600080fd5b8760208260051b850101111561220b57600080fd5b602092830195509350612221918601905061207f565b90509250925092565b60006020828403121561223c57600080fd5b6106a78261207f565b60ff60f81b881681526000602060e08184015261226560e084018a6120ce565b8381036040850152612277818a6120ce565b606085018990526001600160a01b038816608086015260a0850187905284810360c0860152855180825283870192509083019060005b818110156122c9578351835292840192918401916001016122ad565b50909c9b505050505050505050505050565b803560ff8116811461209657600080fd5b60008060008060008060c0878903121561230557600080fd5b61230e8761207f565b9550602087013594506040870135935061232a606088016122db565b92506080870135915060a087013590509295509295509295565b600080600080600080600060e0888a03121561235f57600080fd5b6123688861207f565b96506123766020890161207f565b95506040880135945060608801359350612392608089016122db565b925060a0880135915060c0880135905092959891949750929550565b600080604083850312156123c157600080fd5b6123ca8361207f565b9150602083013563ffffffff811681146123e357600080fd5b809150509250929050565b600181811c9082168061240257607f821691505b6020821081036114fb57634e487b7160e01b600052602260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b8082018082111561059557610595612422565b634e487b7160e01b600052603260045260246000fd5b60006001820161247357612473612422565b5060010190565b634e487b7160e01b600052604160045260246000fd5b6000602082840312156124a257600080fd5b5051919050565b8181038181111561059557610595612422565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b634e487b7160e01b600052601260045260246000fd5b60008261253a57634e487b7160e01b600052601260045260246000fd5b500490565b601f8211156117c557600081815260208120601f850160051c810160208610156125665750805b601f850160051c820191505b8181101561258557828155600101612572565b505050505050565b815167ffffffffffffffff8111156125a7576125a761247a565b6125bb816125b584546123ee565b8461253f565b602080601f8311600181146125f057600084156125d85750858301515b600019600386901b1c1916600185901b178555612585565b600085815260208120601f198616915b8281101561261f57888601518255948401946001909101908401612600565b508582101561263d5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b634e487b7160e01b600052602160045260246000fdfea164736f6c6343000811000a \ No newline at end of file diff --git a/core/systemcontracts/pascal/rialto/GovernorContract b/core/systemcontracts/pascal/rialto/GovernorContract new file mode 100644 index 0000000000..49d2950299 --- /dev/null +++ b/core/systemcontracts/pascal/rialto/GovernorContract @@ -0,0 +1 @@ +6080604052600436106103dd5760003560e01c80637b3c71d3116101fd578063c170ec0b11610118578063deaaa7cc116100ab578063ece40cc11161007a578063ece40cc114610de9578063f23a6e6114610e09578063f8ce560a14610e35578063fc0c546a14610e55578063fe0d94c114610e7657600080fd5b8063deaaa7cc14610caa578063e23a9a5214610cde578063ea0217cf14610da9578063eb9019d414610dc957600080fd5b8063d33219b4116100e7578063d33219b414610c05578063da95691a14610c24578063dd4e2ba514610c44578063ddf0b00914610c8a57600080fd5b8063c170ec0b14610b97578063c28bc2fa14610bb2578063c59057e414610bc5578063d07f91e914610be557600080fd5b8063a7713a7011610190578063b187bd261161015f578063b187bd2614610b18578063b58131b014610b36578063bc197c8114610b4b578063c01f9e3714610b7757600080fd5b8063a7713a7014610aa3578063a890c91014610ab8578063ab58fb8e14610ad8578063ac43175114610af857600080fd5b806384b0196e116101cc57806384b0196e14610a1b57806391ddadf414610a4357806397c3d33414610a6f5780639a802a6d14610a8357600080fd5b80637b3c71d3146109b15780637d5e81e2146109d15780638129fc1c146109f15780638456cb5914610a0657600080fd5b806332b8113e116102f85780634838d1651161028b57806354fd4d501161025a57806354fd4d501461090757806356781388146109315780635f398a141461095157806360c4247f1461097157806370b0f6601461099157600080fd5b80634838d165146108715780634a49ac4c146108a15780634bf5d7e9146108c1578063533ddd14146108d657600080fd5b806340e58ee5116102c757806340e58ee5146107c6578063417c73a7146107e65780634385963214610806578063452115d61461085157600080fd5b806332b8113e1461073a5780633932abb1146107635780633bccf4fd146107795780633e4f49e61461079957600080fd5b8063150b7a02116103705780632656227d1161033f5780632656227d1461068c5780632d63f6931461069f5780632fe3e261146106d6578063328dd9821461070a57600080fd5b8063150b7a02146105e5578063160cbed71461062957806317977c611461064957806324bc1a641461067757600080fd5b8063046f7da2116103ac578063046f7da21461053857806306f3f9e61461054d57806306fdde031461056d578063143489d01461058f57600080fd5b8063013cf08b1461044d57806301ffc9a7146104c857806302a251a3146104f8578063034201811461051857600080fd5b3661044857306103eb610e89565b6001600160a01b0316146104465760405162461bcd60e51b815260206004820152601f60248201527f476f7665726e6f723a206d7573742073656e6420746f206578656375746f720060448201526064015b60405180910390fd5b005b600080fd5b34801561045957600080fd5b5061046d610468366004615c35565b610ea3565b604080519a8b526001600160a01b0390991660208b0152978901969096526060880194909452608087019290925260a086015260c085015260e084015215156101008301521515610120820152610140015b60405180910390f35b3480156104d457600080fd5b506104e86104e3366004615c4e565b610f5e565b60405190151581526020016104bf565b34801561050457600080fd5b50610195545b6040519081526020016104bf565b34801561052457600080fd5b5061050a610533366004615d94565b610f6f565b34801561054457600080fd5b50610446611067565b34801561055957600080fd5b50610446610568366004615c35565b6110f7565b34801561057957600080fd5b50610582611182565b6040516104bf9190615e8a565b34801561059b57600080fd5b506105cd6105aa366004615c35565b60009081526101636020526040902054600160401b90046001600160a01b031690565b6040516001600160a01b0390911681526020016104bf565b3480156105f157600080fd5b50610610610600366004615eb2565b630a85bd0160e11b949350505050565b6040516001600160e01b031990911681526020016104bf565b34801561063557600080fd5b5061050a610644366004616089565b611215565b34801561065557600080fd5b5061050a610664366004616118565b6102c36020526000908152604090205481565b34801561068357600080fd5b5061050a611300565b61050a61069a366004616089565b611326565b3480156106ab57600080fd5b5061050a6106ba366004615c35565b600090815261016360205260409020546001600160401b031690565b3480156106e257600080fd5b5061050a7fb3b3f3b703cd84ce352197dcff232b1b5d3cfb2025ce47cf04742d0651f1af8881565b34801561071657600080fd5b5061072a610725366004615c35565b611419565b6040516104bf94939291906161fe565b34801561074657600080fd5b5061028f546040516001600160401b0390911681526020016104bf565b34801561076f57600080fd5b506101945461050a565b34801561078557600080fd5b5061050a61079436600461624b565b6116ab565b3480156107a557600080fd5b506107b96107b4366004615c35565b611721565b6040516104bf91906162af565b3480156107d257600080fd5b506104466107e1366004615c35565b61172c565b3480156107f257600080fd5b50610446610801366004616118565b611757565b34801561081257600080fd5b506104e86108213660046162d7565b60008281526101c6602090815260408083206001600160a01b038516845260080190915290205460ff1692915050565b34801561085d57600080fd5b5061050a61086c366004616089565b6117d8565b34801561087d57600080fd5b506104e861088c366004616118565b60016020526000908152604090205460ff1681565b3480156108ad57600080fd5b506104466108bc366004616118565b6117e6565b3480156108cd57600080fd5b50610582611861565b3480156108e257600080fd5b506104e86108f1366004616118565b6102c16020526000908152604090205460ff1681565b34801561091357600080fd5b506040805180820190915260018152603160f81b6020820152610582565b34801561093d57600080fd5b5061050a61094c366004616307565b61190e565b34801561095d57600080fd5b5061050a61096c366004616333565b611937565b34801561097d57600080fd5b5061050a61098c366004615c35565b611981565b34801561099d57600080fd5b506104466109ac366004615c35565b611a36565b3480156109bd57600080fd5b5061050a6109cc3660046163b6565b611abe565b3480156109dd57600080fd5b5061050a6109ec36600461640f565b611b10565b3480156109fd57600080fd5b50610446611c2b565b348015610a1257600080fd5b50610446611e59565b348015610a2757600080fd5b50610a30611eef565b6040516104bf97969594939291906164af565b348015610a4f57600080fd5b50610a58611f8d565b60405165ffffffffffff90911681526020016104bf565b348015610a7b57600080fd5b50606461050a565b348015610a8f57600080fd5b5061050a610a9e366004616511565b612001565b348015610aaf57600080fd5b5061050a612018565b348015610ac457600080fd5b50610446610ad3366004616118565b612045565b348015610ae457600080fd5b5061050a610af3366004615c35565b6120cd565b348015610b0457600080fd5b50610446610b13366004616569565b612169565b348015610b2457600080fd5b5060005462010000900460ff166104e8565b348015610b4257600080fd5b5061050a6128ae565b348015610b5757600080fd5b50610610610b663660046165c8565b63bc197c8160e01b95945050505050565b348015610b8357600080fd5b5061050a610b92366004615c35565b6128ba565b348015610ba357600080fd5b506102c2546104e89060ff1681565b610446610bc036600461665b565b6128c5565b348015610bd157600080fd5b5061050a610be0366004616089565b6129d5565b348015610bf157600080fd5b50610446610c0036600461669e565b612a0f565b348015610c1157600080fd5b5061022b546001600160a01b03166105cd565b348015610c3057600080fd5b5061050a610c3f3660046166c7565b612a97565b348015610c5057600080fd5b5060408051808201909152601a81527f737570706f72743d627261766f2671756f72756d3d627261766f0000000000006020820152610582565b348015610c9657600080fd5b50610446610ca5366004615c35565b612b1e565b348015610cb657600080fd5b5061050a7f150214d74d59b7d1e90c73fc22ef3d991dd0a76b046543d4d80ab92d2a50328f81565b348015610cea57600080fd5b50610d79610cf93660046162d7565b60408051606081018252600080825260208201819052918101919091525060009182526101c6602090815260408084206001600160a01b0393909316845260089092018152918190208151606081018352905460ff8082161515835261010082041693820193909352620100009092046001600160601b03169082015290565b6040805182511515815260208084015160ff1690820152918101516001600160601b0316908201526060016104bf565b348015610db557600080fd5b50610446610dc4366004615c35565b612b41565b348015610dd557600080fd5b5061050a610de4366004616768565b612bc9565b348015610df557600080fd5b50610446610e04366004615c35565b612bea565b348015610e1557600080fd5b50610610610e24366004616794565b63f23a6e6160e01b95945050505050565b348015610e4157600080fd5b5061050a610e50366004615c35565b612c72565b348015610e6157600080fd5b506101f8546105cd906001600160a01b031681565b610446610e84366004615c35565b612d01565b6000610e9e61022b546001600160a01b031690565b905090565b8060008080808080808080610eb78a6120cd565b60008c815261016360205260409020549098506001600160401b03169650610ede8b6128ba565b60008c81526101c66020526040812080546005820154600683015460078401546001600160a01b039093169e50949a509850929650919450610f1f8d611721565b90506002816007811115610f3557610f35616299565b1493506007816007811115610f4c57610f4c616299565b14925050509193959799509193959799565b6000610f6982612d24565b92915050565b60008061101361100b7fb3b3f3b703cd84ce352197dcff232b1b5d3cfb2025ce47cf04742d0651f1af888c8c8c8c604051610fab9291906167fc565b60405180910390208b80519060200120604051602001610ff0959493929190948552602085019390935260ff9190911660408401526060830152608082015260a00190565b60405160208183030381529060405280519060200120612d49565b868686612d76565b90506110598a828b8b8b8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152508d9250612d94915050565b9a9950505050505050505050565b600054630100000090046001600160a01b03163314611099576040516306fbb1e360e01b815260040160405180910390fd5b60005462010000900460ff166110c257604051636cd6020160e01b815260040160405180910390fd5b6000805462ff0000191681556040517f62451d457bc659158be6e6247f56ec1df424a5c7597f71c20c2bc44e0965c8f99190a1565b6110ff610e89565b6001600160a01b0316336001600160a01b03161461112f5760405162461bcd60e51b815260040161043d9061680c565b30611138610e89565b6001600160a01b03161461117657600080366040516111589291906167fc565b604051809103902090505b8061116f610164612dfd565b0361116357505b61117f81612e7c565b50565b6060610162805461119290616843565b80601f01602080910402602001604051908101604052809291908181526020018280546111be90616843565b801561120b5780601f106111e05761010080835404028352916020019161120b565b820191906000526020600020905b8154815290600101906020018083116111ee57829003601f168201915b5050505050905090565b6000805462010000900460ff161561124057604051631785c68160e01b815260040160405180910390fd5b3360009081526001602052604090205460ff16156112715760405163b1d02c3d60e01b815260040160405180910390fd5b60005b85518110156112ea576102c160008783815181106112945761129461687d565b6020908102919091018101516001600160a01b031682528101919091526040016000205460ff166112d857604051630b094f2760e31b815260040160405180910390fd5b806112e2816168a9565b915050611274565b506112f785858585612fed565b95945050505050565b6000610e9e600161130f611f8d565b61131991906168c2565b65ffffffffffff16612c72565b600080611335868686866129d5565b9050600061134282611721565b9050600481600781111561135857611358616299565b14806113755750600581600781111561137357611373616299565b145b6113915760405162461bcd60e51b815260040161043d906168e8565b6000828152610163602052604090819020600201805460ff19166001179055517f712ae1383f79ac853f8d882153778e0260ef8f03b504e2866e0593e04d2b291f906113e09084815260200190565b60405180910390a16113f582888888886131f2565b6114028288888888613293565b61140f8288888888613375565b5095945050505050565b60608060608060006101c660008781526020019081526020016000209050806001018160020182600301836004018380548060200260200160405190810160405280929190818152602001828054801561149c57602002820191906000526020600020905b81546001600160a01b0316815260019091019060200180831161147e575b50505050509350828054806020026020016040519081016040528092919081815260200182805480156114ee57602002820191906000526020600020905b8154815260200190600101908083116114da575b5050505050925081805480602002602001604051908101604052809291908181526020016000905b828210156115c257838290600052602060002001805461153590616843565b80601f016020809104026020016040519081016040528092919081815260200182805461156190616843565b80156115ae5780601f10611583576101008083540402835291602001916115ae565b820191906000526020600020905b81548152906001019060200180831161159157829003601f168201915b505050505081526020019060010190611516565b50505050915080805480602002602001604051908101604052809291908181526020016000905b8282101561169557838290600052602060002001805461160890616843565b80601f016020809104026020016040519081016040528092919081815260200182805461163490616843565b80156116815780601f1061165657610100808354040283529160200191611681565b820191906000526020600020905b81548152906001019060200180831161166457829003601f168201915b5050505050815260200190600101906115e9565b5050505090509450945094509450509193509193565b604080517f150214d74d59b7d1e90c73fc22ef3d991dd0a76b046543d4d80ab92d2a50328f602082015290810186905260ff8516606082015260009081906116f99061100b90608001610ff0565b9050611716878288604051806020016040528060008152506133b0565b979650505050505050565b6000610f69826133d3565b60008060008061173b85613520565b935093509350935061174f848484846117d8565b505050505050565b600054630100000090046001600160a01b03163314611789576040516306fbb1e360e01b815260040160405180910390fd5b6001600160a01b0381166000818152600160208190526040808320805460ff1916909217909155517f7fd26be6fc92aff63f1f4409b2b2ddeb272a888031d7f55ec830485ec61941869190a250565b60006112f7858585856137b1565b600054630100000090046001600160a01b03163314611818576040516306fbb1e360e01b815260040160405180910390fd5b6001600160a01b038116600081815260016020526040808220805460ff19169055517fe0db3499b7fdc3da4cddff5f45d694549c19835e7f719fb5606d3ad1a5de40119190a250565b6101f85460408051634bf5d7e960e01b815290516060926001600160a01b031691634bf5d7e99160048083019260009291908290030181865afa9250505080156118cd57506040513d6000823e601f3d908101601f191682016040526118ca9190810190616929565b60015b611909575060408051808201909152601d81527f6d6f64653d626c6f636b6e756d6265722666726f6d3d64656661756c74000000602082015290565b919050565b60008033905061192f848285604051806020016040528060008152506133b0565b949350505050565b60008033905061171687828888888080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152508a9250612d94915050565b61025e5460009080820361199a57505061025d54919050565b600061025e6119aa600184616996565b815481106119ba576119ba61687d565b60009182526020918290206040805180820190915291015463ffffffff8116808352600160201b9091046001600160e01b03169282019290925291508410611a1057602001516001600160e01b03169392505050565b611a25611a1c8561387c565b61025e906138e5565b6001600160e01b0316949350505050565b611a3e610e89565b6001600160a01b0316336001600160a01b031614611a6e5760405162461bcd60e51b815260040161043d9061680c565b30611a77610e89565b6001600160a01b031614611ab55760008036604051611a979291906167fc565b604051809103902090505b80611aae610164612dfd565b03611aa257505b61117f81613998565b600080339050611b0686828787878080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506133b092505050565b9695505050505050565b6000805462010000900460ff1615611b3b57604051631785c68160e01b815260040160405180910390fd5b3360009081526001602052604090205460ff1615611b6c5760405163b1d02c3d60e01b815260040160405180910390fd5b611b746139db565b3360009081526102c360205260409020548015611be9576000611b9682611721565b90506001816007811115611bac57611bac616299565b1480611bc957506000816007811115611bc757611bc7616299565b145b15611be75760405163867f3ee560e01b815260040160405180910390fd5b505b825160208401206000611bfe888888856129d5565b3360009081526102c3602052604090208190559050611c1f88888888613a86565b98975050505050505050565b600054610100900460ff1615808015611c4b5750600054600160ff909116105b80611c655750303b158015611c65575060005460ff166001145b611cc85760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b606482015260840161043d565b6000805460ff191660011790558015611ceb576000805461ff0019166101001790555b334114611d0b5760405163022d8c9560e31b815260040160405180910390fd5b3a15611d2a576040516383f1b1d360e01b815260040160405180910390fd5b611d566040518060400160405280600b81526020016a2129a1a3b7bb32b93737b960a91b815250613aee565b611d80611d656003603c6169bf565b611d71600360786169bf565b680ad78ebc5ac6200000613b45565b611d88613b7c565b611d93612005613ba3565b611d9e612006613bd3565b611da8600a613c03565b611dbc611db76003603c6169bf565b613c33565b6110076000526102c16020527f2f832952f0ef896b8c8edd6d16a2e4f2591a90375e33021e3b9ff197f3793fc0805460ff19166001179055611e117304d63abcd2b9b1baa327f2dda0f873f197ccd186613c63565b801561117f576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a150565b600054630100000090046001600160a01b03163314611e8b576040516306fbb1e360e01b815260040160405180910390fd5b60005462010000900460ff1615611eb557604051631785c68160e01b815260040160405180910390fd5b6000805462ff00001916620100001781556040517f9e87fac88ff661f02d44f95383c817fece4bce600a3dab7a54406878b965e7529190a1565b6000606080600080600060606098546000801b148015611f0f5750609954155b611f535760405162461bcd60e51b81526020600482015260156024820152741152540dcc4c8e88155b9a5b9a5d1a585b1a5e9959605a1b604482015260640161043d565b611f5b613cb6565b611f63613cc5565b60408051600080825260208201909252600f60f81b9b939a50919850469750309650945092509050565b6101f854604080516324776b7d60e21b815290516000926001600160a01b0316916391ddadf49160048083019260209291908290030181865afa925050508015611ff4575060408051601f3d908101601f19168201909252611ff1918101906169e1565b60015b61190957610e9e43613cd4565b600061200e848484613d3b565b90505b9392505050565b61025e546000901561203d5761202f61025e613db2565b6001600160e01b0316905090565b5061025d5490565b61204d610e89565b6001600160a01b0316336001600160a01b03161461207d5760405162461bcd60e51b815260040161043d9061680c565b30612086610e89565b6001600160a01b0316146120c457600080366040516120a69291906167fc565b604051809103902090505b806120bd610164612dfd565b036120b157505b61117f81613de2565b61022b54600082815261022c602052604080822054905163d45c443560e01b81526004810191909152909182916001600160a01b039091169063d45c443590602401602060405180830381865afa15801561212c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121509190616a09565b9050806001146121605780612011565b60009392505050565b336110071461218f57604051630f22c43960e41b8152611007600482015260240161043d565b6121f56040518060400160405280600b81526020016a766f74696e6744656c617960a81b81525085858080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509293925050613e4d9050565b156122aa57602081146122235783838383604051630a5a604160e01b815260040161043d9493929190616a4b565b604080516020601f8401819004810282018101909252828152600091612264918585808385018382808284376000920191909152509293925050613ea69050565b905080158061227557506201518081115b1561229b5784848484604051630a5a604160e01b815260040161043d9493929190616a4b565b6122a481613998565b5061286b565b6123116040518060400160405280600c81526020016b1d9bdd1a5b99d4195c9a5bd960a21b81525085858080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509293925050613e4d9050565b156123c0576020811461233f5783838383604051630a5a604160e01b815260040161043d9493929190616a4b565b604080516020601f8401819004810282018101909252828152600091612380918585808385018382808284376000920191909152509293925050613ea69050565b9050801580612391575062278d0081115b156123b75784848484604051630a5a604160e01b815260040161043d9493929190616a4b565b6122a481613eab565b61242c604051806040016040528060118152602001701c1c9bdc1bdcd85b151a1c995cda1bdb19607a1b81525085858080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509293925050613e4d9050565b156124e2576020811461245a5783838383604051630a5a604160e01b815260040161043d9493929190616a4b565b604080516020601f840181900481028201810190925282815260009161249b918585808385018382808284376000920191909152509293925050613ea69050565b90508015806124b3575069021e19e0c9bab240000081115b156124d95784848484604051630a5a604160e01b815260040161043d9493929190616a4b565b6122a481613f4e565b61254c6040518060400160405280600f81526020016e38bab7b93ab6a73ab6b2b930ba37b960891b81525085858080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509293925050613e4d9050565b156125fb576020811461257a5783838383604051630a5a604160e01b815260040161043d9493929190616a4b565b604080516020601f84018190048102820181019092528281526000916125bb918585808385018382808284376000920191909152509293925050613ea69050565b905060058110806125cc5750601481115b156125f25784848484604051630a5a604160e01b815260040161043d9493929190616a4b565b6122a481612e7c565b61266a604051806040016040528060148152602001736d696e506572696f64416674657251756f72756d60601b81525085858080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509293925050613e4d9050565b1561273057600881146126985783838383604051630a5a604160e01b815260040161043d9493929190616a4b565b60006126de600884848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509293925050613ea69050565b90506001600160401b038116158061270157506202a300816001600160401b0316115b156127275784848484604051630a5a604160e01b815260040161043d9493929190616a4b565b6122a481613f91565b61279c6040518060400160405280601181526020017033b7bb32b93737b9283937ba32b1ba37b960791b81525085858080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509293925050613e4d9050565b1561284a57601481146127ca5783838383604051630a5a604160e01b815260040161043d9493929190616a4b565b6000612810601484848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509293925050613ea69050565b90506001600160a01b0381166128415784848484604051630a5a604160e01b815260040161043d9493929190616a4b565b6122a481613ffd565b838383836040516325ee20d560e21b815260040161043d9493929190616a4b565b7ff1ce9b2cbf50eeb05769a29e2543fd350cab46894a7dd9978a12d534bb20e633848484846040516128a09493929190616a4b565b60405180910390a150505050565b6000610e9e6101965490565b6000610f6982614069565b6128cd610e89565b6001600160a01b0316336001600160a01b0316146128fd5760405162461bcd60e51b815260040161043d9061680c565b30612906610e89565b6001600160a01b03161461294457600080366040516129269291906167fc565b604051809103902090505b8061293d610164612dfd565b0361293157505b600080856001600160a01b03168585856040516129629291906167fc565b60006040518083038185875af1925050503d806000811461299f576040519150601f19603f3d011682016040523d82523d6000602084013e6129a4565b606091505b50915091506129cc8282604051806060016040528060288152602001616ea8602891396140a7565b50505050505050565b6000848484846040516020016129ee9493929190616a72565b60408051601f19818403018152919052805160209091012095945050505050565b612a17610e89565b6001600160a01b0316336001600160a01b031614612a475760405162461bcd60e51b815260040161043d9061680c565b30612a50610e89565b6001600160a01b031614612a8e5760008036604051612a709291906167fc565b604051809103902090505b80612a87610164612dfd565b03612a7b57505b61117f81613f91565b60008251845114612afb5760405162461bcd60e51b815260206004820152602860248201527f476f7665726e6f72427261766f3a20696e76616c6964207369676e61747572656044820152670e640d8cadccee8d60c31b606482015260840161043d565b612b093387878787876140c0565b611b068686612b18878761417e565b85611b10565b600080600080612b2d85613520565b935093509350935061174f84848484611215565b612b49610e89565b6001600160a01b0316336001600160a01b031614612b795760405162461bcd60e51b815260040161043d9061680c565b30612b82610e89565b6001600160a01b031614612bc05760008036604051612ba29291906167fc565b604051809103902090505b80612bb9610164612dfd565b03612bad57505b61117f81613eab565b60006120118383612be560408051602081019091526000815290565b613d3b565b612bf2610e89565b6001600160a01b0316336001600160a01b031614612c225760405162461bcd60e51b815260040161043d9061680c565b30612c2b610e89565b6001600160a01b031614612c695760008036604051612c4b9291906167fc565b604051809103902090505b80612c62610164612dfd565b03612c5657505b61117f81613f4e565b60006064612c7f83611981565b6101f854604051632394e7a360e21b8152600481018690526001600160a01b0390911690638e539e8c90602401602060405180830381865afa158015612cc9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612ced9190616a09565b612cf79190616abd565b610f6991906169bf565b600080600080612d1085613520565b935093509350935061174f84848484611326565b60006001600160e01b03198216636e665ced60e01b1480610f695750610f69826142b0565b6000610f69612d5661434c565b8360405161190160f01b8152600281019290925260228201526042902090565b6000806000612d8787878787614356565b9150915061140f8161441a565b6000805462010000900460ff1615612dbf57604051631785c68160e01b815260040160405180910390fd5b3360009081526001602052604090205460ff1615612df05760405163b1d02c3d60e01b815260040160405180910390fd5b611b068686868686614564565b6000612e188254600f81810b600160801b909204900b131590565b15612e3657604051631ed9509560e11b815260040160405180910390fd5b508054600f0b6000818152600180840160205260408220805492905583546fffffffffffffffffffffffffffffffff191692016001600160801b03169190911790915590565b6064811115612eff5760405162461bcd60e51b815260206004820152604360248201527f476f7665726e6f72566f74657351756f72756d4672616374696f6e3a2071756f60448201527f72756d4e756d657261746f72206f7665722071756f72756d44656e6f6d696e616064820152623a37b960e91b608482015260a40161043d565b6000612f09612018565b90508015801590612f1b575061025e54155b15612f8057604080518082019091526000815261025e9060208101612f3f84614667565b6001600160e01b039081169091528254600181018455600093845260209384902083519490930151909116600160201b0263ffffffff909316929092179101555b612fae612f9b612f8e611f8d565b65ffffffffffff1661387c565b612fa484614667565b61025e91906146d0565b505060408051828152602081018490527f0553476bf02ef2726e8ce5ced78d63e26e602e4a2257b1f559418e24b4633997910160405180910390a15050565b600080612ffc868686866129d5565b9050600461300982611721565b600781111561301a5761301a616299565b146130375760405162461bcd60e51b815260040161043d906168e8565b61022b546040805163793d064960e11b815290516000926001600160a01b03169163f27a0c929160048083019260209291908290030181865afa158015613082573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906130a69190616a09565b61022b5460405163b1c5f42760e01b81529192506001600160a01b03169063b1c5f427906130e1908a908a908a906000908b90600401616ad4565b602060405180830381865afa1580156130fe573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906131229190616a09565b600083815261022c60205260408082209290925561022b5491516308f2a0bb60e41b81526001600160a01b0390921691638f2a0bb09161316f918b918b918b91908b908990600401616b22565b600060405180830381600087803b15801561318957600080fd5b505af115801561319d573d6000803e3d6000fd5b505050507f9a2e42fd6722813d69113e7d0079d3d940171428df7373df9c7f7617cfda28928282426131cf9190616b7a565b604080519283526020830191909152015b60405180910390a15095945050505050565b306131fb610e89565b6001600160a01b03161461328c5760005b845181101561174f57306001600160a01b03168582815181106132315761323161687d565b60200260200101516001600160a01b03160361327c5761327c83828151811061325c5761325c61687d565b6020026020010151805190602001206101646146eb90919063ffffffff16565b613285816168a9565b905061320c565b5050505050565b60005462010000900460ff16156132bd57604051631785c68160e01b815260040160405180910390fd5b3360009081526001602052604090205460ff16156132ee5760405163b1d02c3d60e01b815260040160405180910390fd5b60005b8451811015613367576102c160008683815181106133115761331161687d565b6020908102919091018101516001600160a01b031682528101919091526040016000205460ff1661335557604051630b094f2760e31b815260040160405180910390fd5b8061335f816168a9565b9150506132f1565b5061328c8585858585614727565b3061337e610e89565b6001600160a01b03161461328c5761016454600f81810b600160801b909204900b131561328c5760006101645561328c565b60006112f7858585856133ce60408051602081019091526000815290565b612d94565b6000806133df8361479c565b905060048160078111156133f5576133f5616299565b146134005792915050565b600083815261022c60205260409020548061341c575092915050565b61022b54604051632ab0f52960e01b8152600481018390526001600160a01b0390911690632ab0f52990602401602060405180830381865afa158015613466573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061348a9190616b8d565b15613499575060079392505050565b61022b54604051632c258a9f60e11b8152600481018390526001600160a01b039091169063584b153e90602401602060405180830381865afa1580156134e3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906135079190616b8d565b15613516575060059392505050565b5060029392505050565b60608060606000806101c66000878152602001908152602001600020905080600101816002016136f283600301805480602002602001604051908101604052809291908181526020016000905b8282101561361957838290600052602060002001805461358c90616843565b80601f01602080910402602001604051908101604052809291908181526020018280546135b890616843565b80156136055780601f106135da57610100808354040283529160200191613605565b820191906000526020600020905b8154815290600101906020018083116135e857829003601f168201915b50505050508152602001906001019061356d565b50505060048601805460408051602080840282018101909252828152935060009084015b828210156136e957838290600052602060002001805461365c90616843565b80601f016020809104026020016040519081016040528092919081815260200182805461368890616843565b80156136d55780601f106136aa576101008083540402835291602001916136d5565b820191906000526020600020905b8154815290600101906020018083116136b857829003601f168201915b50505050508152602001906001019061363d565b5050505061417e565b600984015483546040805160208084028201810190925282815291869183018282801561374857602002820191906000526020600020905b81546001600160a01b0316815260019091019060200180831161372a575b505050505093508280548060200260200160405190810160405280929190818152602001828054801561379a57602002820191906000526020600020905b815481526020019060010190808311613786575b505050505092509450945094509450509193509193565b6000806137c0868686866129d5565b60008181526101c660205260409020549091506001600160a01b03163381148061381457506137ed6128ae565b6138128260016137fb611f8d565b61380591906168c2565b65ffffffffffff16612bc9565b105b6138705760405162461bcd60e51b815260206004820152602760248201527f476f7665726e6f72427261766f3a2070726f706f7365722061626f76652074686044820152661c995cda1bdb1960ca1b606482015260840161043d565b611716878787876148d4565b600063ffffffff8211156138e15760405162461bcd60e51b815260206004820152602660248201527f53616665436173743a2076616c756520646f65736e27742066697420696e203360448201526532206269747360d01b606482015260840161043d565b5090565b815460009081816005811115613942576000613900846148e2565b61390a9085616996565b60008881526020902090915081015463ffffffff908116908716101561393257809150613940565b61393d816001616b7a565b92505b505b6000613950878785856149ca565b9050801561398b5761397587613967600184616996565b600091825260209091200190565b54600160201b90046001600160e01b0316611716565b6000979650505050505050565b6101945460408051918252602082018390527fc565b045403dc03c2eea82b81a0465edad9e2e7fc4d97e11421c209da93d7a93910160405180910390a161019455565b6102c25460ff16613a84576a084595161401484a0000006120056001600160a01b03166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015613a32573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613a569190616a09565b1015613a75576040516311b6707f60e01b815260040160405180910390fd5b6102c2805460ff191660011790555b565b6000613ae233868686516001600160401b03811115613aa757613aa7615cd1565b604051908082528060200260200182016040528015613ada57816020015b6060815260200190600190039081613ac55790505b5087876140c0565b6112f785858585614a20565b600054610100900460ff16613b155760405162461bcd60e51b815260040161043d90616baf565b613b3c81613b376040805180820190915260018152603160f81b602082015290565b614dff565b61117f81614e4e565b600054610100900460ff16613b6c5760405162461bcd60e51b815260040161043d90616baf565b613b77838383614e86565b505050565b600054610100900460ff16613a845760405162461bcd60e51b815260040161043d90616baf565b600054610100900460ff16613bca5760405162461bcd60e51b815260040161043d90616baf565b61117f81614ec8565b600054610100900460ff16613bfa5760405162461bcd60e51b815260040161043d90616baf565b61117f81614f12565b600054610100900460ff16613c2a5760405162461bcd60e51b815260040161043d90616baf565b61117f81614f39565b600054610100900460ff16613c5a5760405162461bcd60e51b815260040161043d90616baf565b61117f81614f60565b600054610100900460ff16613c8a5760405162461bcd60e51b815260040161043d90616baf565b600080546001600160a01b039092166301000000026301000000600160b81b0319909216919091179055565b6060609a805461119290616843565b6060609b805461119290616843565b600065ffffffffffff8211156138e15760405162461bcd60e51b815260206004820152602660248201527f53616665436173743a2076616c756520646f65736e27742066697420696e203460448201526538206269747360d01b606482015260840161043d565b6101f854604051630748d63560e31b81526001600160a01b038581166004830152602482018590526000921690633a46b1a890604401602060405180830381865afa158015613d8e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061200e9190616a09565b8054600090801561216057613dcc83613967600184616996565b54600160201b90046001600160e01b0316612011565b61022b54604080516001600160a01b03928316815291831660208301527f08f74ea46ef7894f65eabfb5e6e695de773a000b47c529ab559178069b226401910160405180910390a161022b80546001600160a01b0319166001600160a01b0392909216919091179055565b600081604051602001613e609190616bfa565b6040516020818303038152906040528051906020012083604051602001613e879190616bfa565b6040516020818303038152906040528051906020012014905092915050565b015190565b60008111613f0b5760405162461bcd60e51b815260206004820152602760248201527f476f7665726e6f7253657474696e67733a20766f74696e6720706572696f6420604482015266746f6f206c6f7760c81b606482015260840161043d565b6101955460408051918252602082018390527f7e3f7f0708a84de9203036abaa450dccc85ad5ff52f78c170f3edb55cf5e8828910160405180910390a161019555565b6101965460408051918252602082018390527fccb45da8d5717e6c4544694297c4ba5cf151d455c9bb0ed4fc7a38411bc05461910160405180910390a161019655565b61028f54604080516001600160401b03928316815291831660208301527f7ca4ac117ed3cdce75c1161d8207c440389b1a15d69d096831664657c07dafc2910160405180910390a161028f805467ffffffffffffffff19166001600160401b0392909216919091179055565b600080546040516001600160a01b0380851693630100000090930416917f44fc1b38a4abaa91ebd1b628a5b259a698f86238c8217d68f516e87769c60c0b91a3600080546001600160a01b039092166301000000026301000000600160b81b0319909216919091179055565b60008181526101636020526040812060010154610f69906001600160401b0316600084815261029060205260409020546001600160401b0316614f87565b606083156140b6575081612011565b6120118383614f9d565b8051602082012060006140de87876140d8888861417e565b856129d5565b60008181526101c6602052604090206009810154919250906141735780546001600160a01b0319166001600160a01b038a16178155875161412890600183019060208b0190615a6c565b50865161413e90600283019060208a0190615acd565b5085516141549060038301906020890190615b08565b50845161416a9060048301906020880190615b5a565b50600981018390555b505050505050505050565b6060600082516001600160401b0381111561419b5761419b615cd1565b6040519080825280602002602001820160405280156141ce57816020015b60608152602001906001900390816141b95790505b50905060005b81518110156142a8578481815181106141ef576141ef61687d565b60200260200101515160001461425f578481815181106142115761421161687d565b6020026020010151805190602001208482815181106142325761423261687d565b602002602001015160405160200161424b929190616c16565b60405160208183030381529060405261427a565b8381815181106142715761427161687d565b60200260200101515b82828151811061428c5761428c61687d565b6020026020010181905250806142a1906168a9565b90506141d4565b509392505050565b600063288ace0360e11b6318df743f60e31b63bf26d89760e01b6379dd796f60e01b6001600160e01b031986168214806142f657506001600160e01b0319868116908216145b8061430d57506001600160e01b0319868116908516145b8061432857506001600160e01b03198616630271189760e51b145b80611b0657506301ffc9a760e01b6001600160e01b03198716149695505050505050565b6000610e9e614fc7565b6000807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a083111561438d5750600090506003614411565b6040805160008082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa1580156143e1573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b03811661440a57600060019250925050614411565b9150600090505b94509492505050565b600081600481111561442e5761442e616299565b036144365750565b600181600481111561444a5761444a616299565b036144975760405162461bcd60e51b815260206004820152601860248201527f45434453413a20696e76616c6964207369676e61747572650000000000000000604482015260640161043d565b60028160048111156144ab576144ab616299565b036144f85760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e67746800604482015260640161043d565b600381600481111561450c5761450c616299565b0361117f5760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b606482015260840161043d565b600080614574878787878761503b565b600088815261029060205260409020549091506001600160401b03161580156145a157506145a187615191565b15611b065760006145bb61028f546001600160401b031690565b6145c3611f8d565b65ffffffffffff166145d59190616c47565b90506145e0886128ba565b816001600160401b0316111561462f576040516001600160401b038216815288907f541f725fb9f7c98a30cc9c0ff32fbb14358cd7159c847a3aa20a2bdc442ba5119060200160405180910390a25b600088815261029060205260409020805467ffffffffffffffff19166001600160401b03929092169190911790559695505050505050565b60006001600160e01b038211156138e15760405162461bcd60e51b815260206004820152602760248201527f53616665436173743a2076616c756520646f65736e27742066697420696e20326044820152663234206269747360c81b606482015260840161043d565b6000806146de8585856151d1565b915091505b935093915050565b8154600160801b90819004600f0b6000818152600180860160205260409091209390935583546001600160801b03908116939091011602179055565b61022b5460405163e38335e560e01b81526001600160a01b039091169063e38335e5903490614763908890889088906000908990600401616ad4565b6000604051808303818588803b15801561477c57600080fd5b505af1158015614790573d6000803e3d6000fd5b50505050505050505050565b600081815261016360205260408120600281015460ff16156147c15750600792915050565b6002810154610100900460ff16156147dc5750600292915050565b600083815261016360205260408120546001600160401b0316908190036148455760405162461bcd60e51b815260206004820152601d60248201527f476f7665726e6f723a20756e6b6e6f776e2070726f706f73616c206964000000604482015260640161043d565b600061484f611f8d565b65ffffffffffff16905080821061486b57506000949350505050565b6000614876866128ba565b905081811061488b5750600195945050505050565b61489486615191565b80156148b7575060008681526101c6602052604090206006810154600590910154115b156148c85750600495945050505050565b50600395945050505050565b60006112f785858585615370565b6000816000036148f457506000919050565b6000600161490184615426565b901c6001901b9050600181848161491a5761491a6169a9565b048201901c90506001818481614932576149326169a9565b048201901c9050600181848161494a5761494a6169a9565b048201901c90506001818481614962576149626169a9565b048201901c9050600181848161497a5761497a6169a9565b048201901c90506001818481614992576149926169a9565b048201901c905060018184816149aa576149aa6169a9565b048201901c9050612011818285816149c4576149c46169a9565b046154ba565b60005b818310156142a85760006149e184846154c9565b60008781526020902090915063ffffffff86169082015463ffffffff161115614a0c57809250614a1a565b614a17816001616b7a565b93505b506149cd565b600033614a2d81846154e4565b614a795760405162461bcd60e51b815260206004820152601d60248201527f476f7665726e6f723a2070726f706f7365722072657374726963746564000000604482015260640161043d565b6000614a83611f8d565b65ffffffffffff169050614a956128ae565b614aa483610de4600185616996565b1015614b0c5760405162461bcd60e51b815260206004820152603160248201527f476f7665726e6f723a2070726f706f73657220766f7465732062656c6f7720706044820152701c9bdc1bdcd85b081d1a1c995cda1bdb19607a1b606482015260840161043d565b6000614b2188888888805190602001206129d5565b90508651885114614b445760405162461bcd60e51b815260040161043d90616c67565b8551885114614b655760405162461bcd60e51b815260040161043d90616c67565b6000885111614bb65760405162461bcd60e51b815260206004820152601860248201527f476f7665726e6f723a20656d7074792070726f706f73616c0000000000000000604482015260640161043d565b600081815261016360205260409020546001600160401b031615614c265760405162461bcd60e51b815260206004820152602160248201527f476f7665726e6f723a2070726f706f73616c20616c72656164792065786973746044820152607360f81b606482015260840161043d565b6000614c326101945490565b614c3c9084616b7a565b90506000614c4a6101955490565b614c549083616b7a565b90506040518060e00160405280614c6a846155d5565b6001600160401b031681526001600160a01b038716602082015260006040820152606001614c97836155d5565b6001600160401b03908116825260006020808401829052604080850183905260609485018390528883526101638252918290208551815492870151878501519186166001600160e01b031990941693909317600160401b6001600160a01b039094168402176001600160e01b0316600160e01b60e09290921c91909102178155938501516080860151908416921c0217600183015560a08301516002909201805460c09094015161ffff1990941692151561ff00191692909217610100931515939093029290921790558a517f7d84a6263ae0d98d3329bd7b46bb4e8d6f98cd35a7adb45c274c8b7fd5ebd5e091859188918e918e91811115614d9c57614d9c615cd1565b604051908082528060200260200182016040528015614dcf57816020015b6060815260200190600190039081614dba5790505b508d88888f604051614de999989796959493929190616ca8565b60405180910390a1509098975050505050505050565b600054610100900460ff16614e265760405162461bcd60e51b815260040161043d90616baf565b609a614e328382616d86565b50609b614e3f8282616d86565b50506000609881905560995550565b600054610100900460ff16614e755760405162461bcd60e51b815260040161043d90616baf565b610162614e828282616d86565b5050565b600054610100900460ff16614ead5760405162461bcd60e51b815260040161043d90616baf565b614eb683613998565b614ebf82613eab565b613b7781613f4e565b600054610100900460ff16614eef5760405162461bcd60e51b815260040161043d90616baf565b6101f880546001600160a01b0319166001600160a01b0392909216919091179055565b600054610100900460ff166120c45760405162461bcd60e51b815260040161043d90616baf565b600054610100900460ff166111765760405162461bcd60e51b815260040161043d90616baf565b600054610100900460ff16612a8e5760405162461bcd60e51b815260040161043d90616baf565b6000818311614f965781612011565b5090919050565b815115614fad5781518083602001fd5b8060405162461bcd60e51b815260040161043d9190615e8a565b60007f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f614ff261563d565b614ffa615696565b60408051602081019490945283019190915260608201524660808201523060a082015260c00160405160208183030381529060405280519060200120905090565b600085815261016360205260408120600161505588611721565b600781111561506657615066616299565b146150bf5760405162461bcd60e51b815260206004820152602360248201527f476f7665726e6f723a20766f7465206e6f742063757272656e746c792061637460448201526269766560e81b606482015260840161043d565b80546000906150d99088906001600160401b031686613d3b565b90506150e888888884886156c7565b835160000361513d57866001600160a01b03167fb8e138887d0aa13bab447e82de9d5c1777041ecd21ca36ba824ff1e6c07ddda4898884896040516151309493929190616e45565b60405180910390a2611716565b866001600160a01b03167fe2babfbac5889a709b63bb7f598b324e08bc5a4fb9ec647fb3cbc9ec07eb8712898884898960405161517e959493929190616e6d565b60405180910390a2979650505050505050565b60008181526101c66020526040812060058101546151c8610e5085600090815261016360205260409020546001600160401b031690565b11159392505050565b8254600090819080156153175760006151ef87613967600185616996565b60408051808201909152905463ffffffff808216808452600160201b9092046001600160e01b0316602084015291925090871610156152705760405162461bcd60e51b815260206004820152601b60248201527f436865636b706f696e743a2064656372656173696e67206b6579730000000000604482015260640161043d565b805163ffffffff8088169116036152b8578461529188613967600186616996565b80546001600160e01b0392909216600160201b0263ffffffff909216919091179055615307565b6040805180820190915263ffffffff80881682526001600160e01b0380881660208085019182528b54600181018d5560008d81529190912094519151909216600160201b029216919091179101555b6020015192508391506146e39050565b50506040805180820190915263ffffffff80851682526001600160e01b0380851660208085019182528854600181018a5560008a815291822095519251909316600160201b0291909316179201919091559050816146e3565b60008061537f86868686615865565b600081815261022c6020526040902054909150156112f75761022b54600082815261022c60205260409081902054905163c4d252f560e01b81526001600160a01b039092169163c4d252f5916153db9160040190815260200190565b600060405180830381600087803b1580156153f557600080fd5b505af1158015615409573d6000803e3d6000fd5b505050600082815261022c60205260408120555095945050505050565b600080608083901c1561543b57608092831c92015b604083901c1561544d57604092831c92015b602083901c1561545f57602092831c92015b601083901c1561547157601092831c92015b600883901c1561548357600892831c92015b600483901c1561549557600492831c92015b600283901c156154a757600292831c92015b600183901c15610f695760010192915050565b6000818310614f965781612011565b60006154d860028484186169bf565b61201190848416616b7a565b805160009060348110156154fc576001915050610f69565b82810160131901516001600160a01b031981166b046e0e4dee0dee6cae47a60f60a31b1461552f57600192505050610f69565b60008061553d602885616996565b90505b838110156155b4576000806155748884815181106155605761556061687d565b01602001516001600160f81b031916615972565b915091508161558c5760019650505050505050610f69565b8060ff166004856001600160a01b0316901b1793505050806155ad906168a9565b9050615540565b50856001600160a01b0316816001600160a01b031614935050505092915050565b60006001600160401b038211156138e15760405162461bcd60e51b815260206004820152602660248201527f53616665436173743a2076616c756520646f65736e27742066697420696e203660448201526534206269747360d01b606482015260840161043d565b600080615648613cb6565b80519091501561565f578051602090910120919050565b609854801561566e5792915050565b7fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a4709250505090565b6000806156a1613cc5565b8051909150156156b8578051602090910120919050565b609954801561566e5792915050565b60008581526101c6602090815260408083206001600160a01b038816845260088101909252909120805460ff16156157575760405162461bcd60e51b815260206004820152602d60248201527f476f7665726e6f72436f6d7061746962696c697479427261766f3a20766f746560448201526c08185b1c9958591e4818d85cdd609a1b606482015260840161043d565b805460ff86166101000261ffff1990911617600117815561577784615a04565b81546001600160601b039190911662010000026dffffffffffffffffffffffff00001990911617815560ff85166157c757838260060160008282546157bc9190616b7a565b909155506129cc9050565b60001960ff8616016157e757838260050160008282546157bc9190616b7a565b60011960ff86160161580757838260070160008282546157bc9190616b7a565b60405162461bcd60e51b815260206004820152602d60248201527f476f7665726e6f72436f6d7061746962696c697479427261766f3a20696e766160448201526c6c696420766f7465207479706560981b606482015260840161043d565b600080615874868686866129d5565b9050600061588182611721565b9050600281600781111561589757615897616299565b141580156158b7575060068160078111156158b4576158b4616299565b14155b80156158d5575060078160078111156158d2576158d2616299565b14155b6159215760405162461bcd60e51b815260206004820152601d60248201527f476f7665726e6f723a2070726f706f73616c206e6f7420616374697665000000604482015260640161043d565b6000828152610163602052604090819020600201805461ff001916610100179055517f789cf55be980739dad1d0699b93b58e806b51c9d96619bfa8fe0a28abaa7b30c906131e09084815260200190565b60008060f883901c602f8111801561598d5750603a8160ff16105b156159a257600194602f199091019350915050565b8060ff1660401080156159b8575060478160ff16105b156159cd576001946036199091019350915050565b8060ff1660601080156159e3575060678160ff16105b156159f8576001946056199091019350915050565b50600093849350915050565b60006001600160601b038211156138e15760405162461bcd60e51b815260206004820152602660248201527f53616665436173743a2076616c756520646f65736e27742066697420696e203960448201526536206269747360d01b606482015260840161043d565b828054828255906000526020600020908101928215615ac1579160200282015b82811115615ac157825182546001600160a01b0319166001600160a01b03909116178255602090920191600190910190615a8c565b506138e1929150615bac565b828054828255906000526020600020908101928215615ac1579160200282015b82811115615ac1578251825591602001919060010190615aed565b828054828255906000526020600020908101928215615b4e579160200282015b82811115615b4e5782518290615b3e9082616d86565b5091602001919060010190615b28565b506138e1929150615bc1565b828054828255906000526020600020908101928215615ba0579160200282015b82811115615ba05782518290615b909082616d86565b5091602001919060010190615b7a565b506138e1929150615bde565b5b808211156138e15760008155600101615bad565b808211156138e1576000615bd58282615bfb565b50600101615bc1565b808211156138e1576000615bf28282615bfb565b50600101615bde565b508054615c0790616843565b6000825580601f10615c17575050565b601f01602090049060005260206000209081019061117f9190615bac565b600060208284031215615c4757600080fd5b5035919050565b600060208284031215615c6057600080fd5b81356001600160e01b03198116811461201157600080fd5b803560ff8116811461190957600080fd5b60008083601f840112615c9b57600080fd5b5081356001600160401b03811115615cb257600080fd5b602083019150836020828501011115615cca57600080fd5b9250929050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b0381118282101715615d0f57615d0f615cd1565b604052919050565b60006001600160401b03821115615d3057615d30615cd1565b50601f01601f191660200190565b600082601f830112615d4f57600080fd5b8135615d62615d5d82615d17565b615ce7565b818152846020838601011115615d7757600080fd5b816020850160208301376000918101602001919091529392505050565b60008060008060008060008060e0898b031215615db057600080fd5b88359750615dc060208a01615c78565b965060408901356001600160401b0380821115615ddc57600080fd5b615de88c838d01615c89565b909850965060608b0135915080821115615e0157600080fd5b50615e0e8b828c01615d3e565b945050615e1d60808a01615c78565b925060a0890135915060c089013590509295985092959890939650565b60005b83811015615e55578181015183820152602001615e3d565b50506000910152565b60008151808452615e76816020860160208601615e3a565b601f01601f19169290920160200192915050565b6020815260006120116020830184615e5e565b6001600160a01b038116811461117f57600080fd5b60008060008060808587031215615ec857600080fd5b8435615ed381615e9d565b93506020850135615ee381615e9d565b92506040850135915060608501356001600160401b03811115615f0557600080fd5b615f1187828801615d3e565b91505092959194509250565b60006001600160401b03821115615f3657615f36615cd1565b5060051b60200190565b600082601f830112615f5157600080fd5b81356020615f61615d5d83615f1d565b82815260059290921b84018101918181019086841115615f8057600080fd5b8286015b84811015615fa4578035615f9781615e9d565b8352918301918301615f84565b509695505050505050565b600082601f830112615fc057600080fd5b81356020615fd0615d5d83615f1d565b82815260059290921b84018101918181019086841115615fef57600080fd5b8286015b84811015615fa45780358352918301918301615ff3565b600082601f83011261601b57600080fd5b8135602061602b615d5d83615f1d565b82815260059290921b8401810191818101908684111561604a57600080fd5b8286015b84811015615fa45780356001600160401b0381111561606d5760008081fd5b61607b8986838b0101615d3e565b84525091830191830161604e565b6000806000806080858703121561609f57600080fd5b84356001600160401b03808211156160b657600080fd5b6160c288838901615f40565b955060208701359150808211156160d857600080fd5b6160e488838901615faf565b945060408701359150808211156160fa57600080fd5b506161078782880161600a565b949793965093946060013593505050565b60006020828403121561612a57600080fd5b813561201181615e9d565b600081518084526020808501945080840160005b8381101561616e5781516001600160a01b031687529582019590820190600101616149565b509495945050505050565b600081518084526020808501945080840160005b8381101561616e5781518752958201959082019060010161618d565b600081518084526020808501808196508360051b8101915082860160005b858110156161f15782840389526161df848351615e5e565b988501989350908401906001016161c7565b5091979650505050505050565b6080815260006162116080830187616135565b82810360208401526162238187616179565b9050828103604084015261623781866161a9565b9050828103606084015261171681856161a9565b600080600080600060a0868803121561626357600080fd5b8535945061627360208701615c78565b935061628160408701615c78565b94979396509394606081013594506080013592915050565b634e487b7160e01b600052602160045260246000fd5b60208101600883106162d157634e487b7160e01b600052602160045260246000fd5b91905290565b600080604083850312156162ea57600080fd5b8235915060208301356162fc81615e9d565b809150509250929050565b6000806040838503121561631a57600080fd5b8235915061632a60208401615c78565b90509250929050565b60008060008060006080868803121561634b57600080fd5b8535945061635b60208701615c78565b935060408601356001600160401b038082111561637757600080fd5b61638389838a01615c89565b9095509350606088013591508082111561639c57600080fd5b506163a988828901615d3e565b9150509295509295909350565b600080600080606085870312156163cc57600080fd5b843593506163dc60208601615c78565b925060408501356001600160401b038111156163f757600080fd5b61640387828801615c89565b95989497509550505050565b6000806000806080858703121561642557600080fd5b84356001600160401b038082111561643c57600080fd5b61644888838901615f40565b9550602087013591508082111561645e57600080fd5b61646a88838901615faf565b9450604087013591508082111561648057600080fd5b61648c8883890161600a565b935060608701359150808211156164a257600080fd5b50615f1187828801615d3e565b60ff60f81b8816815260e0602082015260006164ce60e0830189615e5e565b82810360408401526164e08189615e5e565b606084018890526001600160a01b038716608085015260a0840186905283810360c085015290506110598185616179565b60008060006060848603121561652657600080fd5b833561653181615e9d565b92506020840135915060408401356001600160401b0381111561655357600080fd5b61655f86828701615d3e565b9150509250925092565b6000806000806040858703121561657f57600080fd5b84356001600160401b038082111561659657600080fd5b6165a288838901615c89565b909650945060208701359150808211156165bb57600080fd5b5061640387828801615c89565b600080600080600060a086880312156165e057600080fd5b85356165eb81615e9d565b945060208601356165fb81615e9d565b935060408601356001600160401b038082111561661757600080fd5b61662389838a01615faf565b9450606088013591508082111561663957600080fd5b61664589838a01615faf565b9350608088013591508082111561639c57600080fd5b6000806000806060858703121561667157600080fd5b843561667c81615e9d565b93506020850135925060408501356001600160401b038111156163f757600080fd5b6000602082840312156166b057600080fd5b81356001600160401b038116811461201157600080fd5b600080600080600060a086880312156166df57600080fd5b85356001600160401b03808211156166f657600080fd5b61670289838a01615f40565b9650602088013591508082111561671857600080fd5b61672489838a01615faf565b9550604088013591508082111561673a57600080fd5b61674689838a0161600a565b9450606088013591508082111561675c57600080fd5b61664589838a0161600a565b6000806040838503121561677b57600080fd5b823561678681615e9d565b946020939093013593505050565b600080600080600060a086880312156167ac57600080fd5b85356167b781615e9d565b945060208601356167c781615e9d565b9350604086013592506060860135915060808601356001600160401b038111156167f057600080fd5b6163a988828901615d3e565b8183823760009101908152919050565b60208082526018908201527f476f7665726e6f723a206f6e6c79476f7665726e616e63650000000000000000604082015260600190565b600181811c9082168061685757607f821691505b60208210810361687757634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b6000600182016168bb576168bb616893565b5060010190565b65ffffffffffff8281168282160390808211156168e1576168e1616893565b5092915050565b60208082526021908201527f476f7665726e6f723a2070726f706f73616c206e6f74207375636365737366756040820152601b60fa1b606082015260800190565b60006020828403121561693b57600080fd5b81516001600160401b0381111561695157600080fd5b8201601f8101841361696257600080fd5b8051616970615d5d82615d17565b81815285602083850101111561698557600080fd5b6112f7826020830160208601615e3a565b81810381811115610f6957610f69616893565b634e487b7160e01b600052601260045260246000fd5b6000826169dc57634e487b7160e01b600052601260045260246000fd5b500490565b6000602082840312156169f357600080fd5b815165ffffffffffff8116811461201157600080fd5b600060208284031215616a1b57600080fd5b5051919050565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b604081526000616a5f604083018688616a22565b8281036020840152611716818587616a22565b608081526000616a856080830187616135565b8281036020840152616a978187616179565b90508281036040840152616aab81866161a9565b91505082606083015295945050505050565b8082028115828204841417610f6957610f69616893565b60a081526000616ae760a0830188616135565b8281036020840152616af98188616179565b90508281036040840152616b0d81876161a9565b60608401959095525050608001529392505050565b60c081526000616b3560c0830189616135565b8281036020840152616b478189616179565b90508281036040840152616b5b81886161a9565b60608401969096525050608081019290925260a0909101529392505050565b80820180821115610f6957610f69616893565b600060208284031215616b9f57600080fd5b8151801515811461201157600080fd5b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b60008251616c0c818460208701615e3a565b9190910192915050565b6001600160e01b0319831681528151600090616c39816004850160208701615e3a565b919091016004019392505050565b6001600160401b038181168382160190808211156168e1576168e1616893565b60208082526021908201527f476f7665726e6f723a20696e76616c69642070726f706f73616c206c656e67746040820152600d60fb1b606082015260800190565b8981526001600160a01b038916602082015261012060408201819052600090616cd38382018b616135565b90508281036060840152616ce7818a616179565b90508281036080840152616cfb81896161a9565b905082810360a0840152616d0f81886161a9565b90508560c08401528460e0840152828103610100840152616d308185615e5e565b9c9b505050505050505050505050565b601f821115613b7757600081815260208120601f850160051c81016020861015616d675750805b601f850160051c820191505b8181101561174f57828155600101616d73565b81516001600160401b03811115616d9f57616d9f615cd1565b616db381616dad8454616843565b84616d40565b602080601f831160018114616de85760008415616dd05750858301515b600019600386901b1c1916600185901b17855561174f565b600085815260208120601f198616915b82811015616e1757888601518255948401946001909101908401616df8565b5085821015616e355787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b84815260ff84166020820152826040820152608060608201526000611b066080830184615e5e565b85815260ff8516602082015283604082015260a060608201526000616e9560a0830185615e5e565b8281036080840152611c1f8185615e5e56fe476f7665726e6f723a2072656c617920726576657274656420776974686f7574206d657373616765a164736f6c6343000811000a \ No newline at end of file diff --git a/core/systemcontracts/pascal/rialto/LightClientContract b/core/systemcontracts/pascal/rialto/LightClientContract new file mode 100644 index 0000000000..14384a154c --- /dev/null +++ b/core/systemcontracts/pascal/rialto/LightClientContract @@ -0,0 +1 @@ +608060405234801561001057600080fd5b50600436106102115760003560e01c8063aad5606311610125578063dda83148116100ad578063e2761af01161007c578063e2761af01461064f578063e405bbc314610673578063ea54b2aa1461067b578063f9a2bbc714610683578063fd6a68791461068b57610211565b8063dda83148146105f3578063df5fe70414610619578063df8079e91461063f578063e1c7392a1461064757610211565b8063c81b1662116100f4578063c81b16621461051e578063cba510a914610526578063d81698791461054c578063da8d08f0146105c5578063dc927faf146105eb57610211565b8063aad5606314610429578063ab51bb9614610431578063ac43175114610452578063adc879e91461051657610211565b8063564b81ef116101a85780637e434d54116101775780637e434d54146103ed5780639dc09262146103f5578063a1a11bf5146103fd578063a78abc1614610405578063aa82dce11461042157610211565b8063564b81ef1461029b5780635c5ae8db146103185780636e47b482146103dd57806375d47a0a146103e557610211565b806343756e5c116101e457806343756e5c14610264578063493279b11461026c57806351b4dce31461028b57806351e806721461029357610211565b80630e2374a5146102165780632657e9b61461023a578063280870281461025457806333f7798d1461025c575b600080fd5b61021e610693565b604080516001600160a01b039092168252519081900360200190f35b610242610699565b60408051918252519081900360200190f35b61021e6106a4565b6102426106aa565b61021e6106b0565b6102746106b6565b6040805161ffff9092168252519081900360200190f35b61021e6106bc565b61021e6106c2565b6102a36106c8565b6040805160208082528351818301528351919283929083019185019080838360005b838110156102dd5781810151838201526020016102c5565b50505050905090810190601f16801561030a5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b61033e6004803603602081101561032e57600080fd5b50356001600160401b03166107d3565b60405180856001600160401b03166001600160401b0316815260200184815260200183815260200180602001828103825283818151815260200191508051906020019080838360005b8381101561039f578181015183820152602001610387565b50505050905090810190601f1680156103cc5780820380516001836020036101000a031916815260200191505b509550505050505060405180910390f35b61021e61088e565b61021e610894565b61021e61089a565b61021e6108a0565b61021e6108a6565b61040d6108ac565b604080519115158252519081900360200190f35b61021e6108b5565b61021e6108bb565b6104396108c1565b6040805163ffffffff9092168252519081900360200190f35b6105146004803603604081101561046857600080fd5b81019060208101813564010000000081111561048357600080fd5b82018360208201111561049557600080fd5b803590602001918460018302840111640100000000831117156104b757600080fd5b9193909290916020810190356401000000008111156104d557600080fd5b8201836020820111156104e757600080fd5b8035906020019184600183028401116401000000008311171561050957600080fd5b5090925090506108c6565b005b610242610997565b61021e61099d565b6102426004803603602081101561053c57600080fd5b50356001600160401b03166109a3565b61040d6004803603604081101561056257600080fd5b81019060208101813564010000000081111561057d57600080fd5b82018360208201111561058f57600080fd5b803590602001918460018302840111640100000000831117156105b157600080fd5b9193509150356001600160401b03166109c2565b61021e600480360360208110156105db57600080fd5b50356001600160401b0316610a82565b61021e610a9d565b61021e6004803603602081101561060957600080fd5b50356001600160401b0316610aa3565b61040d6004803603602081101561062f57600080fd5b50356001600160401b0316610ac7565b61021e610b09565b610514610b0f565b610657610baf565b604080516001600160401b039092168252519081900360200190f35b610657610bbe565b6102a3610bd9565b61021e610bf8565b61021e610bfe565b61200181565b662386f26fc1000081565b61200581565b60055481565b61100181565b6102ca81565b61200681565b61200081565b604080516020808252818301909252606091829190602082018180368337505060045460208301525090506000805b60208160ff16101561073e57828160ff168151811061071257fe5b01602001516001600160f81b0319161561073157816001019150610736565b61073e565b6001016106f7565b5060608160ff166040519080825280601f01601f19166020018201604052801561076f576020820181803683370190505b50905060005b8260ff168160ff1610156107cb57838160ff168151811061079257fe5b602001015160f81c60f81b828260ff16815181106107ac57fe5b60200101906001600160f81b031916908160001a905350600101610775565b509250505090565b60016020818152600092835260409283902080548184015460028084015460038501805489516101009982161599909902600019011692909204601f81018790048702880187019098528787526001600160401b0390931696919592949091908301828280156108845780601f1061085957610100808354040283529160200191610884565b820191906000526020600020905b81548152906001019060200180831161086757829003601f168201915b5050505050905084565b61100581565b61100881565b61200381565b61100781565b61100681565b60005460ff1681565b61200281565b61300081565b600081565b60005460ff1661091d576040805162461bcd60e51b815260206004820152601960248201527f74686520636f6e7472616374206e6f7420696e69742079657400000000000000604482015290519081900360640190fd5b336110071461095d5760405162461bcd60e51b815260040180806020018281038252602e815260200180610c0f602e913960400191505060405180910390fd5b6040805162461bcd60e51b815260206004820152600a60248201526919195c1c9958d85d195960b21b604482015290519081900360640190fd5b60045481565b61100281565b6001600160401b03166000908152600160208190526040909120015490565b60408051630a83aaa960e31b815233600482015290516000916110069163541d554891602480820192602092909190829003018186803b158015610a0557600080fd5b505afa158015610a19573d6000803e3d6000fd5b505050506040513d6020811015610a2f57600080fd5b505161095d576040805162461bcd60e51b815260206004820152601f60248201527f746865206d73672073656e646572206973206e6f7420612072656c6179657200604482015290519081900360640190fd5b6002602052600090815260409020546001600160a01b031681565b61100381565b6001600160401b03166000908152600260205260409020546001600160a01b031690565b6001600160401b0381166000908152600260205260408120546001600160a01b0316151580610b0357506003546001600160401b038381169116145b92915050565b61200481565b60005460ff1615610b67576040805162461bcd60e51b815260206004820152601960248201527f74686520636f6e747261637420616c726561647920696e697400000000000000604482015290519081900360640190fd5b600080610b8e6040518061024001604052806102208152602001610c3d6102209139610c04565b505160045550506000805460ff19166001179055662386f26fc10000600555565b6003546001600160401b031681565b6003546801000000000000000090046001600160401b031681565b6040518061024001604052806102208152602001610c3d610220913981565b61100081565b61100481565b805160209091019156fe746865206d6573736167652073656e646572206d75737420626520676f7665726e616e636520636f6e747261637442696e616e63652d436861696e2d5469677269730000000000000000000000000000000006915167cedaf7bbf7df47d932fdda630527ee648562cf3e52c5e5f46156a3a971a4ceb443c53a50d8653ef8cf1e5716da68120fb51b636dc6d111ec3277b098ecd42d49d3769d8a1f78b4c17a965f7a30d4181fabbd1f969f46d3c8e83b5ad4845421d8000000e8d4a510002ba4e81542f437b7ae1f8a35ddb233c789a8dc22734377d9b6d63af1ca403b61000000e8d4a51000df8da8c5abfdb38595391308bb71e5a1e0aabdc1d0cf38315d50d6be939b2606000000e8d4a51000b6619edca4143484800281d698b70c935e9152ad57b31d85c05f2f79f64b39f3000000e8d4a510009446d14ad86c8d2d74780b0847110001a1c2e252eedfea4753ebbbfce3a22f52000000e8d4a510000353c639f80cc8015944436dab1032245d44f912edc31ef668ff9f4a45cd0599000000e8d4a51000e81d3797e0544c3a718e1f05f0fb782212e248e784c1a851be87e77ae0db230e000000e8d4a510005e3fcda30bd19d45c4b73688da35e7da1fce7c6859b2c1f20ed5202d24144e3e000000e8d4a51000b06a59a2d75bf5d014fce7c999b5e71e7a960870f725847d4ba3235baeaa08ef000000e8d4a510000c910e2fe650e4e01406b3310b489fb60a84bc3ff5c5bee3a56d5898b6a8af32000000e8d4a5100071f2d7b8ec1c8b99a653429b0118cd201f794f409d0fea4d65b1b662f2b00063000000e8d4a51000a164736f6c6343000604000a \ No newline at end of file diff --git a/core/systemcontracts/pascal/rialto/RelayerHubContract b/core/systemcontracts/pascal/rialto/RelayerHubContract new file mode 100644 index 0000000000..b62d8c0e6f --- /dev/null +++ b/core/systemcontracts/pascal/rialto/RelayerHubContract @@ -0,0 +1 @@ +608060405234801561001057600080fd5b50600436106101fb5760003560e01c80639dc092621161011a578063dc927faf116100ad578063e79a198f1161007c578063e79a198f1461047e578063f3ae241514610486578063f9a2bbc7146104ac578063fd30d9b8146104b4578063fd6a6879146104bc576101fb565b8063dc927faf14610466578063dd91d1c514610200578063df8079e91461046e578063e1c7392a14610476576101fb565b8063aad56063116100e9578063aad5606314610373578063ab51bb961461037b578063ac4317511461039c578063c81b16621461045e576101fb565b80639dc0926214610353578063a1a11bf51461035b578063a78abc1614610363578063aa82dce11461036b576101fb565b80636a6a419e116101925780637ae23088116101615780637ae23088146103035780637e434d541461031d5780638f83ab131461032557806395468d261461034b576101fb565b80636a6a419e146102a75780636e47b482146102cd57806375d47a0a146102d557806378beee67146102dd576101fb565b8063493279b1116101ce578063493279b11461023e57806351b4dce31461025d57806351e8067214610265578063541d55481461026d576101fb565b806303aff02b146102005780630e2374a51461020a578063280870281461022e57806343756e5c14610236575b600080fd5b6102086104c4565b005b6102126104fe565b604080516001600160a01b039092168252519081900360200190f35b610212610504565b61021261050a565b610246610510565b6040805161ffff9092168252519081900360200190f35b610212610516565b61021261051c565b6102936004803603602081101561028357600080fd5b50356001600160a01b0316610522565b604080519115158252519081900360200190f35b610293600480360360208110156102bd57600080fd5b50356001600160a01b0316610540565b61021261055e565b610212610564565b610208600480360360208110156102f357600080fd5b50356001600160a01b031661056a565b61030b6105b8565b60408051918252519081900360200190f35b6102126105c5565b6102086004803603602081101561033b57600080fd5b50356001600160a01b03166105cb565b61030b610628565b610212610634565b61021261063a565b610293610640565b610212610649565b61021261064f565b610383610655565b6040805163ffffffff9092168252519081900360200190f35b610208600480360360408110156103b257600080fd5b8101906020810181356401000000008111156103cd57600080fd5b8201836020820111156103df57600080fd5b8035906020019184600183028401116401000000008311171561040157600080fd5b91939092909160208101903564010000000081111561041f57600080fd5b82018360208201111561043157600080fd5b8035906020019184600183028401116401000000008311171561045357600080fd5b50909250905061065a565b6102126106ed565b6102126106f3565b6102126106f9565b6102086106ff565b610208610781565b6102936004803603602081101561049c57600080fd5b50356001600160a01b031661093a565b610212610958565b61029361095e565b610212610967565b6040805162461bcd60e51b815260206004820152600a60248201526919195c1c9958d85d195960b21b604482015290519081900360640190fd5b61200181565b61200581565b61100181565b6102ca81565b61200681565b61200081565b6001600160a01b031660009081526007602052604090205460ff1690565b6001600160a01b031660009081526008602052604090205460ff1690565b61100581565b61100881565b3360009081526008602052604090205460ff166104c45760405162461bcd60e51b8152600401808060200182810382526024815260200180610a686024913960400191505060405180910390fd5b68056bc75e2d6310000081565b61200381565b3360009081526005602052604090205460ff166104c4576040805162461bcd60e51b81526020600482015260166024820152751b585b9859d95c88191bd95cc81b9bdd08195e1a5cdd60521b604482015290519081900360640190fd5b67016345785d8a000081565b61100781565b61100681565b60005460ff1681565b61200281565b61300081565b600081565b60005460ff166106ad576040805162461bcd60e51b81526020600482015260196024820152781d1a194818dbdb9d1c9858dd081b9bdd081a5b9a5d081e595d603a1b604482015290519081900360640190fd5b33611007146104c45760405162461bcd60e51b815260040180806020018281038252602e815260200180610a8c602e913960400191505060405180910390fd5b61100281565b61100381565b61200481565b60005460ff1615610757576040805162461bcd60e51b815260206004820152601960248201527f74686520636f6e747261637420616c726561647920696e697400000000000000604482015290519081900360640190fd5b68056bc75e2d63100000600190815567016345785d8a00006002556000805460ff19169091179055565b3360009081526004602052604090205460ff166107dc576040805162461bcd60e51b81526020600482015260146024820152731c995b185e595c88191bc81b9bdd08195e1a5cdd60621b604482015290519081900360640190fd5b60005460ff1661082f576040805162461bcd60e51b81526020600482015260196024820152781d1a194818dbdb9d1c9858dd081b9bdd081a5b9a5d081e595d603a1b604482015290519081900360640190fd5b610837610a4d565b5033600081815260036020908152604091829020825180840190935280548084526001909101549183018290529192916108fc9161087b919063ffffffff61096d16565b6040518115909202916000818181858888f193505050501580156108a3573d6000803e3d6000fd5b50602081015160405161100291829181156108fc0291906000818181858888f193505050501580156108d9573d6000803e3d6000fd5b50336000818152600460209081526040808320805460ff191690556003825280832083815560010192909255815192835290517fd17202129b83db7880d6b9f25df81c58ad46f7e0e2c92236b1aa10663a4876679281900390910190a15050565b6001600160a01b031660009081526005602052604090205460ff1690565b61100081565b600a5460ff1681565b61100481565b60006109af83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506109b6565b9392505050565b60008184841115610a455760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b83811015610a0a5781810151838201526020016109f2565b50505050905090810190601f168015610a375780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b60405180604001604052806000815260200160008152509056fe72656c61796572206973206e6f7420612070726f766973696f6e616c2072656c61796572746865206d6573736167652073656e646572206d75737420626520676f7665726e616e636520636f6e7472616374a164736f6c6343000604000a \ No newline at end of file diff --git a/core/systemcontracts/pascal/rialto/RelayerIncentivizeContract b/core/systemcontracts/pascal/rialto/RelayerIncentivizeContract new file mode 100644 index 0000000000..d8422c6bca --- /dev/null +++ b/core/systemcontracts/pascal/rialto/RelayerIncentivizeContract @@ -0,0 +1 @@ +60806040526004361061024a5760003560e01c8063930e1b0911610139578063ace9fcc2116100b6578063df8079e91161007a578063df8079e9146106d5578063e1c7392a146106ea578063e89a3020146106ff578063f9a2bbc714610729578063fd6a68791461073e578063fdd31fcd1461075357610251565b8063ace9fcc21461066c578063c81b166214610681578063d0ab528a14610696578063dc927faf146106ab578063dcae76ab146106c057610251565b8063a7c6a59d116100fd578063a7c6a59d1461052e578063aa82dce114610543578063aad5606314610558578063ab51bb961461056d578063ac4317511461059b57610251565b8063930e1b09146104a75780639dc09262146104da578063a1a11bf5146104ef578063a3c3c0ad14610504578063a78abc161461051957610251565b806343756e5c116101c75780636f93d2e61161018b5780636f93d2e6146103f457806374f2272d1461045357806375d47a0a146104685780637e146cc51461047d5780637e434d541461049257610251565b806343756e5c14610374578063493279b11461038957806351b4dce3146103b557806351e80672146103ca5780636e47b482146103df57610251565b80631b20087c1161020e5780631b20087c146102ed5780631c64331214610302578063280870281461032c5780633a9756121461025657806340bb43c01461034157610251565b8063081e9d1314610256578063093f2fc41461027d5780630e2374a51461029257806310e06a76146102c357806312950c46146102d857610251565b3661025157005b600080fd5b34801561026257600080fd5b5061026b610786565b60408051918252519081900360200190f35b34801561028957600080fd5b5061026b61078b565b34801561029e57600080fd5b506102a7610790565b604080516001600160a01b039092168252519081900360200190f35b3480156102cf57600080fd5b5061026b610796565b3480156102e457600080fd5b5061026b61079c565b3480156102f957600080fd5b5061026b6107a2565b34801561030e57600080fd5b506102a76004803603602081101561032557600080fd5b50356107a8565b34801561033857600080fd5b506102a76107cf565b34801561034d57600080fd5b5061026b6004803603602081101561036457600080fd5b50356001600160a01b03166107d5565b34801561038057600080fd5b506102a76107e7565b34801561039557600080fd5b5061039e6107ed565b6040805161ffff9092168252519081900360200190f35b3480156103c157600080fd5b506102a76107f3565b3480156103d657600080fd5b506102a76107f9565b3480156103eb57600080fd5b506102a76107ff565b34801561040057600080fd5b5061043f6004803603608081101561041757600080fd5b506001600160a01b038135811691602081013590911690604081013590606001351515610805565b604080519115158252519081900360200190f35b34801561045f57600080fd5b5061026b6108d7565b34801561047457600080fd5b506102a76108dd565b34801561048957600080fd5b5061026b6108e3565b34801561049e57600080fd5b506102a76108e8565b3480156104b357600080fd5b5061026b600480360360208110156104ca57600080fd5b50356001600160a01b03166108ee565b3480156104e657600080fd5b506102a7610900565b3480156104fb57600080fd5b506102a7610906565b34801561051057600080fd5b5061026b61090c565b34801561052557600080fd5b5061043f610912565b34801561053a57600080fd5b5061026b61091b565b34801561054f57600080fd5b506102a7610921565b34801561056457600080fd5b506102a7610927565b34801561057957600080fd5b5061058261092d565b6040805163ffffffff9092168252519081900360200190f35b3480156105a757600080fd5b5061066a600480360360408110156105be57600080fd5b8101906020810181356401000000008111156105d957600080fd5b8201836020820111156105eb57600080fd5b8035906020019184600183028401116401000000008311171561060d57600080fd5b91939092909160208101903564010000000081111561062b57600080fd5b82018360208201111561063d57600080fd5b8035906020019184600183028401116401000000008311171561065f57600080fd5b509092509050610932565b005b34801561067857600080fd5b5061026b610972565b34801561068d57600080fd5b506102a7610978565b3480156106a257600080fd5b5061026b61097e565b3480156106b757600080fd5b506102a7610984565b3480156106cc57600080fd5b5061026b61098a565b3480156106e157600080fd5b506102a7610990565b3480156106f657600080fd5b5061066a610996565b34801561070b57600080fd5b506102a76004803603602081101561072257600080fd5b5035610a5f565b34801561073557600080fd5b506102a7610a6c565b34801561074a57600080fd5b506102a7610a72565b34801561075f57600080fd5b5061026b6004803603602081101561077657600080fd5b50356001600160a01b0316610a78565b600181565b605081565b61200181565b600b5481565b60015481565b600c5481565b600681815481106107b557fe5b6000918252602090912001546001600160a01b0316905081565b61200581565b60076020526000908152604090205481565b61100181565b6102ca81565b61200681565b61200081565b61100581565b6000805460ff1661085d576040805162461bcd60e51b815260206004820152601960248201527f74686520636f6e7472616374206e6f7420696e69742079657400000000000000604482015290519081900360640190fd5b336120001461089d5760405162461bcd60e51b815260040180806020018281038252602f815260200180610ab9602f913960400191505060405180910390fd5b6040805162461bcd60e51b815260206004820152600a60248201526919195c1c9958d85d195960b21b604482015290519081900360640190fd5b60035481565b61100881565b600581565b61200381565b60056020526000908152604090205481565b61100781565b61100681565b600a5481565b60005460ff1681565b60045481565b61200281565b61300081565b600081565b336110071461089d5760405162461bcd60e51b815260040180806020018281038252602e815260200180610a8b602e913960400191505060405180910390fd5b60025481565b61100281565b600e5481565b61100381565b60095481565b61200481565b60005460ff16156109ee576040805162461bcd60e51b815260206004820152601960248201527f74686520636f6e747261637420616c726561647920696e697400000000000000604482015290519081900360640190fd5b60005460ff1615610a3c576040805162461bcd60e51b8152602060048201526013602482015272185b1c9958591e481a5b9a5d1a585b1a5e9959606a1b604482015290519081900360640190fd5b60018080556005600255600381905560506004556000805460ff19169091179055565b600881815481106107b557fe5b61100081565b61100481565b600d602052600090815260409020548156fe746865206d6573736167652073656e646572206d75737420626520676f7665726e616e636520636f6e7472616374746865206d6573736167652073656e646572206d7573742062652063726f737320636861696e20636f6e7472616374a164736f6c6343000604000a \ No newline at end of file diff --git a/core/systemcontracts/pascal/rialto/SlashContract b/core/systemcontracts/pascal/rialto/SlashContract new file mode 100644 index 0000000000..1eca6b642b --- /dev/null +++ b/core/systemcontracts/pascal/rialto/SlashContract @@ -0,0 +1 @@ +608060405234801561001057600080fd5b506004361061028a5760003560e01c80638256ace61161015c578063c80d4b8f116100ce578063dcc6f15611610087578063dcc6f156146104b6578063df8079e9146104be578063e1c7392a146104c6578063f9a2bbc7146104ce578063fc4333cd146104d6578063fd6a6879146104de5761028a565b8063c80d4b8f14610478578063c81b166214610480578063c8509d8114610405578063c96be4cb14610488578063cc844b731461049b578063dc927faf146104ae5761028a565b8063a78abc1611610120578063a78abc1614610430578063aa82dce114610438578063aad5606314610440578063ab51bb9614610448578063ac0af6291461045d578063ac431751146104655761028a565b80638256ace6146103fd578063831d65d1146104055780639dc09262146104185780639f804f5f14610420578063a1a11bf5146104285761028a565b806343756e5c116102005780635bfb4990116101b95780635bfb4990146103c257806362b72cf5146103d55780636e47b482146103dd57806375d47a0a146103e55780637912a65d146103ed5780637e434d54146103f55761028a565b806343756e5c14610385578063493279b11461038d57806350055f90146103a257806351b4dce3146103aa57806351e80672146103b2578063567a372d146103ba5761028a565b80632808702811610252578063280870281461031957806328aa02b1146103215780633306ccca1461033457806335aa2e441461034957806337c8dab91461035c578063389f4f711461037d5761028a565b80630e2374a51461028f5780631182b875146102ad57806322d1e80b146102cd57806323bac5a2146102e25780632796211814610304575b600080fd5b6102976104e6565b6040516102a49190612b34565b60405180910390f35b6102c06102bb366004612a4d565b6104ec565b6040516102a49190612b6c565b6102d5610552565b6040516102a49190612b61565b6102f56102f0366004612752565b61055b565b6040516102a4939291906132cf565b6103176103123660046128aa565b61057e565b005b6102976108d3565b61031761032f36600461278a565b6108d9565b61033c61090a565b6040516102a49190613297565b610297610357366004612a1d565b61090f565b61036f61036a366004612752565b610936565b6040516102a49291906132c1565b61033c61098d565b610297610993565b610395610999565b6040516102a49190613288565b61033c61099f565b6102976109a5565b6102976109ab565b61033c6109b1565b6103176103d0366004612752565b6109b7565b61033c610a3f565b610297610a45565b610297610a4b565b61033c610a51565b610297610a56565b61036f610a5c565b610317610413366004612a4d565b610a66565b610297610a87565b61033c610a8d565b610297610a93565b6102d5610a99565b610297610aa2565b610297610aa8565b610450610aae565b6040516102a491906132e7565b61033c610ab3565b610317610473366004612901565b610ab8565b61033c611054565b610297611059565b610317610496366004612752565b61105f565b6103176104a936600461296a565b61137c565b61029761181a565b61033c611820565b610297611825565b61031761182b565b610297611877565b61031761187d565b610297611cc6565b61200181565b606033612000146105185760405162461bcd60e51b815260040161050f90613162565b60405180910390fd5b60005460ff1661053a5760405162461bcd60e51b815260040161050f90612c58565b60405162461bcd60e51b815260040161050f90612e27565b60075460ff1681565b600260208190526000918252604090912080546001820154919092015460ff1683565b60005460ff166105a05760405162461bcd60e51b815260040161050f90612c58565b6006546105ad5760146006555b6008546105ba57603c6008555b8151158015906105ca5750805115155b6105e65760405162461bcd60e51b815260040161050f906130f7565b60408051600380825260808201909252606091816020015b60608152602001906001900390816105fe5790505090506106206102ca611ccc565b8160008151811061062d57fe5b602002602001018190525061064183611ce7565b8160018151811061064e57fe5b602002602001018190525061066282611ce7565b8160028151811061066f57fe5b6020026020010181905250606061068582611d3d565b60408051603480825260608281019093529293509091602082018180368337019050509050815160346020830182602086016068600019fa6106c657600080fd5b506014810151603482015160405163436aa28360e11b8152600090612002906386d54506906106f9908690600401612b34565b60206040518083038186803b15801561071157600080fd5b505afa158015610725573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610749919061276e565b6001600160a01b031614156107705760405162461bcd60e51b815260040161050f90612c28565b43600854820110156107945760405162461bcd60e51b815260040161050f90612bc9565b604051631871f7d960e31b81526120029063c38fbec8906107b9908590600401612b34565b600060405180830381600087803b1580156107d357600080fd5b505af11580156107e7573d6000803e3d6000fd5b50506040516335409f7f60e01b815261100092506335409f7f9150610810908590600401612b34565b600060405180830381600087803b15801561082a57600080fd5b505af115801561083e573d6000803e3d6000fd5b50506006546040516309a99b4f60e41b815260646110028031909302049350909150639a99b4f0906108769033908590600401612b48565b602060405180830381600087803b15801561089057600080fd5b505af11580156108a4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108c89190612a35565b505050505050505050565b61200581565b33611000146108fa5760405162461bcd60e51b815260040161050f90612ead565b610905838383611dce565b505050565b603c81565b6001818154811061091c57fe5b6000918252602090912001546001600160a01b0316905081565b600080610941612585565b5050506001600160a01b0316600090815260026020818152604092839020835160608101855281548082526001830154938201849052919093015460ff16151592909301919091529091565b60055481565b61100181565b6102ca81565b60065481565b61200681565b61200081565b60045481565b33611000146109d85760405162461bcd60e51b815260040161050f90612ead565b60005460ff166109fa5760405162461bcd60e51b815260040161050f90612c58565b806001600160a01b03167fd7bc86ff5d08c8ab043edec743302aba2520e6635172a428bc956721db9e2d1c6000604051610a349190612b7f565b60405180910390a250565b60035481565b61100581565b61100881565b603281565b61200381565b6004546005549091565b33612000146105185760405162461bcd60e51b815260040161050f90613162565b61100781565b60085481565b61100681565b60005460ff1681565b61200281565b61300081565b600081565b600481565b60005460ff16610ada5760405162461bcd60e51b815260040161050f90612c58565b3361100714610afb5760405162461bcd60e51b815260040161050f90612fe6565b610b6684848080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250506040805180820190915260148152731b5a5cd9195b59585b9bdc951a1c995cda1bdb1960621b602082015291506120079050565b15610c015760208114610b8b5760405162461bcd60e51b815260040161050f90612e39565b604080516020601f8401819004810282018101909252828152600091610bc99185858083850183828082843760009201919091525061206192505050565b905060018110158015610bdd575060055481105b610bf95760405162461bcd60e51b815260040161050f9061311d565b600455611011565b610c6784848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505060408051808201909152600f81526e19995b1bdb9e551a1c995cda1bdb19608a1b602082015291506120079050565b15610d035760208114610c8c5760405162461bcd60e51b815260040161050f90613034565b604080516020601f8401819004810282018101909252828152600091610cca9185858083850183828082843760009201919091525061206192505050565b90506103e88111158015610cdf575060045481115b610cfb5760405162461bcd60e51b815260040161050f90612d11565b600555611011565b610d7084848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505060408051808201909152601681527566656c6f6e79536c617368526577617264526174696f60501b602082015291506120079050565b15610e0a5760208114610d955760405162461bcd60e51b815260040161050f90612f6e565b604080516020601f8401819004810282018101909252828152600091610dd39185858083850183828082843760009201919091525061206192505050565b9050600a8110158015610de65750606481105b610e025760405162461bcd60e51b815260040161050f90613076565b600655611011565b610e7e84848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505060408051808201909152601881527f656e61626c654d616c6963696f7573566f7465536c6173680000000000000000602082015291506120079050565b15610ef55760208114610ea35760405162461bcd60e51b815260040161050f90612d46565b604080516020601f8401819004810282018101909252828152610edf919084848083850183828082843760009201919091525061206692505050565b6007805460ff1916911515919091179055611011565b610f5c84848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505060408051808201909152601081526f66656c6f6e79536c61736853636f706560801b602082015291506120079050565b15610ff95760208114610f815760405162461bcd60e51b815260040161050f90612efd565b604080516020601f8401819004810282018101909252828152600091610fbf9185858083850183828082843760009201919091525061206192505050565b90506170808110158015610fd55750620d2f0081105b610ff15760405162461bcd60e51b815260040161050f90612c8f565b600855611011565b60405162461bcd60e51b815260040161050f906131fe565b7f6cdb0ac70ab7f2e2d035cca5be60d89906f2dede7648ddbd7402189c1eeed17a848484846040516110469493929190612b97565b60405180910390a150505050565b609681565b61100281565b33411461107e5760405162461bcd60e51b815260040161050f906131b1565b60005460ff166110a05760405162461bcd60e51b815260040161050f90612c58565b60035443116110c15760405162461bcd60e51b815260040161050f90613253565b3a156110df5760405162461bcd60e51b815260040161050f90612f40565b60405163155853f360e21b8152611000906355614fcc90611104908490600401612b34565b60206040518083038186803b15801561111c57600080fd5b505afa158015611130573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611154919061288e565b61115d57611375565b611165612585565b506001600160a01b0381166000908152600260208181526040928390208351606081018552815481526001820154928101929092529091015460ff1615801592820192909252906111c0576020810180516001019052611219565b60016040820181905260208201819052805480820182556000919091527fb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf60180546001600160a01b0319166001600160a01b0384161790555b43815260055460208201518161122b57fe5b066112a357600060208201526040516335409f7f60e01b8152611000906335409f7f9061125c908590600401612b34565b600060405180830381600087803b15801561127657600080fd5b505af115801561128a573d6000803e3d6000fd5b5050505061129e8282602001516000611dce565b61130f565b6004548160200151816112b257fe5b0661130f576040516375abf10160e11b81526110009063eb57e202906112dc908590600401612b34565b600060405180830381600087803b1580156112f657600080fd5b505af115801561130a573d6000803e3d6000fd5b505050505b6001600160a01b0382166000818152600260208181526040808420865181559186015160018301558581015191909201805460ff1916911515919091179055517fddb6012116e51abf5436d956a4f0ebd927e92c576ff96d7918290c8782291e3e9190a2505b5043600355565b60005460ff1661139e5760405162461bcd60e51b815260040161050f90612c58565b60075460ff166113c05760405162461bcd60e51b815260040161050f90612bf3565b6006546113cd5760146006555b6008546113da57603c6008555b6008548151604001514391011180156113fe57504360085482602001516040015101115b61141a5760405162461bcd60e51b815260040161050f90613225565b8060200151602001518160000151602001511480156114485750806020015160600151816000015160600151145b156114655760405162461bcd60e51b815260040161050f90612e80565b8051604081015190511080156114845750602081015160408101519051105b6114a05760405162461bcd60e51b815260040161050f90612df0565b6020810151518151511080156114c55750806000015160400151816020015160400151105b806114f057508051516020820151511080156114f05750806020015160400151816000015160400151105b8061150a5750806020015160400151816000015160400151145b6115265760405162461bcd60e51b815260040161050f90612cda565b604080820151905163ea321e4960e01b81526110009163ea321e499161154f9190600401612b6c565b60206040518083038186803b15801561156757600080fd5b505afa15801561157b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061159f919061288e565b6115bb5760405162461bcd60e51b815260040161050f90612fb7565b6115cd8160000151826040015161208e565b80156115e657506115e68160200151826040015161208e565b6116025760405162461bcd60e51b815260040161050f90612d91565b6060806110006001600160a01b0316633b071dcc6040518163ffffffff1660e01b815260040160006040518083038186803b15801561164057600080fd5b505afa158015611654573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261167c91908101906127cb565b9150915060005b81518110156117b9576116ad82828151811061169b57fe5b60200260200101518560400151612266565b156117b1576006546040516309a99b4f60e41b815260646110028031909302049190639a99b4f0906116e59033908590600401612b48565b602060405180830381600087803b1580156116ff57600080fd5b505af1158015611713573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117379190612a35565b506110006001600160a01b03166335409f7f85848151811061175557fe5b60200260200101516040518263ffffffff1660e01b81526004016117799190612b34565b600060405180830381600087803b15801561179357600080fd5b505af11580156117a7573d6000803e3d6000fd5b50505050506117b9565b600101611683565b506040808401519051630e9fbf5160e01b815261200291630e9fbf51916117e39190600401612b6c565b600060405180830381600087803b1580156117fd57600080fd5b505af1158015611811573d6000803e3d6000fd5b50505050505050565b61100381565b601481565b61200481565b60005460ff161561184e5760405162461bcd60e51b815260040161050f906130c0565b6032600455609660055560078054600160ff199182168117909255600080549091169091179055565b61100081565b336110001461189e5760405162461bcd60e51b815260040161050f90612ead565b60005460ff166118c05760405162461bcd60e51b815260040161050f90612c58565b6001546118cc57611cc4565b600154600090600019015b808211611c98576000805b828410156119fb576118f2612585565b600260006001878154811061190357fe5b60009182526020808320909101546001600160a01b0316835282810193909352604091820190208151606081018352815481526001820154938101939093526002015460ff1615159082015260055490915060049004816020015111156119e55760046005548161197057fe5b0481602001510381602001818152505080600260006001888154811061199257fe5b6000918252602080832091909101546001600160a01b0316835282810193909352604091820190208351815591830151600183015591909101516002909101805460ff19169115159190911790556119ef565b60019250506119fb565b508360010193506118e2565b828411611b9257611a0a612585565b6002600060018681548110611a1b57fe5b60009182526020808320909101546001600160a01b0316835282810193909352604091820190208151606081018352815481526001820154938101939093526002015460ff161515908201526005549091506004900481602001511115611b0357600460055481611a8857fe5b04816020015103816020018181525050806002600060018781548110611aaa57fe5b6000918252602080832091909101546001600160a01b03168352828101939093526040918201902083518155918301516001808401919091559201516002909101805460ff19169115159190911790559150611b929050565b6002600060018681548110611b1457fe5b60009182526020808320909101546001600160a01b031683528201929092526040018120818155600181810192909255600201805460ff19169055805480611b5857fe5b600082815260209020810160001990810180546001600160a01b031916905501905583611b855750611b92565b50600019909201916119fb565b818015611b9c5750805b15611c7b576002600060018681548110611bb257fe5b60009182526020808320909101546001600160a01b031683528201929092526040018120818155600181810192909255600201805460ff19169055805484908110611bf957fe5b600091825260209091200154600180546001600160a01b039092169186908110611c1f57fe5b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b031602179055506001805480611c5857fe5b600082815260209020810160001990810180546001600160a01b03191690550190555b82611c87575050611c98565b5050600190910190600019016118d7565b6040517fcfdb3b6ccaeccbdc68be3c59c840e3b3c90f0a7c491f5fff1cf56cfda200dd9c90600090a150505b565b61100481565b6060611cdf611cda836122ca565b611ce7565b90505b919050565b606081516001148015611d195750607f60f81b82600081518110611d0757fe5b01602001516001600160f81b03191611155b15611d25575080611ce2565b611cdf611d378351608060ff166123b0565b83612482565b6060815160001415611d5e5750604080516000815260208101909152611ce2565b606082600081518110611d6d57fe5b602002602001015190506000600190505b8351811015611dae57611da482858381518110611d9757fe5b6020026020010151612482565b9150600101611d7e565b50611dc7611dc1825160c060ff166123b0565b82612482565b9392505050565b8015611e30576040516375cc7d8960e01b8152612002906375cc7d8990611df9908690600401612b34565b600060405180830381600087803b158015611e1357600080fd5b505af1158015611e27573d6000803e3d6000fd5b50505050610905565b6040516375cc7d8960e01b8152612002906375cc7d8990611e55908690600401612b34565b600060405180830381600087803b158015611e6f57600080fd5b505af1925050508015611e80575060015b610905576040516000815260443d1015611e9c57506000611f39565b60046000803e60005160e01c6308c379a08114611ebd576000915050611f39565b60043d036004833e81513d602482011167ffffffffffffffff82111715611ee957600092505050611f39565b808301805167ffffffffffffffff811115611f0b576000945050505050611f39565b8060208301013d8601811115611f2957600095505050505050611f39565b601f01601f191660405250925050505b80611f445750611f8d565b836001600160a01b03167fd7bc86ff5d08c8ab043edec743302aba2520e6635172a428bc956721db9e2d1c8483604051611f7f9291906132a0565b60405180910390a250612002565b3d808015611fb7576040519150601f19603f3d011682016040523d82523d6000602084013e611fbc565b606091505b50836001600160a01b03167fd7bc86ff5d08c8ab043edec743302aba2520e6635172a428bc956721db9e2d1c8483604051611ff89291906132a0565b60405180910390a2505b610905565b60008160405160200161201a9190612b18565b60405160208183030381529060405280519060200120836040516020016120419190612b18565b604051602081830303815290604052805190602001201490505b92915050565b015190565b8082015160009060ff811615612080576001915081612086565b60009150815b505092915050565b60408051600480825260a0820190925260009160609190816020015b60608152602001906001900390816120aa5750506040805160208082528183019092529192506060919080820181803683370190505090506120ef8560000151611ccc565b826000815181106120fc57fe5b602002602001018190525061211760208660200151836124ff565b61212081611ce7565b8260018151811061212d57fe5b60200260200101819052506121458560400151611ccc565b8260028151811061215257fe5b602002602001018190525061216d60208660600151836124ff565b61217681611ce7565b8260038151811061218357fe5b60200260200101819052506121a9602061219c84611d3d565b80519060200120836124ff565b6040805160b080825260e082019092526060916020820181803683370190505090506121d981836000602061250f565b6121eb8187608001516020606061250f565b6121f981866080603061250f565b604080516001808252818301909252606091602082018180368337019050509050815160016020830182602086016066600019fa61223657600080fd5b506001612244826000612569565b60ff161461225957600094505050505061205b565b5060019695505050505050565b81518151600091600191811480831461228257600092506122c0565b600160208701838101602088015b6002848385100114156122bb5780518351146122af5760009650600093505b60209283019201612290565b505050505b5090949350505050565b604080516020808252818301909252606091829190602082018180368337505050602081018490529050600067ffffffffffffffff19841661230e57506018612332565b6fffffffffffffffffffffffffffffffff19841661232e57506010612332565b5060005b60208110156123685781818151811061234757fe5b01602001516001600160f81b0319161561236057612368565b600101612332565b60008160200390506060816040519080825280601f01601f19166020018201604052801561239d576020820181803683370190505b5080830196909652508452509192915050565b60606801000000000000000083106123da5760405162461bcd60e51b815260040161050f90612dc8565b604080516001808252818301909252606091602082018180368337019050509050603784116124345782840160f81b8160008151811061241657fe5b60200101906001600160f81b031916908160001a905350905061205b565b606061243f856122ca565b90508381510160370160f81b8260008151811061245857fe5b60200101906001600160f81b031916908160001a9053506124798282612482565b95945050505050565b6060806040519050835180825260208201818101602087015b818310156124b357805183526020928301920161249b565b50855184518101855292509050808201602086015b818310156124e05780518352602092830192016124c8565b508651929092011591909101601f01601f191660405250905092915050565b9091018181526020918201910152565b60005b818110156125625783818151811061252657fe5b602001015160f81c60f81b85848060010195508151811061254357fe5b60200101906001600160f81b031916908160001a905350600101612512565b5050505050565b6000816001018351101561257c57600080fd5b50016001015190565b604051806060016040528060008152602001600081526020016000151581525090565b600082601f8301126125b8578081fd5b81516125cb6125c68261331f565b6132f8565b818152915060208083019084810160005b84811015612641578151870188603f8201126125f757600080fd5b838101516126076125c68261333f565b81815260408b8184860101111561261d57600080fd5b61262c83888401838701613363565b508652505092820192908201906001016125dc565b505050505092915050565b60008083601f84011261265d578182fd5b50813567ffffffffffffffff811115612674578182fd5b60208301915083602082850101111561268c57600080fd5b9250929050565b600082601f8301126126a3578081fd5b81356126b16125c68261333f565b91508082528360208285010111156126c857600080fd5b8060208401602084013760009082016020015292915050565b600060a082840312156126f2578081fd5b6126fc60a06132f8565b905081358152602082013560208201526040820135604082015260608201356060820152608082013567ffffffffffffffff81111561273a57600080fd5b61274684828501612693565b60808301525092915050565b600060208284031215612763578081fd5b8135611dc781613393565b60006020828403121561277f578081fd5b8151611dc781613393565b60008060006060848603121561279e578182fd5b83356127a981613393565b92506020840135915060408401356127c0816133ab565b809150509250925092565b600080604083850312156127dd578182fd5b825167ffffffffffffffff808211156127f4578384fd5b81850186601f820112612805578485fd5b805192506128156125c68461331f565b80848252602080830192508084018a828389028701011115612835578889fd5b8894505b8685101561286057805161284c81613393565b845260019490940193928101928101612839565b508801519096509350505080821115612877578283fd5b50612884858286016125a8565b9150509250929050565b60006020828403121561289f578081fd5b8151611dc7816133ab565b600080604083850312156128bc578182fd5b823567ffffffffffffffff808211156128d3578384fd5b6128df86838701612693565b935060208501359150808211156128f4578283fd5b5061288485828601612693565b60008060008060408587031215612916578182fd5b843567ffffffffffffffff8082111561292d578384fd5b6129398883890161264c565b90965094506020870135915080821115612951578384fd5b5061295e8782880161264c565b95989497509550505050565b60006020828403121561297b578081fd5b813567ffffffffffffffff80821115612992578283fd5b818401606081870312156129a4578384fd5b6129ae60606132f8565b92508035828111156129be578485fd5b6129ca878284016126e1565b8452506020810135828111156129de578485fd5b6129ea878284016126e1565b602085015250604081013582811115612a01578485fd5b612a0d87828401612693565b6040850152509195945050505050565b600060208284031215612a2e578081fd5b5035919050565b600060208284031215612a46578081fd5b5051919050565b600080600060408486031215612a61578081fd5b833560ff81168114612a71578182fd5b9250602084013567ffffffffffffffff811115612a8c578182fd5b612a988682870161264c565b9497909650939450505050565b60008284528282602086013780602084860101526020601f19601f85011685010190509392505050565b60008151808452612ae7816020860160208601613363565b601f01601f19169290920160200192915050565b600a81526919195c1c9958d85d195960b21b602082015260400190565b60008251612b2a818460208701613363565b9190910192915050565b6001600160a01b0391909116815260200190565b6001600160a01b03929092168252602082015260400190565b901515815260200190565b600060208252611dc76020830184612acf565b600082825260406020830152611dc760408301612afb565b600060408252612bab604083018688612aa5565b8281036020840152612bbe818587612aa5565b979650505050505050565b60208082526010908201526f195d9a59195b98d9481d1bdbc81bdb1960821b604082015260600190565b6020808252818101527f6d616c6963696f757320766f746520736c617368206e6f7420656e61626c6564604082015260600190565b6020808252601690820152751d985b1a59185d1bdc881b9bdd081b5a59dc985d195960521b604082015260600190565b60208082526019908201527f74686520636f6e7472616374206e6f7420696e69742079657400000000000000604082015260600190565b6020808252602b908201527f746865206d616c6963696f757320766f746520736c6173682073636f7065206f60408201526a7574206f662072616e676560a81b606082015260800190565b6020808252601a908201527f6e6f2076696f6c6174696f6e206f6620766f74652072756c6573000000000000604082015260600190565b6020808252818101527f7468652066656c6f6e795468726573686f6c64206f7574206f662072616e6765604082015260600190565b6020808252602b908201527f6c656e677468206f6620656e61626c654d616c6963696f7573566f7465536c6160408201526a0e6d040dad2e6dac2e8c6d60ab1b606082015260800190565b60208082526017908201527f766572696679207369676e6174757265206661696c6564000000000000000000604082015260600190565b6020808252600e908201526d696e70757420746f6f206c6f6e6760901b604082015260600190565b60208082526019908201527f7372634e756d20626967676572207468616e207461724e756d00000000000000604082015260600190565b600060208252611cdf60208301612afb565b60208082526027908201527f6c656e677468206f66206d697364656d65616e6f725468726573686f6c64206d6040820152660d2e6dac2e8c6d60cb1b606082015260800190565b60208082526013908201527274776f206964656e746963616c20766f74657360681b604082015260600190565b60208082526030908201527f746865206d6573736167652073656e646572206d7573742062652076616c696460408201526f185d1bdc94d95d0818dbdb9d1c9858dd60821b606082015260800190565b60208082526023908201527f6c656e677468206f662066656c6f6e79536c61736853636f7065206d69736d616040820152620e8c6d60eb1b606082015260800190565b6020808252601490820152736761737072696365206973206e6f74207a65726f60601b604082015260600190565b60208082526029908201527f6c656e677468206f662066656c6f6e79536c617368526577617264526174696f604082015268040dad2e6dac2e8c6d60bb1b606082015260800190565b6020808252601590820152741d9bdd195059191c881a5cc81b9bdd08199bdd5b99605a1b604082015260600190565b6020808252602e908201527f746865206d6573736167652073656e646572206d75737420626520676f76657260408201526d1b985b98d94818dbdb9d1c9858dd60921b606082015260800190565b60208082526022908201527f6c656e677468206f662066656c6f6e795468726573686f6c64206d69736d61746040820152610c6d60f31b606082015260800190565b6020808252602a908201527f7468652066656c6f6e7920736c6173682072657761726420726174696f206f7560408201526974206f662072616e676560b01b606082015260800190565b60208082526019908201527f74686520636f6e747261637420616c726561647920696e697400000000000000604082015260600190565b6020808252600c908201526b32b6b83a3c903432b0b232b960a11b604082015260600190565b60208082526025908201527f746865206d697364656d65616e6f725468726573686f6c64206f7574206f662060408201526472616e676560d81b606082015260800190565b6020808252602f908201527f746865206d6573736167652073656e646572206d7573742062652063726f737360408201526e0818da185a5b8818dbdb9d1c9858dd608a1b606082015260800190565b6020808252602d908201527f746865206d6573736167652073656e646572206d75737420626520746865206260408201526c3637b1b590383937b23ab1b2b960991b606082015260800190565b6020808252600d908201526c756e6b6e6f776e20706172616d60981b604082015260600190565b6020808252601490820152731d185c99d95d08189b1bd8dac81d1bdbc81bdb1960621b604082015260600190565b6020808252818101527f63616e206e6f7420736c61736820747769636520696e206f6e6520626c6f636b604082015260600190565b61ffff91909116815260200190565b90815260200190565b6000838252604060208301526132b96040830184612acf565b949350505050565b918252602082015260400190565b92835260208301919091521515604082015260600190565b63ffffffff91909116815260200190565b60405181810167ffffffffffffffff8111828210171561331757600080fd5b604052919050565b600067ffffffffffffffff821115613335578081fd5b5060209081020190565b600067ffffffffffffffff821115613355578081fd5b50601f01601f191660200190565b60005b8381101561337e578181015183820152602001613366565b8381111561338d576000848401525b50505050565b6001600160a01b03811681146133a857600080fd5b50565b80151581146133a857600080fdfea164736f6c6343000604000a \ No newline at end of file diff --git a/core/systemcontracts/pascal/rialto/StakeCreditContract b/core/systemcontracts/pascal/rialto/StakeCreditContract new file mode 100644 index 0000000000..60aeae58f9 --- /dev/null +++ b/core/systemcontracts/pascal/rialto/StakeCreditContract @@ -0,0 +1 @@ +6080604052600436106101d15760003560e01c8063647df759116100f7578063a9059cbb11610095578063c2cde2b211610064578063c2cde2b21461063c578063d241c1ea1461065c578063dd62ed3e1461069e578063f399e22e146106be57600080fd5b8063a9059cbb146105af578063a9664feb146105cf578063aa1966cd146105ef578063aad3ec961461061c57600080fd5b806391faf0b4116100d157806391faf0b41461053a57806395d89b411461055a578063a457c2d71461056f578063a5d059ca1461058f57600080fd5b8063647df759146104b75780636bbf2249146104d757806370a082311461050457600080fd5b80632f2d448a1161016f57806345bc4d101161013e57806345bc4d101461044f5780634d99dd161461046f5780635c19a95c1461048f5780635e607d76146104a257600080fd5b80632f2d448a146103bb578063313ce567146103db57806339509351146103f75780633a5381b51461041757600080fd5b8063095ea7b3116101ab578063095ea7b31461034057806315d1f8981461037057806318160ddd1461038657806323b872dd1461039b57600080fd5b8063038c0023146102cb57806306fdde03146102fe5780630913db471461032057600080fd5b366102c657336120021461020157604051630f22c43960e41b815261200260048201526024015b60405180910390fd5b60006120026001600160a01b0316631fa8882b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610243573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102679190611d9e565b6102719042611dcd565b6098546000828152609d6020908152604080832093909355609c9052908120805492935034929091906102a5908490611def565b9250508190555034609860008282546102be9190611def565b925050819055005b600080fd5b3480156102d757600080fd5b506102eb6102e6366004611e1a565b6106d1565b6040519081526020015b60405180910390f35b34801561030a57600080fd5b50610313610701565b6040516102f59190611e3e565b34801561032c57600080fd5b506102eb61033b366004611e1a565b610793565b34801561034c57600080fd5b5061036061035b366004611e8c565b6107b5565b60405190151581526020016102f5565b34801561037c57600080fd5b506102eb60985481565b34801561039257600080fd5b506067546102eb565b3480156103a757600080fd5b506103606103b6366004611eb8565b6107cd565b3480156103c757600080fd5b506102eb6103d6366004611e1a565b6107f1565b3480156103e757600080fd5b50604051601281526020016102f5565b34801561040357600080fd5b50610360610412366004611e8c565b6108b6565b34801561042357600080fd5b50609754610437906001600160a01b031681565b6040516001600160a01b0390911681526020016102f5565b34801561045b57600080fd5b506102eb61046a366004611ef9565b6108d8565b34801561047b57600080fd5b506102eb61048a366004611e8c565b6109cb565b6102eb61049d366004611e1a565b610be2565b6104b56104b0366004611f12565b610c58565b005b3480156104c357600080fd5b506102eb6104d2366004611ef9565b610dcb565b3480156104e357600080fd5b506102eb6104f2366004611ef9565b609d6020526000908152604090205481565b34801561051057600080fd5b506102eb61051f366004611e1a565b6001600160a01b031660009081526065602052604090205490565b34801561054657600080fd5b506102eb610555366004611ef9565b610e0a565b34801561056657600080fd5b50610313610e45565b34801561057b57600080fd5b5061036061058a366004611e8c565b610e54565b34801561059b57600080fd5b506102eb6105aa366004611e8c565b610ecf565b3480156105bb57600080fd5b506103606105ca366004611e8c565b610fd0565b3480156105db57600080fd5b506102eb6105ea366004611e8c565b610fde565b3480156105fb57600080fd5b506102eb61060a366004611ef9565b609c6020526000908152604090205481565b34801561062857600080fd5b506102eb610637366004611e8c565b611107565b34801561064857600080fd5b506102eb610657366004611e1a565b6113aa565b34801561066857600080fd5b5061067c610677366004611e8c565b6113c8565b60408051825181526020808401519082015291810151908201526060016102f5565b3480156106aa57600080fd5b506102eb6106b9366004611f3c565b61144b565b6104b56106cc366004611f75565b611476565b6001600160a01b0381166000908152609a6020526040812054600f81810b600160801b909204900b035b92915050565b60606068805461071090611ffa565b80601f016020809104026020016040519081016040528092919081815260200182805461073c90611ffa565b80156107895780601f1061075e57610100808354040283529160200191610789565b820191906000526020600020905b81548152906001019060200180831161076c57829003601f168201915b5050505050905090565b6001600160a01b0381166000908152606560205260408120546106fb90610e0a565b6000336107c381858561162c565b5060019392505050565b6000336107db858285611645565b6107e68585856116b9565b506001949350505050565b6001600160a01b0381166000908152609a6020526040812054600f81810b600160801b909204900b0381805b828110156108ae576001600160a01b0385166000908152609a6020526040812061084790836116d2565b6000818152609960209081526040918290208251606081018452815481526001820154928101929092526002015491810182905291925042106108945761088d8461202e565b935061089b565b50506108ae565b5050806108a79061202e565b905061081d565b509392505050565b6000336107c38185856108c9838361144b565b6108d39190611def565b61162c565b6000336120021461090057604051630f22c43960e41b815261200260048201526024016101f8565b6097546001600160a01b03166000908152606560205260408120549061092584610dcb565b90508181116109345780610936565b815b609754909150600090610952906001600160a01b031683611743565b6040519091506000906110029083908381818185875af1925050503d8060008114610999576040519150601f19603f3d011682016040523d82523d6000602084013e61099e565b606091505b50509050806109c0576040516312171d8360e31b815260040160405180910390fd5b50925050505b919050565b600033612002146109f357604051630f22c43960e41b815261200260048201526024016101f8565b81600003610a1457604051639811e0c760e01b815260040160405180910390fd5b6001600160a01b038316600090815260656020526040902054821115610a4d57604051631e9acf1760e31b815260040160405180910390fd5b610a578383611743565b905060006120026001600160a01b031663fc0c5ff16040518163ffffffff1660e01b8152600401602060405180830381865afa158015610a9b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610abf9190611d9e565b610ac99042611def565b6040805160608101825285815260208101859052908101829052909150600085610af281611778565b60405160609290921b6bffffffffffffffffffffffff19166020830152603482015260540160408051601f1981840301815291815281516020928301206000818152609990935291205490915015610b5d5760405163b19e911560e01b815260040160405180910390fd5b600081815260996020908152604080832085518155828601516001820155818601516002909101556001600160a01b0389168352609a9091529020610bd990828154600160801b90819004600f0b6000818152600180860160205260409091209390935583546001600160801b03908116939091011602179055565b50505092915050565b60003361200214610c0a57604051630f22c43960e41b815261200260048201526024016101f8565b34600003610c2b57604051631f2a200560e01b815260040160405180910390fd5b610c3582346117a0565b9050806000036109c657604051639811e0c760e01b815260040160405180910390fd5b3361200214610c7e57604051630f22c43960e41b815261200260048201526024016101f8565b346000612710610c9867ffffffffffffffff851684612047565b610ca29190611dcd565b90506000610cb0828461205e565b905060006120026001600160a01b0316631fa8882b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610cf4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d189190611d9e565b610d229042611dcd565b6098546000828152609d6020908152604080832093909355609c905290812080549293508492909190610d56908490611def565b925050819055508160986000828254610d6f9190611def565b9091555050609754610d8a906001600160a01b0316846117a0565b5060408051838152602081018590527ffb0e1482d62102ab9594f69d4c6d693749e3e2bf1c21af272f5456b2d5a4f6b5910160405180910390a15050505050565b6000609854600003610df0576040516307b76ce760e51b815260040160405180910390fd5b609854606754610e009084612047565b6106fb9190611dcd565b6000610e1560675490565b600003610e3557604051632fe8dae960e01b815260040160405180910390fd5b606754609854610e009084612047565b60606069805461071090611ffa565b60003381610e62828661144b565b905083811015610ec25760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b60648201526084016101f8565b6107e6828686840361162c565b60003361200214610ef757604051630f22c43960e41b815261200260048201526024016101f8565b81600003610f1857604051639811e0c760e01b815260040160405180910390fd5b6001600160a01b038316600090815260656020526040902054821115610f5157604051631e9acf1760e31b815260040160405180910390fd5b610f5b8383611743565b6040519091506000906120029083908381818185875af1925050503d8060008114610fa2576040519150601f19603f3d011682016040523d82523d6000602084013e610fa7565b606091505b5050905080610fc9576040516312171d8360e31b815260040160405180910390fd5b5092915050565b6000336107c38185856116b9565b6001600160a01b0382166000908152609a6020526040812054600f81810b600160801b909204900b03600003611016575060006106fb565b81158061104a57506001600160a01b0383166000908152609a6020526040902054600f81810b600160801b909204900b0382115b611054578161107e565b6001600160a01b0383166000908152609a6020526040902054600f81810b600160801b909204900b035b91506000805b838110156108ae576001600160a01b0385166000908152609a602052604081206110ae90836116d2565b600081815260996020908152604091829020825160608101845281548152600182015492810183905260029091015492810192909252919250906110f29085611def565b93505050806111009061202e565b9050611084565b6000336120021461112f57604051630f22c43960e41b815261200260048201526024016101f8565b6111376117c9565b6001600160a01b0383166000908152609a6020526040902054600f81810b600160801b909204900b036000036111805760405163ad41893760e01b815260040160405180910390fd5b8115806111b457506001600160a01b0383166000908152609a6020526040902054600f81810b600160801b909204900b0382115b6111be57816111e8565b6001600160a01b0383166000908152609a6020526040902054600f81810b600160801b909204900b035b915060005b821561129e576001600160a01b0384166000908152609a6020526040812061121490611822565b6000818152609960209081526040918290208251606081018452815481526001820154928101929092526002015491810182905291925042101561125957505061129e565b6001600160a01b0386166000908152609a6020526040902061127a90611876565b50602081015161128a9084611def565b925061129585612071565b945050506111ed565b806000036112bf576040516303cd8e0960e21b815260040160405180910390fd5b60006120026001600160a01b031663e8f67c3b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611301573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113259190611d9e565b90506000856001600160a01b03168284604051600060405180830381858888f193505050503d8060008114611376576040519150601f19603f3d011682016040523d82523d6000602084013e61137b565b606091505b505090508061139d576040516312171d8360e31b815260040160405180910390fd5b50506001805590506106fb565b6001600160a01b0381166000908152609b60205260408120546106fb565b6113ec60405180606001604052806000815260200160008152602001600081525090565b6001600160a01b0383166000908152609a6020526040812061140e90846116d2565b6000908152609960209081526040918290208251606081018452815481526001820154928101929092526002015491810191909152949350505050565b6001600160a01b03918216600090815260666020908152604080832093909416825291909152205490565b600054610100900460ff16158080156114965750600054600160ff909116105b806114b05750303b1580156114b0575060005460ff166001145b6115135760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084016101f8565b6000805460ff191660011790558015611536576000805461ff0019166101001790555b336120021461155c57604051630f22c43960e41b815261200260048201526024016101f8565b60008383604051602001611571929190612088565b6040516020818303038152906040529050600084846040516020016115979291906120b8565b60405160208183030381529060405290506115b282826118fb565b6115ba611940565b609780546001600160a01b0319166001600160a01b0388161790556115de34611967565b50508015611626576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b50505050565b604051632028747160e01b815260040160405180910390fd5b6000611651848461144b565b9050600019811461162657818110156116ac5760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e636500000060448201526064016101f8565b611626848484840361162c565b604051638cd22d1960e01b815260040160405180910390fd5b6000806116f56116e184611ad7565b85546116f09190600f0b6120d6565b611b45565b8454909150600160801b9004600f90810b9082900b1261172857604051632d0483c560e21b815260040160405180910390fd5b600f0b60009081526001939093016020525050604090205490565b600061174e82610e0a565b905061175a8383611ba9565b806098600082825461176c919061205e565b90915550909392505050565b6001600160a01b0381166000908152609b602052604090208054600181018255905b50919050565b60006117ab82610dcb565b90506117b78382611cdd565b816098600082825461176c9190611def565b60026001540361181b5760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0060448201526064016101f8565b6002600155565b600061183d8254600f81810b600160801b909204900b131590565b1561185b57604051631ed9509560e11b815260040160405180910390fd5b508054600f0b60009081526001909101602052604090205490565b60006118918254600f81810b600160801b909204900b131590565b156118af57604051631ed9509560e11b815260040160405180910390fd5b508054600f0b6000818152600180840160205260408220805492905583546fffffffffffffffffffffffffffffffff191692016001600160801b03169190911790915590565b60018055565b600054610100900460ff166119225760405162461bcd60e51b81526004016101f8906120fe565b606861192e83826121ad565b50606961193b82826121ad565b505050565b600054610100900460ff166118f55760405162461bcd60e51b81526004016101f8906120fe565b600054610100900460ff1661198e5760405162461bcd60e51b81526004016101f8906120fe565b60006120026001600160a01b0316638a4d3fa86040518163ffffffff1660e01b8152600401602060405180830381865afa1580156119d0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119f49190611d9e565b90508082111580611a0e57506097546001600160a01b0316155b80611a1a575060675415155b15611a3857604051632163e6b960e21b815260040160405180910390fd5b60006120026001600160a01b0316634e6fd6c46040518163ffffffff1660e01b8152600401602060405180830381865afa158015611a7a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a9e919061226d565b9050611aaa8183611cdd565b6000611ab6838561205e565b609754909150611acf906001600160a01b031682611cdd565b505050609855565b60006001600160ff1b03821115611b415760405162461bcd60e51b815260206004820152602860248201527f53616665436173743a2076616c756520646f65736e27742066697420696e2061604482015267371034b73a191a9b60c11b60648201526084016101f8565b5090565b80600f81900b81146109c65760405162461bcd60e51b815260206004820152602760248201527f53616665436173743a2076616c756520646f65736e27742066697420696e20316044820152663238206269747360c81b60648201526084016101f8565b6001600160a01b038216611c095760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b60648201526084016101f8565b6001600160a01b03821660009081526065602052604090205481811015611c7d5760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e604482015261636560f01b60648201526084016101f8565b6001600160a01b03831660008181526065602090815260408083208686039055606780548790039055518581529192917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a3505050565b6001600160a01b038216611d335760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f20616464726573730060448201526064016101f8565b8060676000828254611d459190611def565b90915550506001600160a01b0382166000818152606560209081526040808320805486019055518481527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a35050565b600060208284031215611db057600080fd5b5051919050565b634e487b7160e01b600052601160045260246000fd5b600082611dea57634e487b7160e01b600052601260045260246000fd5b500490565b808201808211156106fb576106fb611db7565b6001600160a01b0381168114611e1757600080fd5b50565b600060208284031215611e2c57600080fd5b8135611e3781611e02565b9392505050565b600060208083528351808285015260005b81811015611e6b57858101830151858201604001528201611e4f565b506000604082860101526040601f19601f8301168501019250505092915050565b60008060408385031215611e9f57600080fd5b8235611eaa81611e02565b946020939093013593505050565b600080600060608486031215611ecd57600080fd5b8335611ed881611e02565b92506020840135611ee881611e02565b929592945050506040919091013590565b600060208284031215611f0b57600080fd5b5035919050565b600060208284031215611f2457600080fd5b813567ffffffffffffffff81168114611e3757600080fd5b60008060408385031215611f4f57600080fd5b8235611f5a81611e02565b91506020830135611f6a81611e02565b809150509250929050565b600080600060408486031215611f8a57600080fd5b8335611f9581611e02565b9250602084013567ffffffffffffffff80821115611fb257600080fd5b818601915086601f830112611fc657600080fd5b813581811115611fd557600080fd5b876020828501011115611fe757600080fd5b6020830194508093505050509250925092565b600181811c9082168061200e57607f821691505b60208210810361179a57634e487b7160e01b600052602260045260246000fd5b60006001820161204057612040611db7565b5060010190565b80820281158282048414176106fb576106fb611db7565b818103818111156106fb576106fb611db7565b60008161208057612080611db7565b506000190190565b65029ba30b5b2960d51b815281836006830137660810dc99591a5d60ca1b91016006810191909152600d01919050565b611cdd60f21b81528183600283013760009101600201908152919050565b80820182811260008312801582168215821617156120f6576120f6611db7565b505092915050565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b634e487b7160e01b600052604160045260246000fd5b601f82111561193b57600081815260208120601f850160051c810160208610156121865750805b601f850160051c820191505b818110156121a557828155600101612192565b505050505050565b815167ffffffffffffffff8111156121c7576121c7612149565b6121db816121d58454611ffa565b8461215f565b602080601f83116001811461221057600084156121f85750858301515b600019600386901b1c1916600185901b1785556121a5565b600085815260208120601f198616915b8281101561223f57888601518255948401946001909101908401612220565b508582101561225d5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b60006020828403121561227f57600080fd5b8151611e3781611e0256fea164736f6c6343000811000a \ No newline at end of file diff --git a/core/systemcontracts/pascal/rialto/StakeHubContract b/core/systemcontracts/pascal/rialto/StakeHubContract new file mode 100644 index 0000000000..729be9428a --- /dev/null +++ b/core/systemcontracts/pascal/rialto/StakeHubContract @@ -0,0 +1 @@ +608060405260043610620003e75760003560e01c80638456cb591162000203578063cbb04d9d1162000117578063e8f67c3b11620000ad578063f80a34021162000078578063f80a34021462000c3e578063fb50b31f1462000c63578063fc0c5ff11462000c88578063ff69ab611462000ca057600080fd5b8063e8f67c3b1462000bba578063e992aaf51462000bd2578063efdbf0e11462000bea578063f1f74d841462000c2657600080fd5b8063d7c2dfc811620000ee578063d7c2dfc81462000b40578063d8ca511f1462000b65578063daacdb661462000b7d578063dbda7fb31462000b9557600080fd5b8063cbb04d9d1462000ac1578063d115a2061462000b02578063d6ca429d1462000b1b57600080fd5b8063ac4317511162000199578063bff02e201162000164578063bff02e201462000a4e578063c38fbec81462000a84578063c473318f1462000aa9578063c8509d8114620008a257600080fd5b8063ac43175114620009cc578063b187bd2614620009f1578063baa7199e1462000a11578063bdceadf31462000a3657600080fd5b80638cd22b2211620001da5780638cd22b221462000937578063982ef0a7146200095c578063a43569b31462000973578063aad3ec9614620009a757600080fd5b80638456cb5914620008c757806386d5450614620008df5780638a4d3fa8146200091957600080fd5b806349f41a4211620002fb57806364028fbd116200029157806375cc7d89116200025c57806375cc7d89146200084d57806376e7d6d614620008725780638129fc1c146200088a578063831d65d114620008a257600080fd5b806364028fbd1462000788578063663706d3146200079f5780636ec01b2714620007d05780636f8e2fa4146200082857600080fd5b80634e6fd6c411620002d25780634e6fd6c414620006ef5780635949187114620007075780635e7cc1c9146200072c57806363a036b5146200075157600080fd5b806349f41a4214620006805780634a49ac4c14620006a55780634d99dd1614620006ca57600080fd5b80631fa8882b116200037d578063417c73a71162000348578063417c73a714620005cc578063449ecfe614620005f157806345211bfd14620006165780634838d165146200063b57600080fd5b80631fa8882b146200053d5780632b727c8614620005555780632e8e8c71146200057a5780633840998814620005b457600080fd5b8063092193ab11620003be578063092193ab14620004885780630e9fbf51146200049f5780631182b87514620004c457806317b4f35314620004f857600080fd5b8063046f7da21462000407578063059ddd22146200041f5780630661806e146200046157600080fd5b36620004025760345460ff166001146200040057600080fd5b005b600080fd5b3480156200041457600080fd5b506200040062000cb8565b3480156200042c57600080fd5b50620004446200043e3660046200877b565b62000d4a565b6040516001600160a01b0390911681526020015b60405180910390f35b3480156200046e57600080fd5b506200047960365481565b60405190815260200162000458565b62000400620004993660046200877b565b62001172565b348015620004ac57600080fd5b5062000400620004be366004620087dd565b620017c3565b348015620004d157600080fd5b50620004e9620004e336600462008822565b62001aed565b604051620004589190620088d5565b3480156200050557600080fd5b506200044462000517366004620089a7565b80516020818301810180516045825292820191909301209152546001600160a01b031681565b3480156200054a57600080fd5b506200047961025881565b3480156200056257600080fd5b5062000444620005743660046200877b565b62001b85565b3480156200058757600080fd5b5062000444620005993660046200877b565b604d602052600090815260409020546001600160a01b031681565b348015620005c157600080fd5b506200047960375481565b348015620005d957600080fd5b5062000400620005eb3660046200877b565b62001bda565b348015620005fe57600080fd5b5062000400620006103660046200877b565b62001c5c565b3480156200062357600080fd5b5062000400620006353660046200877b565b62001e41565b3480156200064857600080fd5b506200066f6200065a3660046200877b565b60016020526000908152604090205460ff1681565b604051901515815260200162000458565b3480156200068d57600080fd5b50620004006200069f3660046200877b565b62002019565b348015620006b257600080fd5b5062000400620006c43660046200877b565b62002235565b348015620006d757600080fd5b5062000400620006e9366004620089fc565b620022b1565b348015620006fc57600080fd5b506200044461dead81565b3480156200071457600080fd5b50620004006200072636600462008a3a565b620028e1565b3480156200073957600080fd5b50620004006200074b36600462008aa4565b620036da565b3480156200075e57600080fd5b50620007766200077036600462008acb565b62003903565b60405162000458949392919062008b34565b620004006200079936600462008bf0565b62003fa8565b348015620007ac57600080fd5b5062000479620007be3660046200877b565b60446020526000908152604090205481565b348015620007dd57600080fd5b50620007f5620007ef3660046200877b565b620045f7565b6040805182516001600160401b039081168252602080850151821690830152928201519092169082015260600162000458565b3480156200083557600080fd5b50620004e9620008473660046200877b565b6200469c565b3480156200085a57600080fd5b50620004006200086c3660046200877b565b62004ac8565b3480156200087f57600080fd5b5062000479603d5481565b3480156200089757600080fd5b506200040062004c9a565b348015620008af57600080fd5b5062000400620008c136600462008822565b62004e62565b348015620008d457600080fd5b506200040062004ec0565b348015620008ec57600080fd5b5062000444620008fe3660046200877b565b6043602052600090815260409020546001600160a01b031681565b3480156200092657600080fd5b5062000479670de0b6b3a764000081565b3480156200094457600080fd5b506200047962000956366004620089fc565b62004f58565b620004006200096d36600462008cc6565b62005011565b3480156200098057600080fd5b5062000998620009923660046200877b565b620056bf565b60405162000458919062008cfe565b348015620009b457600080fd5b5062000400620009c6366004620089fc565b620059ac565b348015620009d957600080fd5b5062000400620009eb36600462008d7b565b62005a19565b348015620009fe57600080fd5b5060005462010000900460ff166200066f565b34801562000a1e57600080fd5b506200040062000a3036600462008e34565b620068b8565b34801562000a4357600080fd5b5062000479603c5481565b34801562000a5b57600080fd5b5062000a7362000a6d36600462008acb565b62006a85565b604051620004589392919062008e8d565b34801562000a9157600080fd5b506200040062000aa33660046200877b565b62006c61565b34801562000ab657600080fd5b506200047960385481565b34801562000ace57600080fd5b5062000ae662000ae03660046200877b565b62006f21565b6040805193845291151560208401529082015260600162000458565b34801562000b0f57600080fd5b5062000479620186a081565b34801562000b2857600080fd5b506200040062000b3a36600462008eea565b62007364565b34801562000b4d57600080fd5b506200040062000b5f36600462008fd3565b62007589565b34801562000b7257600080fd5b5062000479603b5481565b34801562000b8a57600080fd5b506200047960495481565b34801562000ba257600080fd5b506200044462000bb43660046200877b565b6200767f565b34801562000bc757600080fd5b506200047960355481565b34801562000bdf57600080fd5b5062000479603a5481565b34801562000bf757600080fd5b506200047962000c09366004620089a7565b805160208183018101805160468252928201919093012091525481565b34801562000c3357600080fd5b5062000479603e5481565b34801562000c4b57600080fd5b506200047962000c5d366004620089fc565b62007aa9565b34801562000c7057600080fd5b506200040062000c8236600462008d7b565b62007b1a565b34801562000c9557600080fd5b506200047960395481565b34801562000cad57600080fd5b5062000479604a5481565b600054630100000090046001600160a01b0316331462000ceb576040516306fbb1e360e01b815260040160405180910390fd5b60005462010000900460ff1662000d1557604051636cd6020160e01b815260040160405180910390fd5b6000805462ff0000191681556040517f62451d457bc659158be6e6247f56ec1df424a5c7597f71c20c2bc44e0965c8f99190a1565b6001600160a01b038082166000908152604160209081526040808320815161018081018352815486168152600182015486169381019390935260028101549094169082015260038301546060820152600483018054929384939091608084019162000db59062009039565b80601f016020809104026020016040519081016040528092919081815260200182805462000de39062009039565b801562000e345780601f1062000e085761010080835404028352916020019162000e34565b820191906000526020600020905b81548152906001019060200180831162000e1657829003601f168201915b505050505081526020016005820160405180608001604052908160008201805462000e5f9062009039565b80601f016020809104026020016040519081016040528092919081815260200182805462000e8d9062009039565b801562000ede5780601f1062000eb25761010080835404028352916020019162000ede565b820191906000526020600020905b81548152906001019060200180831162000ec057829003601f168201915b5050505050815260200160018201805462000ef99062009039565b80601f016020809104026020016040519081016040528092919081815260200182805462000f279062009039565b801562000f785780601f1062000f4c5761010080835404028352916020019162000f78565b820191906000526020600020905b81548152906001019060200180831162000f5a57829003601f168201915b5050505050815260200160028201805462000f939062009039565b80601f016020809104026020016040519081016040528092919081815260200182805462000fc19062009039565b8015620010125780601f1062000fe65761010080835404028352916020019162001012565b820191906000526020600020905b81548152906001019060200180831162000ff457829003601f168201915b505050505081526020016003820180546200102d9062009039565b80601f01602080910402602001604051908101604052809291908181526020018280546200105b9062009039565b8015620010ac5780601f106200108057610100808354040283529160200191620010ac565b820191906000526020600020905b8154815290600101906020018083116200108e57829003601f168201915b505050919092525050508152604080516060808201835260098501546001600160401b038082168452600160401b82048116602080860191909152600160801b9092041683850152840191909152600a84015460ff16151582840152600b84015490830152600c8301546080830152600d8301546001600160a01b031660a0830152805161026081019182905260c09092019190600e84019060139082845b8154815260200190600101908083116200114b575050509190925250509051949350505050565b33611000146200119e57604051630f22c43960e41b815261100060048201526024015b60405180910390fd5b6001600160a01b03808216600090815260436020908152604080832054841680845260418352818420825161018081018452815487168152600182015487169481019490945260028101549095169183019190915260038401546060830152600484018054919491608084019190620012179062009039565b80601f0160208091040260200160405190810160405280929190818152602001828054620012459062009039565b8015620012965780601f106200126a5761010080835404028352916020019162001296565b820191906000526020600020905b8154815290600101906020018083116200127857829003601f168201915b5050505050815260200160058201604051806080016040529081600082018054620012c19062009039565b80601f0160208091040260200160405190810160405280929190818152602001828054620012ef9062009039565b8015620013405780601f10620013145761010080835404028352916020019162001340565b820191906000526020600020905b8154815290600101906020018083116200132257829003601f168201915b505050505081526020016001820180546200135b9062009039565b80601f0160208091040260200160405190810160405280929190818152602001828054620013899062009039565b8015620013da5780601f10620013ae57610100808354040283529160200191620013da565b820191906000526020600020905b815481529060010190602001808311620013bc57829003601f168201915b50505050508152602001600282018054620013f59062009039565b80601f0160208091040260200160405190810160405280929190818152602001828054620014239062009039565b8015620014745780601f10620014485761010080835404028352916020019162001474565b820191906000526020600020905b8154815290600101906020018083116200145657829003601f168201915b505050505081526020016003820180546200148f9062009039565b80601f0160208091040260200160405190810160405280929190818152602001828054620014bd9062009039565b80156200150e5780601f10620014e2576101008083540402835291602001916200150e565b820191906000526020600020905b815481529060010190602001808311620014f057829003601f168201915b505050919092525050508152604080516060808201835260098501546001600160401b038082168452600160401b82048116602080860191909152600160801b9092041683850152840191909152600a84015460ff16151582840152600b84015490830152600c8301546080830152600d8301546001600160a01b031660a0830152805161026081019182905260c09092019190600e84019060139082845b815481526020019060010190808311620015ad575050509190925250505060408101519091506001600160a01b03161580620015ea57508060e001515b15620016a757604051611002903490600081818185875af1925050503d806000811462001634576040519150601f19603f3d011682016040523d82523d6000602084013e62001639565b606091505b505050816001600160a01b03167ffc8bff675087dd2da069cc3fb517b9ed001e19750c0865241a5542dba1ba170d6040516200169a9060208082526011908201527024a72b20a624a22fab20a624a220aa27a960791b604082015260600190565b60405180910390a2505050565b60408181015160c0830151519151632f303ebb60e11b81526001600160401b0390921660048301526001600160a01b031690635e607d769034906024016000604051808303818588803b158015620016fe57600080fd5b505af115801562001713573d6000803e3d6000fd5b5050505050816001600160a01b03167fe34918ff1c7084970068b53fd71ad6d8b04e9f15d3886cbf006443e6cdc52ea6346040516200175491815260200190565b60405180910390a26040808201519051633041949b60e01b815261200591633041949b9162001789919086906004016200906f565b600060405180830381600087803b158015620017a457600080fd5b505af1158015620017b9573d6000803e3d6000fd5b5050505050505b50565b3361100114620017eb57604051630f22c43960e41b8152611001600482015260240162001195565b60005462010000900460ff16156200181657604051631785c68160e01b815260040160405180910390fd5b6000604583836040516200182c92919062009089565b908152604051908190036020019020546001600160a01b0316905062001854603f8262007d52565b620018725760405163056e881160e01b815260040160405180910390fd5b6001600160a01b0381166000908152604160205260408120906200189961025842620090af565b604a546000828152604b602052604090205491925011620018cd5760405163bd52fcdb60e01b815260040160405180910390fd5b6000818152604b60205260408120805460019290620018ee908490620090d2565b909155505060405160469062001908908790879062009089565b90815260200160405180910390205460001415801562001958575042610258604687876040516200193b92919062009089565b908152602001604051809103902054620019569190620090d2565b105b156200197757604051631898eb6b60e01b815260040160405180910390fd5b6000806200198785600262007d75565b9150915081620019aa57604051631b919bb160e11b815260040160405180910390fd5b6002840154603c5460405163045bc4d160e41b815260048101919091526000916001600160a01b0316906345bc4d10906024016020604051808303816000875af1158015620019fd573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001a239190620090e8565b905062001a31858362007dff565b856001600160a01b03167f6e9a2ee7aee95665e3a774a212eb11441b217e3e4656ab9563793094689aabb28383600260405162001a719392919062009102565b60405180910390a26002850154604051633041949b60e01b815261200591633041949b9162001aaf916001600160a01b0316908a906004016200906f565b600060405180830381600087803b15801562001aca57600080fd5b505af115801562001adf573d6000803e3d6000fd5b505050505050505050505050565b6060336120001462001b1757604051630f22c43960e41b8152612000600482015260240162001195565b60005462010000900460ff161562001b4257604051631785c68160e01b815260040160405180910390fd5b6034805460ff1916600117905560405162461bcd60e51b815260206004820152600a60248201526919195c1c9958d85d195960b21b604482015260640162001195565b60008162001b95603f8262007d52565b62001bb35760405163056e881160e01b815260040160405180910390fd5b6001600160a01b038084166000908152604160205260409020600d01541691505b50919050565b600054630100000090046001600160a01b0316331462001c0d576040516306fbb1e360e01b815260040160405180910390fd5b6001600160a01b0381166000818152600160208190526040808320805460ff1916909217909155517f7fd26be6fc92aff63f1f4409b2b2ddeb272a888031d7f55ec830485ec61941869190a250565b60005462010000900460ff161562001c8757604051631785c68160e01b815260040160405180910390fd5b3360009081526001602052604090205460ff161562001cb95760405163b1d02c3d60e01b815260040160405180910390fd5b8062001cc7603f8262007d52565b62001ce55760405163056e881160e01b815260040160405180910390fd5b6001600160a01b0382166000908152604160205260409020600a81015460ff1662001d2357604051634b6b857d60e01b815260040160405180910390fd5b6036546002820154604051630913db4760e01b81526001600160a01b03868116600483015290911690630913db4790602401602060405180830381865afa15801562001d73573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001d999190620090e8565b101562001db9576040516317b204bf60e11b815260040160405180910390fd5b4281600b0154111562001ddf5760405163170cb76760e21b815260040160405180910390fd5b600a8101805460ff19169055604980546001919060009062001e039084906200913d565b90915550506040516001600160a01b038416907f9390b453426557da5ebdc31f19a37753ca04addf656d32f35232211bb2af3f1990600090a2505050565b60005462010000900460ff161562001e6c57604051631785c68160e01b815260040160405180910390fd5b3360009081526001602052604090205460ff161562001e9e5760405163b1d02c3d60e01b815260040160405180910390fd5b62001ea862007ef4565b62001eb5603f8262007d52565b62001ed35760405163056e881160e01b815260040160405180910390fd5b6001600160a01b03821662001efb57604051636520611b60e11b815260040160405180910390fd5b6001600160a01b03828116600090815260436020526040902054161562001f3557604051631e6f587560e11b815260040160405180910390fd5b600062001f4162007ef4565b6001600160a01b0381166000908152604160205260409020600c81015491925090429062001f739061025890620090d2565b111562001f9357604051631f92cdbd60e11b815260040160405180910390fd5b80546001600160a01b039081166000908152604460209081526040808320429081905585548986166001600160a01b031991821681178855600c88019290925581855260439093528184208054958816959093168517909255519092917f6e4e747ca35203f16401c69805c7dd52fff67ef60b0ebc5c7fe16890530f223591a350505050565b3362002027603f8262007d52565b620020455760405163056e881160e01b815260040160405180910390fd5b60005462010000900460ff16156200207057604051631785c68160e01b815260040160405180910390fd5b3360009081526001602052604090205460ff1615620020a25760405163b1d02c3d60e01b815260040160405180910390fd5b6001600160a01b038281166000908152604d60205260409020541615620020dc5760405163bebdc75760e01b815260040160405180910390fd5b620020e9603f8362007d52565b15620021085760405163bebdc75760e01b815260040160405180910390fd5b336000818152604160205260409020600d01546001600160a01b039081169084168103620021495760405163bebdc75760e01b815260040160405180910390fd5b6001600160a01b0381161562002180576001600160a01b0381166000908152604d6020526040902080546001600160a01b03191690555b6001600160a01b038281166000908152604160205260409020600d0180546001600160a01b031916918616918217905515620021e5576001600160a01b038481166000908152604d6020526040902080546001600160a01b0319169184169190911790555b836001600160a01b0316816001600160a01b0316836001600160a01b03167fcbb728765de145e99c00e8ae32a325231e850359b7b8a6da3b84d672ab3f1d0a60405160405180910390a450505050565b600054630100000090046001600160a01b0316331462002268576040516306fbb1e360e01b815260040160405180910390fd5b6001600160a01b038116600081815260016020526040808220805460ff19169055517fe0db3499b7fdc3da4cddff5f45d694549c19835e7f719fb5606d3ad1a5de40119190a250565b60005462010000900460ff1615620022dc57604051631785c68160e01b815260040160405180910390fd5b3360009081526001602052604090205460ff16156200230e5760405163b1d02c3d60e01b815260040160405180910390fd5b816200231c603f8262007d52565b6200233a5760405163056e881160e01b815260040160405180910390fd5b816000036200235c57604051639811e0c760e01b815260040160405180910390fd5b6001600160a01b0380841660009081526041602090815260408083208151610180810183528154861681526001820154861693810193909352600281015490941690820152600383015460608201526004830180543394916080840191620023c49062009039565b80601f0160208091040260200160405190810160405280929190818152602001828054620023f29062009039565b8015620024435780601f10620024175761010080835404028352916020019162002443565b820191906000526020600020905b8154815290600101906020018083116200242557829003601f168201915b50505050508152602001600582016040518060800160405290816000820180546200246e9062009039565b80601f01602080910402602001604051908101604052809291908181526020018280546200249c9062009039565b8015620024ed5780601f10620024c157610100808354040283529160200191620024ed565b820191906000526020600020905b815481529060010190602001808311620024cf57829003601f168201915b50505050508152602001600182018054620025089062009039565b80601f0160208091040260200160405190810160405280929190818152602001828054620025369062009039565b8015620025875780601f106200255b5761010080835404028352916020019162002587565b820191906000526020600020905b8154815290600101906020018083116200256957829003601f168201915b50505050508152602001600282018054620025a29062009039565b80601f0160208091040260200160405190810160405280929190818152602001828054620025d09062009039565b8015620026215780601f10620025f55761010080835404028352916020019162002621565b820191906000526020600020905b8154815290600101906020018083116200260357829003601f168201915b505050505081526020016003820180546200263c9062009039565b80601f01602080910402602001604051908101604052809291908181526020018280546200266a9062009039565b8015620026bb5780601f106200268f57610100808354040283529160200191620026bb565b820191906000526020600020905b8154815290600101906020018083116200269d57829003601f168201915b505050919092525050508152604080516060808201835260098501546001600160401b038082168452600160401b82048116602080860191909152600160801b9092041683850152840191909152600a84015460ff16151582840152600b84015490830152600c8301546080830152600d8301546001600160a01b031660a0830152805161026081019182905260c09092019190600e84019060139082845b8154815260200190600101908083116200275a575050509190925250505060408082015190516326ccee8b60e11b81526001600160a01b0385811660048301526024820188905292935060009290911690634d99dd16906044016020604051808303816000875af1158015620027d4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620027fa9190620090e8565b9050826001600160a01b0316866001600160a01b03167f3aace7340547de7b9156593a7652dc07ee900cea3fd8f82cb6c9d38b4082980287846040516200284b929190918252602082015260400190565b60405180910390a3856001600160a01b0316836001600160a01b0316036200287857620028788662007f35565b6040808301519051633041949b60e01b815261200591633041949b91620028a5919087906004016200906f565b600060405180830381600087803b158015620028c057600080fd5b505af1158015620028d5573d6000803e3d6000fd5b50505050505050505050565b60005462010000900460ff16156200290c57604051631785c68160e01b815260040160405180910390fd5b3360009081526001602052604090205460ff16156200293e5760405163b1d02c3d60e01b815260040160405180910390fd5b836200294c603f8262007d52565b6200296a5760405163056e881160e01b815260040160405180910390fd5b8362002978603f8262007d52565b620029965760405163056e881160e01b815260040160405180910390fd5b6034805460ff191660011790556000849003620029c657604051639811e0c760e01b815260040160405180910390fd5b846001600160a01b0316866001600160a01b031603620029f95760405163f0e3e62960e01b815260040160405180910390fd5b6001600160a01b038087166000908152604160209081526040808320815161018081018352815486168152600182015486169381019390935260028101549094169082015260038301546060820152600483018054339491608084019162002a619062009039565b80601f016020809104026020016040519081016040528092919081815260200182805462002a8f9062009039565b801562002ae05780601f1062002ab45761010080835404028352916020019162002ae0565b820191906000526020600020905b81548152906001019060200180831162002ac257829003601f168201915b505050505081526020016005820160405180608001604052908160008201805462002b0b9062009039565b80601f016020809104026020016040519081016040528092919081815260200182805462002b399062009039565b801562002b8a5780601f1062002b5e5761010080835404028352916020019162002b8a565b820191906000526020600020905b81548152906001019060200180831162002b6c57829003601f168201915b5050505050815260200160018201805462002ba59062009039565b80601f016020809104026020016040519081016040528092919081815260200182805462002bd39062009039565b801562002c245780601f1062002bf85761010080835404028352916020019162002c24565b820191906000526020600020905b81548152906001019060200180831162002c0657829003601f168201915b5050505050815260200160028201805462002c3f9062009039565b80601f016020809104026020016040519081016040528092919081815260200182805462002c6d9062009039565b801562002cbe5780601f1062002c925761010080835404028352916020019162002cbe565b820191906000526020600020905b81548152906001019060200180831162002ca057829003601f168201915b5050505050815260200160038201805462002cd99062009039565b80601f016020809104026020016040519081016040528092919081815260200182805462002d079062009039565b801562002d585780601f1062002d2c5761010080835404028352916020019162002d58565b820191906000526020600020905b81548152906001019060200180831162002d3a57829003601f168201915b505050919092525050508152604080516060808201835260098501546001600160401b038082168452600160401b82048116602080860191909152600160801b9092041683850152840191909152600a84015460ff16151582840152600b84015490830152600c8301546080830152600d8301546001600160a01b031660a0830152805161026081019182905260c09092019190600e84019060139082845b81548152602001906001019080831162002df757505050919092525050506001600160a01b0380891660009081526041602090815260408083208151610180810183528154861681526001820154861693810193909352600281015490941690820152600383015460608201526004830180549495509193909291608084019162002e829062009039565b80601f016020809104026020016040519081016040528092919081815260200182805462002eb09062009039565b801562002f015780601f1062002ed55761010080835404028352916020019162002f01565b820191906000526020600020905b81548152906001019060200180831162002ee357829003601f168201915b505050505081526020016005820160405180608001604052908160008201805462002f2c9062009039565b80601f016020809104026020016040519081016040528092919081815260200182805462002f5a9062009039565b801562002fab5780601f1062002f7f5761010080835404028352916020019162002fab565b820191906000526020600020905b81548152906001019060200180831162002f8d57829003601f168201915b5050505050815260200160018201805462002fc69062009039565b80601f016020809104026020016040519081016040528092919081815260200182805462002ff49062009039565b8015620030455780601f10620030195761010080835404028352916020019162003045565b820191906000526020600020905b8154815290600101906020018083116200302757829003601f168201915b50505050508152602001600282018054620030609062009039565b80601f01602080910402602001604051908101604052809291908181526020018280546200308e9062009039565b8015620030df5780601f10620030b357610100808354040283529160200191620030df565b820191906000526020600020905b815481529060010190602001808311620030c157829003601f168201915b50505050508152602001600382018054620030fa9062009039565b80601f0160208091040260200160405190810160405280929190818152602001828054620031289062009039565b8015620031795780601f106200314d5761010080835404028352916020019162003179565b820191906000526020600020905b8154815290600101906020018083116200315b57829003601f168201915b505050919092525050508152604080516060808201835260098501546001600160401b038082168452600160401b82048116602080860191909152600160801b9092041683850152840191909152600a84015460ff16151582840152600b84015490830152600c8301546080830152600d8301546001600160a01b031660a0830152805161026081019182905260c09092019190600e84019060139082845b815481526020019060010190808311620032185750505050508152505090508060e0015180156200325b5750876001600160a01b0316836001600160a01b031614155b156200327a57604051636468920360e01b815260040160405180910390fd5b60408083015190516352e82ce560e11b81526001600160a01b038581166004830152602482018a9052600092169063a5d059ca906044016020604051808303816000875af1158015620032d1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620032f79190620090e8565b90506037548110156200331d5760405163dc6f0bdd60e01b815260040160405180910390fd5b896001600160a01b0316846001600160a01b0316148015620033b257506036546040808501519051630913db4760e01b81526001600160a01b038d8116600483015290911690630913db4790602401602060405180830381865afa1580156200338a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620033b09190620090e8565b105b15620033d1576040516317b204bf60e11b815260040160405180910390fd5b6000620186a0603a5483620033e7919062009153565b620033f39190620090af565b9050600083604001516001600160a01b03168260405160006040518083038185875af1925050503d806000811462003448576040519150601f19603f3d011682016040523d82523d6000602084013e6200344d565b606091505b505090508062003470576040516312171d8360e31b815260040160405180910390fd5b6200347c82846200913d565b60408086015190516317066a5760e21b81526001600160a01b03898116600483015292955060009290911690635c19a95c90869060240160206040518083038185885af1158015620034d2573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190620034f99190620090e8565b9050866001600160a01b03168c6001600160a01b03168e6001600160a01b03167ffdac6e81913996d95abcc289e90f2d8bd235487ce6fe6f821e7d21002a1915b48e85896040516200355e939291909283526020830191909152604082015260600190565b60405180910390a4604080516002808252606082018352600092602083019080368337019050509050866040015181600081518110620035a257620035a26200916d565b60200260200101906001600160a01b031690816001600160a01b031681525050856040015181600181518110620035dd57620035dd6200916d565b6001600160a01b0390921660209283029190910190910152604051634484077560e01b8152612005906344840775906200361e9084908c9060040162009183565b600060405180830381600087803b1580156200363957600080fd5b505af11580156200364e573d6000803e3d6000fd5b505050508a15620036c0576120056001600160a01b031663e5ed5b1e898f6040518363ffffffff1660e01b81526004016200368b9291906200906f565b600060405180830381600087803b158015620036a657600080fd5b505af1158015620036bb573d6000803e3d6000fd5b505050505b50506034805460ff19169055505050505050505050505050565b60005462010000900460ff16156200370557604051631785c68160e01b815260040160405180910390fd5b3360009081526001602052604090205460ff1615620037375760405163b1d02c3d60e01b815260040160405180910390fd5b6200374162007ef4565b6200374e603f8262007d52565b6200376c5760405163056e881160e01b815260040160405180910390fd5b60006200377862007ef4565b6001600160a01b0381166000908152604160205260409020600c810154919250904290620037aa9061025890620090d2565b1115620037ca57604051631f92cdbd60e11b815260040160405180910390fd5b60098101546001600160401b03600160401b90910481169085161115620038045760405163dc81db8560e01b815260040160405180910390fd5b60098101546000906001600160401b039081169086161015620038425760098201546200383c9086906001600160401b0316620091af565b6200385c565b60098201546200385c906001600160401b031686620091af565b60098301546001600160401b039182169250600160801b900416811115620038975760405163dc81db8560e01b815260040160405180910390fd5b60098201805467ffffffffffffffff19166001600160401b03871690811790915542600c8401556040519081526001600160a01b038416907f78cdd96edf59e09cfd4d26ef6ef6c92d166effe6a40970c54821206d541932cb9060200160405180910390a25050505050565b6060806060600062003916603f6200805b565b90508086101562003f9f5784156200392f578462003931565b805b94506000856200394288846200913d565b116200395a576200395487836200913d565b6200395c565b855b9050806001600160401b03811115620039795762003979620088ea565b604051908082528060200260200182016040528015620039a3578160200160208202803683370190505b509450806001600160401b03811115620039c157620039c1620088ea565b604051908082528060200260200182016040528015620039eb578160200160208202803683370190505b509350806001600160401b0381111562003a095762003a09620088ea565b60405190808252806020026020018201604052801562003a3e57816020015b606081526020019060019003908162003a285790505b50925060005b8181101562003f9c57600062003a6862003a5f838b620090d2565b603f9062008066565b6001600160a01b0380821660009081526041602090815260408083208151610180810183528154861681526001820154861693810193909352600281015490941690820152600383015460608201526004830180549495509193909291608084019162003ad59062009039565b80601f016020809104026020016040519081016040528092919081815260200182805462003b039062009039565b801562003b545780601f1062003b285761010080835404028352916020019162003b54565b820191906000526020600020905b81548152906001019060200180831162003b3657829003601f168201915b505050505081526020016005820160405180608001604052908160008201805462003b7f9062009039565b80601f016020809104026020016040519081016040528092919081815260200182805462003bad9062009039565b801562003bfe5780601f1062003bd25761010080835404028352916020019162003bfe565b820191906000526020600020905b81548152906001019060200180831162003be057829003601f168201915b5050505050815260200160018201805462003c199062009039565b80601f016020809104026020016040519081016040528092919081815260200182805462003c479062009039565b801562003c985780601f1062003c6c5761010080835404028352916020019162003c98565b820191906000526020600020905b81548152906001019060200180831162003c7a57829003601f168201915b5050505050815260200160028201805462003cb39062009039565b80601f016020809104026020016040519081016040528092919081815260200182805462003ce19062009039565b801562003d325780601f1062003d065761010080835404028352916020019162003d32565b820191906000526020600020905b81548152906001019060200180831162003d1457829003601f168201915b5050505050815260200160038201805462003d4d9062009039565b80601f016020809104026020016040519081016040528092919081815260200182805462003d7b9062009039565b801562003dcc5780601f1062003da05761010080835404028352916020019162003dcc565b820191906000526020600020905b81548152906001019060200180831162003dae57829003601f168201915b505050919092525050508152604080516060808201835260098501546001600160401b038082168452600160401b82048116602080860191909152600160801b9092041683850152840191909152600a84015460ff16151582840152600b84015490830152600c8301546080830152600d8301546001600160a01b031660a0830152805161026081019182905260c09092019190600e84019060139082845b81548152602001906001019080831162003e6b575050505050815250509050806000015188848151811062003ea45762003ea46200916d565b60200260200101906001600160a01b031690816001600160a01b0316815250508060e0015162003f3d5780604001516001600160a01b03166315d1f8986040518163ffffffff1660e01b8152600401602060405180830381865afa15801562003f11573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062003f379190620090e8565b62003f40565b60005b87848151811062003f555762003f556200916d565b602002602001018181525050806080015186848151811062003f7b5762003f7b6200916d565b602002602001018190525050508062003f9490620091d9565b905062003a44565b50505b92959194509250565b60005462010000900460ff161562003fd357604051631785c68160e01b815260040160405180910390fd5b3360009081526001602052604090205460ff1615620040055760405163b1d02c3d60e01b815260040160405180910390fd5b3362004013603f8262007d52565b156200403257604051635f28f62b60e01b815260040160405180910390fd5b6001600160a01b038181166000908152604d602052604090205416156200406c57604051631a0a9b9f60e21b815260040160405180910390fd5b6001600160a01b038881166000908152604360205260409020541615620040a657604051631e6f587560e11b815260040160405180910390fd5b60006001600160a01b031660458888604051620040c592919062009089565b908152604051908190036020019020546001600160a01b031614620040fd576040516311fdb94760e01b815260040160405180910390fd5b60006200410b8380620091f5565b6040516020016200411e92919062009089565b60408051601f1981840301815291815281516020928301206000818152604290935291205490915060ff1615620041685760405163c0bf414360e01b815260040160405180910390fd5b60006200417e670de0b6b3a7640000346200913d565b9050603654811015620041a4576040516317b204bf60e11b815260040160405180910390fd5b6001600160a01b038a16620041cc57604051636520611b60e11b815260040160405180910390fd5b611388620041e1604087016020880162008aa4565b6001600160401b0316118062004227575062004204604086016020870162008aa4565b6001600160401b03166200421c602087018762008aa4565b6001600160401b0316115b8062004266575062004240604086016020870162008aa4565b6001600160401b03166200425b606087016040880162008aa4565b6001600160401b0316115b15620042855760405163dc81db8560e01b815260040160405180910390fd5b620042d0620042958580620091f5565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506200807492505050565b620042ee57604051635dba5ad760e01b815260040160405180910390fd5b620042fd838a8a8a8a62008216565b6200431b57604051631647e3cb60e11b815260040160405180910390fd5b600062004369846200432e8780620091f5565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506200834692505050565b905062004378603f8562008447565b506000838152604260209081526040808320805460ff191660019081179091556001600160a01b0380891680865260419094529190932080548f83166001600160a01b031991821617825593810180548516909317909255600282018054918516919093161790915542600382015560048101620043f88b8d836200929d565b5085600582016200440a828262009365565b50879050600982016200441e82826200949e565b505042600c8201556001600160a01b038c81166000908152604360205260409081902080546001600160a01b031916928816929092179091555185906045906200446c908e908e9062009089565b908152602001604051809103902060006101000a8154816001600160a01b0302191690836001600160a01b03160217905550816001600160a01b0316856001600160a01b03168d6001600160a01b03167faecd9fb95e79c75a3a1de93362c6be5fe6ab65770d8614be583884161cd8228d8e8e604051620044ef9291906200956e565b60405180910390a460408051848152602081018590526001600160a01b0387169182917f24d7bda8602b916d64417f0dbfe2e2e88ec9b1157bd9f596dfdb91ba26624e04910160405180910390a360408051670de0b6b3a7640000808252602082015261dead916001600160a01b038816917f24d7bda8602b916d64417f0dbfe2e2e88ec9b1157bd9f596dfdb91ba26624e04910160405180910390a3604051633041949b60e01b815261200590633041949b90620045b590859089906004016200906f565b600060405180830381600087803b158015620045d057600080fd5b505af1158015620045e5573d6000803e3d6000fd5b50505050505050505050505050505050565b60408051606081018252600080825260208201819052918101919091528162004622603f8262007d52565b620046405760405163056e881160e01b815260040160405180910390fd5b50506001600160a01b031660009081526041602090815260409182902082516060810184526009909101546001600160401b038082168352600160401b8204811693830193909352600160801b90049091169181019190915290565b6001600160a01b03808216600090815260416020908152604080832081516101808101835281548616815260018201548616938101939093526002810154909416908201526003830154606082810191909152600484018054919491608084019190620047099062009039565b80601f0160208091040260200160405190810160405280929190818152602001828054620047379062009039565b8015620047885780601f106200475c5761010080835404028352916020019162004788565b820191906000526020600020905b8154815290600101906020018083116200476a57829003601f168201915b5050505050815260200160058201604051806080016040529081600082018054620047b39062009039565b80601f0160208091040260200160405190810160405280929190818152602001828054620047e19062009039565b8015620048325780601f10620048065761010080835404028352916020019162004832565b820191906000526020600020905b8154815290600101906020018083116200481457829003601f168201915b505050505081526020016001820180546200484d9062009039565b80601f01602080910402602001604051908101604052809291908181526020018280546200487b9062009039565b8015620048cc5780601f10620048a057610100808354040283529160200191620048cc565b820191906000526020600020905b815481529060010190602001808311620048ae57829003601f168201915b50505050508152602001600282018054620048e79062009039565b80601f0160208091040260200160405190810160405280929190818152602001828054620049159062009039565b8015620049665780601f106200493a5761010080835404028352916020019162004966565b820191906000526020600020905b8154815290600101906020018083116200494857829003601f168201915b50505050508152602001600382018054620049819062009039565b80601f0160208091040260200160405190810160405280929190818152602001828054620049af9062009039565b801562004a005780601f10620049d45761010080835404028352916020019162004a00565b820191906000526020600020905b815481529060010190602001808311620049e257829003601f168201915b505050919092525050508152604080516060808201835260098501546001600160401b038082168452600160401b82048116602080860191909152600160801b9092041683850152840191909152600a84015460ff16151582840152600b84015490830152600c8301546080830152600d8301546001600160a01b031660a0830152805161026081019182905260c09092019190600e84019060139082845b81548152602001906001019080831162004a9f5750505091909252505050608001519392505050565b336110011462004af057604051630f22c43960e41b8152611001600482015260240162001195565b6001600160a01b038082166000908152604360205260409020541662004b18603f8262007d52565b62004b365760405163056e881160e01b815260040160405180910390fd5b6001600160a01b038181166000908152604160205260408082206002810154603b54925163045bc4d160e41b81526004810193909352909316906345bc4d10906024016020604051808303816000875af115801562004b99573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062004bbf9190620090e8565b90506000603d544262004bd39190620090d2565b905062004be1838262007dff565b836001600160a01b03167f6e9a2ee7aee95665e3a774a212eb11441b217e3e4656ab9563793094689aabb28284600160405162004c219392919062009102565b60405180910390a26002830154604051633041949b60e01b815261200591633041949b9162004c5f916001600160a01b03169088906004016200906f565b600060405180830381600087803b15801562004c7a57600080fd5b505af115801562004c8f573d6000803e3d6000fd5b505050505050505050565b600054610100900460ff161580801562004cbb5750600054600160ff909116105b8062004cd75750303b15801562004cd7575060005460ff166001145b62004d3c5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b606482015260840162001195565b6000805460ff19166001179055801562004d60576000805461ff0019166101001790555b33411462004d815760405163022d8c9560e31b815260040160405180910390fd5b3a1562004da1576040516383f1b1d360e01b815260040160405180910390fd5b611388603555686c6b935b8bbd400000603655670de0b6b3a7640000603755602d603855607860398190556002603a819055678ac7230489e80000603b55680ad78ebc5ac6200000603c55603d9190915560b4603e55604a5562004e197304d63abcd2b9b1baa327f2dda0f873f197ccd1866200845e565b8015620017c0576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a150565b336120001462004e8a57604051630f22c43960e41b8152612000600482015260240162001195565b60405162461bcd60e51b815260206004820152600a60248201526919195c1c9958d85d195960b21b604482015260640162001195565b600054630100000090046001600160a01b0316331462004ef3576040516306fbb1e360e01b815260040160405180910390fd5b60005462010000900460ff161562004f1e57604051631785c68160e01b815260040160405180910390fd5b6000805462ff00001916620100001781556040517f9e87fac88ff661f02d44f95383c817fece4bce600a3dab7a54406878b965e7529190a1565b600062004f67603f8462007d52565b62004f855760405163056e881160e01b815260040160405180910390fd5b6001600160a01b0383811660009081526041602052604090819020600201549051636bbf224960e01b815260048101859052911690636bbf2249906024015b602060405180830381865afa15801562004fe2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620050089190620090e8565b90505b92915050565b60005462010000900460ff16156200503c57604051631785c68160e01b815260040160405180910390fd5b3360009081526001602052604090205460ff16156200506e5760405163b1d02c3d60e01b815260040160405180910390fd5b816200507c603f8262007d52565b6200509a5760405163056e881160e01b815260040160405180910390fd5b6037543490811015620050c05760405163dc6f0bdd60e01b815260040160405180910390fd5b6001600160a01b0380851660009081526041602090815260408083208151610180810183528154861681526001820154861693810193909352600281015490941690820152600383015460608201526004830180543394916080840191620051289062009039565b80601f0160208091040260200160405190810160405280929190818152602001828054620051569062009039565b8015620051a75780601f106200517b57610100808354040283529160200191620051a7565b820191906000526020600020905b8154815290600101906020018083116200518957829003601f168201915b5050505050815260200160058201604051806080016040529081600082018054620051d29062009039565b80601f0160208091040260200160405190810160405280929190818152602001828054620052009062009039565b8015620052515780601f10620052255761010080835404028352916020019162005251565b820191906000526020600020905b8154815290600101906020018083116200523357829003601f168201915b505050505081526020016001820180546200526c9062009039565b80601f01602080910402602001604051908101604052809291908181526020018280546200529a9062009039565b8015620052eb5780601f10620052bf57610100808354040283529160200191620052eb565b820191906000526020600020905b815481529060010190602001808311620052cd57829003601f168201915b50505050508152602001600282018054620053069062009039565b80601f0160208091040260200160405190810160405280929190818152602001828054620053349062009039565b8015620053855780601f10620053595761010080835404028352916020019162005385565b820191906000526020600020905b8154815290600101906020018083116200536757829003601f168201915b50505050508152602001600382018054620053a09062009039565b80601f0160208091040260200160405190810160405280929190818152602001828054620053ce9062009039565b80156200541f5780601f10620053f3576101008083540402835291602001916200541f565b820191906000526020600020905b8154815290600101906020018083116200540157829003601f168201915b505050919092525050508152604080516060808201835260098501546001600160401b038082168452600160401b82048116602080860191909152600160801b9092041683850152840191909152600a84015460ff16151582840152600b84015490830152600c8301546080830152600d8301546001600160a01b031660a0830152805161026081019182905260c09092019190600e84019060139082845b815481526020019060010190808311620054be5750505050508152505090508060e001518015620055015750856001600160a01b0316826001600160a01b031614155b156200552057604051636468920360e01b815260040160405180910390fd5b60408082015190516317066a5760e21b81526001600160a01b0384811660048301526000921690635c19a95c90869060240160206040518083038185885af115801562005571573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190620055989190620090e8565b9050826001600160a01b0316876001600160a01b03167f24d7bda8602b916d64417f0dbfe2e2e88ec9b1157bd9f596dfdb91ba26624e048387604051620055e9929190918252602082015260400190565b60405180910390a36040808301519051633041949b60e01b815261200591633041949b916200561e919087906004016200906f565b600060405180830381600087803b1580156200563957600080fd5b505af11580156200564e573d6000803e3d6000fd5b505050508515620017b9576040516372f6ad8f60e11b81526120059063e5ed5b1e90620056829086908b906004016200906f565b600060405180830381600087803b1580156200569d57600080fd5b505af1158015620056b2573d6000803e3d6000fd5b5050505050505050505050565b620056eb6040518060800160405280606081526020016060815260200160608152602001606081525090565b81620056f9603f8262007d52565b620057175760405163056e881160e01b815260040160405180910390fd5b6001600160a01b038316600090815260416020526040908190208151608081019092526005018054829082906200574e9062009039565b80601f01602080910402602001604051908101604052809291908181526020018280546200577c9062009039565b8015620057cd5780601f10620057a157610100808354040283529160200191620057cd565b820191906000526020600020905b815481529060010190602001808311620057af57829003601f168201915b50505050508152602001600182018054620057e89062009039565b80601f0160208091040260200160405190810160405280929190818152602001828054620058169062009039565b8015620058675780601f106200583b5761010080835404028352916020019162005867565b820191906000526020600020905b8154815290600101906020018083116200584957829003601f168201915b50505050508152602001600282018054620058829062009039565b80601f0160208091040260200160405190810160405280929190818152602001828054620058b09062009039565b8015620059015780601f10620058d55761010080835404028352916020019162005901565b820191906000526020600020905b815481529060010190602001808311620058e357829003601f168201915b505050505081526020016003820180546200591c9062009039565b80601f01602080910402602001604051908101604052809291908181526020018280546200594a9062009039565b80156200599b5780601f106200596f576101008083540402835291602001916200599b565b820191906000526020600020905b8154815290600101906020018083116200597d57829003601f168201915b505050505081525050915050919050565b60005462010000900460ff1615620059d757604051631785c68160e01b815260040160405180910390fd5b3360009081526001602052604090205460ff161562005a095760405163b1d02c3d60e01b815260040160405180910390fd5b62005a158282620084f7565b5050565b336110071462005a4157604051630f22c43960e41b8152611007600482015260240162001195565b62005aae6040518060400160405280601081526020016f1d1c985b9cd9995c91d85cd31a5b5a5d60821b81525085858080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509293925050620086039050565b1562005b69576020811462005ae05783838383604051630a5a604160e01b815260040162001195949392919062009584565b604080516020601f840181900481028201810190925282815260009162005b23918585808385018382808284376000920191909152509293925050620086609050565b90506108fc81108062005b37575061271081115b1562005b605784848484604051630a5a604160e01b815260040162001195949392919062009584565b60355562006873565b62005bda6040518060400160405280601481526020017336b4b729b2b6332232b632b3b0ba34b7b721272160611b81525085858080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509293925050620086039050565b1562005ca4576020811462005c0c5783838383604051630a5a604160e01b815260040162001195949392919062009584565b604080516020601f840181900481028201810190925282815260009162005c4f918585808385018382808284376000920191909152509293925050620086609050565b9050683635c9adc5dea0000081108062005c72575069152d02c7e14af680000081115b1562005c9b5784848484604051630a5a604160e01b815260040162001195949392919062009584565b60365562006873565b62005d17604051806040016040528060168152602001756d696e44656c65676174696f6e424e424368616e676560501b81525085858080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509293925050620086039050565b1562005dde576020811462005d495783838383604051630a5a604160e01b815260040162001195949392919062009584565b604080516020601f840181900481028201810190925282815260009162005d8c918585808385018382808284376000920191909152509293925050620086609050565b905067016345785d8a000081108062005dac5750678ac7230489e8000081115b1562005dd55784848484604051630a5a604160e01b815260040162001195949392919062009584565b60375562006873565b62005e4f604051806040016040528060148152602001736d6178456c656374656456616c696461746f727360601b81525085858080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509293925050620086039050565b1562005f07576020811462005e815783838383604051630a5a604160e01b815260040162001195949392919062009584565b604080516020601f840181900481028201810190925282815260009162005ec4918585808385018382808284376000920191909152509293925050620086609050565b905080158062005ed557506101f481115b1562005efe5784848484604051630a5a604160e01b815260040162001195949392919062009584565b60385562006873565b62005f706040518060400160405280600c81526020016b1d5b989bdb9914195c9a5bd960a21b81525085858080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509293925050620086039050565b156200602d576020811462005fa25783838383604051630a5a604160e01b815260040162001195949392919062009584565b604080516020601f840181900481028201810190925282815260009162005fe5918585808385018382808284376000920191909152509293925050620086609050565b90506203f48081108062005ffb575062278d0081115b15620060245784848484604051630a5a604160e01b815260040162001195949392919062009584565b60395562006873565b6200609b60405180604001604052806011815260200170726564656c65676174654665655261746560781b81525085858080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509293925050620086039050565b15620061485760208114620060cd5783838383604051630a5a604160e01b815260040162001195949392919062009584565b604080516020601f840181900481028201810190925282815260009162006110918585808385018382808284376000920191909152509293925050620086609050565b905060648111156200613f5784848484604051630a5a604160e01b815260040162001195949392919062009584565b603a5562006873565b620061b860405180604001604052806013815260200172191bdddb9d1a5b5954db185cda105b5bdd5b9d606a1b81525085858080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509293925050620086039050565b15620062795760208114620061ea5783838383604051630a5a604160e01b815260040162001195949392919062009584565b604080516020601f84018190048102820181019092528281526000916200622d918585808385018382808284376000920191909152509293925050620086609050565b9050674563918244f40000811080620062475750603c5481115b15620062705784848484604051630a5a604160e01b815260040162001195949392919062009584565b603b5562006873565b620062e76040518060400160405280601181526020017019995b1bdb9e54db185cda105b5bdd5b9d607a1b81525085858080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509293925050620086039050565b15620063aa5760208114620063195783838383604051630a5a604160e01b815260040162001195949392919062009584565b604080516020601f84018190048102820181019092528281526000916200635c918585808385018382808284376000920191909152509293925050620086609050565b905068056bc75e2d63100000811080620063785750603b548111155b15620063a15784848484604051630a5a604160e01b815260040162001195949392919062009584565b603c5562006873565b620064176040518060400160405280601081526020016f646f776e74696d654a61696c54696d6560801b81525085858080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509293925050620086039050565b15620064d45760208114620064495783838383604051630a5a604160e01b815260040162001195949392919062009584565b604080516020601f84018190048102820181019092528281526000916200648c918585808385018382808284376000920191909152509293925050620086609050565b90506202a300811080620064a25750603e548110155b15620064cb5784848484604051630a5a604160e01b815260040162001195949392919062009584565b603d5562006873565b6200653f6040518060400160405280600e81526020016d66656c6f6e794a61696c54696d6560901b81525085858080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509293925050620086039050565b15620065fc5760208114620065715783838383604051630a5a604160e01b815260040162001195949392919062009584565b604080516020601f8401819004810282018101909252828152600091620065b4918585808385018382808284376000920191909152509293925050620086609050565b9050620d2f00811080620065ca5750603d548111155b15620065f35784848484604051630a5a604160e01b815260040162001195949392919062009584565b603e5562006873565b620066766040518060400160405280601c81526020017f6d617846656c6f6e794265747765656e42726561746865426c6f636b0000000081525085858080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509293925050620086039050565b15620067225760208114620066a85783838383604051630a5a604160e01b815260040162001195949392919062009584565b604080516020601f8401819004810282018101909252828152600091620066eb918585808385018382808284376000920191909152509293925050620086609050565b905080600003620067195784848484604051630a5a604160e01b815260040162001195949392919062009584565b604a5562006873565b620067906040518060400160405280601181526020017039ba30b5b2a43ab1283937ba32b1ba37b960791b81525085858080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509293925050620086039050565b15620068505760148114620067c25783838383604051630a5a604160e01b815260040162001195949392919062009584565b60006200680a601484848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509293925050620086609050565b90506001600160a01b0381166200683e5784848484604051630a5a604160e01b815260040162001195949392919062009584565b620068498162008665565b5062006873565b838383836040516325ee20d560e21b815260040162001195949392919062009584565b7ff1ce9b2cbf50eeb05769a29e2543fd350cab46894a7dd9978a12d534bb20e63384848484604051620068aa949392919062009584565b60405180910390a150505050565b60005462010000900460ff1615620068e357604051631785c68160e01b815260040160405180910390fd5b3360009081526001602052604090205460ff1615620069155760405163b1d02c3d60e01b815260040160405180910390fd5b816000816001600160401b03811115620069335762006933620088ea565b6040519080825280602002602001820160405280156200695d578160200160208202803683370190505b5090506000805b8381101562006a5b57620069a68787838181106200698657620069866200916d565b90506020020160208101906200699d91906200877b565b603f9062007d52565b620069c45760405163056e881160e01b815260040160405180910390fd5b60416000888884818110620069dd57620069dd6200916d565b9050602002016020810190620069f491906200877b565b6001600160a01b039081168252602082019290925260400160002060020154845191169250829084908390811062006a305762006a306200916d565b6001600160a01b039092166020928302919091019091015262006a5381620091d9565b905062006964565b50604051634484077560e01b815261200590634484077590620028a5908590889060040162009183565b606080600062006a96603f6200805b565b90508085101562006c5a57831562006aaf578362006ab1565b805b935060008462006ac287846200913d565b1162006ada5762006ad486836200913d565b62006adc565b845b9050806001600160401b0381111562006af95762006af9620088ea565b60405190808252806020026020018201604052801562006b23578160200160208202803683370190505b509350806001600160401b0381111562006b415762006b41620088ea565b60405190808252806020026020018201604052801562006b6b578160200160208202803683370190505b50925060005b8181101562006c575762006b8a62003a5f8289620090d2565b85828151811062006b9f5762006b9f6200916d565b60200260200101906001600160a01b031690816001600160a01b0316815250506041600086838151811062006bd85762006bd86200916d565b60200260200101516001600160a01b03166001600160a01b0316815260200190815260200160002060020160009054906101000a90046001600160a01b031684828151811062006c2c5762006c2c6200916d565b6001600160a01b039092166020928302919091019091015262006c4f81620091d9565b905062006b71565b50505b9250925092565b336110011462006c8957604051630f22c43960e41b8152611001600482015260240162001195565b60005462010000900460ff161562006cb457604051631785c68160e01b815260040160405180910390fd5b6001600160a01b038082166000908152604360205260409020541662006cdc603f8262007d52565b62006cfa5760405163056e881160e01b815260040160405180910390fd5b6001600160a01b03811660009081526041602052604081209062006d2161025842620090af565b604a546000828152604b60205260409020549192501162006d555760405163bd52fcdb60e01b815260040160405180910390fd5b6000818152604b6020526040812080546001929062006d76908490620090d2565b90915550506001600160a01b0384166000908152604460205260409020541580159062006dca57506001600160a01b038416600090815260446020526040902054429062006dc89061025890620090d2565b105b1562006de9576040516330abb81d60e21b815260040160405180910390fd5b60008062006df985600062007d75565b915091508162006e1c57604051631b919bb160e11b815260040160405180910390fd5b6002840154603c5460405163045bc4d160e41b815260048101919091526000916001600160a01b0316906345bc4d10906024016020604051808303816000875af115801562006e6f573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062006e959190620090e8565b905062006ea3858362007dff565b856001600160a01b03167f6e9a2ee7aee95665e3a774a212eb11441b217e3e4656ab9563793094689aabb28383600060405162006ee39392919062009102565b60405180910390a26002850154604051633041949b60e01b815261200591633041949b9162005682916001600160a01b0316908a906004016200906f565b6001600160a01b038082166000908152604160209081526040808320815161018081018352815486168152600182015486169381019390935260028101549094169082015260038301546060820152600483018054929384938493849390929160808401919062006f929062009039565b80601f016020809104026020016040519081016040528092919081815260200182805462006fc09062009039565b8015620070115780601f1062006fe55761010080835404028352916020019162007011565b820191906000526020600020905b81548152906001019060200180831162006ff357829003601f168201915b50505050508152602001600582016040518060800160405290816000820180546200703c9062009039565b80601f01602080910402602001604051908101604052809291908181526020018280546200706a9062009039565b8015620070bb5780601f106200708f57610100808354040283529160200191620070bb565b820191906000526020600020905b8154815290600101906020018083116200709d57829003601f168201915b50505050508152602001600182018054620070d69062009039565b80601f0160208091040260200160405190810160405280929190818152602001828054620071049062009039565b8015620071555780601f10620071295761010080835404028352916020019162007155565b820191906000526020600020905b8154815290600101906020018083116200713757829003601f168201915b50505050508152602001600282018054620071709062009039565b80601f01602080910402602001604051908101604052809291908181526020018280546200719e9062009039565b8015620071ef5780601f10620071c357610100808354040283529160200191620071ef565b820191906000526020600020905b815481529060010190602001808311620071d157829003601f168201915b505050505081526020016003820180546200720a9062009039565b80601f0160208091040260200160405190810160405280929190818152602001828054620072389062009039565b8015620072895780601f106200725d5761010080835404028352916020019162007289565b820191906000526020600020905b8154815290600101906020018083116200726b57829003601f168201915b505050919092525050508152604080516060808201835260098501546001600160401b038082168452600160401b82048116602080860191909152600160801b9092041683850152840191909152600a84015460ff16151582840152600b84015490830152600c8301546080830152600d8301546001600160a01b031660a0830152805161026081019182905260c09092019190600e84019060139082845b815481526020019060010190808311620073285750505091909252505050606081015160e0820151610100909201519097919650945092505050565b60005462010000900460ff16156200738f57604051631785c68160e01b815260040160405180910390fd5b3360009081526001602052604090205460ff1615620073c15760405163b1d02c3d60e01b815260040160405180910390fd5b620073cb62007ef4565b620073d8603f8262007d52565b620073f65760405163056e881160e01b815260040160405180910390fd5b60006200740262007ef4565b6001600160a01b0381166000908152604160205260409020600c810154919250904290620074349061025890620090d2565b11156200745457604051631f92cdbd60e11b815260040160405180910390fd5b600581018054620074659062009039565b80601f0160208091040260200160405190810160405280929190818152602001828054620074939062009039565b8015620074e45780601f10620074b857610100808354040283529160200191620074e4565b820191906000526020600020905b815481529060010190602001808311620074c657829003601f168201915b5050508287525085916005840191508190620075019082620095ba565b5060208201516001820190620075189082620095ba565b50604082015160028201906200752f9082620095ba565b5060608201516003820190620075469082620095ba565b505042600c830155506040516001600160a01b038316907f85d6366b336ade7f106987ec7a8eac1e8799e508aeab045a39d2f63e0dc969d990600090a250505050565b60005462010000900460ff1615620075b457604051631785c68160e01b815260040160405180910390fd5b3360009081526001602052604090205460ff1615620075e65760405163b1d02c3d60e01b815260040160405180910390fd5b82811462007607576040516341abc80160e01b815260040160405180910390fd5b60005b838110156200767857620076658585838181106200762c576200762c6200916d565b90506020020160208101906200764391906200877b565b8484848181106200765857620076586200916d565b90506020020135620084f7565b6200767081620091d9565b90506200760a565b5050505050565b6001600160a01b0380821660009081526041602090815260408083208151610180810183528154861681526001820154861693810193909352600281015490941690820152600383015460608201526004830180549293849390916080840191620076ea9062009039565b80601f0160208091040260200160405190810160405280929190818152602001828054620077189062009039565b8015620077695780601f106200773d5761010080835404028352916020019162007769565b820191906000526020600020905b8154815290600101906020018083116200774b57829003601f168201915b5050505050815260200160058201604051806080016040529081600082018054620077949062009039565b80601f0160208091040260200160405190810160405280929190818152602001828054620077c29062009039565b8015620078135780601f10620077e75761010080835404028352916020019162007813565b820191906000526020600020905b815481529060010190602001808311620077f557829003601f168201915b505050505081526020016001820180546200782e9062009039565b80601f01602080910402602001604051908101604052809291908181526020018280546200785c9062009039565b8015620078ad5780601f106200788157610100808354040283529160200191620078ad565b820191906000526020600020905b8154815290600101906020018083116200788f57829003601f168201915b50505050508152602001600282018054620078c89062009039565b80601f0160208091040260200160405190810160405280929190818152602001828054620078f69062009039565b8015620079475780601f106200791b5761010080835404028352916020019162007947565b820191906000526020600020905b8154815290600101906020018083116200792957829003601f168201915b50505050508152602001600382018054620079629062009039565b80601f0160208091040260200160405190810160405280929190818152602001828054620079909062009039565b8015620079e15780601f10620079b557610100808354040283529160200191620079e1565b820191906000526020600020905b815481529060010190602001808311620079c357829003601f168201915b505050919092525050508152604080516060808201835260098501546001600160401b038082168452600160401b82048116602080860191909152600160801b9092041683850152840191909152600a84015460ff16151582840152600b84015490830152600c8301546080830152600d8301546001600160a01b031660a0830152805161026081019182905260c09092019190600e84019060139082845b81548152602001906001019080831162007a805750505091909252505050604001519392505050565b600062007ab8603f8462007d52565b62007ad65760405163056e881160e01b815260040160405180910390fd5b6001600160a01b038381166000908152604160205260409081902060020154905163aa1966cd60e01b81526004810185905291169063aa1966cd9060240162004fc4565b60005462010000900460ff161562007b4557604051631785c68160e01b815260040160405180910390fd5b3360009081526001602052604090205460ff161562007b775760405163b1d02c3d60e01b815260040160405180910390fd5b62007b8162007ef4565b62007b8e603f8262007d52565b62007bac5760405163056e881160e01b815260040160405180910390fd5b600062007bb862007ef4565b905062007bc9818787878762008216565b62007be757604051631647e3cb60e11b815260040160405180910390fd5b60006001600160a01b03166045878760405162007c0692919062009089565b908152604051908190036020019020546001600160a01b03161462007c3e576040516311fdb94760e01b815260040160405180910390fd5b6001600160a01b0381166000908152604160205260409020600c810154429062007c6c9061025890620090d2565b111562007c8c57604051631f92cdbd60e11b815260040160405180910390fd5b4260468260040160405162007ca2919062009682565b908152604051908190036020019020556004810162007cc38789836200929d565b5042600c820155604051829060459062007ce1908a908a9062009089565b90815260405190819003602001812080546001600160a01b039384166001600160a01b0319909116179055908316907f783156582145bd0ff7924fae6953ba054cf1233eb60739a200ddb10de068ff0d9062007d41908a908a906200956e565b60405180910390a250505050505050565b6001600160a01b0381166000908152600183016020526040812054151562005008565b6000806000848460405160200162007d8f92919062009700565b60408051601f1981840301815291815281516020928301206000818152604c9093529120549091504281111562007dcf5760008093509350505062007df8565b603e5462007dde9042620090d2565b6000928352604c6020526040909220829055506001925090505b9250929050565b6000600162007e0f603f6200805b565b62007e1b91906200913d565b604954108015915062007e675760018301546040516001600160a01b03909116907f2afdc18061ac21cff7d9f11527ab9c8dec6fabd4edf6f894ed634bebd6a20d4590600090a2505050565b82600b015482111562007e7c57600b83018290555b600a83015460ff1662007eef57600a8301805460ff191660019081179091556049805460009062007eaf908490620090d2565b909155505060018301546040516001600160a01b03909116907f4905ac32602da3fb8b4b7b00c285e5fc4c6c2308cc908b4a1e4e9625a29c90a390600090a25b505050565b336000908152604d60205260408120546001600160a01b03161562007f305750336000908152604d60205260409020546001600160a01b031690565b503390565b6001600160a01b0381166000908152604160205260409020600a81015460ff161562007f5f575050565b6036546002820154604051630913db4760e01b81526001600160a01b03858116600483015290911690630913db4790602401602060405180830381865afa15801562007faf573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062007fd59190620090e8565b101562005a155762007ff781603d544262007ff19190620090d2565b62007dff565b80546040516335409f7f60e01b81526001600160a01b039091166004820152611000906335409f7f90602401600060405180830381600087803b1580156200803e57600080fd5b505af115801562008053573d6000803e3d6000fd5b505050505050565b60006200500b825490565b6000620050088383620086d1565b6000808290506003815110806200808c575060098151115b156200809b5750600092915050565b604181600081518110620080b357620080b36200916d565b016020015160f81c1080620080e55750605a81600081518110620080db57620080db6200916d565b016020015160f81c115b15620080f45750600092915050565b60015b81518110156200820c5760308282815181106200811857620081186200916d565b016020015160f81c108062008149575060398282815181106200813f576200813f6200916d565b016020015160f81c115b801562008199575060418282815181106200816857620081686200916d565b016020015160f81c1080620081995750605a8282815181106200818f576200818f6200916d565b016020015160f81c115b8015620081e957506061828281518110620081b857620081b86200916d565b016020015160f81c1080620081e95750607a828281518110620081df57620081df6200916d565b016020015160f81c115b15620081f9575060009392505050565b6200820481620091d9565b9050620080f7565b5060019392505050565b60006030841415806200822a575060608214155b1562008239575060006200833d565b6000868686466040516020016200825494939291906200974a565b60408051808303601f1901815282825280516020918201208184528383019092529092506000919060208201818036833701905050905081602082015260008186868a8a604051602001620082ae95949392919062009777565b60408051808303601f190181526001808452838301909252925060009190602082018180368337019050509050815160016020830182602086016066600019fa620082f857600080fd5b506000816000815181106200831157620083116200916d565b016020015160f81c90506001811462008333576000955050505050506200833d565b6001955050505050505b95945050505050565b60008061200361dead6040516200835d9062008750565b6001600160a01b03928316815291166020820152606060408201819052600090820152608001604051809103906000f080158015620083a0573d6000803e3d6000fd5b509050806001600160a01b031663f399e22e3486866040518463ffffffff1660e01b8152600401620083d4929190620097af565b6000604051808303818588803b158015620083ee57600080fd5b505af115801562008403573d6000803e3d6000fd5b50506040516001600160a01b038086169450881692507fd481492e4e93bb36b4c12a5af93f03be3bf04b454dfbc35dd2663fa26f44d5b09150600090a39392505050565b600062005008836001600160a01b038416620086fe565b600054610100900460ff16620084cb5760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b606482015260840162001195565b600080546001600160a01b039092166301000000026301000000600160b81b0319909216919091179055565b8162008505603f8262007d52565b620085235760405163056e881160e01b815260040160405180910390fd5b6001600160a01b03838116600090815260416020526040808220600201549051635569f64b60e11b8152336004820152602481018690529192169063aad3ec96906044016020604051808303816000875af115801562008587573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620085ad9190620090e8565b9050336001600160a01b0316846001600160a01b03167ff7a40077ff7a04c7e61f6f26fb13774259ddf1b6bce9ecf26a8276cdd399268383604051620085f591815260200190565b60405180910390a350505050565b600081604051602001620086189190620097d5565b6040516020818303038152906040528051906020012083604051602001620086419190620097d5565b6040516020818303038152906040528051906020012014905092915050565b015190565b600080546040516001600160a01b0380851693630100000090930416917f44fc1b38a4abaa91ebd1b628a5b259a698f86238c8217d68f516e87769c60c0b91a3600080546001600160a01b039092166301000000026301000000600160b81b0319909216919091179055565b6000826000018281548110620086eb57620086eb6200916d565b9060005260206000200154905092915050565b600081815260018301602052604081205462008747575081546001818101845560008481526020808220909301849055845484825282860190935260409020919091556200500b565b5060006200500b565b610e9680620097f483390190565b80356001600160a01b03811681146200877657600080fd5b919050565b6000602082840312156200878e57600080fd5b62005008826200875e565b60008083601f840112620087ac57600080fd5b5081356001600160401b03811115620087c457600080fd5b60208301915083602082850101111562007df857600080fd5b60008060208385031215620087f157600080fd5b82356001600160401b038111156200880857600080fd5b620088168582860162008799565b90969095509350505050565b6000806000604084860312156200883857600080fd5b833560ff811681146200884a57600080fd5b925060208401356001600160401b038111156200886657600080fd5b620088748682870162008799565b9497909650939450505050565b60005b838110156200889e57818101518382015260200162008884565b50506000910152565b60008151808452620088c181602086016020860162008881565b601f01601f19169290920160200192915050565b602081526000620050086020830184620088a7565b634e487b7160e01b600052604160045260246000fd5b604051608081016001600160401b0381118282101715620089255762008925620088ea565b60405290565b60006001600160401b0380841115620089485762008948620088ea565b604051601f8501601f19908116603f01168101908282118183101715620089735762008973620088ea565b816040528093508581528686860111156200898d57600080fd5b858560208301376000602087830101525050509392505050565b600060208284031215620089ba57600080fd5b81356001600160401b03811115620089d157600080fd5b8201601f81018413620089e357600080fd5b620089f4848235602084016200892b565b949350505050565b6000806040838503121562008a1057600080fd5b62008a1b836200875e565b946020939093013593505050565b803580151581146200877657600080fd5b6000806000806080858703121562008a5157600080fd5b62008a5c856200875e565b935062008a6c602086016200875e565b92506040850135915062008a836060860162008a29565b905092959194509250565b6001600160401b0381168114620017c057600080fd5b60006020828403121562008ab757600080fd5b813562008ac48162008a8e565b9392505050565b6000806040838503121562008adf57600080fd5b50508035926020909101359150565b600081518084526020808501945080840160005b8381101562008b295781516001600160a01b03168752958201959082019060010162008b02565b509495945050505050565b60808152600062008b49608083018762008aee565b82810360208481019190915286518083528782019282019060005b8181101562008b825784518352938301939183019160010162008b64565b5050848103604086015286518082528282019350600581901b8201830183890160005b8381101562008bd757601f1985840301875262008bc4838351620088a7565b9686019692509085019060010162008ba5565b5050809550505050505082606083015295945050505050565b600080600080600080600087890360e081121562008c0d57600080fd5b62008c18896200875e565b975060208901356001600160401b038082111562008c3557600080fd5b62008c438c838d0162008799565b909950975060408b013591508082111562008c5d57600080fd5b62008c6b8c838d0162008799565b90975095508591506060605f198401121562008c8657600080fd5b60608b01945060c08b013592508083111562008ca157600080fd5b505088016080818b03121562008cb657600080fd5b8091505092959891949750929550565b6000806040838503121562008cda57600080fd5b62008ce5836200875e565b915062008cf56020840162008a29565b90509250929050565b60208152600082516080602084015262008d1c60a0840182620088a7565b90506020840151601f198085840301604086015262008d3c8383620088a7565b9250604086015191508085840301606086015262008d5b8383620088a7565b92506060860151915080858403016080860152506200833d8282620088a7565b6000806000806040858703121562008d9257600080fd5b84356001600160401b038082111562008daa57600080fd5b62008db88883890162008799565b9096509450602087013591508082111562008dd257600080fd5b5062008de18782880162008799565b95989497509550505050565b60008083601f84011262008e0057600080fd5b5081356001600160401b0381111562008e1857600080fd5b6020830191508360208260051b850101111562007df857600080fd5b60008060006040848603121562008e4a57600080fd5b83356001600160401b0381111562008e6157600080fd5b62008e6f8682870162008ded565b909450925062008e849050602085016200875e565b90509250925092565b60608152600062008ea2606083018662008aee565b828103602084015262008eb6818662008aee565b915050826040830152949350505050565b600082601f83011262008ed957600080fd5b62005008838335602085016200892b565b60006020828403121562008efd57600080fd5b81356001600160401b038082111562008f1557600080fd5b908301906080828603121562008f2a57600080fd5b62008f3462008900565b82358281111562008f4457600080fd5b62008f528782860162008ec7565b82525060208301358281111562008f6857600080fd5b62008f768782860162008ec7565b60208301525060408301358281111562008f8f57600080fd5b62008f9d8782860162008ec7565b60408301525060608301358281111562008fb657600080fd5b62008fc48782860162008ec7565b60608301525095945050505050565b6000806000806040858703121562008fea57600080fd5b84356001600160401b03808211156200900257600080fd5b620090108883890162008ded565b909650945060208701359150808211156200902a57600080fd5b5062008de18782880162008ded565b600181811c908216806200904e57607f821691505b60208210810362001bd457634e487b7160e01b600052602260045260246000fd5b6001600160a01b0392831681529116602082015260400190565b8183823760009101908152919050565b634e487b7160e01b600052601160045260246000fd5b600082620090cd57634e487b7160e01b600052601260045260246000fd5b500490565b808201808211156200500b576200500b62009099565b600060208284031215620090fb57600080fd5b5051919050565b8381526020810183905260608101600383106200912f57634e487b7160e01b600052602160045260246000fd5b826040830152949350505050565b818103818111156200500b576200500b62009099565b80820281158282048414176200500b576200500b62009099565b634e487b7160e01b600052603260045260246000fd5b60408152600062009198604083018562008aee565b905060018060a01b03831660208301529392505050565b6001600160401b03828116828216039080821115620091d257620091d262009099565b5092915050565b600060018201620091ee57620091ee62009099565b5060010190565b6000808335601e198436030181126200920d57600080fd5b8301803591506001600160401b038211156200922857600080fd5b60200191503681900382131562007df857600080fd5b601f82111562007eef57600081815260208120601f850160051c81016020861015620092675750805b601f850160051c820191505b81811015620080535782815560010162009273565b600019600383901b1c191660019190911b1790565b6001600160401b03831115620092b757620092b7620088ea565b620092cf83620092c8835462009039565b836200923e565b6000601f841160018114620093025760008515620092ed5750838201355b620092f9868262009288565b84555062007678565b600083815260209020601f19861690835b8281101562009335578685013582556020948501946001909201910162009313565b5086821015620093535760001960f88860031b161c19848701351681555b505060018560011b0183555050505050565b620093718283620091f5565b6001600160401b038111156200938b576200938b620088ea565b620093a3816200939c855462009039565b856200923e565b6000601f821160018114620093d65760008315620093c15750838201355b620093cd848262009288565b86555062009433565b600085815260209020601f19841690835b82811015620094095786850135825560209485019460019092019101620093e7565b5084821015620094275760001960f88660031b161c19848701351681555b505060018360011b0185555b50505050620094466020830183620091f5565b620094568183600186016200929d565b5050620094676040830183620091f5565b620094778183600286016200929d565b5050620094886060830183620091f5565b620094988183600386016200929d565b50505050565b8135620094ab8162008a8e565b6001600160401b03811690508154816001600160401b031982161783556020840135620094d88162008a8e565b6fffffffffffffffff0000000000000000604091821b166fffffffffffffffffffffffffffffffff19831684178117855590850135620095188162008a8e565b6001600160c01b0319929092169092179190911760809190911b67ffffffffffffffff60801b1617905550565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b602081526000620089f460208301848662009545565b6040815260006200959a60408301868862009545565b8281036020840152620095af81858762009545565b979650505050505050565b81516001600160401b03811115620095d657620095d6620088ea565b620095ee81620095e7845462009039565b846200923e565b602080601f8311600181146200962257600084156200960d5750858301515b62009619858262009288565b86555062008053565b600085815260208120601f198616915b82811015620096535788860151825594840194600190910190840162009632565b5085821015620096725787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b6000808354620096928162009039565b60018281168015620096ad5760018114620096c357620096f4565b60ff1984168752821515830287019450620096f4565b8760005260208060002060005b85811015620096eb5781548a820152908401908201620096d0565b50505082870194505b50929695505050505050565b6bffffffffffffffffffffffff198360601b1681526000600383106200973657634e487b7160e01b600052602160045260246000fd5b5060f89190911b6014820152601501919050565b6bffffffffffffffffffffffff198560601b16815282846014830137601492019182015260340192915050565b600086516200978b818460208b0162008881565b82018587823760009086019081528385823760009301928352509095945050505050565b6001600160a01b0383168152604060208201819052600090620089f490830184620088a7565b60008251620097e981846020870162008881565b919091019291505056fe608060405260405162000e9638038062000e96833981016040819052620000269162000497565b828162000036828260006200004d565b50620000449050826200008a565b505050620005ca565b6200005883620000e5565b600082511180620000665750805b1562000085576200008383836200012760201b620001691760201c565b505b505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f620000b562000156565b604080516001600160a01b03928316815291841660208301520160405180910390a1620000e2816200018f565b50565b620000f08162000244565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b60606200014f838360405180606001604052806027815260200162000e6f60279139620002f8565b9392505050565b60006200018060008051602062000e4f83398151915260001b6200037760201b620001951760201c565b546001600160a01b0316919050565b6001600160a01b038116620001fa5760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b60648201526084015b60405180910390fd5b806200022360008051602062000e4f83398151915260001b6200037760201b620001951760201c565b80546001600160a01b0319166001600160a01b039290921691909117905550565b6200025a816200037a60201b620001981760201c565b620002be5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b6064820152608401620001f1565b80620002237f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc60001b6200037760201b620001951760201c565b6060600080856001600160a01b03168560405162000317919062000577565b600060405180830381855af49150503d806000811462000354576040519150601f19603f3d011682016040523d82523d6000602084013e62000359565b606091505b5090925090506200036d8683838762000389565b9695505050505050565b90565b6001600160a01b03163b151590565b60608315620003fd578251600003620003f5576001600160a01b0385163b620003f55760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401620001f1565b508162000409565b62000409838362000411565b949350505050565b815115620004225781518083602001fd5b8060405162461bcd60e51b8152600401620001f1919062000595565b80516001600160a01b03811681146200045657600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b60005b838110156200048e57818101518382015260200162000474565b50506000910152565b600080600060608486031215620004ad57600080fd5b620004b8846200043e565b9250620004c8602085016200043e565b60408501519092506001600160401b0380821115620004e657600080fd5b818601915086601f830112620004fb57600080fd5b8151818111156200051057620005106200045b565b604051601f8201601f19908116603f011681019083821181831017156200053b576200053b6200045b565b816040528281528960208487010111156200055557600080fd5b6200056883602083016020880162000471565b80955050505050509250925092565b600082516200058b81846020870162000471565b9190910192915050565b6020815260008251806020840152620005b681604085016020870162000471565b601f01601f19169190910160400192915050565b61087580620005da6000396000f3fe60806040523661001357610011610017565b005b6100115b61001f6101a7565b6001600160a01b0316330361015f5760606001600160e01b0319600035166364d3180d60e11b810161005a576100536101da565b9150610157565b63587086bd60e11b6001600160e01b031982160161007a57610053610231565b63070d7c6960e41b6001600160e01b031982160161009a57610053610277565b621eb96f60e61b6001600160e01b03198216016100b9576100536102a8565b63a39f25e560e01b6001600160e01b03198216016100d9576100536102e8565b60405162461bcd60e51b815260206004820152604260248201527f5472616e73706172656e745570677261646561626c6550726f78793a2061646d60448201527f696e2063616e6e6f742066616c6c6261636b20746f2070726f78792074617267606482015261195d60f21b608482015260a4015b60405180910390fd5b815160208301f35b6101676102fc565b565b606061018e83836040518060600160405280602781526020016108426027913961030c565b9392505050565b90565b6001600160a01b03163b151590565b60007fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b546001600160a01b0316919050565b60606101e4610384565b60006101f33660048184610695565b81019061020091906106db565b905061021d8160405180602001604052806000815250600061038f565b505060408051602081019091526000815290565b60606000806102433660048184610695565b810190610250919061070c565b915091506102608282600161038f565b604051806020016040528060008152509250505090565b6060610281610384565b60006102903660048184610695565b81019061029d91906106db565b905061021d816103bb565b60606102b2610384565b60006102bc6101a7565b604080516001600160a01b03831660208201529192500160405160208183030381529060405291505090565b60606102f2610384565b60006102bc610412565b610167610307610412565b610421565b6060600080856001600160a01b03168560405161032991906107f2565b600060405180830381855af49150503d8060008114610364576040519150601f19603f3d011682016040523d82523d6000602084013e610369565b606091505b509150915061037a86838387610445565b9695505050505050565b341561016757600080fd5b610398836104c6565b6000825111806103a55750805b156103b6576103b48383610169565b505b505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f6103e46101a7565b604080516001600160a01b03928316815291841660208301520160405180910390a161040f81610506565b50565b600061041c6105af565b905090565b3660008037600080366000845af43d6000803e808015610440573d6000f35b3d6000fd5b606083156104b45782516000036104ad576001600160a01b0385163b6104ad5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015260640161014e565b50816104be565b6104be83836105d7565b949350505050565b6104cf81610601565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b6001600160a01b03811661056b5760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b606482015260840161014e565b807fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b80546001600160a01b0319166001600160a01b039290921691909117905550565b60007f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc6101cb565b8151156105e75781518083602001fd5b8060405162461bcd60e51b815260040161014e919061080e565b6001600160a01b0381163b61066e5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b606482015260840161014e565b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc61058e565b600080858511156106a557600080fd5b838611156106b257600080fd5b5050820193919092039150565b80356001600160a01b03811681146106d657600080fd5b919050565b6000602082840312156106ed57600080fd5b61018e826106bf565b634e487b7160e01b600052604160045260246000fd5b6000806040838503121561071f57600080fd5b610728836106bf565b9150602083013567ffffffffffffffff8082111561074557600080fd5b818501915085601f83011261075957600080fd5b81358181111561076b5761076b6106f6565b604051601f8201601f19908116603f01168101908382118183101715610793576107936106f6565b816040528281528860208487010111156107ac57600080fd5b8260208601602083013760006020848301015280955050505050509250929050565b60005b838110156107e95781810151838201526020016107d1565b50506000910152565b600082516108048184602087016107ce565b9190910192915050565b602081526000825180602084015261082d8160408501602087016107ce565b601f01601f1916919091016040019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a164736f6c6343000811000ab53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a164736f6c6343000811000a \ No newline at end of file diff --git a/core/systemcontracts/pascal/rialto/StakingContract b/core/systemcontracts/pascal/rialto/StakingContract new file mode 100644 index 0000000000..54386ef840 --- /dev/null +++ b/core/systemcontracts/pascal/rialto/StakingContract @@ -0,0 +1 @@ +60806040526004361061028c5760003560e01c806375d47a0a1161015a578063bf8546ca116100c1578063df8079e91161007a578063df8079e9146109aa578063edc1a5b0146109bf578063f45fd80b146109d4578063f9a2bbc714610a19578063fa03f79714610a2e578063fd6a687914610a4357610293565b8063bf8546ca146108f5578063c2117d8214610930578063c81b166214610945578063c8509d81146106d0578063d61b9b931461095a578063dc927faf1461099557610293565b8063aa82dce111610113578063aa82dce1146107a8578063aad56063146107bd578063ab51bb96146107d2578063ac43175114610800578063b88a802f146108cb578063baaafd3b146108e057610293565b806375d47a0a146106a65780637e434d54146106bb578063831d65d1146106d05780639dc0926214610755578063a1a11bf51461076a578063a78abc161461077f57610293565b8063493279b1116101fe57806362b171d2116101b757806362b171d2146105cb57806369b635b6146105e05780636bd8f804146105f55780636e47b4821461062b5780636fb7f7eb1461064057806375aca5931461067357610293565b8063493279b11461051f5780634d99dd161461054b57806351b4dce31461057757806351e806721461058c5780635d17c8bd146105a15780635d499b1b146105b657610293565b80631182b875116102505780631182b8751461039e57806311fe9ec61461049857806328087028146104cb5780632fdeb111146104e057806334c43354146104f557806343756e5c1461050a57610293565b8063026e402b1461029857806302985992146102c6578063047636d1146102ed5780630c795715146103585780630e2374a51461036d57610293565b3661029357005b600080fd5b6102c4600480360360408110156102ae57600080fd5b506001600160a01b038135169060200135610a58565b005b3480156102d257600080fd5b506102db610a95565b60408051918252519081900360200190f35b3480156102f957600080fd5b506103206004803603602081101561031057600080fd5b50356001600160a01b0316610a9b565b6040518082606080838360005b8381101561034557818101518382015260200161032d565b5050505090500191505060405180910390f35b34801561036457600080fd5b506102db610aed565b34801561037957600080fd5b50610382610af3565b604080516001600160a01b039092168252519081900360200190f35b3480156103aa57600080fd5b50610423600480360360408110156103c157600080fd5b60ff8235169190810190604081016020820135600160201b8111156103e557600080fd5b8201836020820111156103f757600080fd5b803590602001918460018302840111600160201b8311171561041857600080fd5b509092509050610af9565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561045d578181015183820152602001610445565b50505050905090810190601f16801561048a5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3480156104a457600080fd5b506102db600480360360208110156104bb57600080fd5b50356001600160a01b0316610bb8565b3480156104d757600080fd5b50610382610bd3565b3480156104ec57600080fd5b506102db610bd9565b34801561050157600080fd5b506102db610bdf565b34801561051657600080fd5b50610382610bea565b34801561052b57600080fd5b50610534610bf0565b6040805161ffff9092168252519081900360200190f35b6102c46004803603604081101561056157600080fd5b506001600160a01b038135169060200135610bf6565b34801561058357600080fd5b50610382610cbb565b34801561059857600080fd5b50610382610cc1565b3480156105ad57600080fd5b506102db610cc7565b3480156105c257600080fd5b506102db610ccd565b3480156105d757600080fd5b506102db610cd6565b3480156105ec57600080fd5b506102db610e76565b6102c46004803603606081101561060b57600080fd5b506001600160a01b03813581169160208101359091169060400135610a58565b34801561063757600080fd5b50610382610e7c565b34801561064c57600080fd5b506102db6004803603602081101561066357600080fd5b50356001600160a01b0316610e82565b34801561067f57600080fd5b506102db6004803603602081101561069657600080fd5b50356001600160a01b0316610e9d565b3480156106b257600080fd5b50610382610eb8565b3480156106c757600080fd5b50610382610ebe565b3480156106dc57600080fd5b506102c4600480360360408110156106f357600080fd5b60ff8235169190810190604081016020820135600160201b81111561071757600080fd5b82018360208201111561072957600080fd5b803590602001918460018302840111600160201b8311171561074a57600080fd5b509092509050610ec4565b34801561076157600080fd5b50610382610f04565b34801561077657600080fd5b50610382610f0a565b34801561078b57600080fd5b50610794610f10565b604080519115158252519081900360200190f35b3480156107b457600080fd5b50610382610f19565b3480156107c957600080fd5b50610382610f1f565b3480156107de57600080fd5b506107e7610f25565b6040805163ffffffff9092168252519081900360200190f35b34801561080c57600080fd5b506102c46004803603604081101561082357600080fd5b810190602081018135600160201b81111561083d57600080fd5b82018360208201111561084f57600080fd5b803590602001918460018302840111600160201b8311171561087057600080fd5b919390929091602081019035600160201b81111561088d57600080fd5b82018360208201111561089f57600080fd5b803590602001918460018302840111600160201b831117156108c057600080fd5b509092509050610f2a565b3480156108d757600080fd5b506102db610fc1565b3480156108ec57600080fd5b506102db61115e565b34801561090157600080fd5b506102db6004803603604081101561091857600080fd5b506001600160a01b0381358116916020013516611169565b34801561093c57600080fd5b506102db611194565b34801561095157600080fd5b5061038261119a565b34801561096657600080fd5b506102db6004803603604081101561097d57600080fd5b506001600160a01b03813581169160200135166111a0565b3480156109a157600080fd5b506103826111cb565b3480156109b657600080fd5b506103826111d1565b3480156109cb57600080fd5b506102db6111d7565b3480156109e057600080fd5b506102db600480360360608110156109f757600080fd5b506001600160a01b0381358116916020810135821691604090910135166111e4565b348015610a2557600080fd5b50610382611219565b348015610a3a57600080fd5b506102db61121f565b348015610a4f57600080fd5b50610382611225565b6040805162461bcd60e51b815260206004820152600d60248201526c1b9bdd081cdd5c1c1bdc9d1959609a1b604482015290519081900360640190fd5b60035481565b610aa361122b565b610aab61122b565b6001600160a01b03929092166000818152600b60209081526040808320548652838352600c82528083205486830152928252600d905281902054908301525090565b6108fc81565b61200181565b60603361200014610b3b5760405162461bcd60e51b815260040180806020018281038252602f815260200180611278602f913960400191505060405180910390fd5b60005460ff16610b7e576638d7ea4c6800006001908155662386f26fc1000060025568056bc75e2d631000006003556108fc6011556000805460ff191690911790555b6040805162461bcd60e51b815260206004820152600a60248201526919195c1c9958d85d195960b21b604482015290519081900360640190fd5b6001600160a01b031660009081526006602052604090205490565b61200581565b60015481565b662386f26fc1000081565b61100181565b6102ca81565b60105460ff1660021415610c42576040805162461bcd60e51b815260206004820152600e60248201526d4e6f2072652d656e7472616e637960901b604482015290519081900360640190fd5b6010805460ff19166002179055806402540be4003406158015610c6a57506402540be4008106155b610b3b576040805162461bcd60e51b815260206004820152601c60248201527f707265636973696f6e206c6f737320696e20636f6e76657273696f6e00000000604482015290519081900360640190fd5b61200681565b61200081565b60025481565b6402540be40081565b60105460009060ff1660021415610d25576040805162461bcd60e51b815260206004820152600e60248201526d4e6f2072652d656e7472616e637960901b604482015290519081900360640190fd5b506010805460ff191660021790553360009081526008602052604090205480610d8c576040805162461bcd60e51b81526020600482015260146024820152736e6f20756e64656c6567617465642066756e647360601b604482015290519081900360640190fd5b336000818152600860205260408082208290556011549051919291849084818181858888f193505050503d8060008114610de2576040519150601f19603f3d011682016040523d82523d6000602084013e610de7565b606091505b5050905080610e2f576040805162461bcd60e51b815260206004820152600f60248201526e1d1c985b9cd9995c8819985a5b1959608a1b604482015290519081900360640190fd5b60408051838152905133917fc712d133b8d448221aaed2198ed1f0db6dfc860fb01bc3a630916fe6cbef946f919081900360200190a2506010805460ff1916600117905590565b60035490565b61100581565b6001600160a01b031660009081526004602052604090205490565b6001600160a01b031660009081526008602052604090205490565b61100881565b61200381565b3361200014610b3b5760405162461bcd60e51b815260040180806020018281038252602f815260200180611278602f913960400191505060405180910390fd5b61100781565b61100681565b60005460ff1681565b61200281565b61300081565b600081565b60005460ff16610f81576040805162461bcd60e51b815260206004820152601960248201527f74686520636f6e7472616374206e6f7420696e69742079657400000000000000604482015290519081900360640190fd5b3361100714610b7e5760405162461bcd60e51b815260040180806020018281038252602e81526020018061124a602e913960400191505060405180910390fd5b60105460009060ff1660021415611010576040805162461bcd60e51b815260206004820152600e60248201526d4e6f2072652d656e7472616e637960901b604482015290519081900360640190fd5b506010805460ff191660021790553360009081526006602052604090205480611074576040805162461bcd60e51b81526020600482015260116024820152701b9bc81c195b991a5b99c81c995dd85c99607a1b604482015290519081900360640190fd5b336000818152600660205260408082208290556011549051919291849084818181858888f193505050503d80600081146110ca576040519150601f19603f3d011682016040523d82523d6000602084013e6110cf565b606091505b5050905080611117576040805162461bcd60e51b815260206004820152600f60248201526e1d1c985b9cd9995c8819985a5b1959608a1b604482015290519081900360640190fd5b60408051838152905133917f83b78188b13346b2ffb484da70d42ee27de7fbf9f2bd8045269e10ed643ccd76919081900360200190a2506010805460ff1916600117905590565b6638d7ea4c68000081565b6001600160a01b03918216600090815260076020908152604080832093909416825291909152205490565b60015490565b61100281565b6001600160a01b03918216600090815260056020908152604080832093909416825291909152205490565b61100381565b61200481565b68056bc75e2d6310000081565b6001600160a01b0392831660009081526009602090815260408083209486168352938152838220929094168152925290205490565b61100081565b60115481565b61100481565b6040518060600160405280600390602082028036833750919291505056fe746865206d6573736167652073656e646572206d75737420626520676f7665726e616e636520636f6e7472616374746865206d6573736167652073656e646572206d7573742062652063726f737320636861696e20636f6e7472616374a164736f6c6343000604000a \ No newline at end of file diff --git a/core/systemcontracts/pascal/rialto/SystemRewardContract b/core/systemcontracts/pascal/rialto/SystemRewardContract new file mode 100644 index 0000000000..fc73c86d64 --- /dev/null +++ b/core/systemcontracts/pascal/rialto/SystemRewardContract @@ -0,0 +1 @@ +60806040526004361061016a5760003560e01c80639dc09262116100d1578063ac4317511161008a578063df8079e911610064578063df8079e9146104da578063f9a2bbc7146104ef578063fb5478b314610504578063fd6a687914610519576101ae565b8063ac431751146103e1578063c81b1662146104b0578063dc927faf146104c5576101ae565b80639dc092621461034a578063a1a11bf51461035f578063a78abc1614610374578063aa82dce114610389578063aad560631461039e578063ab51bb96146103b3576101ae565b806351e806721161012357806351e80672146102765780636d70f7ae1461028b5780636e47b482146102d257806375d47a0a146102e75780637e434d54146102fc5780639a99b4f014610311576101ae565b80630e2374a5146101b357806328087028146101e45780633a0b0eff146101f957806343756e5c14610220578063493279b11461023557806351b4dce314610261576101ae565b366101ae5734156101ac5760408051348152905133917f6c98249d85d88c3753a04a22230f595e4dc8d3dc86c34af35deeeedc861b89db919081900360200190a25b005b600080fd5b3480156101bf57600080fd5b506101c861052e565b604080516001600160a01b039092168252519081900360200190f35b3480156101f057600080fd5b506101c8610534565b34801561020557600080fd5b5061020e61053a565b60408051918252519081900360200190f35b34801561022c57600080fd5b506101c8610540565b34801561024157600080fd5b5061024a610546565b6040805161ffff9092168252519081900360200190f35b34801561026d57600080fd5b506101c861054c565b34801561028257600080fd5b506101c8610552565b34801561029757600080fd5b506102be600480360360208110156102ae57600080fd5b50356001600160a01b0316610558565b604080519115158252519081900360200190f35b3480156102de57600080fd5b506101c8610576565b3480156102f357600080fd5b506101c861057c565b34801561030857600080fd5b506101c8610582565b34801561031d57600080fd5b5061020e6004803603604081101561033457600080fd5b506001600160a01b038135169060200135610588565b34801561035657600080fd5b506101c8610788565b34801561036b57600080fd5b506101c861078e565b34801561038057600080fd5b506102be610794565b34801561039557600080fd5b506101c861079d565b3480156103aa57600080fd5b506101c86107a3565b3480156103bf57600080fd5b506103c86107a9565b6040805163ffffffff9092168252519081900360200190f35b3480156103ed57600080fd5b506101ac6004803603604081101561040457600080fd5b81019060208101813564010000000081111561041f57600080fd5b82018360208201111561043157600080fd5b8035906020019184600183028401116401000000008311171561045357600080fd5b91939092909160208101903564010000000081111561047157600080fd5b82018360208201111561048357600080fd5b803590602001918460018302840111640100000000831117156104a557600080fd5b5090925090506107ae565b3480156104bc57600080fd5b506101c8610b31565b3480156104d157600080fd5b506101c8610b37565b3480156104e657600080fd5b506101c8610b3d565b3480156104fb57600080fd5b506101c8610b43565b34801561051057600080fd5b5061020e610b49565b34801561052557600080fd5b506101c8610b55565b61200181565b61200581565b60015481565b61100181565b6102ca81565b61200681565b61200081565b6001600160a01b031660009081526002602052604090205460ff1690565b61100581565b61100881565b61200381565b6000805460ff1661065a5760026020527fe57bda0a954a7c7381b17b2c763e646ba2c60f67292d287ba583603e2c1c41668054600160ff1991821681179092557fe25235fc0de9d7165652bef0846fefda506174abb9a190f03d0f7bcc6146dbce80548216831790557ffcc09d5775472c6fa988b216f5ce189894c14e093527f732b9b65da0880b5f81805482168317905561100160009081527fd5856b6520af3fbaacead8d875ff5c4db19c2ad37c909e14d0ea394740e2ebc8805483168417905560048355805490911690911790555b3360009081526002602052604090205460ff166106a85760405162461bcd60e51b815260040180806020018281038252602b815260200180610c43602b913960400191505060405180910390fd5b60004783106106b757476106b9565b825b9050674563918244f400008111156106d65750674563918244f400005b8015610757576040516001600160a01b0385169082156108fc029083906000818181858888f19350505050158015610712573d6000803e3d6000fd5b506040805182815290516001600160a01b038616917ff8b71c64315fc33b2ead2adfa487955065152a8ac33d9d5193aafd7f45dc15a0919081900360200190a2610781565b6040517fe589651933c2457488cc0d8e0941518abf748e799435e4e396d9c4d0b2db2d4d90600090a15b9392505050565b61100781565b61100681565b60005460ff1681565b61200281565b61300081565b600081565b33611007146107ee5760405162461bcd60e51b815260040180806020018281038252602e815260200180610c9d602e913960400191505060405180910390fd5b61085084848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505060408051808201909152600b81526a30b23227b832b930ba37b960a91b60208201529150610b5b9050565b1561092857606082828080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050825192935050601490911490506108d35760405162461bcd60e51b815260040180806020018281038252602c815260200180610ccb602c913960400191505060405180910390fd5b60148101516001600160a01b038116600081815260026020526040808220805460ff19166001179055517f9870d7fe5d112134c55844951dedf365363006d9c588db07c4c85af6322a06199190a25050610a9f565b61098d84848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505060408051808201909152600e81526d3232b632ba32a7b832b930ba37b960911b60208201529150610b5b9050565b15610a6257606082828080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505082519293505060149091149050610a105760405162461bcd60e51b815260040180806020018281038252602f815260200180610c6e602f913960400191505060405180910390fd5b60148101516001600160a01b038116600081815260026020526040808220805460ff19169055517fb40992a19dba61ea600e87fce607102bf5908dc89076217b6ca6ae195224f7029190a25050610a9f565b6040805162461bcd60e51b815260206004820152600d60248201526c756e6b6e6f776e20706172616d60981b604482015290519081900360640190fd5b7f6cdb0ac70ab7f2e2d035cca5be60d89906f2dede7648ddbd7402189c1eeed17a848484846040518080602001806020018381038352878782818152602001925080828437600083820152601f01601f191690910184810383528581526020019050858580828437600083820152604051601f909101601f19169092018290039850909650505050505050a150505050565b61100281565b61100381565b61200481565b61100081565b674563918244f4000081565b61100481565b6000816040516020018082805190602001908083835b60208310610b905780518252601f199092019160209182019101610b71565b6001836020036101000a03801982511681845116808217855250505050505090500191505060405160208183030381529060405280519060200120836040516020018082805190602001908083835b60208310610bfe5780518252601f199092019160209182019101610bdf565b6001836020036101000a038019825116818451168082178552505050505050905001915050604051602081830303815290604052805190602001201490509291505056fe6f6e6c79206f70657261746f7220697320616c6c6f77656420746f2063616c6c20746865206d6574686f646c656e677468206f662076616c756520666f722064656c6574654f70657261746f722073686f756c64206265203230746865206d6573736167652073656e646572206d75737420626520676f7665726e616e636520636f6e74726163746c656e677468206f662076616c756520666f72206164644f70657261746f722073686f756c64206265203230a164736f6c6343000604000a \ No newline at end of file diff --git a/core/systemcontracts/pascal/rialto/TimelockContract b/core/systemcontracts/pascal/rialto/TimelockContract new file mode 100644 index 0000000000..999b1a0e24 --- /dev/null +++ b/core/systemcontracts/pascal/rialto/TimelockContract @@ -0,0 +1 @@ +6080604052600436106101d15760003560e01c80638129fc1c116100f7578063b1c5f42711610095578063d547741f11610064578063d547741f14610584578063e38335e5146105a4578063f23a6e61146105b7578063f27a0c92146105e357600080fd5b8063b1c5f427146104eb578063bc197c811461050b578063c4d252f514610537578063d45c44351461055757600080fd5b806391d14854116100d157806391d1485414610474578063a217fddf14610494578063ac431751146104a9578063b08e51c0146104c957600080fd5b80638129fc1c1461041d5780638f2a0bb0146104325780638f61f4f51461045257600080fd5b8063248a9ca31161016f57806336568abe1161013e57806336568abe1461039d578063584b153e146103bd57806364d62353146103dd5780638065657f146103fd57600080fd5b8063248a9ca3146102fd5780632ab0f5291461032d5780632f2ff15d1461035d57806331d507501461037d57600080fd5b80630d3cf6fc116101ab5780630d3cf6fc14610264578063134008d31461028657806313bc9f2014610299578063150b7a02146102b957600080fd5b806301d5062a146101dd57806301ffc9a7146101ff57806307bd02651461023457600080fd5b366101d857005b600080fd5b3480156101e957600080fd5b506101fd6101f8366004611a52565b6105f8565b005b34801561020b57600080fd5b5061021f61021a366004611ac6565b6106bc565b60405190151581526020015b60405180910390f35b34801561024057600080fd5b5061025660008051602061253983398151915281565b60405190815260200161022b565b34801561027057600080fd5b506102566000805160206124f983398151915281565b6101fd610294366004611af0565b6106e7565b3480156102a557600080fd5b5061021f6102b4366004611b5b565b61078a565b3480156102c557600080fd5b506102e46102d4366004611c29565b630a85bd0160e11b949350505050565b6040516001600160e01b0319909116815260200161022b565b34801561030957600080fd5b50610256610318366004611b5b565b60009081526065602052604090206001015490565b34801561033957600080fd5b5061021f610348366004611b5b565b60009081526097602052604090205460011490565b34801561036957600080fd5b506101fd610378366004611c90565b6107b0565b34801561038957600080fd5b5061021f610398366004611b5b565b6107da565b3480156103a957600080fd5b506101fd6103b8366004611c90565b6107f3565b3480156103c957600080fd5b5061021f6103d8366004611b5b565b610876565b3480156103e957600080fd5b506101fd6103f8366004611b5b565b61088d565b34801561040957600080fd5b50610256610418366004611af0565b610931565b34801561042957600080fd5b506101fd610970565b34801561043e57600080fd5b506101fd61044d366004611d00565b610b20565b34801561045e57600080fd5b5061025660008051602061251983398151915281565b34801561048057600080fd5b5061021f61048f366004611c90565b610ca1565b3480156104a057600080fd5b50610256600081565b3480156104b557600080fd5b506101fd6104c4366004611db1565b610ccc565b3480156104d557600080fd5b5061025660008051602061255983398151915281565b3480156104f757600080fd5b50610256610506366004611e1c565b610eb6565b34801561051757600080fd5b506102e4610526366004611f43565b63bc197c8160e01b95945050505050565b34801561054357600080fd5b506101fd610552366004611b5b565b610efb565b34801561056357600080fd5b50610256610572366004611b5b565b60009081526097602052604090205490565b34801561059057600080fd5b506101fd61059f366004611c90565b610fbe565b6101fd6105b2366004611e1c565b610fe3565b3480156105c357600080fd5b506102e46105d2366004611fec565b63f23a6e6160e01b95945050505050565b3480156105ef57600080fd5b50609854610256565b6000805160206125198339815191526106108161115b565b6000610620898989898989610931565b905061062c8184611165565b6000817f4cf4410cc57040e44862ef0f45f3dd5a5e02db8eb8add648d4b0e236f1d07dca8b8b8b8b8b8a60405161066896959493929190612079565b60405180910390a383156106b157807f20fda5fd27a1ea7bf5b9567f143ac5470bb059374a27e8f67cb44f946f6d0387856040516106a891815260200190565b60405180910390a25b505050505050505050565b60006001600160e01b03198216630271189760e51b14806106e157506106e182611254565b92915050565b600080516020612539833981519152610701816000610ca1565b61070f5761070f8133611289565b600061071f888888888888610931565b905061072b81856112e2565b6107378888888861137d565b6000817fc2617efa69bab66782fa219543714338489c4e9e178271560a91b82c3f612b588a8a8a8a60405161076f94939291906120b6565b60405180910390a361078081611450565b5050505050505050565b6000818152609760205260408120546001811180156107a95750428111155b9392505050565b6000828152606560205260409020600101546107cb8161115b565b6107d58383611489565b505050565b60008181526097602052604081205481905b1192915050565b6001600160a01b03811633146108685760405162461bcd60e51b815260206004820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201526e103937b632b9903337b91039b2b63360891b60648201526084015b60405180910390fd5b610872828261150f565b5050565b6000818152609760205260408120546001906107ec565b3330146108f05760405162461bcd60e51b815260206004820152602b60248201527f54696d656c6f636b436f6e74726f6c6c65723a2063616c6c6572206d7573742060448201526a62652074696d656c6f636b60a81b606482015260840161085f565b60985460408051918252602082018390527f11c24f4ead16507c69ac467fbd5e4eed5fb5c699626d2cc6d66421df253886d5910160405180910390a1609855565b600086868686868660405160200161094e96959493929190612079565b6040516020818303038152906040528051906020012090509695505050505050565b600054610100900460ff16158080156109905750600054600160ff909116105b806109aa5750303b1580156109aa575060005460ff166001145b610a0d5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b606482015260840161085f565b6000805460ff191660011790558015610a30576000805461ff0019166101001790555b334114610a505760405163022d8c9560e31b815260040160405180910390fd5b3a15610a6f576040516383f1b1d360e01b815260040160405180910390fd5b6040805160018082528183019092526000916020808301908036833701905050905061200481600081518110610aa757610aa76120e8565b60200260200101906001600160a01b031690816001600160a01b031681525050610ad6603c8283612004611576565b508015610b1d576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b50565b600080516020612519833981519152610b388161115b565b888714610b575760405162461bcd60e51b815260040161085f906120fe565b888514610b765760405162461bcd60e51b815260040161085f906120fe565b6000610b888b8b8b8b8b8b8b8b610eb6565b9050610b948184611165565b60005b8a811015610c525780827f4cf4410cc57040e44862ef0f45f3dd5a5e02db8eb8add648d4b0e236f1d07dca8e8e85818110610bd457610bd46120e8565b9050602002016020810190610be99190612141565b8d8d86818110610bfb57610bfb6120e8565b905060200201358c8c87818110610c1457610c146120e8565b9050602002810190610c26919061215c565b8c8b604051610c3a96959493929190612079565b60405180910390a3610c4b816121b8565b9050610b97565b508315610c9457807f20fda5fd27a1ea7bf5b9567f143ac5470bb059374a27e8f67cb44f946f6d038785604051610c8b91815260200190565b60405180910390a25b5050505050505050505050565b60009182526065602090815260408084206001600160a01b0393909316845291905290205460ff1690565b3361100714610cf257604051630f22c43960e41b8152611007600482015260240161085f565b610d55604051806040016040528060088152602001676d696e44656c617960c01b81525085858080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092939250506115af9050565b15610e525760208114610d835783838383604051630a5a604160e01b815260040161085f94939291906121d1565b604080516020601f8401819004810282018101909252828152600091610dc49185858083850183828082843760009201919091525092939250506116089050565b9050801580610dd557506212750081115b15610dfb5784848484604051630a5a604160e01b815260040161085f94939291906121d1565b6040516364d6235360e01b81526004810182905230906364d6235390602401600060405180830381600087803b158015610e3457600080fd5b505af1158015610e48573d6000803e3d6000fd5b5050505050610e73565b838383836040516325ee20d560e21b815260040161085f94939291906121d1565b7ff1ce9b2cbf50eeb05769a29e2543fd350cab46894a7dd9978a12d534bb20e63384848484604051610ea894939291906121d1565b60405180910390a150505050565b60008888888888888888604051602001610ed7989796959493929190612289565b60405160208183030381529060405280519060200120905098975050505050505050565b600080516020612559833981519152610f138161115b565b610f1c82610876565b610f825760405162461bcd60e51b815260206004820152603160248201527f54696d656c6f636b436f6e74726f6c6c65723a206f7065726174696f6e2063616044820152701b9b9bdd0818994818d85b98d95b1b1959607a1b606482015260840161085f565b6000828152609760205260408082208290555183917fbaa1eb22f2a492ba1a5fea61b8df4d27c6c8b5f3971e63bb58fa14ff72eedb7091a25050565b600082815260656020526040902060010154610fd98161115b565b6107d5838361150f565b600080516020612539833981519152610ffd816000610ca1565b61100b5761100b8133611289565b87861461102a5760405162461bcd60e51b815260040161085f906120fe565b8784146110495760405162461bcd60e51b815260040161085f906120fe565b600061105b8a8a8a8a8a8a8a8a610eb6565b905061106781856112e2565b60005b898110156111455760008b8b83818110611086576110866120e8565b905060200201602081019061109b9190612141565b905060008a8a848181106110b1576110b16120e8565b9050602002013590503660008a8a868181106110cf576110cf6120e8565b90506020028101906110e1919061215c565b915091506110f18484848461137d565b84867fc2617efa69bab66782fa219543714338489c4e9e178271560a91b82c3f612b588686868660405161112894939291906120b6565b60405180910390a3505050508061113e906121b8565b905061106a565b5061114f81611450565b50505050505050505050565b610b1d8133611289565b61116e826107da565b156111d35760405162461bcd60e51b815260206004820152602f60248201527f54696d656c6f636b436f6e74726f6c6c65723a206f7065726174696f6e20616c60448201526e1c9958591e481cd8da19591d5b1959608a1b606482015260840161085f565b6098548110156112345760405162461bcd60e51b815260206004820152602660248201527f54696d656c6f636b436f6e74726f6c6c65723a20696e73756666696369656e746044820152652064656c617960d01b606482015260840161085f565b61123e814261232a565b6000928352609760205260409092209190915550565b60006001600160e01b03198216637965db0b60e01b14806106e157506301ffc9a760e01b6001600160e01b03198316146106e1565b6112938282610ca1565b610872576112a08161160d565b6112ab83602061161f565b6040516020016112bc929190612361565b60408051601f198184030181529082905262461bcd60e51b825261085f916004016123d6565b6112eb8261078a565b6113075760405162461bcd60e51b815260040161085f90612409565b80158061132257506000818152609760205260409020546001145b6108725760405162461bcd60e51b815260206004820152602660248201527f54696d656c6f636b436f6e74726f6c6c65723a206d697373696e6720646570656044820152656e64656e637960d01b606482015260840161085f565b6000846001600160a01b031684848460405161139a929190612453565b60006040518083038185875af1925050503d80600081146113d7576040519150601f19603f3d011682016040523d82523d6000602084013e6113dc565b606091505b50509050806114495760405162461bcd60e51b815260206004820152603360248201527f54696d656c6f636b436f6e74726f6c6c65723a20756e6465726c79696e6720746044820152721c985b9cd858dd1a5bdb881c995d995c9d1959606a1b606482015260840161085f565b5050505050565b6114598161078a565b6114755760405162461bcd60e51b815260040161085f90612409565b600090815260976020526040902060019055565b6114938282610ca1565b6108725760008281526065602090815260408083206001600160a01b03851684529091529020805460ff191660011790556114cb3390565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b6115198282610ca1565b156108725760008281526065602090815260408083206001600160a01b0385168085529252808320805460ff1916905551339285917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45050565b600054610100900460ff1661159d5760405162461bcd60e51b815260040161085f90612463565b6115a9848484846117ba565b50505050565b6000816040516020016115c291906124ae565b60405160208183030381529060405280519060200120836040516020016115e991906124ae565b6040516020818303038152906040528051906020012014905092915050565b015190565b60606106e16001600160a01b03831660145b6060600061162e8360026124ca565b61163990600261232a565b6001600160401b0381111561165057611650611b74565b6040519080825280601f01601f19166020018201604052801561167a576020820181803683370190505b509050600360fc1b81600081518110611695576116956120e8565b60200101906001600160f81b031916908160001a905350600f60fb1b816001815181106116c4576116c46120e8565b60200101906001600160f81b031916908160001a90535060006116e88460026124ca565b6116f390600161232a565b90505b600181111561176b576f181899199a1a9b1b9c1cb0b131b232b360811b85600f1660108110611727576117276120e8565b1a60f81b82828151811061173d5761173d6120e8565b60200101906001600160f81b031916908160001a90535060049490941c93611764816124e1565b90506116f6565b5083156107a95760405162461bcd60e51b815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e74604482015260640161085f565b600054610100900460ff166117e15760405162461bcd60e51b815260040161085f90612463565b6117f96000805160206124f983398151915280611999565b61181f6000805160206125198339815191526000805160206124f9833981519152611999565b6118456000805160206125398339815191526000805160206124f9833981519152611999565b61186b6000805160206125598339815191526000805160206124f9833981519152611999565b6118836000805160206124f9833981519152306119e4565b6001600160a01b038116156118aa576118aa6000805160206124f9833981519152826119e4565b60005b835181101561191b576118e76000805160206125198339815191528583815181106118da576118da6120e8565b60200260200101516119e4565b61190b6000805160206125598339815191528583815181106118da576118da6120e8565b611914816121b8565b90506118ad565b5060005b825181101561195c5761194c6000805160206125398339815191528483815181106118da576118da6120e8565b611955816121b8565b905061191f565b5060988490556040805160008152602081018690527f11c24f4ead16507c69ac467fbd5e4eed5fb5c699626d2cc6d66421df253886d59101610ea8565b600082815260656020526040808220600101805490849055905190918391839186917fbd79b86ffe0ab8e8776151514217cd7cacd52c909f66475c3af44e129f0b00ff9190a4505050565b6108728282611489565b80356001600160a01b0381168114611a0557600080fd5b919050565b60008083601f840112611a1c57600080fd5b5081356001600160401b03811115611a3357600080fd5b602083019150836020828501011115611a4b57600080fd5b9250929050565b600080600080600080600060c0888a031215611a6d57600080fd5b611a76886119ee565b96506020880135955060408801356001600160401b03811115611a9857600080fd5b611aa48a828b01611a0a565b989b979a50986060810135976080820135975060a09091013595509350505050565b600060208284031215611ad857600080fd5b81356001600160e01b0319811681146107a957600080fd5b60008060008060008060a08789031215611b0957600080fd5b611b12876119ee565b95506020870135945060408701356001600160401b03811115611b3457600080fd5b611b4089828a01611a0a565b979a9699509760608101359660809091013595509350505050565b600060208284031215611b6d57600080fd5b5035919050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b0381118282101715611bb257611bb2611b74565b604052919050565b600082601f830112611bcb57600080fd5b81356001600160401b03811115611be457611be4611b74565b611bf7601f8201601f1916602001611b8a565b818152846020838601011115611c0c57600080fd5b816020850160208301376000918101602001919091529392505050565b60008060008060808587031215611c3f57600080fd5b611c48856119ee565b9350611c56602086016119ee565b92506040850135915060608501356001600160401b03811115611c7857600080fd5b611c8487828801611bba565b91505092959194509250565b60008060408385031215611ca357600080fd5b82359150611cb3602084016119ee565b90509250929050565b60008083601f840112611cce57600080fd5b5081356001600160401b03811115611ce557600080fd5b6020830191508360208260051b8501011115611a4b57600080fd5b600080600080600080600080600060c08a8c031215611d1e57600080fd5b89356001600160401b0380821115611d3557600080fd5b611d418d838e01611cbc565b909b50995060208c0135915080821115611d5a57600080fd5b611d668d838e01611cbc565b909950975060408c0135915080821115611d7f57600080fd5b50611d8c8c828d01611cbc565b9a9d999c50979a969997986060880135976080810135975060a0013595509350505050565b60008060008060408587031215611dc757600080fd5b84356001600160401b0380821115611dde57600080fd5b611dea88838901611a0a565b90965094506020870135915080821115611e0357600080fd5b50611e1087828801611a0a565b95989497509550505050565b60008060008060008060008060a0898b031215611e3857600080fd5b88356001600160401b0380821115611e4f57600080fd5b611e5b8c838d01611cbc565b909a50985060208b0135915080821115611e7457600080fd5b611e808c838d01611cbc565b909850965060408b0135915080821115611e9957600080fd5b50611ea68b828c01611cbc565b999c989b509699959896976060870135966080013595509350505050565b600082601f830112611ed557600080fd5b813560206001600160401b03821115611ef057611ef0611b74565b8160051b611eff828201611b8a565b9283528481018201928281019087851115611f1957600080fd5b83870192505b84831015611f3857823582529183019190830190611f1f565b979650505050505050565b600080600080600060a08688031215611f5b57600080fd5b611f64866119ee565b9450611f72602087016119ee565b935060408601356001600160401b0380821115611f8e57600080fd5b611f9a89838a01611ec4565b94506060880135915080821115611fb057600080fd5b611fbc89838a01611ec4565b93506080880135915080821115611fd257600080fd5b50611fdf88828901611bba565b9150509295509295909350565b600080600080600060a0868803121561200457600080fd5b61200d866119ee565b945061201b602087016119ee565b9350604086013592506060860135915060808601356001600160401b0381111561204457600080fd5b611fdf88828901611bba565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b60018060a01b038716815285602082015260a0604082015260006120a160a083018688612050565b60608301949094525060800152949350505050565b60018060a01b03851681528360208201526060604082015260006120de606083018486612050565b9695505050505050565b634e487b7160e01b600052603260045260246000fd5b60208082526023908201527f54696d656c6f636b436f6e74726f6c6c65723a206c656e677468206d69736d616040820152620e8c6d60eb1b606082015260800190565b60006020828403121561215357600080fd5b6107a9826119ee565b6000808335601e1984360301811261217357600080fd5b8301803591506001600160401b0382111561218d57600080fd5b602001915036819003821315611a4b57600080fd5b634e487b7160e01b600052601160045260246000fd5b6000600182016121ca576121ca6121a2565b5060010190565b6040815260006121e5604083018688612050565b8281036020840152611f38818587612050565b81835260006020808501808196508560051b810191508460005b8781101561227c5782840389528135601e1988360301811261223357600080fd5b870185810190356001600160401b0381111561224e57600080fd5b80360382131561225d57600080fd5b612268868284612050565b9a87019a9550505090840190600101612212565b5091979650505050505050565b60a0808252810188905260008960c08301825b8b8110156122ca576001600160a01b036122b5846119ee565b1682526020928301929091019060010161229c565b5083810360208501528881526001600160fb1b038911156122ea57600080fd5b8860051b9150818a6020830137018281036020908101604085015261231290820187896121f8565b60608401959095525050608001529695505050505050565b808201808211156106e1576106e16121a2565b60005b83811015612358578181015183820152602001612340565b50506000910152565b7f416363657373436f6e74726f6c3a206163636f756e742000000000000000000081526000835161239981601785016020880161233d565b7001034b99036b4b9b9b4b733903937b6329607d1b60179184019182015283516123ca81602884016020880161233d565b01602801949350505050565b60208152600082518060208401526123f581604085016020870161233d565b601f01601f19169190910160400192915050565b6020808252602a908201527f54696d656c6f636b436f6e74726f6c6c65723a206f7065726174696f6e206973604082015269206e6f7420726561647960b01b606082015260800190565b8183823760009101908152919050565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b600082516124c081846020870161233d565b9190910192915050565b80820281158282048414176106e1576106e16121a2565b6000816124f0576124f06121a2565b50600019019056fe5f58e3a2316349923ce3780f8d587db2d72378aed66a8261c916544fa6846ca5b09aa5aeb3702cfd50b6b62bc4532604938f21248a27a1d5ca736082b6819cc1d8aa0f3194971a2a116679f7c2090f6939c8d4e01a2a8d7e41d55e5351469e63fd643c72710c63c0180259aba6b2d05451e3591a24e58b62239378085726f783a164736f6c6343000811000a \ No newline at end of file diff --git a/core/systemcontracts/pascal/rialto/TokenHubContract b/core/systemcontracts/pascal/rialto/TokenHubContract new file mode 100644 index 0000000000..4a5cac4f2e --- /dev/null +++ b/core/systemcontracts/pascal/rialto/TokenHubContract @@ -0,0 +1 @@ +6080604052600436106103395760003560e01c806393ab703f116101ab578063b9fd21e3116100f7578063df8079e911610095578063e8f35cea1161006f578063e8f35cea14610dd9578063f9a2bbc714610e0c578063fc1a598f14610e21578063fd6a687914610e5457610381565b8063df8079e914610d85578063e04c83a714610d9a578063e1c7392a14610dc457610381565b8063c81b1662116100d1578063c81b166214610d20578063c8509d811461092a578063cf41984414610d35578063dc927faf14610d7057610381565b8063b9fd21e314610ca5578063bbface1f14610cba578063bd46646114610ced57610381565b8063a78abc1611610164578063aad560631161013e578063aad5606314610b5e578063ab51bb9614610b73578063ac43175114610ba1578063b99328c514610c6c57610381565b8063a78abc1614610aed578063aa7415f514610b02578063aa82dce114610b4957610381565b806393ab703f14610a275780639509b98014610a3c5780639a854bbd14610a755780639a99b4f014610a8a5780639dc0926214610ac3578063a1a11bf514610ad857610381565b806351e8067211610285578063727be1f8116102235780637e434d54116101fd5780637e434d5414610915578063831d65d11461092a5780638525db03146109af5780638eff336c146109e857610381565b8063727be1f81461089757806375d47a0a146108c1578063799758b9146108d657610381565b8063613684751161025f57806361368475146107165780636e056520146107415780636e47b4821461086d57806371d308631461088257610381565b806351e80672146106c257806359b92789146106d75780635d499b1b1461070157610381565b80633d713223116102f257806343a368b9116102cc57806343a368b914610657578063493279b11461066c57806350432d321461069857806351b4dce3146106ad57610381565b80633d7132231461057c5780633fd8b02f1461062d57806343756e5c1461064257610381565b80630e2374a5146103865780631182b875146103b757806312234582146104b1578063149d14d9146104ec57806328087028146105135780632ae454831461052857610381565b3661038157341561037f576040805133815234602082015281517f6c98249d85d88c3753a04a22230f595e4dc8d3dc86c34af35deeeedc861b89db929181900390910190a15b005b600080fd5b34801561039257600080fd5b5061039b610e69565b604080516001600160a01b039092168252519081900360200190f35b3480156103c357600080fd5b5061043c600480360360408110156103da57600080fd5b60ff8235169190810190604081016020820135600160201b8111156103fe57600080fd5b82018360208201111561041057600080fd5b803590602001918460018302840111600160201b8311171561043157600080fd5b509092509050610e6f565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561047657818101518382015260200161045e565b50505050905090810190601f1680156104a35780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3480156104bd57600080fd5b5061037f600480360360408110156104d457600080fd5b506001600160a01b0381358116916020013516610eb7565b3480156104f857600080fd5b50610501610f31565b60408051918252519081900360200190f35b34801561051f57600080fd5b5061039b610f37565b34801561053457600080fd5b506105636004803603604081101561054b57600080fd5b506001600160a01b0381358116916020013516610f3d565b6040805192835260208301919091528051918290030190f35b34801561058857600080fd5b5061039b6004803603602081101561059f57600080fd5b810190602081018135600160201b8111156105b957600080fd5b8201836020820111156105cb57600080fd5b803590602001918460018302840111600160201b831117156105ec57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550610f61945050505050565b34801561063957600080fd5b50610501610f82565b34801561064e57600080fd5b5061039b610f88565b34801561066357600080fd5b50610501610f8e565b34801561067857600080fd5b50610681610f9a565b6040805161ffff9092168252519081900360200190f35b3480156106a457600080fd5b50610501610fa0565b3480156106b957600080fd5b5061039b610fab565b3480156106ce57600080fd5b5061039b610fb1565b3480156106e357600080fd5b5061039b600480360360208110156106fa57600080fd5b5035610fb7565b34801561070d57600080fd5b50610501610fd2565b34801561072257600080fd5b5061072b610fdb565b6040805160ff9092168252519081900360200190f35b6108596004803603608081101561075757600080fd5b810190602081018135600160201b81111561077157600080fd5b82018360208201111561078357600080fd5b803590602001918460208302840111600160201b831117156107a457600080fd5b919390929091602081019035600160201b8111156107c157600080fd5b8201836020820111156107d357600080fd5b803590602001918460208302840111600160201b831117156107f457600080fd5b919390929091602081019035600160201b81111561081157600080fd5b82018360208201111561082357600080fd5b803590602001918460208302840111600160201b8311171561084457600080fd5b91935091503567ffffffffffffffff16610fe0565b604080519115158252519081900360200190f35b34801561087957600080fd5b5061039b611026565b34801561088e57600080fd5b5061050161102c565b3480156108a357600080fd5b50610859600480360360208110156108ba57600080fd5b5035611032565b3480156108cd57600080fd5b5061039b61106e565b3480156108e257600080fd5b5061037f600480360360608110156108f957600080fd5b508035906001600160a01b036020820135169060400135611074565b34801561092157600080fd5b5061039b611324565b34801561093657600080fd5b5061037f6004803603604081101561094d57600080fd5b60ff8235169190810190604081016020820135600160201b81111561097157600080fd5b82018360208201111561098357600080fd5b803590602001918460018302840111600160201b831117156109a457600080fd5b50909250905061132a565b3480156109bb57600080fd5b5061037f600480360360408110156109d257600080fd5b50803590602001356001600160a01b031661136f565b3480156109f457600080fd5b5061037f60048036036060811015610a0b57600080fd5b508035906001600160a01b0360208201351690604001356114d8565b348015610a3357600080fd5b50610501611518565b348015610a4857600080fd5b5061037f60048036036040811015610a5f57600080fd5b506001600160a01b03813516906020013561151f565b348015610a8157600080fd5b506105016115e1565b348015610a9657600080fd5b5061050160048036036040811015610aad57600080fd5b506001600160a01b0381351690602001356115ed565b348015610acf57600080fd5b5061039b611673565b348015610ae457600080fd5b5061039b611679565b348015610af957600080fd5b5061085961167f565b61085960048036036080811015610b1857600080fd5b5080356001600160a01b03908116916020810135909116906040810135906060013567ffffffffffffffff16610fe0565b348015610b5557600080fd5b5061039b611688565b348015610b6a57600080fd5b5061039b61168e565b348015610b7f57600080fd5b50610b88611694565b6040805163ffffffff9092168252519081900360200190f35b348015610bad57600080fd5b5061037f60048036036040811015610bc457600080fd5b810190602081018135600160201b811115610bde57600080fd5b820183602082011115610bf057600080fd5b803590602001918460018302840111600160201b83111715610c1157600080fd5b919390929091602081019035600160201b811115610c2e57600080fd5b820183602082011115610c4057600080fd5b803590602001918460018302840111600160201b83111715610c6157600080fd5b509092509050611699565b348015610c7857600080fd5b5061037f60048036036040811015610c8f57600080fd5b50803590602001356001600160a01b03166114d8565b348015610cb157600080fd5b506105016116d9565b348015610cc657600080fd5b5061050160048036036020811015610cdd57600080fd5b50356001600160a01b03166116e3565b348015610cf957600080fd5b5061050160048036036020811015610d1057600080fd5b50356001600160a01b03166116f5565b348015610d2c57600080fd5b5061039b611710565b348015610d4157600080fd5b5061037f60048036036040811015610d5857600080fd5b506001600160a01b0381358116916020013516611716565b348015610d7c57600080fd5b5061039b6117a9565b348015610d9157600080fd5b5061039b6117af565b348015610da657600080fd5b5061085960048036036020811015610dbd57600080fd5b50356117b5565b348015610dd057600080fd5b5061037f61180d565b348015610de557600080fd5b5061050160048036036020811015610dfc57600080fd5b50356001600160a01b03166118ad565b348015610e1857600080fd5b5061039b6118bf565b348015610e2d57600080fd5b5061043c60048036036020811015610e4457600080fd5b50356001600160a01b03166118c5565b348015610e6057600080fd5b5061039b6119ec565b61200181565b60005460609060ff16610eb7576040805162461bcd60e51b81526020600482015260196024820152600080516020611d9d833981519152604482015290519081900360640190fd5b3361200014610ef75760405162461bcd60e51b815260040180806020018281038252602f815260200180611d4b602f913960400191505060405180910390fd5b6040805162461bcd60e51b815260206004820152600a60248201526919195c1c9958d85d195960b21b604482015290519081900360640190fd5b60015490565b61200581565b60076020908152600092835260408084209091529082529020805460019091015482565b6020908101516000908152600490915260409020546001600160a01b031690565b60055481565b61100181565b670de0b6b3a764000081565b6102ca81565b66071afd498d000081565b61200681565b61200081565b6000908152600460205260409020546001600160a01b031690565b6402540be40081565b600881565b6000805460ff16610ef7576040805162461bcd60e51b81526020600482015260196024820152600080516020611d9d833981519152604482015290519081900360640190fd5b61100581565b60015481565b6040805162461bcd60e51b815260206004820152600a60248201526919195c1c9958d85d195960b21b6044820152905160009181900360640190fd5b61100881565b60005460ff166110b9576040805162461bcd60e51b81526020600482015260196024820152600080516020611d9d833981519152604482015290519081900360640190fd5b33613000146110f95760405162461bcd60e51b815260040180806020018281038252602b815260200180611cd1602b913960400191505060405180910390fd5b677ce66c50e28400008111156111405760405162461bcd60e51b8152600401808060200182810382526035815260200180611c9c6035913960400191505060405180910390fd5b60006221272160e91b84146112aa576000848152600460205260409020546001600160a01b0316806111b3576040805184815290516001600160a01b0386169187917fc16ee9013bf67c846d37735983debb0acc5b2d1419cb5931c9843ad4689505499181900360200190a3505061131f565b6001600160a01b0381166000908152600260205260409020546111d684826119f2565b604080516370a0823160e01b8152306004820152905191945084916001600160a01b038516916370a08231916024808301926020929190829003018186803b15801561122157600080fd5b505afa158015611235573d6000803e3d6000fd5b505050506040513d602081101561124b57600080fd5b50511015611297576040805162461bcd60e51b8152602060048201526014602482015273696e73756666696369656e742062616c616e636560601b604482015290519081900360640190fd5b6112a386838588611a3b565b505061131d565b6112bf826402540be40063ffffffff611ad516565b90508047101561130d576040805162461bcd60e51b8152602060048201526014602482015273696e73756666696369656e742062616c616e636560601b604482015290519081900360640190fd5b600061131b85828487611a3b565b505b505b505050565b61200381565b60005460ff16610eb7576040805162461bcd60e51b81526020600482015260196024820152600080516020611d9d833981519152604482015290519081900360640190fd5b33613000146113af5760405162461bcd60e51b815260040180806020018281038252602b815260200180611cd1602b913960400191505060405180910390fd5b60006221272160e91b831461141a57506000828152600460205260409020546001600160a01b03168061141a576040805162461bcd60e51b815260206004820152600e60248201526d1a5b9d985b1a59081cde5b589bdb60921b604482015290519081900360640190fd5b6001600160a01b0380821660009081526007602090815260408083209386168352929052208054611485576040805162461bcd60e51b815260206004820152601060248201526f1b9bc81b1bd8dad95908185b5bdd5b9d60821b604482015290519081900360640190fd5b8054600082556040805182815290516001600160a01b03808716929086169188917f8041a9a8704332594e2884f5e0f942281cdd7611854c365b4d0aa70b2295d6b6919081900360200190a45050505050565b3361100814610ef75760405162461bcd60e51b8152600401808060200182810382526023815260200180611d7a6023913960400191505060405180910390fd5b62093a8081565b81806001600160a01b031663893d20e86040518163ffffffff1660e01b815260040160206040518083038186803b15801561155957600080fd5b505afa15801561156d573d6000803e3d6000fd5b505050506040513d602081101561158357600080fd5b50516001600160a01b03163314610ef7576040805162461bcd60e51b815260206004820152601860248201527f6e6f74206f776e6572206f6620424550323020746f6b656e0000000000000000604482015290519081900360640190fd5b677ce66c50e284000081565b6000805460ff16611633576040805162461bcd60e51b81526020600482015260196024820152600080516020611d9d833981519152604482015290519081900360640190fd5b3361100514610ef75760405162461bcd60e51b815260040180806020018281038252602f815260200180611c6d602f913960400191505060405180910390fd5b61100781565b61100681565b60005460ff1681565b61200281565b61300081565b600081565b3361100714610ef75760405162461bcd60e51b815260040180806020018281038252602e815260200180611d1d602e913960400191505060405180910390fd5b6221272160e91b81565b60026020526000908152604090205481565b6001600160a01b031660009081526003602052604090205490565b61100281565b60085460ff1660021415611762576040805162461bcd60e51b815260206004820152600e60248201526d4e6f2072652d656e7472616e637960901b604482015290519081900360640190fd5b6008805460ff191660021790556040805162461bcd60e51b815260206004820152600a60248201526919195c1c9958d85d195960b21b604482015290519081900360640190fd5b61100381565b61200481565b60003361200214610ef7576040805162461bcd60e51b815260206004820152601f60248201527f746865206d73672073656e646572206d757374206265207374616b6548756200604482015290519081900360640190fd5b60005460ff1615611865576040805162461bcd60e51b815260206004820152601960248201527f74686520636f6e747261637420616c726561647920696e697400000000000000604482015290519081900360640190fd5b66071afd498d000060019081556000808052600260205260127fac33ff75c19e70fe83507db0d683fd3465c996598dc972688b7ace676c89077b55805460ff19169091179055565b60066020526000908152604090205481565b61100081565b6001600160a01b03811660009081526003602090815260409182902054825182815280840190935260609290918391906020820181803683375050506020810183905290506000805b60208160ff16101561195557828160ff168151811061192957fe5b01602001516001600160f81b031916156119485781600101915061194d565b611955565b60010161190e565b5060608160ff166040519080825280601f01601f191660200182016040528015611986576020820181803683370190505b50905060005b8260ff168160ff1610156119e257838160ff16815181106119a957fe5b602001015160f81c60f81b828260ff16815181106119c357fe5b60200101906001600160f81b031916908160001a90535060010161198c565b5095945050505050565b61100481565b60006008821115611a1b57611a14836007198401600a0a63ffffffff611ad516565b9050611a35565b611a32836008849003600a0a63ffffffff611b2e16565b90505b92915050565b6001600160a01b0380841660009081526007602090815260408083209385168352929052208054611a72908463ffffffff611b7016565b81554262093a80016001820181905560408051858152602081019290925280516001600160a01b03808616939088169289927f446d1aa056e7b903901f49880e9f252762c1b81dc4301cf28db6dae526497eaa9281900390910190a45050505050565b600082611ae457506000611a35565b82820282848281611af157fe5b0414611a325760405162461bcd60e51b8152600401808060200182810382526021815260200180611cfc6021913960400191505060405180910390fd5b6000611a3283836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250611bca565b600082820183811015611a32576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b60008183611c565760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b83811015611c1b578181015183820152602001611c03565b50505050905090810190601f168015611c485780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b506000838581611c6257fe5b049594505050505056fe746865206d6573736167652073656e646572206d75737420626520696e63656e746976697a6520636f6e7472616374616d6f756e7420697320746f6f206c617267652c20657863656564206d6178696d756d206265703220746f6b656e20616d6f756e74746865206d73672073656e646572206d75737420626520746f6b656e207265636f76657220706f7274616c536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f77746865206d6573736167652073656e646572206d75737420626520676f7665726e616e636520636f6e7472616374746865206d6573736167652073656e646572206d7573742062652063726f737320636861696e20636f6e7472616374746865206d73672073656e646572206d75737420626520746f6b656e4d616e6167657274686520636f6e7472616374206e6f7420696e69742079657400000000000000a164736f6c6343000604000a \ No newline at end of file diff --git a/core/systemcontracts/pascal/rialto/TokenManagerContract b/core/systemcontracts/pascal/rialto/TokenManagerContract new file mode 100644 index 0000000000..cbee8a2149 --- /dev/null +++ b/core/systemcontracts/pascal/rialto/TokenManagerContract @@ -0,0 +1 @@ +6080604052600436106102045760003560e01c80637ec816dd11610118578063ac431751116100a0578063dc927faf1161006f578063dc927faf146108de578063df8079e9146108f3578063e605bca014610908578063f9a2bbc71461091d578063fd6a68791461093257610204565b8063ac4317511461077d578063c81b166214610848578063c8509d811461065f578063d117a1101461085d57610204565b8063a1a11bf5116100e7578063a1a11bf5146106fb578063a78abc1614610710578063aa82dce114610725578063aad560631461073a578063ab51bb961461074f57610204565b80637ec816dd1461064a578063831d65d11461065f57806394553a4e146103345780639dc09262146106e657610204565b8063493279b11161019b5780636e47b4821161016a5780636e47b482146105db57806372c4e086146105f057806375d47a0a1461062057806377d9dae8146105275780637e434d541461063557610204565b8063493279b1146104d157806351b4dce3146104fd57806351e80672146105125780636b3f13071461052757610204565b80632e02d776116101d75780632e02d7761461039357806337e6ecda146103c657806343756e5c146103f9578063445fcefe1461040e57610204565b80630e2374a5146102095780631182b8751461023a57806325c751b714610334578063280870281461037e575b600080fd5b34801561021557600080fd5b5061021e610947565b604080516001600160a01b039092168252519081900360200190f35b34801561024657600080fd5b506102bf6004803603604081101561025d57600080fd5b60ff8235169190810190604081016020820135600160201b81111561028157600080fd5b82018360208201111561029357600080fd5b803590602001918460018302840111600160201b831117156102b457600080fd5b50909250905061094d565b6040805160208082528351818301528351919283929083019185019080838360005b838110156102f95781810151838201526020016102e1565b50505050905090810190601f1680156103265780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b61036a6004803603604081101561034a57600080fd5b5080356001600160a01b0316906020013567ffffffffffffffff166109c9565b604080519115158252519081900360200190f35b34801561038a57600080fd5b5061021e610a05565b34801561039f57600080fd5b5061036a600480360360208110156103b657600080fd5b50356001600160a01b0316610a0b565b3480156103d257600080fd5b5061036a600480360360208110156103e957600080fd5b50356001600160a01b0316610a20565b34801561040557600080fd5b5061021e610a35565b34801561041a57600080fd5b506104bf6004803603602081101561043157600080fd5b810190602081018135600160201b81111561044b57600080fd5b82018360208201111561045d57600080fd5b803590602001918460018302840111600160201b8311171561047e57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550610a3b945050505050565b60408051918252519081900360200190f35b3480156104dd57600080fd5b506104e6610b9a565b6040805161ffff9092168252519081900360200190f35b34801561050957600080fd5b5061021e610ba0565b34801561051e57600080fd5b5061021e610ba6565b61036a6004803603604081101561053d57600080fd5b6001600160a01b038235169190810190604081016020820135600160201b81111561056757600080fd5b82018360208201111561057957600080fd5b803590602001918460018302840111600160201b8311171561059a57600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295506109c9945050505050565b3480156105e757600080fd5b5061021e610bac565b61036a6004803603602081101561060657600080fd5b810190602081018135600160201b81111561056757600080fd5b34801561062c57600080fd5b5061021e610bb2565b34801561064157600080fd5b5061021e610bb8565b34801561065657600080fd5b506104bf610bbe565b34801561066b57600080fd5b506106e46004803603604081101561068257600080fd5b60ff8235169190810190604081016020820135600160201b8111156106a657600080fd5b8201836020820111156106b857600080fd5b803590602001918460018302840111600160201b831117156106d957600080fd5b509092509050610bc4565b005b3480156106f257600080fd5b5061021e610c04565b34801561070757600080fd5b5061021e610c0a565b34801561071c57600080fd5b5061036a610c10565b34801561073157600080fd5b5061021e610c19565b34801561074657600080fd5b5061021e610c1f565b34801561075b57600080fd5b50610764610c25565b6040805163ffffffff9092168252519081900360200190f35b34801561078957600080fd5b506106e4600480360360408110156107a057600080fd5b810190602081018135600160201b8111156107ba57600080fd5b8201836020820111156107cc57600080fd5b803590602001918460018302840111600160201b831117156107ed57600080fd5b919390929091602081019035600160201b81111561080a57600080fd5b82018360208201111561081c57600080fd5b803590602001918460018302840111600160201b8311171561083d57600080fd5b509092509050610c2a565b34801561085457600080fd5b5061021e610c6a565b34801561086957600080fd5b506108876004803603602081101561088057600080fd5b5035610c70565b6040805160ff988916815260208101979097526001600160a01b03909516868601526060860193909352608085019190915290931660a083015267ffffffffffffffff90921660c082015290519081900360e00190f35b3480156108ea57600080fd5b5061021e610cc8565b3480156108ff57600080fd5b5061021e610cce565b34801561091457600080fd5b506104bf610cd4565b34801561092957600080fd5b5061021e610cda565b34801561093e57600080fd5b5061021e610ce0565b61200181565b6060336120001461098f5760405162461bcd60e51b815260040180806020018281038252602f815260200180610e31602f913960400191505060405180910390fd5b6040805162461bcd60e51b815260206004820152600a60248201526919195c1c9958d85d195960b21b604482015290519081900360640190fd5b6040805162461bcd60e51b815260206004820152600a60248201526919195c1c9958d85d195960b21b6044820152905160009181900360640190fd5b61200581565b60036020526000908152604090205460ff1681565b60026020526000908152604090205460ff1681565b61100181565b6020810151600090610a4b610dc6565b50600081815260016020818152604092839020835160e081018552815460ff9081168252938201549281019290925260028101546001600160a01b031693820184905260038101546060830152600481015460808301526005015491821660a082015261010090910467ffffffffffffffff1660c082015290610ad357600092505050610b95565b600081604001516001600160a01b03166370a082316110046040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060206040518083038186803b158015610b3157600080fd5b505afa158015610b45573d6000803e3d6000fd5b505050506040513d6020811015610b5b57600080fd5b505160808301516060840151919250600091610b7c9163ffffffff610ce616565b9050610b8e818363ffffffff610ce616565b9450505050505b919050565b6102ca81565b61200681565b61200081565b61100581565b61100881565b61200381565b60045481565b336120001461098f5760405162461bcd60e51b815260040180806020018281038252602f815260200180610e31602f913960400191505060405180910390fd5b61100781565b61100681565b60005460ff1681565b61200281565b61300081565b600081565b336110071461098f5760405162461bcd60e51b815260040180806020018281038252602e815260200180610e03602e913960400191505060405180910390fd5b61100281565b600160208190526000918252604090912080549181015460028201546003830154600484015460059094015460ff9586169593946001600160a01b0390931693919291811690610100900467ffffffffffffffff1687565b61100381565b61200481565b60055481565b61100081565b61100481565b6000610d2883836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250610d2f565b9392505050565b60008184841115610dbe5760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b83811015610d83578181015183820152602001610d6b565b50505050905090810190601f168015610db05780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b6040805160e081018252600080825260208201819052918101829052606081018290526080810182905260a0810182905260c08101919091529056fe746865206d6573736167652073656e646572206d75737420626520676f7665726e616e636520636f6e7472616374746865206d6573736167652073656e646572206d7573742062652063726f737320636861696e20636f6e7472616374a164736f6c6343000604000a \ No newline at end of file diff --git a/core/systemcontracts/pascal/rialto/TokenRecoverPortalContract b/core/systemcontracts/pascal/rialto/TokenRecoverPortalContract new file mode 100644 index 0000000000..26d5bd070e --- /dev/null +++ b/core/systemcontracts/pascal/rialto/TokenRecoverPortalContract @@ -0,0 +1 @@ +608060405234801561001057600080fd5b50600436106100f55760003560e01c80638129fc1c11610097578063b187bd2611610066578063b187bd26146101fc578063bfb5a6a114610207578063e33f8d321461021a578063e842426a1461023d57600080fd5b80638129fc1c146101cc5780638456cb59146101d45780639fcb5012146101dc578063ac431751146101e957600080fd5b80634838d165116100d35780634838d165146101335780634a49ac4c14610166578063572c99801461017957806374be21501461018c57600080fd5b8063046f7da2146100fa5780632eb4a7ab14610104578063417c73a714610120575b600080fd5b610102610268565b005b61010d60685481565b6040519081526020015b60405180910390f35b61010261012e36600461165e565b6102f0565b61015661014136600461165e565b60346020526000908152604090205460ff1681565b6040519015158152602001610117565b61010261017436600461165e565b61036c565b610102610187366004611679565b6103e5565b6101bf6040518060400160405280601481526020017342696e616e63652d436861696e2d47616e67657360601b81525081565b60405161011791906116f5565b61010261047b565b6101026105db565b6069546101569060ff1681565b6101026101f7366004611751565b610667565b60335460ff16610156565b610102610215366004611802565b610a86565b6101566102283660046118dc565b6000908152606a602052604090205460ff1690565b606754610250906001600160a01b031681565b6040516001600160a01b039091168152602001610117565b60335461010090046001600160a01b03163314610298576040516306fbb1e360e01b815260040160405180910390fd5b60335460ff166102bb57604051636cd6020160e01b815260040160405180910390fd5b6033805460ff191690556040517f62451d457bc659158be6e6247f56ec1df424a5c7597f71c20c2bc44e0965c8f990600090a1565b60335461010090046001600160a01b03163314610320576040516306fbb1e360e01b815260040160405180910390fd5b6001600160a01b038116600081815260346020526040808220805460ff19166001179055517f7fd26be6fc92aff63f1f4409b2b2ddeb272a888031d7f55ec830485ec61941869190a250565b60335461010090046001600160a01b0316331461039c576040516306fbb1e360e01b815260040160405180910390fd5b6001600160a01b038116600081815260346020526040808220805460ff19169055517fe0db3499b7fdc3da4cddff5f45d694549c19835e7f719fb5606d3ad1a5de40119190a250565b60335461010090046001600160a01b03163314610415576040516306fbb1e360e01b815260040160405180910390fd5b604051638525db0360e01b8152600481018390526001600160a01b038216602482015261100490638525db0390604401600060405180830381600087803b15801561045f57600080fd5b505af1158015610473573d6000803e3d6000fd5b505050505050565b600054610100900460ff161580801561049b5750600054600160ff909116105b806104b55750303b1580156104b5575060005460ff166001145b61051d5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084015b60405180910390fd5b6000805460ff191660011790558015610540576000805461ff0019166101001790555b3341146105605760405163022d8c9560e31b815260040160405180910390fd5b3a1561057f576040516383f1b1d360e01b815260040160405180910390fd5b610587610de6565b61059261dead610e13565b80156105d8576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b50565b60335461010090046001600160a01b0316331461060b576040516306fbb1e360e01b815260040160405180910390fd5b60335460ff161561062f57604051631785c68160e01b815260040160405180910390fd5b6033805460ff191660011790556040517f9e87fac88ff661f02d44f95383c817fece4bce600a3dab7a54406878b965e75290600090a1565b336110071461068d57604051630f22c43960e41b81526110076004820152602401610514565b6106f76040518060400160405280600f81526020016e617070726f76616c4164647265737360881b81525085858080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509293925050610e629050565b156107c157601481146107255783838383604051630a5a604160e01b8152600401610514949392919061191e565b600061076b601484848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509293925050610ebc9050565b90506001600160a01b03811661079c5784848484604051630a5a604160e01b8152600401610514949392919061191e565b606780546001600160a01b0319166001600160a01b0392909216919091179055610a43565b6108266040518060400160405280600a8152602001691b595c9adb19549bdbdd60b21b81525085858080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509293925050610e629050565b156108f65760695460ff161561084f576040516379b3306f60e11b815260040160405180910390fd5b602081146108785783838383604051630a5a604160e01b8152600401610514949392919061191e565b604080516020601f84018190048102820181019092528281526000916108b9918585808385018382808284376000920191909152509293925050610ebc9050565b9050806108e15784848484604051630a5a604160e01b8152600401610514949392919061191e565b6068556069805460ff19166001179055610a43565b61096e6040518060400160405280601b81526020017f746f6b656e5265636f766572506f7274616c50726f746563746f72000000000081525085858080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509293925050610e629050565b15610a22576014811461099c5783838383604051630a5a604160e01b8152600401610514949392919061191e565b60006109e2601484848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509293925050610ebc9050565b90506001600160a01b038116610a135784848484604051630a5a604160e01b8152600401610514949392919061191e565b610a1c81610ec1565b50610a43565b838383836040516325ee20d560e21b8152600401610514949392919061191e565b7ff1ce9b2cbf50eeb05769a29e2543fd350cab46894a7dd9978a12d534bb20e63384848484604051610a78949392919061191e565b60405180910390a150505050565b60695460ff16610aa95760405163678f619760e11b815260040160405180910390fd5b606854610ac95760405163678f619760e11b815260040160405180910390fd5b6067546001600160a01b0316610af257604051631a1b977b60e31b815260040160405180910390fd5b60335460ff1615610b1657604051631785c68160e01b815260040160405180910390fd5b610b1e610f28565b6000610bac89898080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050604080516020601f8d018190048102820181019092528b815292508b91508a9081908401838280828437600081840152601f19601f82011690508083019250505050505050610ba78e8e33610f81565b6110a2565b90506000818c8c604051602001610bc593929190611950565b604051602081830303815290604052805190602001209050610bf6816000908152606a602052604090205460ff1690565b15610c1357604051623e493160e81b815260040160405180910390fd5b610cbb3389898080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050604080516020601f8d018190048102820181019092528b815292508b91508a908190840183828082843760009201919091525050604080516020808c0282810182019093528b82528994509092508b918b9182919085019084908082843760009201919091525061117a92505050565b610cfc848480806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250506068549150849050611285565b610d19576040516309bde33960e01b815260040160405180910390fd5b6000818152606a602052604090819020805460ff191660011790555163799758b960e01b8152600481018d9052336024820152604481018c90526110049063799758b990606401600060405180830381600087803b158015610d7a57600080fd5b505af1158015610d8e573d6000803e3d6000fd5b505050507f39cc0b7297a0ef9102d75ebc4919ffec0347d50008c2b865eda4125d5812cb64828d338e604051610dc79493929190611977565b60405180910390a15050610dda60018055565b50505050505050505050565b600054610100900460ff16610e0d5760405162461bcd60e51b8152600401610514906119af565b60018055565b600054610100900460ff16610e3a5760405162461bcd60e51b8152600401610514906119af565b603380546001600160a01b0390921661010002610100600160a81b0319909216919091179055565b600081604051602001610e7591906119fa565b6040516020818303038152906040528051906020012083604051602001610e9c91906119fa565b604051602081830303815290604052805190602001201490505b92915050565b015190565b6033546040516001600160a01b0380841692610100900416907f44fc1b38a4abaa91ebd1b628a5b259a698f86238c8217d68f516e87769c60c0b90600090a3603380546001600160a01b0390921661010002610100600160a81b0319909216919091179055565b600260015403610f7a5760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610514565b6002600155565b600060026040518060400160405280601481526020017342696e616e63652d436861696e2d47616e67657360601b815250610fde85604051602001610fc891815260200190565b604051602081830303815290604052600061129b565b6040516bffffffffffffffffffffffff19606087901b16602082015261101790603401604051602081830303815290604052600161129b565b61102d88604051602001610fc891815260200190565b6040516020016110409493929190611a16565b60408051601f198184030181529082905261105a916119fa565b602060405180830381855afa158015611077573d6000803e3d6000fd5b5050506040513d601f19601f8201168201806040525081019061109a9190611b45565b949350505050565b606083516021146110c657604051638152ea1b60e01b815260040160405180910390fd5b82516040146110e857604051635e4bd79760e11b815260040160405180910390fd5b604080516020808252818301909252600091602082018180368337019050509050826020820152600085858360405160200161112693929190611b74565b60408051808303601f190181526014808452838301909252925060009190602082018180368337019050509050815160146020830182602086016069600019fa61116f57600080fd5b509695505050505050565b606060005b82518110156111d8578183828151811061119b5761119b611bb7565b60200260200101516040516020016111b4929190611bcd565b604051602081830303815290604052915080806111d090611c05565b91505061117f565b5060006040518060400160405280601481526020017342696e616e63652d436861696e2d47616e67657360601b8152508787866068548660405160200161122496959493929190611c1e565b60408051601f1981840301815291905280516020909101206067549091506001600160a01b0316611255868361146d565b6001600160a01b03161461127c576040516356b00a4f60e11b815260040160405180910390fd5b50505050505050565b6000826112928584611507565b14949350505050565b60606000835160026112ad9190611c8f565b67ffffffffffffffff8111156112c5576112c5611b5e565b6040519080825280601f01601f1916602001820160405280156112ef576020820181803683370190505b5060408051808201909152601081526f181899199a1a9b1b9c1cb0b131b232b360811b602082015290915060005b85518110156114355781825187838151811061133b5761133b611bb7565b016020015161134d919060f81c611cbc565b8151811061135d5761135d611bb7565b01602001516001600160f81b03191683611378836002611c8f565b8151811061138857611388611bb7565b60200101906001600160f81b031916908160001a9053508182518783815181106113b4576113b4611bb7565b01602001516113c6919060f81c611cd0565b815181106113d6576113d6611bb7565b01602001516001600160f81b031916836113f1836002611c8f565b6113fc906001611ce4565b8151811061140c5761140c611bb7565b60200101906001600160f81b031916908160001a9053508061142d81611c05565b91505061131d565b508315611465578160405160200161144d9190611cf7565b60405160208183030381529060405292505050610eb6565b509392505050565b60008251604114611491576040516356b00a4f60e11b815260040160405180910390fd5b60208301516040840151606085015160001a601b8110156114ba576114b7601b82611d21565b90505b601b8160ff1610806114cf5750601c8160ff16115b156114ed576040516356b00a4f60e11b815260040160405180910390fd5b60006114fb8683868661154c565b50979650505050505050565b600081815b8451811015611465576115388286838151811061152b5761152b611bb7565b6020026020010151611610565b91508061154481611c05565b91505061150c565b6000807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a08311156115835750600090506003611607565b6040805160008082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa1580156115d7573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b03811661160057600060019250925050611607565b9150600090505b94509492505050565b600081831061162c57600082815260208490526040902061163b565b60008381526020839052604090205b9392505050565b80356001600160a01b038116811461165957600080fd5b919050565b60006020828403121561167057600080fd5b61163b82611642565b6000806040838503121561168c57600080fd5b8235915061169c60208401611642565b90509250929050565b60005b838110156116c05781810151838201526020016116a8565b50506000910152565b600081518084526116e18160208601602086016116a5565b601f01601f19169290920160200192915050565b60208152600061163b60208301846116c9565b60008083601f84011261171a57600080fd5b50813567ffffffffffffffff81111561173257600080fd5b60208301915083602082850101111561174a57600080fd5b9250929050565b6000806000806040858703121561176757600080fd5b843567ffffffffffffffff8082111561177f57600080fd5b61178b88838901611708565b909650945060208701359150808211156117a457600080fd5b506117b187828801611708565b95989497509550505050565b60008083601f8401126117cf57600080fd5b50813567ffffffffffffffff8111156117e757600080fd5b6020830191508360208260051b850101111561174a57600080fd5b60008060008060008060008060008060c08b8d03121561182157600080fd5b8a35995060208b0135985060408b013567ffffffffffffffff8082111561184757600080fd5b6118538e838f01611708565b909a50985060608d013591508082111561186c57600080fd5b6118788e838f01611708565b909850965060808d013591508082111561189157600080fd5b61189d8e838f01611708565b909650945060a08d01359150808211156118b657600080fd5b506118c38d828e016117bd565b915080935050809150509295989b9194979a5092959850565b6000602082840312156118ee57600080fd5b5035919050565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b6040815260006119326040830186886118f5565b82810360208401526119458185876118f5565b979650505050505050565b600084516119628184602089016116a5565b91909101928352506020820152604001919050565b60808152600061198a60808301876116c9565b6020830195909552506001600160a01b03929092166040830152606090910152919050565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b60008251611a0c8184602087016116a5565b9190910192915050565b7f7b226163636f756e745f6e756d626572223a2230222c22636861696e5f6964228152611d1160f11b602082015260008551611a59816022850160208a016116a5565b7f222c2264617461223a6e756c6c2c226d656d6f223a22222c226d736773223a5b6022918401918201526a3d9130b6b7bab73a111d1160a91b60428201528551611aaa81604d840160208a016116a5565b6e1116113932b1b4b834b2b73a111d1160891b604d92909101918201528451611ada81605c8401602089016116a5565b711116113a37b5b2b72fb9bcb6b137b6111d1160711b605c92909101918201528351611b0d81606e8401602088016116a5565b7f227d5d2c2273657175656e6365223a2230222c22736f75726365223a2230227d606e9290910191820152608e019695505050505050565b600060208284031215611b5757600080fd5b5051919050565b634e487b7160e01b600052604160045260246000fd5b60008451611b868184602089016116a5565b845190830190611b9a8183602089016116a5565b8451910190611bad8183602088016116a5565b0195945050505050565b634e487b7160e01b600052603260045260246000fd5b60008351611bdf8184602088016116a5565b9190910191825250602001919050565b634e487b7160e01b600052601160045260246000fd5b600060018201611c1757611c17611bef565b5060010190565b60008751611c30818460208c016116a5565b606088901b6bffffffffffffffffffffffff19169083019081528651611c5d816014840160208b016116a5565b0160148101869052603481018590528351611c7f8160548401602088016116a5565b0160540198975050505050505050565b8082028115828204841417610eb657610eb6611bef565b634e487b7160e01b600052601260045260246000fd5b600082611ccb57611ccb611ca6565b500490565b600082611cdf57611cdf611ca6565b500690565b80820180821115610eb657610eb6611bef565b61060f60f31b815260008251611d148160028501602087016116a5565b9190910160020192915050565b60ff8181168382160190811115610eb657610eb6611bef56fea164736f6c6343000811000a \ No newline at end of file diff --git a/core/systemcontracts/pascal/rialto/ValidatorContract b/core/systemcontracts/pascal/rialto/ValidatorContract new file mode 100644 index 0000000000..81e1548a71 --- /dev/null +++ b/core/systemcontracts/pascal/rialto/ValidatorContract @@ -0,0 +1 @@ +6080604052600436106104565760003560e01c80638c5d749d1161023f578063c81b166211610139578063e1c7392a116100b6578063f92eb86b1161007a578063f92eb86b14610b7f578063f9a2bbc714610b94578063fccc281314610ba9578063fd4ad81f14610bbe578063fd6a687914610bed5761045d565b8063e1c7392a14610b02578063e40716a114610b17578063ea321e4914610b2c578063eb57e20214610b4c578063f340fa0114610b6c5761045d565b8063d68fb56a116100fd578063d68fb56a14610a99578063daacdb6614610aae578063dc927faf14610ac3578063df8079e914610ad8578063e086c7b114610aed5761045d565b8063c81b166214610a3a578063c8509d81146107fc578063cb75a59214610a4f578063ce910b0c14610a64578063d58918ae14610a845761045d565b8063aa82dce1116101c7578063aef198a91161018b578063aef198a9146109c4578063b7ab4db5146109d9578063b8cf4ef1146109fb578063c466689d14610a10578063c6d3394514610a255761045d565b8063aa82dce114610938578063aad560631461094d578063ab51bb9614610962578063ac43175114610984578063ad3c9da6146109a45761045d565b80639fe0f8161161020e5780639fe0f816146108cf578063a0dc2758146108e4578063a1a11bf5146108f9578063a5422d5c1461090e578063a78abc16146109235761045d565b80638c5d749d146108705780638d19a410146108855780639369d7de146108a55780639dc09262146108ba5761045d565b80635192c82c1161035057806375d47a0a116102d8578063831d65d11161029c578063831d65d1146107fc578063862498821461081c57806388b32f11146108315780638a7beb01146108465780638b5ad0c91461085b5761045d565b806375d47a0a1461079357806378dfed4a146107a85780637a84ca2a146107bd5780637e434d54146107d2578063820dcaa8146107e75761045d565b8063565c56b31161031f578063565c56b3146106f757806360eba4fe1461071757806362b72cf5146107375780636969a25c1461074c5780636e47b4821461077e5761045d565b80635192c82c1461069857806351b4dce3146106ad57806351e80672146106c257806355614fcc146106d75761045d565b80632a0ffb6e116103de5780633b071dcc116103a25780633b071dcc1461061457806343756e5c1461063757806345cf9daf1461064c578063493279b1146106615780634df6e0c3146106835761045d565b80632a0ffb6e14610574578063300c356714610594578063321d398a146105b45780633365af3a146105d457806335409f7f146105f45761045d565b8063152ad3b811610425578063152ad3b8146104f35780631bd14ed8146105155780631e4c15241461052a5780631ff180691461054a578063280870281461055f5761045d565b806304c4fec61461046257806307a56847146104795780630e2374a5146104a45780631182b875146104c65761045d565b3661045d57005b600080fd5b34801561046e57600080fd5b50610477610c02565b005b34801561048557600080fd5b5061048e610c76565b60405161049b9190616e0c565b60405180910390f35b3480156104b057600080fd5b506104b9610c7c565b60405161049b91906161c2565b3480156104d257600080fd5b506104e66104e13660046160a8565b610c82565b60405161049b91906162e2565b3480156104ff57600080fd5b50610508610d7d565b60405161049b91906162d7565b34801561052157600080fd5b5061048e610d86565b34801561053657600080fd5b50610477610545366004615ed6565b610d8c565b34801561055657600080fd5b5061048e6110c0565b34801561056b57600080fd5b506104b96110c6565b34801561058057600080fd5b5061047761058f366004615e36565b6110cc565b3480156105a057600080fd5b506104776105af366004615e6e565b6110ed565b3480156105c057600080fd5b506105086105cf366004616055565b611436565b3480156105e057600080fd5b506105086105ef366004616055565b611505565b34801561060057600080fd5b5061047761060f366004615e36565b6115b6565b34801561062057600080fd5b5061062961171b565b60405161049b929190616267565b34801561064357600080fd5b506104b96119f7565b34801561065857600080fd5b5061048e6119fd565b34801561066d57600080fd5b50610676611a03565b60405161049b9190616dfd565b34801561068f57600080fd5b50610629611a09565b3480156106a457600080fd5b5061048e611b95565b3480156106b957600080fd5b506104b9611b9b565b3480156106ce57600080fd5b506104b9611ba1565b3480156106e357600080fd5b506105086106f2366004615e36565b611ba7565b34801561070357600080fd5b5061048e610712366004615e36565b611be3565b34801561072357600080fd5b506104e6610732366004616055565b611c34565b34801561074357600080fd5b5061048e611cda565b34801561075857600080fd5b5061076c610767366004616055565b611ce0565b60405161049b969594939291906161ef565b34801561078a57600080fd5b506104b9611d44565b34801561079f57600080fd5b506104b9611d4a565b3480156107b457600080fd5b5061048e611d50565b3480156107c957600080fd5b5061048e611d56565b3480156107de57600080fd5b506104b9611d5c565b3480156107f357600080fd5b5061048e611d62565b34801561080857600080fd5b506104776108173660046160a8565b611d68565b34801561082857600080fd5b5061048e611d89565b34801561083d57600080fd5b5061048e611d8f565b34801561085257600080fd5b50610508611d95565b34801561086757600080fd5b5061048e611d9e565b34801561087c57600080fd5b5061048e611da4565b34801561089157600080fd5b5061048e6108a0366004615e36565b611dc1565b3480156108b157600080fd5b50610477611e01565b3480156108c657600080fd5b506104b9611f15565b3480156108db57600080fd5b5061048e611f1b565b3480156108f057600080fd5b5061048e611f20565b34801561090557600080fd5b506104b9611f25565b34801561091a57600080fd5b506104e6611f2b565b34801561092f57600080fd5b50610508611f47565b34801561094457600080fd5b506104b9611f50565b34801561095957600080fd5b506104b9611f56565b34801561096e57600080fd5b50610977611f5c565b60405161049b9190616e3f565b34801561099057600080fd5b5061047761099f366004615ff9565b611f61565b3480156109b057600080fd5b5061048e6109bf366004615e36565b612953565b3480156109d057600080fd5b5061048e612965565b3480156109e557600080fd5b506109ee612972565b60405161049b9190616254565b348015610a0757600080fd5b5061048e612a5d565b348015610a1c57600080fd5b5061048e612a62565b348015610a3157600080fd5b5061048e612a68565b348015610a4657600080fd5b506104b9612a6d565b348015610a5b57600080fd5b5061048e612a73565b348015610a7057600080fd5b506104e6610a7f366004616055565b612a79565b348015610a9057600080fd5b5061048e612a86565b348015610aa557600080fd5b5061048e612a8c565b348015610aba57600080fd5b5061048e612acb565b348015610acf57600080fd5b506104b9612ad1565b348015610ae457600080fd5b506104b9612ad7565b348015610af957600080fd5b5061048e612add565b348015610b0e57600080fd5b50610477612ae2565b348015610b2357600080fd5b5061048e612d6d565b348015610b3857600080fd5b50610508610b47366004615fba565b612d73565b348015610b5857600080fd5b50610477610b67366004615e36565b612ef9565b610477610b7a366004615e36565b613001565b348015610b8b57600080fd5b5061048e6133b7565b348015610ba057600080fd5b506104b96133bd565b348015610bb557600080fd5b506104b96133c3565b348015610bca57600080fd5b50610bde610bd9366004616055565b6133c9565b60405161049b93929190616e15565b348015610bf957600080fd5b506104b961348b565b6000610c0d33611dc1565b9050600b8181548110610c1c57fe5b600091825260209091206001601690920201015460ff16610c585760405162461bcd60e51b8152600401610c4f90616ab4565b60405180910390fd5b6000610c62612a8c565b9050610c713383836001613491565b505050565b60095481565b61200181565b60005460609060ff16610ca75760405162461bcd60e51b8152600401610c4f9061646a565b600b54610d6557610cb66159e2565b60015460005b81811015610d6157600b80546001810182556000919091528351600080516020616ed78339815191526016909202918201908155602080860151600080516020616f178339815191528401805460ff1916911515919091179055604086015180518794610d3d93600080516020616ef7833981519152909101920190615a11565b506060820151610d539060038301906013615a8b565b505050806001019050610cbc565b5050505b60405162461bcd60e51b8152600401610c4f90616719565b60075460ff1681565b600f5481565b334114610dab5760405162461bcd60e51b8152600401610c4f90616c64565b3a15610dc95760405162461bcd60e51b8152600401610c4f906169f3565b8251604080518281526020808402820101909152606090828015610e0757816020015b610df4615ab8565b815260200190600190039081610dec5790505b50905060005b82811015610eb1576040518060c00160405280878381518110610e2c57fe5b60200260200101516001600160a01b0316815260200160006001600160a01b0316815260200160006001600160a01b03168152602001868381518110610e6e57fe5b60200260200101516001600160401b031681526020016000151581526020016000815250828281518110610e9e57fe5b6020908102919091010152600101610e0d565b50606080610ebf8386613683565b9150915060005b600154811015610fb557600060018281548110610edf57fe5b906000526020600020906004020160030154905080600014610fac57600060018381548110610f0a57fe5b9060005260206000209060040201600301819055506120026001600160a01b031663092193ab8260018581548110610f3e57fe5b60009182526020909120600491820201546040516001600160e01b031960e086901b168152610f79926001600160a01b0390921691016161c2565b6000604051808303818588803b158015610f9257600080fd5b505af1158015610fa6573d6000803e3d6000fd5b50505050505b50600101610ec6565b504715611023577f6ecc855f9440a9282c90913bbc91619fd44f5ec0b462af28d127b116f130aa4d47604051610feb9190616e0c565b60405180910390a1604051611002904780156108fc02916000818181858888f19350505050158015611021573d6000803e3d6000fd5b505b6000600355815115611039576110398282613b6d565b6110016001600160a01b031663fc4333cd6040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561107657600080fd5b505af115801561108a573d6000803e3d6000fd5b50506040517fedd8d7296956dd970ab4de3f2fc03be2b0ffc615d20cd4c72c6e44f928630ebf925060009150a150505050505050565b60035481565b61200581565b3361200214610d655760405162461bcd60e51b8152600401610c4f90616dc6565b33411461110c5760405162461bcd60e51b8152600401610c4f90616c64565b601054431161112d5760405162461bcd60e51b8152600401610c4f90616643565b3a1561114b5760405162461bcd60e51b8152600401610c4f906169f3565b60005460ff1661116d5760405162461bcd60e51b8152600401610c4f9061646a565b60006110023168056bc75e2d631000008111156111a45761119d8168056bc75e2d6310000063ffffffff61435c16565b91506111ab565b505061142c565b6040516309a99b4f60e41b815261100290639a99b4f0906111d290309086906004016161d6565b602060405180830381600087803b1580156111ec57600080fd5b505af1158015611200573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611224919061606d565b91508161123257505061142c565b6000805b848110156112605785858281811061124a57fe5b9050602002013582019150806001019050611236565b508061126e5750505061142c565b6000806000805b89811015611424578489898381811061128a57fe5b9050602002013588028161129a57fe5b0493508a8a828181106112a957fe5b90506020020160208101906112be9190615e36565b6001600160a01b038116600090815260046020526040902054909350915081156113da5760006001808403815481106112f357fe5b9060005260206000209060040201905080600201601c9054906101000a900460ff161561136057836001600160a01b03167fb9c75cbbfde137c4281689580799ef5f52144e78858f776a5979b2b212137d85866040516113539190616e0c565b60405180910390a26113d4565b600354611373908663ffffffff61439e16565b600390815581015461138b908663ffffffff61439e16565b60038201556040516001600160a01b038516907fcb0aad6cf9cd03bdf6137e359f541c42f38b39f007cae8e89e88aa7d8c6617b2906113cb908890616e0c565b60405180910390a25b5061141c565b826001600160a01b03167fb9c75cbbfde137c4281689580799ef5f52144e78858f776a5979b2b212137d85856040516114139190616e0c565b60405180910390a25b600101611275565b505050505050505b5050436010555050565b600154600090821061144a57506000611500565b60006001600160a01b03166001838154811061146257fe5b60009182526020909120600490910201546001600160a01b03161480611492575060085415806114925750600a54155b806114a1575060085460095410155b806114b257506114b082611505565b155b806114db57506000600b83815481106114c757fe5b906000526020600020906016020160000154115b806114ef575060016114eb612972565b5111155b156114fc57506000611500565b5060015b919050565b600154600090821061151957506000611500565b600b548210611556576001828154811061152f57fe5b9060005260206000209060040201600201601c9054906101000a900460ff16159050611500565b6001828154811061156357fe5b9060005260206000209060040201600201601c9054906101000a900460ff161580156115b05750600b828154811061159757fe5b600091825260209091206001601690920201015460ff16155b92915050565b600b54611674576115c56159e2565b60015460005b8181101561167057600b80546001810182556000919091528351600080516020616ed78339815191526016909202918201908155602080860151600080516020616f178339815191528401805460ff191691151591909117905560408601518051879461164c93600080516020616ef7833981519152909101920190615a11565b5060608201516116629060038301906013615a8b565b5050508060010190506115cb565b5050505b336110011480611685575033612002145b6116a15760405162461bcd60e51b8152600401610c4f906164a1565b6001600160a01b038116600090815260046020526040902054806116c55750611718565b6001810390506000600b82815481106116da57fe5b600091825260209091206001601690920201015460ff1690506116fd83836143c3565b80156117065750805b15610c71576009805460001901905550505b50565b60015460609081906000805b8281101561176e576001818154811061173c57fe5b9060005260206000209060040201600201601c9054906101000a900460ff16611766576001909101905b600101611727565b5060608160405190808252806020026020018201604052801561179b578160200160208202803683370190505b5090506060826040519080825280602002602001820160405280156117d457816020015b60608152602001906001900390816117bf5790505b50600b546000945090915084141561194f5760005b8481101561194957600181815481106117fe57fe5b9060005260206000209060040201600201601c9054906101000a900460ff16611941576001818154811061182e57fe5b600091825260209091206004909102015483516001600160a01b039091169084908690811061185957fe5b60200260200101906001600160a01b031690816001600160a01b031681525050600b818154811061188657fe5b600091825260209182902060026016909202018101805460408051601f60001961010060018616150201909316949094049182018590048502840185019052808352919290919083018282801561191e5780601f106118f35761010080835404028352916020019161191e565b820191906000526020600020905b81548152906001019060200180831161190157829003601f168201915b505050505082858151811061192f57fe5b60209081029190910101526001909301925b6001016117e9565b506119eb565b60005b848110156119e9576001818154811061196757fe5b9060005260206000209060040201600201601c9054906101000a900460ff166119e1576001818154811061199757fe5b600091825260209091206004909102015483516001600160a01b03909116908490869081106119c257fe5b6001600160a01b03909216602092830291909101909101526001909301925b600101611952565b505b909450925050505b9091565b61100181565b60085481565b6102ca81565b6060806000600e549050600080600c5411611a25576015611a29565b600c545b90506060611a35612972565b90506060611a4282614786565b905082825111611a595790945092506119f3915050565b83838351031015611a6b578282510393505b8315611aa15760c84304611a8783838388880360008a8a6148f4565b611a9f8383838888038989038a8b8b8b5103016148f4565b505b606083604051908082528060200260200182016040528015611acd578160200160208202803683370190505b509050606084604051908082528060200260200182016040528015611b0657816020015b6060815260200190600190039081611af15790505b50905060005b85811015611b8757848181518110611b2057fe5b6020026020010151838281518110611b3457fe5b60200260200101906001600160a01b031690816001600160a01b031681525050838181518110611b6057fe5b6020026020010151828281518110611b7457fe5b6020908102919091010152600101611b0c565b509096509450505050509091565b60065481565b61200681565b61200081565b6001600160a01b03811660009081526004602052604081205480611bcf576000915050611500565b60001901611bdc81611505565b9392505050565b6001600160a01b03811660009081526004602052604081205480611c0b576000915050611500565b600180820381548110611c1a57fe5b906000526020600020906004020160030154915050919050565b60128181548110611c4157fe5b600091825260209182902001805460408051601f6002600019610100600187161502019094169390930492830185900485028101850190915281815293509091830182828015611cd25780601f10611ca757610100808354040283529160200191611cd2565b820191906000526020600020905b815481529060010190602001808311611cb557829003601f168201915b505050505081565b60105481565b60018181548110611ced57fe5b600091825260209091206004909102018054600182015460028301546003909301546001600160a01b0392831694509082169291821691600160a01b81046001600160401b031691600160e01b90910460ff169086565b61100581565b61100881565b6103e881565b600c5481565b61200381565b61271081565b3361200014610d655760405162461bcd60e51b8152600401610c4f90616c15565b60025481565b60115481565b60145460ff1681565b600a5481565b600060175460001415611db957506001611dbe565b506017545b90565b6001600160a01b03811660009081526004602052604081205480611df75760405162461bcd60e51b8152600401610c4f90616b9d565b6000190192915050565b600b54611ebf57611e106159e2565b60015460005b81811015611ebb57600b80546001810182556000919091528351600080516020616ed78339815191526016909202918201908155602080860151600080516020616f178339815191528401805460ff1916911515919091179055604086015180518794611e9793600080516020616ef7833981519152909101920190615a11565b506060820151611ead9060038301906013615a8b565b505050806001019050611e16565b5050505b600854611ecc5760036008555b600a54611ed9576002600a555b6000611ee433611dc1565b9050611eef81611436565b611f0b5760405162461bcd60e51b8152600401610c4f9061696f565b6117183382614a4b565b61100781565b600381565b60c881565b61100681565b6040518060a0016040528060788152602001616f376078913981565b60005460ff1681565b61200281565b61300081565b600081565b60005460ff16611f835760405162461bcd60e51b8152600401610c4f9061646a565b3361100714611fa45760405162461bcd60e51b8152600401610c4f90616a21565b61200484848080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250506040805180820190915260098152686275726e526174696f60b81b60208201529150614ae39050565b156120b957602081146120295760405162461bcd60e51b8152600401610c4f90616327565b604080516020601f840181900481028201810190925282815260009161206791858580838501838280828437600092019190915250614b3c92505050565b9050612710612093601854612087600f548561439e90919063ffffffff16565b9063ffffffff61439e16565b11156120b15760405162461bcd60e51b8152600401610c4f9061673d565b600655612910565b61212384848080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250506040805180820190915260138152726d61784e756d4f664d61696e7461696e696e6760681b60208201529150614ae39050565b156121bd57602081146121485760405162461bcd60e51b8152600401610c4f9061635e565b604080516020601f840181900481028201810190925282815260009161218691858580838501838280828437600092019190915250614b3c92505050565b600c5490915080612195575060155b8082106121b45760405162461bcd60e51b8152600401610c4f90616685565b50600855612910565b61222684848080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250506040805180820190915260128152716d61696e7461696e536c6173685363616c6560701b60208201529150614ae39050565b156122bf576020811461224b5760405162461bcd60e51b8152600401610c4f906163f0565b604080516020601f840181900481028201810190925282815260009161228991858580838501838280828437600092019190915250614b3c92505050565b905060008111801561229b5750600a81105b6122b75760405162461bcd60e51b8152600401610c4f90616cf9565b600a55612910565b61233384848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505060408051808201909152601981527f6d61784e756d4f66576f726b696e6743616e646964617465730000000000000060208201529150614ae39050565b156123c257602081146123585760405162461bcd60e51b8152600401610c4f906163a4565b604080516020601f840181900481028201810190925282815260009161239691858580838501838280828437600092019190915250614b3c92505050565b9050600d548111156123ba5760405162461bcd60e51b8152600401610c4f90616846565b600e55612910565b61242b84848080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250506040805180820190915260128152716d61784e756d4f6643616e6469646174657360701b60208201529150614ae39050565b156124ad57602081146124505760405162461bcd60e51b8152600401610c4f90616a6f565b604080516020601f840181900481028201810190925282815260009161248e91858580838501838280828437600092019190915250614b3c92505050565b600d819055600e549091508110156124a757600d54600e555b50612910565b61251184848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505060408051808201909152600d81526c6e756d4f66436162696e65747360981b60208201529150614ae39050565b156125bf57602081146125365760405162461bcd60e51b8152600401610c4f90616435565b604080516020601f840181900481028201810190925282815260009161257491858580838501838280828437600092019190915250614b3c92505050565b9050600081116125965760405162461bcd60e51b8152600401610c4f9061659e565b60648111156125b75760405162461bcd60e51b8152600401610c4f906165e6565b600c55612910565b61262b84848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505060408051808201909152601581527473797374656d52657761726442617365526174696f60581b60208201529150614ae39050565b156126d457602081146126505760405162461bcd60e51b8152600401610c4f90616cb1565b604080516020601f840181900481028201810190925282815260009161268e91858580838501838280828437600092019190915250614b3c92505050565b90506127106126ae6018546120876006548561439e90919063ffffffff16565b11156126cc5760405162461bcd60e51b8152600401610c4f9061650f565b600f55612910565b61274884848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505060408051808201909152601881527f73797374656d526577617264416e74694d4556526174696f000000000000000060208201529150614ae39050565b156127f1576020811461276d5760405162461bcd60e51b8152600401610c4f906167cc565b604080516020601f84018190048102820181019092528281526000916127ab91858580838501838280828437600092019190915250614b3c92505050565b90506127106127cb600f546120876006548561439e90919063ffffffff16565b11156127e95760405162461bcd60e51b8152600401610c4f906168e0565b601855612910565b61285284848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505060408051808201909152600a8152690e8eae4dc98cadccee8d60b31b60208201529150614ae39050565b156128f857602081146128775760405162461bcd60e51b8152600401610c4f906166e2565b604080516020601f84018190048102820181019092528281526000916128b591858580838501838280828437600092019190915250614b3c92505050565b9050600381101580156128c9575060098111155b806128d45750806001145b6128f05760405162461bcd60e51b8152600401610c4f90616b17565b601755612910565b60405162461bcd60e51b8152600401610c4f90616d56565b7f6cdb0ac70ab7f2e2d035cca5be60d89906f2dede7648ddbd7402189c1eeed17a8484848460405161294594939291906162f5565b60405180910390a150505050565b60046020526000908152604090205481565b68056bc75e2d6310000081565b6001546060906000805b828110156129a15761298d81611505565b15612999578160010191505b60010161297c565b506060816040519080825280602002602001820160405280156129ce578160200160208202803683370190505b5090506000915060005b83811015612a55576129e981611505565b15612a4d57600181815481106129fb57fe5b600091825260209091206004909102015482516001600160a01b0390911690839085908110612a2657fe5b60200260200101906001600160a01b031690816001600160a01b0316815250508260010192505b6001016129d8565b509250505090565b601581565b61027181565b600281565b61100281565b60175481565b60138181548110611c4157fe5b60185481565b6000612a96612972565b519050600080600c5411612aab576015612aaf565b600c545b905080821115612abd578091505b81612ac757600191505b5090565b60055481565b61100381565b61200481565b606481565b60005460ff1615612b055760405162461bcd60e51b8152600401610c4f90616ae0565b612b0d615aed565b6000612b306040518060a0016040528060788152602001616f3760789139614b41565b9150915080612b515760405162461bcd60e51b8152600401610c4f90616bd4565b612b596159e2565b60005b836020015151811015612d5a57600b80546001810182556000919091528251600080516020616ed78339815191526016909202918201908155602080850151600080516020616f178339815191528401805460ff1916911515919091179055604085015180518694612be293600080516020616ef7833981519152909101920190615a11565b506060820151612bf89060038301906013615a8b565b50505083604001518181518110612c0b57fe5b6020026020010151600b8281548110612c2057fe5b90600052602060002090601602016002019080519060200190612c44929190615a11565b50600184602001518281518110612c5757fe5b60209081029190910181015182546001818101855560009485528385208351600493840290910180546001600160a01b039283166001600160a01b03199182161782558587015182850180549185169183169190911790556040860151600283018054606089015160808a01511515600160e01b0260ff60e01b196001600160401b03909216600160a01b0267ffffffffffffffff60a01b199590981692909516919091179290921694909417161790915560a090930151600390930192909255918701518051918501939185908110612d2d57fe5b602090810291909101810151516001600160a01b0316825281019190915260400160002055600101612b5c565b50506000805460ff191660011790555050565b600d5481565b601354600090815b81811015612e7c57612e6485858080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050601380549092508591508110612dcc57fe5b600091825260209182902001805460408051601f6002600019610100600187161502019094169390930492830185900485028101850190915281815292830182828015612e5a5780601f10612e2f57610100808354040283529160200191612e5a565b820191906000526020600020905b815481529060010190602001808311612e3d57829003601f168201915b5050505050614cfd565b15612e74576001925050506115b0565b600101612d7b565b5060125460005b81811015612eed57612ed486868080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050601280549092508591508110612dcc57fe5b15612ee557600193505050506115b0565b600101612e83565b50600095945050505050565b3361100114612f1a5760405162461bcd60e51b8152600401610c4f90616d7d565b600b54612fd857612f296159e2565b60015460005b81811015612fd457600b80546001810182556000919091528351600080516020616ed78339815191526016909202918201908155602080860151600080516020616f178339815191528401805460ff1916911515919091179055604086015180518794612fb093600080516020616ef7833981519152909101920190615a11565b506060820151612fc69060038301906013615a8b565b505050806001019050612f2f565b5050505b6000612fe382614d61565b9050612fee81611436565b15612ffd57612ffd8282614a4b565b5050565b3341146130205760405162461bcd60e51b8152600401610c4f90616c64565b60005460ff166130425760405162461bcd60e51b8152600401610c4f9061646a565b600034116130625760405162461bcd60e51b8152600401610c4f90616817565b3a156130805760405162461bcd60e51b8152600401610c4f906169f3565b6001600160a01b03811660009081526004602052604090205460145434919060ff166130c057610271600f556103e86006556014805460ff191660011790555b600f5460175460011080156130d757506000601854115b156130fc5760016017540360175443816130ed57fe5b0660185402816130f957fe5b04015b60008311801561310c5750600081115b156131b9576000613135612710613129348563ffffffff614ee416565b9063ffffffff614f1e16565b905080156131b7576040516110029082156108fc029083906000818181858888f1935050505015801561316c573d6000803e3d6000fd5b507f6ecc855f9440a9282c90913bbc91619fd44f5ec0b462af28d127b116f130aa4d8160405161319c9190616e0c565b60405180910390a16131b4848263ffffffff61435c16565b93505b505b6000831180156131cb57506000600654115b156132715760006131ed61271061312960065434614ee490919063ffffffff16565b9050801561326f5760405161dead9082156108fc029083906000818181858888f19350505050158015613224573d6000803e3d6000fd5b507f627059660ea01c4733a328effb2294d2f86905bf806da763a89cee254de8bee5816040516132549190616e0c565b60405180910390a161326c848263ffffffff61435c16565b93505b505b811561336f57600060018084038154811061328857fe5b9060005260206000209060040201905080600201601c9054906101000a900460ff16156132f557846001600160a01b03167ff177e5d6c5764d79c32883ed824111d9b13f5668cf6ab1cc12dd36791dd955b4856040516132e89190616e0c565b60405180910390a2613369565b600354613308908563ffffffff61439e16565b6003908155810154613320908563ffffffff61439e16565b60038201556040516001600160a01b038616907f93a090ecc682c002995fad3c85b30c5651d7fd29b0be5da9d784a3302aedc05590613360908790616e0c565b60405180910390a25b506133b1565b836001600160a01b03167ff177e5d6c5764d79c32883ed824111d9b13f5668cf6ab1cc12dd36791dd955b4846040516133a89190616e0c565b60405180910390a25b50505050565b600e5481565b61100081565b61dead81565b600b81815481106133d657fe5b6000918252602091829020601691909102018054600180830154600280850180546040805161010096831615969096026000190190911692909204601f810188900488028501880190925281845293965060ff909116949192918301828280156134815780601f1061345657610100808354040283529160200191613481565b820191906000526020600020905b81548152906001019060200180831161346457829003601f168201915b5050505050905083565b61100481565b6000600a54600014806134a2575082155b806134ad5750600954155b156134ba5750600061367b565b60096000815460019003919050819055506000613505600a5461312986613129600b8a815481106134e757fe5b6000918252602090912060169091020154439063ffffffff61435c16565b90506000600b868154811061351657fe5b906000526020600020906016020160010160006101000a81548160ff0219169083151502179055506000806110016001600160a01b0316638256ace66040518163ffffffff1660e01b8152600401604080518083038186803b15801561357b57600080fd5b505afa15801561358f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906135b39190616085565b9150915060009350808310613631576135cc88886143c3565b506040516328aa02b160e01b8152611001906328aa02b1906135f6908b9087908a90600401616231565b600060405180830381600087803b15801561361057600080fd5b505af1158015613624573d6000803e3d6000fd5b5050505060019350613643565b8183106136435761364188614d61565b505b6040516001600160a01b038916907fb9d38178dc641ff1817967a63c9078cbcd955a9f1fcd75e0e3636de615d44d3b90600090a25050505b949350505050565b606080600080808080613694612a8c565b6001549091505b80156138c657600181039250600b83815481106136b457fe5b600091825260209091206001601690920201015460ff166136d4576138bd565b600183815481106136e157fe5b600091825260208220600490910201546001600160a01b0316955061370b90869085908590613491565b935083613717576138bd565b60405163436aa28360e11b81526000908190612002906386d5450690613741908a906004016161c2565b60206040518083038186803b15801561375957600080fd5b505afa15801561376d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906137919190615e52565b90506001600160a01b0381161561381a576040516302ceee9160e11b81526120029063059ddd22906137c79084906004016161c2565b60206040518083038186803b1580156137df57600080fd5b505afa1580156137f3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906138179190615e52565b91505b60005b8c518110156138b957876001600160a01b03168d828151811061383c57fe5b6020026020010151600001516001600160a01b031614806138855750826001600160a01b03168d828151811061386e57fe5b6020026020010151600001516001600160a01b0316145b156138b15760018d828151811061389857fe5b60209081029190910101519015156080909101526138b9565b60010161381d565b5050505b6000190161369b565b5060005b8951811015613933578981815181106138df57fe5b6020026020010151608001518061391f575060006001600160a01b03168a828151811061390857fe5b6020026020010151600001516001600160a01b0316145b1561392b578560010195505b6001016138ca565b5088518510613a1b5760408051600180825281830190925290816020015b613959615ab8565b815260200190600190039081613951575050604080516001808252818301909252919850602082015b6060815260200190600190039081613982579050509550886000815181106139a657fe5b6020026020010151876000815181106139bb57fe5b6020026020010181905250876000815181106139d357fe5b6020026020010151866000815181106139e857fe5b6020026020010181905250600087600081518110613a0257fe5b6020908102919091010151901515608090910152613b60565b84895103604051908082528060200260200182016040528015613a5857816020015b613a45615ab8565b815260200190600190039081613a3d5790505b50965084895103604051908082528060200260200182016040528015613a9257816020015b6060815260200190600190039081613a7d5790505b5095506000915060005b8951811015613b5e57898181518110613ab157fe5b602002602001015160800151158015613af4575060006001600160a01b03168a8281518110613adc57fe5b6020026020010151600001516001600160a01b031614155b15613b5657898181518110613b0557fe5b6020026020010151888481518110613b1957fe5b6020026020010181905250888181518110613b3057fe5b6020026020010151878481518110613b4457fe5b60200260200101819052508260010192505b600101613a9c565b505b50505050505b9250929050565b600154825160005b82811015613c8a576001613b87615ab8565b60018381548110613b9457fe5b600091825260208083206040805160c08101825260049490940290910180546001600160a01b0390811685526001820154811693850193909352600281015492831691840191909152600160a01b82046001600160401b03166060840152600160e01b90910460ff16151560808301526003015460a082015291505b84811015613c5e57878181518110613c2457fe5b6020026020010151600001516001600160a01b031682600001516001600160a01b03161415613c565760009250613c5e565b600101613c10565b508115613c805780516001600160a01b03166000908152600460205260408120555b5050600101613b75565b5080821115613d4957805b82811015613d47576001805480613ca857fe5b60008281526020812060046000199093019283020180546001600160a01b0319908116825560018201805490911690556002810180546001600160e81b0319169055600301559055600b805480613cfb57fe5b60008281526020812060166000199093019283020181815560018101805460ff1916905590613d2d6002830182615b11565b613d3b600383016000615b55565b50509055600101613c95565b505b6000818310613d585781613d5a565b825b905060005b818110156140fe57613e0c868281518110613d7657fe5b602002602001015160018381548110613d8b57fe5b60009182526020918290206040805160c08101825260049390930290910180546001600160a01b0390811684526001820154811694840194909452600281015493841691830191909152600160a01b83046001600160401b03166060830152600160e01b90920460ff161515608082015260039091015460a0820152614f60565b613fc0578060010160046000888481518110613e2457fe5b6020026020010151600001516001600160a01b03166001600160a01b0316815260200190815260200160002081905550858181518110613e6057fe5b602002602001015160018281548110613e7557fe5b6000918252602091829020835160049092020180546001600160a01b039283166001600160a01b0319918216178255928401516001820180549184169185169190911790556040840151600282018054606087015160808801511515600160e01b0260ff60e01b196001600160401b03909216600160a01b0267ffffffffffffffff60a01b1995909716929097169190911792909216939093171692909217905560a0909101516003909101558451859082908110613f3057fe5b6020026020010151600b8281548110613f4557fe5b90600052602060002090601602016002019080519060200190613f69929190615a11565b506000600b8281548110613f7957fe5b60009182526020822060169190910201600101805460ff191692151592909217909155600b805483908110613faa57fe5b60009182526020909120601690910201556140f6565b858181518110613fcc57fe5b60200260200101516060015160018281548110613fe557fe5b906000526020600020906004020160020160146101000a8154816001600160401b0302191690836001600160401b031602179055506140ab85828151811061402957fe5b6020026020010151600b838154811061403e57fe5b600091825260209182902060026016909202018101805460408051601f600019610100600186161502019093169490940491820185900485028401850190528083529192909190830182828015612e5a5780601f10612e2f57610100808354040283529160200191612e5a565b6140f6578481815181106140bb57fe5b6020026020010151600b82815481106140d057fe5b906000526020600020906016020160020190805190602001906140f4929190615a11565b505b600101613d5f565b50828211156142d65761410f6159e2565b835b838110156142d35785818151811061412557fe5b60200260200101518260400181905250600187828151811061414357fe5b6020908102919091018101518254600181810185556000948552838520835160049093020180546001600160a01b039384166001600160a01b0319918216178255848601518284018054918616918316919091179055604080860151600284018054606089015160808a01511515600160e01b0260ff60e01b196001600160401b03909216600160a01b0267ffffffffffffffff60a01b1995909a1692909616919091179290921696909617169190911790935560a090930151600390930192909255600b8054928301815590935284516016909102600080516020616ed7833981519152810191825585830151600080516020616f178339815191528201805491151560ff199092169190911790559285015180518694929361427993600080516020616ef783398151915201920190615a11565b50606082015161428f9060038301906013615a8b565b50505080600101600460008984815181106142a657fe5b602090810291909101810151516001600160a01b0316825281019190915260400160002055600101614111565b50505b6142de614fbc565b6142e661519e565b6000600981905560015493505b83811015614354576000600b828154811061430a57fe5b60009182526020822060169190910201600101805460ff191692151592909217909155600b80548390811061433b57fe5b60009182526020909120601690910201556001016142f3565b505050505050565b6000611bdc83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525061538c565b600082820183811015611bdc5760405162461bcd60e51b8152600401610c4f906164d8565b600080600183815481106143d357fe5b906000526020600020906004020160030154905060006001808054905003905060016143fd612972565b51116144325760006001858154811061441257fe5b9060005260206000209060040201600301819055506000925050506115b0565b846001600160a01b03167f3b6f9ef90462b512a1293ecec018670bf7b7f1876fb727590a8a6d7643130a708360405161446b9190616e0c565b60405180910390a26001600160a01b038516600090815260046020526040812055835b6001546000190181101561465857600181600101815481106144ac57fe5b9060005260206000209060040201600182815481106144c757fe5b60009182526020909120825460049092020180546001600160a01b03199081166001600160a01b0393841617825560018085015481840180548416918616919091179055600280860180549185018054909416919095161780835584546001600160401b03600160a01b91829004160267ffffffffffffffff60a01b1990911617808355935460ff600160e01b918290041615150260ff60e01b19909416939093179055600392830154920191909155600b80549091830190811061458857fe5b9060005260206000209060160201600b82815481106145a357fe5b600091825260209091208254601690920201908155600180830154818301805460ff909216151560ff19909216919091179055600280840180546145fa938386019390821615610100026000190190911604615b64565b5061460d60038281019084016013615bd9565b5090505080600101600460006001848154811061462657fe5b600091825260208083206004909202909101546001600160a01b0316835282019290925260400190205560010161448e565b50600180548061466457fe5b60008281526020812060046000199093019283020180546001600160a01b0319908116825560018201805490911690556002810180546001600160e81b0319169055600301559055600b8054806146b757fe5b60008281526020812060166000199093019283020181815560018101805460ff19169055906146e96002830182615b11565b6146f7600383016000615b55565b50509055600081838161470657fe5b049050801561477a5760015460005b818110156147775761474e836001838154811061472e57fe5b90600052602060002090600402016003015461439e90919063ffffffff16565b6001828154811061475b57fe5b6000918252602090912060036004909202010155600101614715565b50505b50600195945050505050565b6001548151604080518281526020808402820101909152606092919083908280156147c557816020015b60608152602001906001900390816147b05790505b50600b5490915083146147dc579250611500915050565b60005b828110156148eb57600b6001600460008985815181106147fb57fe5b60200260200101516001600160a01b03166001600160a01b0316815260200190815260200160002054038154811061482f57fe5b600091825260209182902060026016909202018101805460408051601f6000196101006001861615020190931694909404918201859004850284018501905280835291929091908301828280156148c75780601f1061489c576101008083540402835291602001916148c7565b820191906000526020600020905b8154815290600101906020018083116148aa57829003601f168201915b50505050508282815181106148d857fe5b60209081029190910101526001016147df565b50949350505050565b60005b82811015614a4157600082878388016040516020016149179291906161b4565b6040516020818303038152906040528051906020012060001c8161493757fe5b06905080850182870114614a38576000898388018151811061495557fe5b602002602001015190506060898489018151811061496f57fe5b602002602001015190508a8388018151811061498757fe5b60200260200101518b858a018151811061499d57fe5b60200260200101906001600160a01b031690816001600160a01b031681525050818b848901815181106149cc57fe5b60200260200101906001600160a01b031690816001600160a01b03168152505089838801815181106149fa57fe5b60200260200101518a858a0181518110614a1057fe5b6020026020010181905250808a84890181518110614a2a57fe5b602002602001018190525050505b506001016148f7565b5050505050505050565b600980546001908101909155600b805483908110614a6557fe5b906000526020600020906016020160010160006101000a81548160ff02191690831515021790555043600b8281548110614a9b57fe5b600091825260208220601690910201919091556040516001600160a01b038416917ff62981a567ec3cec866c6fa93c55bcdf841d6292d18b8d522ececa769375d82d91a25050565b600081604051602001614af69190616198565b6040516020818303038152906040528051906020012083604051602001614b1d9190616198565b6040516020818303038152906040528051906020012014905092915050565b015190565b614b49615aed565b6000614b53615aed565b614b5b615c03565b614b6c614b67866153b8565b6153dd565b90506000805b614b7b83615427565b15614cef5780614ba057614b96614b9184615448565b615496565b60ff168452614ce7565b8060011415614ce2576060614bbc614bb785615448565b615516565b90508051604051908082528060200260200182016040528015614bf957816020015b614be6615ab8565b815260200190600190039081614bde5790505b5085602001819052508051604051908082528060200260200182016040528015614c3757816020015b6060815260200190600190039081614c225790505b50604086015260005b8151811015614cd757614c51615ab8565b60606000614c71858581518110614c6457fe5b60200260200101516155e7565b92509250925080614c91578860009a509a50505050505050505050614cf8565b8289602001518581518110614ca257fe5b60200260200101819052508189604001518581518110614cbe57fe5b6020026020010181905250505050806001019050614c40565b506001925050614ce7565b614cef565b600101614b72565b50919350909150505b915091565b815181516000916001918114808314614d195760009250614d57565b600160208701838101602088015b600284838510011415614d52578051835114614d465760009650600093505b60209283019201614d27565b505050505b5090949350505050565b6001600160a01b03811660009081526004602052604081205480614d8a57506000199050611500565b600181039050600060018281548110614d9f57fe5b9060005260206000209060040201600301549050600060018381548110614dc257fe5b6000918252602090912060036004909202010155600154604051600019909101906001600160a01b038616907f8cd4e147d8af98a9e3b6724021b8bf6aed2e5dac71c38f2dce8161b82585b25d90614e1b908590616e0c565b60405180910390a280614e3357829350505050611500565b6000818381614e3e57fe5b0490508015614eda5760005b84811015614e8c57614e63826001838154811061472e57fe5b60018281548110614e7057fe5b6000918252602090912060036004909202010155600101614e4a565b50600180549085015b81811015614ed757614eae836001838154811061472e57fe5b60018281548110614ebb57fe5b6000918252602090912060036004909202010155600101614e95565b50505b5091949350505050565b600082614ef3575060006115b0565b82820282848281614f0057fe5b0414611bdc5760405162461bcd60e51b8152600401610c4f906169b2565b6000611bdc83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250615701565b805182516000916001600160a01b039182169116148015614f9a575081602001516001600160a01b031683602001516001600160a01b0316145b8015611bdc5750506040908101519101516001600160a01b0390811691161490565b6012546013548082111561500757805b82811015615005576012805480614fdf57fe5b600190038181906000526020600020016000614ffb9190615b11565b9055600101614fcc565b505b60008183106150165781615018565b825b905060005b81811015615130576150d56012828154811061503557fe5b600091825260209182902001805460408051601f60026000196101006001871615020190941693909304928301859004850281018501909152818152928301828280156150c35780601f10615098576101008083540402835291602001916150c3565b820191906000526020600020905b8154815290600101906020018083116150a657829003601f168201915b505050505060138381548110612dcc57fe5b61512857601381815481106150e657fe5b90600052602060002001601282815481106150fd57fe5b906000526020600020019080546001816001161561010002031660029004615126929190615b64565b505b60010161501d565b5082821115610c7157825b828110156133b15760126013828154811061515257fe5b6000918252602080832084546001818101875595855291909320929091018054615195949390920192909160026101009282161592909202600019011604615b64565b5060010161513b565b601354600b54808211156151e957805b828110156151e75760138054806151c157fe5b6001900381819060005260206000200160006151dd9190615b11565b90556001016151ae565b505b60008183106151f857816151fa565b825b905060005b81811015615319576152b76013828154811061521757fe5b600091825260209182902001805460408051601f60026000196101006001871615020190941693909304928301859004850281018501909152818152928301828280156152a55780601f1061527a576101008083540402835291602001916152a5565b820191906000526020600020905b81548152906001019060200180831161528857829003601f168201915b5050505050600b838154811061403e57fe5b61531157600b81815481106152c857fe5b9060005260206000209060160201600201601382815481106152e657fe5b90600052602060002001908054600181600116156101000203166002900461530f929190615b64565b505b6001016151ff565b5082821115610c7157825b828110156133b1576013600b828154811061533b57fe5b60009182526020808320845460018082018755958552919093206016929092029092016002908101805461538395939094019390926000199082161561010002011604615b64565b50600101615324565b600081848411156153b05760405162461bcd60e51b8152600401610c4f91906162e2565b505050900390565b6153c0615c23565b506040805180820190915281518152602082810190820152919050565b6153e5615c03565b6153ee82615738565b6153f757600080fd5b60006154068360200151615772565b60208085015160408051808201909152868152920190820152915050919050565b6000615431615c23565b505080518051602091820151919092015191011190565b615450615c23565b61545982615427565b61546257600080fd5b60208201516000615472826157d5565b80830160209586015260408051808201909152908152938401919091525090919050565b8051600090158015906154ab57508151602110155b6154b457600080fd5b60006154c38360200151615772565b905080836000015110156154e95760405162461bcd60e51b8152600401610c4f90616b66565b8251602080850151830180519284900392918310156148eb57506020919091036101000a90049392505050565b606061552182615738565b61552a57600080fd5b6000615535836158b6565b905060608160405190808252806020026020018201604052801561557357816020015b615560615c23565b8152602001906001900390816155585790505b50905060006155858560200151615772565b60208601510190506000805b848110156155dc576155a2836157d5565b91506040518060400160405280838152602001848152508482815181106155c557fe5b602090810291909101015291810191600101615591565b509195945050505050565b6155ef615ab8565b606060006155fb615ab8565b6060615605615c03565b61560e876153dd565b90506000805b61561d83615427565b156156f257806156485761563861563384615448565b615912565b6001600160a01b031685526156ea565b80600114156156705761565d61563384615448565b6001600160a01b031660208601526156ea565b80600214156156985761568561563384615448565b6001600160a01b031660408601526156ea565b80600314156156c4576156ad614b9184615448565b6001600160401b03166060860152600191506156ea565b80600414156156e5576156de6156d984615448565b61592c565b93506156ea565b6156f2565b600101615614565b50929791965091945092505050565b600081836157225760405162461bcd60e51b8152600401610c4f91906162e2565b50600083858161572e57fe5b0495945050505050565b805160009061574957506000611500565b6020820151805160001a9060c082101561576857600092505050611500565b5060019392505050565b8051600090811a608081101561578c576000915050611500565b60b88110806157a7575060c081108015906157a7575060f881105b156157b6576001915050611500565b60c08110156157ca5760b519019050611500565b60f519019050611500565b80516000908190811a60808110156157f057600191506158af565b60b881101561580557607e19810191506158af565b60c081101561585657600060b78203600186019550806020036101000a8651049150600181018201935050808310156158505760405162461bcd60e51b8152600401610c4f906168b5565b506158af565b60f881101561586b5760be19810191506158af565b600060f78203600186019550806020036101000a8651049150600181018201935050808310156158ad5760405162461bcd60e51b8152600401610c4f906168b5565b505b5092915050565b80516000906158c757506000611500565b600080905060006158db8460200151615772565b602085015185519181019250015b80821015615909576158fa826157d5565b820191508260010192506158e9565b50909392505050565b805160009060151461592357600080fd5b6115b082615496565b805160609061593a57600080fd5b60006159498360200151615772565b83516040805191839003808352601f19601f8201168301602001909152919250606090828015615980576020820181803683370190505b50905060008160200190506148eb848760200151018285806159a157610c71565b5b602081106159c1578251825260209283019290910190601f19016159a2565b915181516020939093036101000a6000190180199091169216919091179052565b60405180608001604052806000815260200160001515815260200160608152602001615a0c615c3d565b905290565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10615a5257805160ff1916838001178555615a7f565b82800160010185558215615a7f579182015b82811115615a7f578251825591602001919060010190615a64565b50612ac7929150615c5c565b8260138101928215615a7f5791602002820182811115615a7f578251825591602001919060010190615a64565b6040805160c081018252600080825260208201819052918101829052606081018290526080810182905260a081019190915290565b6040518060600160405280600060ff16815260200160608152602001606081525090565b50805460018160011615610100020316600290046000825580601f10615b375750611718565b601f0160209004906000526020600020908101906117189190615c5c565b50611718906013810190615c5c565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10615b9d5780548555615a7f565b82800160010185558215615a7f57600052602060002091601f016020900482015b82811115615a7f578254825591600101919060010190615bbe565b8260138101928215615a7f5791820182811115615a7f578254825591600101919060010190615bbe565b6040518060400160405280615c16615c23565b8152602001600081525090565b604051806040016040528060008152602001600081525090565b6040518061026001604052806013906020820280368337509192915050565b611dbe91905b80821115612ac75760008155600101615c62565b80356115b081616ec1565b60008083601f840112615c92578182fd5b5081356001600160401b03811115615ca8578182fd5b6020830191508360208083028501011115613b6657600080fd5b6000601f8381840112615cd3578182fd5b8235615ce6615ce182616e76565b616e50565b818152925060208084019085810160005b84811015615d78578135880189603f820112615d1257600080fd5b838101356001600160401b03811115615d2a57600080fd5b615d3b818901601f19168601616e50565b81815260408c81848601011115615d5157600080fd5b82818501888401375060009181018601919091528552509282019290820190600101615cf7565b50505050505092915050565b600082601f830112615d94578081fd5b8135615da2615ce182616e76565b818152915060208083019084810181840286018201871015615dc357600080fd5b6000805b85811015615d785782356001600160401b0381168114615de5578283fd5b85529383019391830191600101615dc7565b60008083601f840112615e08578182fd5b5081356001600160401b03811115615e1e578182fd5b602083019150836020828501011115613b6657600080fd5b600060208284031215615e47578081fd5b8135611bdc81616ec1565b600060208284031215615e63578081fd5b8151611bdc81616ec1565b60008060008060408587031215615e83578283fd5b84356001600160401b0380821115615e99578485fd5b615ea588838901615c81565b90965094506020870135915080821115615ebd578384fd5b50615eca87828801615c81565b95989497509550505050565b600080600060608486031215615eea578283fd5b83356001600160401b0380821115615f00578485fd5b81860187601f820112615f11578586fd5b80359250615f21615ce184616e76565b80848252602080830192508084018b828389028701011115615f4157898afd5b8994505b86851015615f6b57615f578c82615c76565b845260019490940193928101928101615f45565b509097508801359350505080821115615f82578384fd5b615f8e87838801615d84565b93506040860135915080821115615fa3578283fd5b50615fb086828701615cc2565b9150509250925092565b60008060208385031215615fcc578182fd5b82356001600160401b03811115615fe1578283fd5b615fed85828601615df7565b90969095509350505050565b6000806000806040858703121561600e578384fd5b84356001600160401b0380821115616024578586fd5b61603088838901615df7565b90965094506020870135915080821115616048578384fd5b50615eca87828801615df7565b600060208284031215616066578081fd5b5035919050565b60006020828403121561607e578081fd5b5051919050565b60008060408385031215616097578182fd5b505080516020909101519092909150565b6000806000604084860312156160bc578081fd5b833560ff811681146160cc578182fd5b925060208401356001600160401b038111156160e6578182fd5b6160f286828701615df7565b9497909650939450505050565b6000815180845260208085019450808401835b838110156161375781516001600160a01b031687529582019590820190600101616112565b509495945050505050565b60008284528282602086013780602084860101526020601f19601f85011685010190509392505050565b60008151808452616184816020860160208601616e95565b601f01601f19169290920160200192915050565b600082516161aa818460208701616e95565b9190910192915050565b918252602082015260400190565b6001600160a01b0391909116815260200190565b6001600160a01b03929092168252602082015260400190565b6001600160a01b03968716815294861660208601529290941660408401526001600160401b03166060830152911515608082015260a081019190915260c00190565b6001600160a01b0393909316835260208301919091521515604082015260600190565b600060208252611bdc60208301846160ff565b60006040825261627a60408301856160ff565b602083820381850152818551808452828401915082838202850101838801865b838110156162c857601f198784030185526162b683835161616c565b9486019492509085019060010161629a565b50909998505050505050505050565b901515815260200190565b600060208252611bdc602083018461616c565b600060408252616309604083018688616142565b828103602084015261631c818587616142565b979650505050505050565b6020808252601c908201527f6c656e677468206f66206275726e526174696f206d69736d6174636800000000604082015260600190565b60208082526026908201527f6c656e677468206f66206d61784e756d4f664d61696e7461696e696e67206d696040820152650e6dac2e8c6d60d31b606082015260800190565b6020808252602c908201527f6c656e677468206f66206d61784e756d4f66576f726b696e6743616e6469646160408201526b0e8cae640dad2e6dac2e8c6d60a31b606082015260800190565b60208082526025908201527f6c656e677468206f66206d61696e7461696e536c6173685363616c65206d69736040820152640dac2e8c6d60db1b606082015260800190565b6020808252818101527f6c656e677468206f66206e756d4f66436162696e657473206d69736d61746368604082015260600190565b60208082526019908201527f74686520636f6e7472616374206e6f7420696e69742079657400000000000000604082015260600190565b6020808252601f908201527f6f6e6c7920736c617368206f72207374616b6548756220636f6e747261637400604082015260600190565b6020808252601b908201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604082015260600190565b60208082526063908201527f7468652073797374656d52657761726442617365526174696f20706c7573206260408201527f75726e526174696f20616e642073797374656d526577617264416e74694d455660608201527f526174696f206d757374206265206e6f2067726561746572207468616e20313060808201526203030360ec1b60a082015260c00190565b60208082526028908201527f746865206e756d4f66436162696e657473206d75737420626520677265617465604082015267072207468616e20360c41b606082015260800190565b60208082526039908201527f746865206e756d4f66436162696e657473206d757374206265206c657373207460408201527f68616e204d41585f4e554d5f4f465f56414c494441544f525300000000000000606082015260800190565b60208082526022908201527f63616e206e6f7420646f207468697320747769636520696e206f6e6520626c6f604082015261636b60f01b606082015260800190565b60208082526037908201527f746865206d61784e756d4f664d61696e7461696e696e67206d7573742062652060408201527f6c657373207468616e206e756d4f66436162696e657473000000000000000000606082015260800190565b6020808252601d908201527f6c656e677468206f66207475726e4c656e677468206d69736d61746368000000604082015260600190565b6020808252600a908201526919195c1c9958d85d195960b21b604082015260600190565b60208082526063908201527f746865206275726e526174696f20706c75732073797374656d5265776172644260408201527f617365526174696f20616e642073797374656d526577617264416e74694d455660608201527f526174696f206d757374206265206e6f2067726561746572207468616e20313060808201526203030360ec1b60a082015260c00190565b6020808252602b908201527f6c656e677468206f662073797374656d526577617264416e74694d455652617460408201526a0d2de40dad2e6dac2e8c6d60ab1b606082015260800190565b6020808252601590820152746465706f7369742076616c7565206973207a65726f60581b604082015260600190565b60208082526049908201527f746865206d61784e756d4f66576f726b696e6743616e64696461746573206d7560408201527f7374206265206e6f742067726561746572207468616e206d61784e756d4f6643606082015268616e6469646174657360b81b608082015260a00190565b6020808252601190820152706164646974696f6e206f766572666c6f7760781b604082015260600190565b60208082526063908201527f7468652073797374656d526577617264416e74694d4556526174696f20706c7560408201527f73206275726e526174696f20616e642073797374656d5265776172644261736560608201527f526174696f206d757374206265206e6f2067726561746572207468616e20313060808201526203030360ec1b60a082015260c00190565b60208082526023908201527f63616e206e6f7420656e7465722054656d706f72617279204d61696e74656e616040820152626e636560e81b606082015260800190565b60208082526021908201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6040820152607760f81b606082015260800190565b6020808252601490820152736761737072696365206973206e6f74207a65726f60601b604082015260600190565b6020808252602e908201527f746865206d6573736167652073656e646572206d75737420626520676f76657260408201526d1b985b98d94818dbdb9d1c9858dd60921b606082015260800190565b60208082526025908201527f6c656e677468206f66206d61784e756d4f6643616e64696461746573206d69736040820152640dac2e8c6d60db1b606082015260800190565b6020808252601290820152716e6f7420696e206d61696e74656e616e636560701b604082015260600190565b60208082526019908201527f74686520636f6e747261637420616c726561647920696e697400000000000000604082015260600190565b6020808252602f908201527f746865207475726e4c656e6774682073686f756c6420626520696e205b332c3960408201526e5d206f7220657175616c20746f203160881b606082015260800190565b6020808252601a908201527f6c656e677468206973206c657373207468616e206f6666736574000000000000604082015260600190565b60208082526017908201527f6f6e6c792063757272656e742076616c696461746f7273000000000000000000604082015260600190565b60208082526021908201527f6661696c656420746f20706172736520696e69742076616c696461746f7253656040820152601d60fa1b606082015260800190565b6020808252602f908201527f746865206d6573736167652073656e646572206d7573742062652063726f737360408201526e0818da185a5b8818dbdb9d1c9858dd608a1b606082015260800190565b6020808252602d908201527f746865206d6573736167652073656e646572206d75737420626520746865206260408201526c3637b1b590383937b23ab1b2b960991b606082015260800190565b60208082526028908201527f6c656e677468206f662073797374656d52657761726442617365526174696f206040820152670dad2e6dac2e8c6d60c31b606082015260800190565b6020808252603e908201527f746865206d61696e7461696e536c6173685363616c65206d757374206265206760408201527f726561746572207468616e203020616e64206c657373207468616e2031300000606082015260800190565b6020808252600d908201526c756e6b6e6f776e20706172616d60981b604082015260600190565b60208082526029908201527f746865206d6573736167652073656e646572206d75737420626520736c6173686040820152680818dbdb9d1c9858dd60ba1b606082015260800190565b6020808252601f908201527f746865206d73672073656e646572206d757374206265207374616b6548756200604082015260600190565b61ffff91909116815260200190565b90815260200190565b6000848252831515602083015260606040830152616e36606083018461616c565b95945050505050565b63ffffffff91909116815260200190565b6040518181016001600160401b0381118282101715616e6e57600080fd5b604052919050565b60006001600160401b03821115616e8b578081fd5b5060209081020190565b60005b83811015616eb0578181015183820152602001616e98565b838111156133b15750506000910152565b6001600160a01b038116811461171857600080fdfe0175b7a638427703f0dbe7bb9bbf987a2551717b34e79f33b5b1008d1fa01db90175b7a638427703f0dbe7bb9bbf987a2551717b34e79f33b5b1008d1fa01dbb0175b7a638427703f0dbe7bb9bbf987a2551717b34e79f33b5b1008d1fa01dbaf87680f873f871949fb29aac15b9a4b7f17c3385939b007540f4d791949fb29aac15b9a4b7f17c3385939b007540f4d791949fb29aac15b9a4b7f17c3385939b007540f4d79164b085e6972fc98cd3c81d64d40e325acfed44365b97a7567a27939c14dbc7512ddcf54cb1284eb637cfa308ae4e00cb5588a164736f6c6343000604000a \ No newline at end of file diff --git a/core/systemcontracts/pascal/types.go b/core/systemcontracts/pascal/types.go new file mode 100644 index 0000000000..a609488dbc --- /dev/null +++ b/core/systemcontracts/pascal/types.go @@ -0,0 +1,168 @@ +package pascal + +import _ "embed" + +// contract codes for Mainnet upgrade +var ( + + //go:embed mainnet/ValidatorContract + MainnetValidatorContract string + + //go:embed mainnet/SlashContract + MainnetSlashContract string + + //go:embed mainnet/SystemRewardContract + MainnetSystemRewardContract string + + //go:embed mainnet/LightClientContract + MainnetLightClientContract string + + //go:embed mainnet/TokenHubContract + MainnetTokenHubContract string + + //go:embed mainnet/RelayerIncentivizeContract + MainnetRelayerIncentivizeContract string + + //go:embed mainnet/RelayerHubContract + MainnetRelayerHubContract string + + //go:embed mainnet/GovHubContract + MainnetGovHubContract string + + //go:embed mainnet/TokenManagerContract + MainnetTokenManagerContract string + + //go:embed mainnet/CrossChainContract + MainnetCrossChainContract string + + //go:embed mainnet/StakingContract + MainnetStakingContract string + + //go:embed mainnet/StakeHubContract + MainnetStakeHubContract string + + //go:embed mainnet/StakeCreditContract + MainnetStakeCreditContract string + + //go:embed mainnet/GovernorContract + MainnetGovernorContract string + + //go:embed mainnet/GovTokenContract + MainnetGovTokenContract string + + //go:embed mainnet/TimelockContract + MainnetTimelockContract string + + //go:embed mainnet/TokenRecoverPortalContract + MainnetTokenRecoverPortalContract string +) + +// contract codes for Chapel upgrade +var ( + + //go:embed chapel/ValidatorContract + ChapelValidatorContract string + + //go:embed chapel/SlashContract + ChapelSlashContract string + + //go:embed chapel/SystemRewardContract + ChapelSystemRewardContract string + + //go:embed chapel/LightClientContract + ChapelLightClientContract string + + //go:embed chapel/TokenHubContract + ChapelTokenHubContract string + + //go:embed chapel/RelayerIncentivizeContract + ChapelRelayerIncentivizeContract string + + //go:embed chapel/RelayerHubContract + ChapelRelayerHubContract string + + //go:embed chapel/GovHubContract + ChapelGovHubContract string + + //go:embed chapel/TokenManagerContract + ChapelTokenManagerContract string + + //go:embed chapel/CrossChainContract + ChapelCrossChainContract string + + //go:embed chapel/StakingContract + ChapelStakingContract string + + //go:embed chapel/StakeHubContract + ChapelStakeHubContract string + + //go:embed chapel/StakeCreditContract + ChapelStakeCreditContract string + + //go:embed chapel/GovernorContract + ChapelGovernorContract string + + //go:embed chapel/GovTokenContract + ChapelGovTokenContract string + + //go:embed chapel/TimelockContract + ChapelTimelockContract string + + //go:embed chapel/TokenRecoverPortalContract + ChapelTokenRecoverPortalContract string +) + +// contract codes for Rialto upgrade +var ( + + //go:embed rialto/ValidatorContract + RialtoValidatorContract string + + //go:embed rialto/SlashContract + RialtoSlashContract string + + //go:embed rialto/SystemRewardContract + RialtoSystemRewardContract string + + //go:embed rialto/LightClientContract + RialtoLightClientContract string + + //go:embed rialto/TokenHubContract + RialtoTokenHubContract string + + //go:embed rialto/RelayerIncentivizeContract + RialtoRelayerIncentivizeContract string + + //go:embed rialto/RelayerHubContract + RialtoRelayerHubContract string + + //go:embed rialto/GovHubContract + RialtoGovHubContract string + + //go:embed rialto/TokenManagerContract + RialtoTokenManagerContract string + + //go:embed rialto/CrossChainContract + RialtoCrossChainContract string + + //go:embed rialto/StakingContract + RialtoStakingContract string + + //go:embed rialto/StakeHubContract + RialtoStakeHubContract string + + //go:embed rialto/StakeCreditContract + RialtoStakeCreditContract string + + //go:embed rialto/GovernorContract + RialtoGovernorContract string + + //go:embed rialto/GovTokenContract + RialtoGovTokenContract string + + //go:embed rialto/TimelockContract + RialtoTimelockContract string + + //go:embed rialto/TokenRecoverPortalContract + RialtoTokenRecoverPortalContract string +) diff --git a/core/systemcontracts/upgrade.go b/core/systemcontracts/upgrade.go index 83a2aa491a..f9a776e245 100644 --- a/core/systemcontracts/upgrade.go +++ b/core/systemcontracts/upgrade.go @@ -20,6 +20,7 @@ import ( "github.com/ethereum/go-ethereum/core/systemcontracts/mirror" "github.com/ethereum/go-ethereum/core/systemcontracts/moran" "github.com/ethereum/go-ethereum/core/systemcontracts/niels" + "github.com/ethereum/go-ethereum/core/systemcontracts/pascal" "github.com/ethereum/go-ethereum/core/systemcontracts/planck" "github.com/ethereum/go-ethereum/core/systemcontracts/plato" "github.com/ethereum/go-ethereum/core/systemcontracts/ramanujan" @@ -82,6 +83,8 @@ var ( haberFixUpgrade = make(map[string]*Upgrade) bohrUpgrade = make(map[string]*Upgrade) + + pascalUpgrade = make(map[string]*Upgrade) ) func init() { @@ -788,6 +791,279 @@ func init() { }, }, } + + pascalUpgrade[mainNet] = &Upgrade{ + UpgradeName: "pascal", + Configs: []*UpgradeConfig{ + { + ContractAddr: common.HexToAddress(ValidatorContract), + CommitUrl: "https://github.com/bnb-chain/bsc-genesis-contract/commit/4c03f8222f8ac13e3b6bd424e1235698282bb28d", + Code: pascal.MainnetValidatorContract, + }, + { + ContractAddr: common.HexToAddress(SlashContract), + CommitUrl: "https://github.com/bnb-chain/bsc-genesis-contract/commit/4c03f8222f8ac13e3b6bd424e1235698282bb28d", + Code: pascal.MainnetSlashContract, + }, + { + ContractAddr: common.HexToAddress(SystemRewardContract), + CommitUrl: "https://github.com/bnb-chain/bsc-genesis-contract/commit/4c03f8222f8ac13e3b6bd424e1235698282bb28d", + Code: pascal.MainnetSystemRewardContract, + }, + { + ContractAddr: common.HexToAddress(LightClientContract), + CommitUrl: "https://github.com/bnb-chain/bsc-genesis-contract/commit/4c03f8222f8ac13e3b6bd424e1235698282bb28d", + Code: pascal.MainnetLightClientContract, + }, + { + ContractAddr: common.HexToAddress(TokenHubContract), + CommitUrl: "https://github.com/bnb-chain/bsc-genesis-contract/commit/4c03f8222f8ac13e3b6bd424e1235698282bb28d", + Code: pascal.MainnetTokenHubContract, + }, + { + ContractAddr: common.HexToAddress(RelayerIncentivizeContract), + CommitUrl: "https://github.com/bnb-chain/bsc-genesis-contract/commit/4c03f8222f8ac13e3b6bd424e1235698282bb28d", + Code: pascal.MainnetRelayerIncentivizeContract, + }, + { + ContractAddr: common.HexToAddress(RelayerHubContract), + CommitUrl: "https://github.com/bnb-chain/bsc-genesis-contract/commit/4c03f8222f8ac13e3b6bd424e1235698282bb28d", + Code: pascal.MainnetRelayerHubContract, + }, + { + ContractAddr: common.HexToAddress(GovHubContract), + CommitUrl: "https://github.com/bnb-chain/bsc-genesis-contract/commit/4c03f8222f8ac13e3b6bd424e1235698282bb28d", + Code: pascal.MainnetGovHubContract, + }, + { + ContractAddr: common.HexToAddress(TokenManagerContract), + CommitUrl: "https://github.com/bnb-chain/bsc-genesis-contract/commit/4c03f8222f8ac13e3b6bd424e1235698282bb28d", + Code: pascal.MainnetTokenManagerContract, + }, + { + ContractAddr: common.HexToAddress(CrossChainContract), + CommitUrl: "https://github.com/bnb-chain/bsc-genesis-contract/commit/4c03f8222f8ac13e3b6bd424e1235698282bb28d", + Code: pascal.MainnetCrossChainContract, + }, + { + ContractAddr: common.HexToAddress(StakingContract), + CommitUrl: "https://github.com/bnb-chain/bsc-genesis-contract/commit/4c03f8222f8ac13e3b6bd424e1235698282bb28d", + Code: pascal.MainnetStakingContract, + }, + { + ContractAddr: common.HexToAddress(StakeHubContract), + CommitUrl: "https://github.com/bnb-chain/bsc-genesis-contract/commit/4c03f8222f8ac13e3b6bd424e1235698282bb28d", + Code: pascal.MainnetStakeHubContract, + }, + { + ContractAddr: common.HexToAddress(StakeCreditContract), + CommitUrl: "https://github.com/bnb-chain/bsc-genesis-contract/commit/4c03f8222f8ac13e3b6bd424e1235698282bb28d", + Code: pascal.MainnetStakeCreditContract, + }, + { + ContractAddr: common.HexToAddress(GovernorContract), + CommitUrl: "https://github.com/bnb-chain/bsc-genesis-contract/commit/4c03f8222f8ac13e3b6bd424e1235698282bb28d", + Code: pascal.MainnetGovernorContract, + }, + { + ContractAddr: common.HexToAddress(GovTokenContract), + CommitUrl: "https://github.com/bnb-chain/bsc-genesis-contract/commit/4c03f8222f8ac13e3b6bd424e1235698282bb28d", + Code: pascal.MainnetGovTokenContract, + }, + { + ContractAddr: common.HexToAddress(TimelockContract), + CommitUrl: "https://github.com/bnb-chain/bsc-genesis-contract/commit/4c03f8222f8ac13e3b6bd424e1235698282bb28d", + Code: pascal.MainnetTimelockContract, + }, + { + ContractAddr: common.HexToAddress(TokenRecoverPortalContract), + CommitUrl: "https://github.com/bnb-chain/bsc-genesis-contract/commit/4c03f8222f8ac13e3b6bd424e1235698282bb28d", + Code: pascal.MainnetTokenRecoverPortalContract, + }, + }, + } + + pascalUpgrade[chapelNet] = &Upgrade{ + UpgradeName: "pascal", + Configs: []*UpgradeConfig{ + { + ContractAddr: common.HexToAddress(ValidatorContract), + CommitUrl: "https://github.com/bnb-chain/bsc-genesis-contract/commit/4c03f8222f8ac13e3b6bd424e1235698282bb28d", + Code: pascal.ChapelValidatorContract, + }, + { + ContractAddr: common.HexToAddress(SlashContract), + CommitUrl: "https://github.com/bnb-chain/bsc-genesis-contract/commit/4c03f8222f8ac13e3b6bd424e1235698282bb28d", + Code: pascal.ChapelSlashContract, + }, + { + ContractAddr: common.HexToAddress(SystemRewardContract), + CommitUrl: "https://github.com/bnb-chain/bsc-genesis-contract/commit/4c03f8222f8ac13e3b6bd424e1235698282bb28d", + Code: pascal.ChapelSystemRewardContract, + }, + { + ContractAddr: common.HexToAddress(LightClientContract), + CommitUrl: "https://github.com/bnb-chain/bsc-genesis-contract/commit/4c03f8222f8ac13e3b6bd424e1235698282bb28d", + Code: pascal.ChapelLightClientContract, + }, + { + ContractAddr: common.HexToAddress(TokenHubContract), + CommitUrl: "https://github.com/bnb-chain/bsc-genesis-contract/commit/4c03f8222f8ac13e3b6bd424e1235698282bb28d", + Code: pascal.ChapelTokenHubContract, + }, + { + ContractAddr: common.HexToAddress(RelayerIncentivizeContract), + CommitUrl: "https://github.com/bnb-chain/bsc-genesis-contract/commit/4c03f8222f8ac13e3b6bd424e1235698282bb28d", + Code: pascal.ChapelRelayerIncentivizeContract, + }, + { + ContractAddr: common.HexToAddress(RelayerHubContract), + CommitUrl: "https://github.com/bnb-chain/bsc-genesis-contract/commit/4c03f8222f8ac13e3b6bd424e1235698282bb28d", + Code: pascal.ChapelRelayerHubContract, + }, + { + ContractAddr: common.HexToAddress(GovHubContract), + CommitUrl: "https://github.com/bnb-chain/bsc-genesis-contract/commit/4c03f8222f8ac13e3b6bd424e1235698282bb28d", + Code: pascal.ChapelGovHubContract, + }, + { + ContractAddr: common.HexToAddress(TokenManagerContract), + CommitUrl: "https://github.com/bnb-chain/bsc-genesis-contract/commit/4c03f8222f8ac13e3b6bd424e1235698282bb28d", + Code: pascal.ChapelTokenManagerContract, + }, + { + ContractAddr: common.HexToAddress(CrossChainContract), + CommitUrl: "https://github.com/bnb-chain/bsc-genesis-contract/commit/4c03f8222f8ac13e3b6bd424e1235698282bb28d", + Code: pascal.ChapelCrossChainContract, + }, + { + ContractAddr: common.HexToAddress(StakingContract), + CommitUrl: "https://github.com/bnb-chain/bsc-genesis-contract/commit/4c03f8222f8ac13e3b6bd424e1235698282bb28d", + Code: pascal.ChapelStakingContract, + }, + { + ContractAddr: common.HexToAddress(StakeHubContract), + CommitUrl: "https://github.com/bnb-chain/bsc-genesis-contract/commit/4c03f8222f8ac13e3b6bd424e1235698282bb28d", + Code: pascal.ChapelStakeHubContract, + }, + { + ContractAddr: common.HexToAddress(StakeCreditContract), + CommitUrl: "https://github.com/bnb-chain/bsc-genesis-contract/commit/4c03f8222f8ac13e3b6bd424e1235698282bb28d", + Code: pascal.ChapelStakeCreditContract, + }, + { + ContractAddr: common.HexToAddress(GovernorContract), + CommitUrl: "https://github.com/bnb-chain/bsc-genesis-contract/commit/4c03f8222f8ac13e3b6bd424e1235698282bb28d", + Code: pascal.ChapelGovernorContract, + }, + { + ContractAddr: common.HexToAddress(GovTokenContract), + CommitUrl: "https://github.com/bnb-chain/bsc-genesis-contract/commit/4c03f8222f8ac13e3b6bd424e1235698282bb28d", + Code: pascal.ChapelGovTokenContract, + }, + { + ContractAddr: common.HexToAddress(TimelockContract), + CommitUrl: "https://github.com/bnb-chain/bsc-genesis-contract/commit/4c03f8222f8ac13e3b6bd424e1235698282bb28d", + Code: pascal.ChapelTimelockContract, + }, + { + ContractAddr: common.HexToAddress(TokenRecoverPortalContract), + CommitUrl: "https://github.com/bnb-chain/bsc-genesis-contract/commit/4c03f8222f8ac13e3b6bd424e1235698282bb28d", + Code: pascal.ChapelTokenRecoverPortalContract, + }, + }, + } + + pascalUpgrade[rialtoNet] = &Upgrade{ + UpgradeName: "pascal", + Configs: []*UpgradeConfig{ + { + ContractAddr: common.HexToAddress(ValidatorContract), + CommitUrl: "https://github.com/bnb-chain/bsc-genesis-contract/commit/4c03f8222f8ac13e3b6bd424e1235698282bb28d", + Code: pascal.RialtoValidatorContract, + }, + { + ContractAddr: common.HexToAddress(SlashContract), + CommitUrl: "https://github.com/bnb-chain/bsc-genesis-contract/commit/4c03f8222f8ac13e3b6bd424e1235698282bb28d", + Code: pascal.RialtoSlashContract, + }, + { + ContractAddr: common.HexToAddress(SystemRewardContract), + CommitUrl: "https://github.com/bnb-chain/bsc-genesis-contract/commit/4c03f8222f8ac13e3b6bd424e1235698282bb28d", + Code: pascal.RialtoSystemRewardContract, + }, + { + ContractAddr: common.HexToAddress(LightClientContract), + CommitUrl: "https://github.com/bnb-chain/bsc-genesis-contract/commit/4c03f8222f8ac13e3b6bd424e1235698282bb28d", + Code: pascal.RialtoLightClientContract, + }, + { + ContractAddr: common.HexToAddress(TokenHubContract), + CommitUrl: "https://github.com/bnb-chain/bsc-genesis-contract/commit/4c03f8222f8ac13e3b6bd424e1235698282bb28d", + Code: pascal.RialtoTokenHubContract, + }, + { + ContractAddr: common.HexToAddress(RelayerIncentivizeContract), + CommitUrl: "https://github.com/bnb-chain/bsc-genesis-contract/commit/4c03f8222f8ac13e3b6bd424e1235698282bb28d", + Code: pascal.RialtoRelayerIncentivizeContract, + }, + { + ContractAddr: common.HexToAddress(RelayerHubContract), + CommitUrl: "https://github.com/bnb-chain/bsc-genesis-contract/commit/4c03f8222f8ac13e3b6bd424e1235698282bb28d", + Code: pascal.RialtoRelayerHubContract, + }, + { + ContractAddr: common.HexToAddress(GovHubContract), + CommitUrl: "https://github.com/bnb-chain/bsc-genesis-contract/commit/4c03f8222f8ac13e3b6bd424e1235698282bb28d", + Code: pascal.RialtoGovHubContract, + }, + { + ContractAddr: common.HexToAddress(TokenManagerContract), + CommitUrl: "https://github.com/bnb-chain/bsc-genesis-contract/commit/4c03f8222f8ac13e3b6bd424e1235698282bb28d", + Code: pascal.RialtoTokenManagerContract, + }, + { + ContractAddr: common.HexToAddress(CrossChainContract), + CommitUrl: "https://github.com/bnb-chain/bsc-genesis-contract/commit/4c03f8222f8ac13e3b6bd424e1235698282bb28d", + Code: pascal.RialtoCrossChainContract, + }, + { + ContractAddr: common.HexToAddress(StakingContract), + CommitUrl: "https://github.com/bnb-chain/bsc-genesis-contract/commit/4c03f8222f8ac13e3b6bd424e1235698282bb28d", + Code: pascal.RialtoStakingContract, + }, + { + ContractAddr: common.HexToAddress(StakeHubContract), + CommitUrl: "https://github.com/bnb-chain/bsc-genesis-contract/commit/4c03f8222f8ac13e3b6bd424e1235698282bb28d", + Code: pascal.RialtoStakeHubContract, + }, + { + ContractAddr: common.HexToAddress(StakeCreditContract), + CommitUrl: "https://github.com/bnb-chain/bsc-genesis-contract/commit/4c03f8222f8ac13e3b6bd424e1235698282bb28d", + Code: pascal.RialtoStakeCreditContract, + }, + { + ContractAddr: common.HexToAddress(GovernorContract), + CommitUrl: "https://github.com/bnb-chain/bsc-genesis-contract/commit/4c03f8222f8ac13e3b6bd424e1235698282bb28d", + Code: pascal.RialtoGovernorContract, + }, + { + ContractAddr: common.HexToAddress(GovTokenContract), + CommitUrl: "https://github.com/bnb-chain/bsc-genesis-contract/commit/4c03f8222f8ac13e3b6bd424e1235698282bb28d", + Code: pascal.RialtoGovTokenContract, + }, + { + ContractAddr: common.HexToAddress(TimelockContract), + CommitUrl: "https://github.com/bnb-chain/bsc-genesis-contract/commit/4c03f8222f8ac13e3b6bd424e1235698282bb28d", + Code: pascal.RialtoTimelockContract, + }, + { + ContractAddr: common.HexToAddress(TokenRecoverPortalContract), + CommitUrl: "https://github.com/bnb-chain/bsc-genesis-contract/commit/4c03f8222f8ac13e3b6bd424e1235698282bb28d", + Code: pascal.RialtoTokenRecoverPortalContract, + }, + }, + } } func UpgradeBuildInSystemContract(config *params.ChainConfig, blockNumber *big.Int, lastBlockTime uint64, blockTime uint64, statedb vm.StateDB) { @@ -873,6 +1149,10 @@ func UpgradeBuildInSystemContract(config *params.ChainConfig, blockNumber *big.I applySystemContractUpgrade(bohrUpgrade[network], blockNumber, statedb, logger) } + if config.IsOnPascal(blockNumber, lastBlockTime, blockTime) { + applySystemContractUpgrade(pascalUpgrade[network], blockNumber, statedb, logger) + } + /* apply other upgrades */ diff --git a/eth/backend.go b/eth/backend.go index 0d434a9130..62c129ab84 100644 --- a/eth/backend.go +++ b/eth/backend.go @@ -199,6 +199,10 @@ func New(stack *node.Node, config *ethconfig.Config) (*Ethereum, error) { chainConfig.BohrTime = config.OverrideBohr overrides.OverrideBohr = config.OverrideBohr } + if config.OverridePascal != nil { + chainConfig.PascalTime = config.OverridePascal + overrides.OverridePascal = config.OverridePascal + } if config.OverrideVerkle != nil { chainConfig.VerkleTime = config.OverrideVerkle overrides.OverrideVerkle = config.OverrideVerkle diff --git a/eth/ethconfig/config.go b/eth/ethconfig/config.go index 4bda880fce..96ce8f5ddc 100644 --- a/eth/ethconfig/config.go +++ b/eth/ethconfig/config.go @@ -194,6 +194,9 @@ type Config struct { // OverrideBohr (TODO: remove after the fork) OverrideBohr *uint64 `toml:",omitempty"` + // OverridePascal (TODO: remove after the fork) + OverridePascal *uint64 `toml:",omitempty"` + // OverrideVerkle (TODO: remove after the fork) OverrideVerkle *uint64 `toml:",omitempty"` diff --git a/eth/ethconfig/gen_config.go b/eth/ethconfig/gen_config.go index f23df3aefe..e1293c89f0 100644 --- a/eth/ethconfig/gen_config.go +++ b/eth/ethconfig/gen_config.go @@ -70,8 +70,9 @@ func (c Config) MarshalTOML() (interface{}, error) { RPCGasCap uint64 RPCEVMTimeout time.Duration RPCTxFeeCap float64 - OverridePassedForkTime *uint64 `toml:",omitempty"` + OverridePassedForkTime *uint64 `toml:",omitempty"` OverrideBohr *uint64 `toml:",omitempty"` + OverridePascal *uint64 `toml:",omitempty"` OverrideVerkle *uint64 `toml:",omitempty"` BlobExtraReserve uint64 } @@ -131,6 +132,7 @@ func (c Config) MarshalTOML() (interface{}, error) { enc.RPCTxFeeCap = c.RPCTxFeeCap enc.OverridePassedForkTime = c.OverridePassedForkTime enc.OverrideBohr = c.OverrideBohr + enc.OverridePascal = c.OverridePascal enc.OverrideVerkle = c.OverrideVerkle enc.BlobExtraReserve = c.BlobExtraReserve return &enc, nil @@ -192,8 +194,9 @@ func (c *Config) UnmarshalTOML(unmarshal func(interface{}) error) error { RPCGasCap *uint64 RPCEVMTimeout *time.Duration RPCTxFeeCap *float64 - OverridePassedForkTime *uint64 `toml:",omitempty"` + OverridePassedForkTime *uint64 `toml:",omitempty"` OverrideBohr *uint64 `toml:",omitempty"` + OverridePascal *uint64 `toml:",omitempty"` OverrideVerkle *uint64 `toml:",omitempty"` BlobExtraReserve *uint64 } @@ -366,6 +369,9 @@ func (c *Config) UnmarshalTOML(unmarshal func(interface{}) error) error { if dec.OverrideBohr != nil { c.OverrideBohr = dec.OverrideBohr } + if dec.OverridePascal != nil { + c.OverridePascal = dec.OverridePascal + } if dec.OverrideVerkle != nil { c.OverrideVerkle = dec.OverrideVerkle } diff --git a/params/config.go b/params/config.go index 2c73e8dfe7..f768c0517f 100644 --- a/params/config.go +++ b/params/config.go @@ -155,6 +155,8 @@ var ( HaberTime: newUint64(1718863500), // 2024-06-20 06:05:00 AM UTC HaberFixTime: newUint64(1727316120), // 2024-09-26 02:02:00 AM UTC BohrTime: newUint64(1727317200), // 2024-09-26 02:20:00 AM UTC + // TODO + PascalTime: nil, Parlia: &ParliaConfig{ Period: 3, @@ -196,6 +198,8 @@ var ( HaberTime: newUint64(1716962820), // 2024-05-29 06:07:00 AM UTC HaberFixTime: newUint64(1719986788), // 2024-07-03 06:06:28 AM UTC BohrTime: newUint64(1724116996), // 2024-08-20 01:23:16 AM UTC + // TODO + PascalTime: nil, Parlia: &ParliaConfig{ Period: 3, @@ -238,6 +242,8 @@ var ( HaberTime: newUint64(0), HaberFixTime: newUint64(0), BohrTime: newUint64(0), + // TODO + PascalTime: newUint64(0), Parlia: &ParliaConfig{ Period: 3, @@ -517,6 +523,7 @@ type ChainConfig struct { HaberTime *uint64 `json:"haberTime,omitempty"` // Haber switch time (nil = no fork, 0 = already on haber) HaberFixTime *uint64 `json:"haberFixTime,omitempty"` // HaberFix switch time (nil = no fork, 0 = already on haberFix) BohrTime *uint64 `json:"bohrTime,omitempty"` // Bohr switch time (nil = no fork, 0 = already on bohr) + PascalTime *uint64 `json:"pascalTime,omitempty"` // Pascal switch time (nil = no fork, 0 = already on pascal) PragueTime *uint64 `json:"pragueTime,omitempty"` // Prague switch time (nil = no fork, 0 = already on prague) VerkleTime *uint64 `json:"verkleTime,omitempty"` // Verkle switch time (nil = no fork, 0 = already on verkle) @@ -637,7 +644,12 @@ func (c *ChainConfig) String() string { BohrTime = big.NewInt(0).SetUint64(*c.BohrTime) } - return fmt.Sprintf("{ChainID: %v Homestead: %v DAO: %v DAOSupport: %v EIP150: %v EIP155: %v EIP158: %v Byzantium: %v Constantinople: %v Petersburg: %v Istanbul: %v, Muir Glacier: %v, Ramanujan: %v, Niels: %v, MirrorSync: %v, Bruno: %v, Berlin: %v, YOLO v3: %v, CatalystBlock: %v, London: %v, ArrowGlacier: %v, MergeFork:%v, Euler: %v, Gibbs: %v, Nano: %v, Moran: %v, Planck: %v,Luban: %v, Plato: %v, Hertz: %v, Hertzfix: %v, ShanghaiTime: %v, KeplerTime: %v, FeynmanTime: %v, FeynmanFixTime: %v, CancunTime: %v, HaberTime: %v, HaberFixTime: %v, BohrTime: %v, Engine: %v}", + var PascalTime *big.Int + if c.PascalTime != nil { + PascalTime = big.NewInt(0).SetUint64(*c.PascalTime) + } + + return fmt.Sprintf("{ChainID: %v Homestead: %v DAO: %v DAOSupport: %v EIP150: %v EIP155: %v EIP158: %v Byzantium: %v Constantinople: %v Petersburg: %v Istanbul: %v, Muir Glacier: %v, Ramanujan: %v, Niels: %v, MirrorSync: %v, Bruno: %v, Berlin: %v, YOLO v3: %v, CatalystBlock: %v, London: %v, ArrowGlacier: %v, MergeFork:%v, Euler: %v, Gibbs: %v, Nano: %v, Moran: %v, Planck: %v,Luban: %v, Plato: %v, Hertz: %v, Hertzfix: %v, ShanghaiTime: %v, KeplerTime: %v, FeynmanTime: %v, FeynmanFixTime: %v, CancunTime: %v, HaberTime: %v, HaberFixTime: %v, BohrTime: %v, PascalTime: %v, Engine: %v}", c.ChainID, c.HomesteadBlock, c.DAOForkBlock, @@ -677,6 +689,7 @@ func (c *ChainConfig) String() string { HaberTime, HaberFixTime, BohrTime, + PascalTime, engine, ) } @@ -977,6 +990,20 @@ func (c *ChainConfig) IsOnBohr(currentBlockNumber *big.Int, lastBlockTime uint64 return !c.IsBohr(lastBlockNumber, lastBlockTime) && c.IsBohr(currentBlockNumber, currentBlockTime) } +// IsPascal returns whether time is either equal to the Pascal fork time or greater. +func (c *ChainConfig) IsPascal(num *big.Int, time uint64) bool { + return c.IsLondon(num) && isTimestampForked(c.PascalTime, time) +} + +// IsOnPascal returns whether currentBlockTime is either equal to the Pascal fork time or greater firstly. +func (c *ChainConfig) IsOnPascal(currentBlockNumber *big.Int, lastBlockTime uint64, currentBlockTime uint64) bool { + lastBlockNumber := new(big.Int) + if currentBlockNumber.Cmp(big.NewInt(1)) >= 0 { + lastBlockNumber.Sub(currentBlockNumber, big.NewInt(1)) + } + return !c.IsPascal(lastBlockNumber, lastBlockTime) && c.IsPascal(currentBlockNumber, currentBlockTime) +} + // IsPrague returns whether num is either equal to the Prague fork time or greater. func (c *ChainConfig) IsPrague(num *big.Int, time uint64) bool { return c.IsLondon(num) && isTimestampForked(c.PragueTime, time) @@ -1043,6 +1070,7 @@ func (c *ChainConfig) CheckConfigForkOrder() error { {name: "haberTime", timestamp: c.HaberTime}, {name: "haberFixTime", timestamp: c.HaberFixTime}, {name: "bohrTime", timestamp: c.BohrTime}, + {name: "pascalTime", timestamp: c.PascalTime}, {name: "pragueTime", timestamp: c.PragueTime, optional: true}, {name: "verkleTime", timestamp: c.VerkleTime, optional: true}, } { @@ -1199,6 +1227,9 @@ func (c *ChainConfig) checkCompatible(newcfg *ChainConfig, headNumber *big.Int, if isForkTimestampIncompatible(c.BohrTime, newcfg.BohrTime, headTimestamp) { return newTimestampCompatError("Bohr fork timestamp", c.BohrTime, newcfg.BohrTime) } + if isForkTimestampIncompatible(c.PascalTime, newcfg.PascalTime, headTimestamp) { + return newTimestampCompatError("Pascal fork timestamp", c.PascalTime, newcfg.PascalTime) + } if isForkTimestampIncompatible(c.PragueTime, newcfg.PragueTime, headTimestamp) { return newTimestampCompatError("Prague fork timestamp", c.PragueTime, newcfg.PragueTime) } From 27f67a5210b939c135829b2bacfd7c4e9fa14171 Mon Sep 17 00:00:00 2001 From: buddho Date: Mon, 23 Sep 2024 17:53:32 +0800 Subject: [PATCH 22/27] feat: add Prague hardfork (#2718) --- cmd/geth/chaincmd.go | 5 +++++ cmd/geth/config.go | 4 ++++ cmd/geth/main.go | 1 + cmd/utils/flags.go | 5 +++++ core/genesis.go | 4 ++++ eth/backend.go | 4 ++++ eth/ethconfig/config.go | 3 +++ eth/ethconfig/gen_config.go | 6 ++++++ params/config.go | 16 +++++++++++++--- 9 files changed, 45 insertions(+), 3 deletions(-) diff --git a/cmd/geth/chaincmd.go b/cmd/geth/chaincmd.go index 0433c9d051..ff6e52ed27 100644 --- a/cmd/geth/chaincmd.go +++ b/cmd/geth/chaincmd.go @@ -65,6 +65,7 @@ var ( utils.OverridePassedForkTime, utils.OverrideBohr, utils.OverridePascal, + utils.OverridePrague, utils.OverrideVerkle, utils.MultiDataBaseFlag, }, utils.DatabaseFlags), @@ -267,6 +268,10 @@ func initGenesis(ctx *cli.Context) error { v := ctx.Uint64(utils.OverridePascal.Name) overrides.OverridePascal = &v } + if ctx.IsSet(utils.OverridePrague.Name) { + v := ctx.Uint64(utils.OverridePrague.Name) + overrides.OverridePrague = &v + } if ctx.IsSet(utils.OverrideVerkle.Name) { v := ctx.Uint64(utils.OverrideVerkle.Name) overrides.OverrideVerkle = &v diff --git a/cmd/geth/config.go b/cmd/geth/config.go index 44f57f5d95..4be0ff6655 100644 --- a/cmd/geth/config.go +++ b/cmd/geth/config.go @@ -199,6 +199,10 @@ func makeFullNode(ctx *cli.Context) (*node.Node, ethapi.Backend) { v := ctx.Uint64(utils.OverridePascal.Name) cfg.Eth.OverridePascal = &v } + if ctx.IsSet(utils.OverridePrague.Name) { + v := ctx.Uint64(utils.OverridePrague.Name) + cfg.Eth.OverridePrague = &v + } if ctx.IsSet(utils.OverrideVerkle.Name) { v := ctx.Uint64(utils.OverrideVerkle.Name) cfg.Eth.OverrideVerkle = &v diff --git a/cmd/geth/main.go b/cmd/geth/main.go index 47b7b99e81..e5e954cb8b 100644 --- a/cmd/geth/main.go +++ b/cmd/geth/main.go @@ -75,6 +75,7 @@ var ( utils.OverridePassedForkTime, utils.OverrideBohr, utils.OverridePascal, + utils.OverridePrague, utils.OverrideVerkle, utils.OverrideFullImmutabilityThreshold, utils.OverrideMinBlocksForBlobRequests, diff --git a/cmd/utils/flags.go b/cmd/utils/flags.go index ff16a6b0f4..858f396901 100644 --- a/cmd/utils/flags.go +++ b/cmd/utils/flags.go @@ -323,6 +323,11 @@ var ( Usage: "Manually specify the Pascal fork timestamp, overriding the bundled setting", Category: flags.EthCategory, } + OverridePrague = &cli.Uint64Flag{ + Name: "override.prague", + Usage: "Manually specify the Prague fork timestamp, overriding the bundled setting", + Category: flags.EthCategory, + } OverrideVerkle = &cli.Uint64Flag{ Name: "override.verkle", Usage: "Manually specify the Verkle fork timestamp, overriding the bundled setting", diff --git a/core/genesis.go b/core/genesis.go index e88f4120fc..02d27031fd 100644 --- a/core/genesis.go +++ b/core/genesis.go @@ -219,6 +219,7 @@ type ChainOverrides struct { OverridePassedForkTime *uint64 OverrideBohr *uint64 OverridePascal *uint64 + OverridePrague *uint64 OverrideVerkle *uint64 } @@ -260,6 +261,9 @@ func SetupGenesisBlockWithOverride(db ethdb.Database, triedb *triedb.Database, g if overrides != nil && overrides.OverridePascal != nil { config.PascalTime = overrides.OverridePascal } + if overrides != nil && overrides.OverridePrague != nil { + config.PragueTime = overrides.OverridePrague + } if overrides != nil && overrides.OverrideVerkle != nil { config.VerkleTime = overrides.OverrideVerkle } diff --git a/eth/backend.go b/eth/backend.go index 62c129ab84..930924e7a6 100644 --- a/eth/backend.go +++ b/eth/backend.go @@ -203,6 +203,10 @@ func New(stack *node.Node, config *ethconfig.Config) (*Ethereum, error) { chainConfig.PascalTime = config.OverridePascal overrides.OverridePascal = config.OverridePascal } + if config.OverridePrague != nil { + chainConfig.PragueTime = config.OverridePrague + overrides.OverridePrague = config.OverridePrague + } if config.OverrideVerkle != nil { chainConfig.VerkleTime = config.OverrideVerkle overrides.OverrideVerkle = config.OverrideVerkle diff --git a/eth/ethconfig/config.go b/eth/ethconfig/config.go index 96ce8f5ddc..e40ec440cf 100644 --- a/eth/ethconfig/config.go +++ b/eth/ethconfig/config.go @@ -197,6 +197,9 @@ type Config struct { // OverridePascal (TODO: remove after the fork) OverridePascal *uint64 `toml:",omitempty"` + // OverridePrague (TODO: remove after the fork) + OverridePrague *uint64 `toml:",omitempty"` + // OverrideVerkle (TODO: remove after the fork) OverrideVerkle *uint64 `toml:",omitempty"` diff --git a/eth/ethconfig/gen_config.go b/eth/ethconfig/gen_config.go index e1293c89f0..bfad53a4d2 100644 --- a/eth/ethconfig/gen_config.go +++ b/eth/ethconfig/gen_config.go @@ -73,6 +73,7 @@ func (c Config) MarshalTOML() (interface{}, error) { OverridePassedForkTime *uint64 `toml:",omitempty"` OverrideBohr *uint64 `toml:",omitempty"` OverridePascal *uint64 `toml:",omitempty"` + OverridePrague *uint64 `toml:",omitempty"` OverrideVerkle *uint64 `toml:",omitempty"` BlobExtraReserve uint64 } @@ -133,6 +134,7 @@ func (c Config) MarshalTOML() (interface{}, error) { enc.OverridePassedForkTime = c.OverridePassedForkTime enc.OverrideBohr = c.OverrideBohr enc.OverridePascal = c.OverridePascal + enc.OverridePrague = c.OverridePrague enc.OverrideVerkle = c.OverrideVerkle enc.BlobExtraReserve = c.BlobExtraReserve return &enc, nil @@ -197,6 +199,7 @@ func (c *Config) UnmarshalTOML(unmarshal func(interface{}) error) error { OverridePassedForkTime *uint64 `toml:",omitempty"` OverrideBohr *uint64 `toml:",omitempty"` OverridePascal *uint64 `toml:",omitempty"` + OverridePrague *uint64 `toml:",omitempty"` OverrideVerkle *uint64 `toml:",omitempty"` BlobExtraReserve *uint64 } @@ -372,6 +375,9 @@ func (c *Config) UnmarshalTOML(unmarshal func(interface{}) error) error { if dec.OverridePascal != nil { c.OverridePascal = dec.OverridePascal } + if dec.OverridePrague != nil { + c.OverridePrague = dec.OverridePrague + } if dec.OverrideVerkle != nil { c.OverrideVerkle = dec.OverrideVerkle } diff --git a/params/config.go b/params/config.go index f768c0517f..1c07b294cf 100644 --- a/params/config.go +++ b/params/config.go @@ -157,6 +157,7 @@ var ( BohrTime: newUint64(1727317200), // 2024-09-26 02:20:00 AM UTC // TODO PascalTime: nil, + PragueTime: nil, Parlia: &ParliaConfig{ Period: 3, @@ -200,6 +201,7 @@ var ( BohrTime: newUint64(1724116996), // 2024-08-20 01:23:16 AM UTC // TODO PascalTime: nil, + PragueTime: nil, Parlia: &ParliaConfig{ Period: 3, @@ -244,6 +246,7 @@ var ( BohrTime: newUint64(0), // TODO PascalTime: newUint64(0), + PragueTime: newUint64(0), Parlia: &ParliaConfig{ Period: 3, @@ -649,7 +652,12 @@ func (c *ChainConfig) String() string { PascalTime = big.NewInt(0).SetUint64(*c.PascalTime) } - return fmt.Sprintf("{ChainID: %v Homestead: %v DAO: %v DAOSupport: %v EIP150: %v EIP155: %v EIP158: %v Byzantium: %v Constantinople: %v Petersburg: %v Istanbul: %v, Muir Glacier: %v, Ramanujan: %v, Niels: %v, MirrorSync: %v, Bruno: %v, Berlin: %v, YOLO v3: %v, CatalystBlock: %v, London: %v, ArrowGlacier: %v, MergeFork:%v, Euler: %v, Gibbs: %v, Nano: %v, Moran: %v, Planck: %v,Luban: %v, Plato: %v, Hertz: %v, Hertzfix: %v, ShanghaiTime: %v, KeplerTime: %v, FeynmanTime: %v, FeynmanFixTime: %v, CancunTime: %v, HaberTime: %v, HaberFixTime: %v, BohrTime: %v, PascalTime: %v, Engine: %v}", + var PragueTime *big.Int + if c.PragueTime != nil { + PragueTime = big.NewInt(0).SetUint64(*c.PragueTime) + } + + return fmt.Sprintf("{ChainID: %v Homestead: %v DAO: %v DAOSupport: %v EIP150: %v EIP155: %v EIP158: %v Byzantium: %v Constantinople: %v Petersburg: %v Istanbul: %v, Muir Glacier: %v, Ramanujan: %v, Niels: %v, MirrorSync: %v, Bruno: %v, Berlin: %v, YOLO v3: %v, CatalystBlock: %v, London: %v, ArrowGlacier: %v, MergeFork:%v, Euler: %v, Gibbs: %v, Nano: %v, Moran: %v, Planck: %v,Luban: %v, Plato: %v, Hertz: %v, Hertzfix: %v, ShanghaiTime: %v, KeplerTime: %v, FeynmanTime: %v, FeynmanFixTime: %v, CancunTime: %v, HaberTime: %v, HaberFixTime: %v, BohrTime: %v, PascalTime: %v, PragueTime: %v, Engine: %v}", c.ChainID, c.HomesteadBlock, c.DAOForkBlock, @@ -690,6 +698,7 @@ func (c *ChainConfig) String() string { HaberFixTime, BohrTime, PascalTime, + PragueTime, engine, ) } @@ -1071,7 +1080,7 @@ func (c *ChainConfig) CheckConfigForkOrder() error { {name: "haberFixTime", timestamp: c.HaberFixTime}, {name: "bohrTime", timestamp: c.BohrTime}, {name: "pascalTime", timestamp: c.PascalTime}, - {name: "pragueTime", timestamp: c.PragueTime, optional: true}, + {name: "pragueTime", timestamp: c.PragueTime}, {name: "verkleTime", timestamp: c.VerkleTime, optional: true}, } { if lastFork.name != "" { @@ -1413,7 +1422,7 @@ type Rules struct { IsHertz bool IsHertzfix bool IsShanghai, IsKepler, IsFeynman, IsCancun, IsHaber bool - IsBohr, IsPrague, IsVerkle bool + IsBohr, IsPascal, IsPrague, IsVerkle bool } // Rules ensures c's ChainID is not nil. @@ -1450,6 +1459,7 @@ func (c *ChainConfig) Rules(num *big.Int, isMerge bool, timestamp uint64) Rules IsCancun: c.IsCancun(num, timestamp), IsHaber: c.IsHaber(num, timestamp), IsBohr: c.IsBohr(num, timestamp), + IsPascal: c.IsPascal(num, timestamp), IsPrague: c.IsPrague(num, timestamp), IsVerkle: c.IsVerkle(num, timestamp), } From bff9d252d68316faab2fc8230b92759cb918c023 Mon Sep 17 00:00:00 2001 From: buddho Date: Sun, 29 Sep 2024 13:30:45 +0800 Subject: [PATCH 23/27] core: clearup testflag for Bohr (#2727) --- cmd/geth/chaincmd.go | 5 ----- cmd/geth/config.go | 4 ---- cmd/geth/main.go | 1 - cmd/utils/flags.go | 5 ----- core/genesis.go | 5 +---- .../systemcontracts/bohr/rialto/StakeHubContract | 1 - .../bohr/rialto/ValidatorContract | 1 - core/systemcontracts/bohr/types.go | 8 -------- core/systemcontracts/upgrade.go | 16 ---------------- eth/backend.go | 5 +---- eth/ethconfig/config.go | 3 --- eth/ethconfig/gen_config.go | 6 ------ params/config.go | 6 +++--- 13 files changed, 5 insertions(+), 61 deletions(-) delete mode 100644 core/systemcontracts/bohr/rialto/StakeHubContract delete mode 100644 core/systemcontracts/bohr/rialto/ValidatorContract diff --git a/cmd/geth/chaincmd.go b/cmd/geth/chaincmd.go index ff6e52ed27..140d256870 100644 --- a/cmd/geth/chaincmd.go +++ b/cmd/geth/chaincmd.go @@ -63,7 +63,6 @@ var ( Flags: flags.Merge([]cli.Flag{ utils.CachePreimagesFlag, utils.OverridePassedForkTime, - utils.OverrideBohr, utils.OverridePascal, utils.OverridePrague, utils.OverrideVerkle, @@ -260,10 +259,6 @@ func initGenesis(ctx *cli.Context) error { v := ctx.Uint64(utils.OverridePassedForkTime.Name) overrides.OverridePassedForkTime = &v } - if ctx.IsSet(utils.OverrideBohr.Name) { - v := ctx.Uint64(utils.OverrideBohr.Name) - overrides.OverrideBohr = &v - } if ctx.IsSet(utils.OverridePascal.Name) { v := ctx.Uint64(utils.OverridePascal.Name) overrides.OverridePascal = &v diff --git a/cmd/geth/config.go b/cmd/geth/config.go index 4be0ff6655..7ab27cd3c3 100644 --- a/cmd/geth/config.go +++ b/cmd/geth/config.go @@ -191,10 +191,6 @@ func makeFullNode(ctx *cli.Context) (*node.Node, ethapi.Backend) { v := ctx.Uint64(utils.OverridePassedForkTime.Name) cfg.Eth.OverridePassedForkTime = &v } - if ctx.IsSet(utils.OverrideBohr.Name) { - v := ctx.Uint64(utils.OverrideBohr.Name) - cfg.Eth.OverrideBohr = &v - } if ctx.IsSet(utils.OverridePascal.Name) { v := ctx.Uint64(utils.OverridePascal.Name) cfg.Eth.OverridePascal = &v diff --git a/cmd/geth/main.go b/cmd/geth/main.go index e5e954cb8b..3a041fcc3a 100644 --- a/cmd/geth/main.go +++ b/cmd/geth/main.go @@ -73,7 +73,6 @@ var ( utils.SmartCardDaemonPathFlag, utils.RialtoHash, utils.OverridePassedForkTime, - utils.OverrideBohr, utils.OverridePascal, utils.OverridePrague, utils.OverrideVerkle, diff --git a/cmd/utils/flags.go b/cmd/utils/flags.go index 858f396901..207628c161 100644 --- a/cmd/utils/flags.go +++ b/cmd/utils/flags.go @@ -313,11 +313,6 @@ var ( Usage: "Manually specify the hard fork timestamps which have passed on the mainnet, overriding the bundled setting", Category: flags.EthCategory, } - OverrideBohr = &cli.Uint64Flag{ - Name: "override.bohr", - Usage: "Manually specify the Bohr fork timestamp, overriding the bundled setting", - Category: flags.EthCategory, - } OverridePascal = &cli.Uint64Flag{ Name: "override.pascal", Usage: "Manually specify the Pascal fork timestamp, overriding the bundled setting", diff --git a/core/genesis.go b/core/genesis.go index 02d27031fd..e06938f327 100644 --- a/core/genesis.go +++ b/core/genesis.go @@ -217,7 +217,6 @@ func (e *GenesisMismatchError) Error() string { // Typically, these modifications involve hardforks that are not enabled on the BSC mainnet, intended for testing purposes. type ChainOverrides struct { OverridePassedForkTime *uint64 - OverrideBohr *uint64 OverridePascal *uint64 OverridePrague *uint64 OverrideVerkle *uint64 @@ -254,9 +253,7 @@ func SetupGenesisBlockWithOverride(db ethdb.Database, triedb *triedb.Database, g config.CancunTime = overrides.OverridePassedForkTime config.HaberTime = overrides.OverridePassedForkTime config.HaberFixTime = overrides.OverridePassedForkTime - } - if overrides != nil && overrides.OverrideBohr != nil { - config.BohrTime = overrides.OverrideBohr + config.BohrTime = overrides.OverridePassedForkTime } if overrides != nil && overrides.OverridePascal != nil { config.PascalTime = overrides.OverridePascal diff --git a/core/systemcontracts/bohr/rialto/StakeHubContract b/core/systemcontracts/bohr/rialto/StakeHubContract deleted file mode 100644 index d07faefad6..0000000000 --- a/core/systemcontracts/bohr/rialto/StakeHubContract +++ /dev/null @@ -1 +0,0 @@ -608060405260043610620003ff5760003560e01c80638456cb59116200020f578063cbb04d9d1162000123578063e992aaf511620000ad578063f80a34021162000078578063f80a34021462000c97578063fb50b31f1462000cbc578063fc0c5ff11462000ce1578063ff69ab611462000cf957600080fd5b8063e992aaf51462000c14578063efdbf0e11462000c2c578063f1f74d841462000c68578063f1fad1041462000c8057600080fd5b8063d8ca511f11620000ee578063d8ca511f1462000ba7578063daacdb661462000bbf578063dbda7fb31462000bd7578063e8f67c3b1462000bfc57600080fd5b8063cbb04d9d1462000b03578063d115a2061462000b44578063d6ca429d1462000b5d578063d7c2dfc81462000b8257600080fd5b8063ac43175111620001a5578063bff02e201162000170578063bff02e201462000a90578063c38fbec81462000ac6578063c473318f1462000aeb578063c8509d8114620008e457600080fd5b8063ac4317511462000a0e578063b187bd261462000a33578063baa7199e1462000a53578063bdceadf31462000a7857600080fd5b80638cd22b2211620001e65780638cd22b221462000979578063982ef0a7146200099e578063a43569b314620009b5578063aad3ec9614620009e957600080fd5b80638456cb59146200090957806386d5450614620009215780638a4d3fa8146200095b57600080fd5b806349f41a42116200031357806364028fbd116200029d57806375cc7d89116200026857806375cc7d89146200088f57806376e7d6d614620008b45780638129fc1c14620008cc578063831d65d114620008e457600080fd5b806364028fbd14620007ca578063663706d314620007e15780636ec01b2714620008125780636f8e2fa4146200086a57600080fd5b80634e6fd6c411620002de5780634e6fd6c414620007315780635949187114620007495780635e7cc1c9146200076e57806363a036b5146200079357600080fd5b806349f41a4214620006985780634a49ac4c14620006bd5780634bf6c88214620006e25780634d99dd16146200070c57600080fd5b80631fa8882b1162000395578063417c73a71162000360578063417c73a714620005e4578063449ecfe6146200060957806345211bfd146200062e5780634838d165146200065357600080fd5b80631fa8882b14620005555780632b727c86146200056d5780632e8e8c7114620005925780633840998814620005cc57600080fd5b8063092193ab11620003d6578063092193ab14620004a05780630e9fbf5114620004b75780631182b87514620004dc57806317b4f353146200051057600080fd5b8063046f7da2146200041f578063059ddd2214620004375780630661806e146200047957600080fd5b366200041a5760345460ff166001146200041857600080fd5b005b600080fd5b3480156200042c57600080fd5b506200041862000d11565b3480156200044457600080fd5b506200045c6200045636600462009910565b62000da3565b6040516001600160a01b0390911681526020015b60405180910390f35b3480156200048657600080fd5b506200049160365481565b60405190815260200162000470565b62000418620004b136600462009910565b620011cb565b348015620004c457600080fd5b5062000418620004d636600462009974565b6200181c565b348015620004e957600080fd5b5062000501620004fb366004620099b9565b62001b46565b60405162000470919062009a6c565b3480156200051d57600080fd5b506200045c6200052f36600462009b62565b80516020818301810180516045825292820191909301209152546001600160a01b031681565b3480156200056257600080fd5b506200049161025881565b3480156200057a57600080fd5b506200045c6200058c36600462009910565b62001eb9565b3480156200059f57600080fd5b506200045c620005b136600462009910565b604d602052600090815260409020546001600160a01b031681565b348015620005d957600080fd5b506200049160375481565b348015620005f157600080fd5b50620004186200060336600462009910565b62001f0e565b3480156200061657600080fd5b50620004186200062836600462009910565b62001f90565b3480156200063b57600080fd5b50620004186200064d36600462009910565b62002175565b3480156200066057600080fd5b50620006876200067236600462009910565b60016020526000908152604090205460ff1681565b604051901515815260200162000470565b348015620006a557600080fd5b5062000418620006b736600462009910565b62002373565b348015620006ca57600080fd5b5062000418620006dc36600462009910565b6200258f565b348015620006ef57600080fd5b50620006f9600881565b60405160ff909116815260200162000470565b3480156200071957600080fd5b50620004186200072b36600462009bb7565b6200260b565b3480156200073e57600080fd5b506200045c61dead81565b3480156200075657600080fd5b50620004186200076836600462009bf5565b62002c3b565b3480156200077b57600080fd5b50620004186200078d36600462009c65565b62003a34565b348015620007a057600080fd5b50620007b8620007b236600462009c85565b62003c5d565b60405162000470949392919062009cee565b62000418620007db36600462009daa565b62004302565b348015620007ee57600080fd5b50620004916200080036600462009910565b60446020526000908152604090205481565b3480156200081f57600080fd5b50620008376200083136600462009910565b62004986565b6040805182516001600160401b039081168252602080850151821690830152928201519092169082015260600162000470565b3480156200087757600080fd5b50620005016200088936600462009910565b62004a2b565b3480156200089c57600080fd5b5062000418620008ae36600462009910565b62004e57565b348015620008c157600080fd5b5062000491603d5481565b348015620008d957600080fd5b506200041862005029565b348015620008f157600080fd5b506200041862000903366004620099b9565b6200533b565b3480156200091657600080fd5b5062000418620053a5565b3480156200092e57600080fd5b506200045c6200094036600462009910565b6043602052600090815260409020546001600160a01b031681565b3480156200096857600080fd5b5062000491670de0b6b3a764000081565b3480156200098657600080fd5b50620004916200099836600462009bb7565b6200543d565b62000418620009af36600462009e82565b620054f6565b348015620009c257600080fd5b50620009da620009d436600462009910565b62005b93565b60405162000470919062009ec0565b348015620009f657600080fd5b506200041862000a0836600462009bb7565b62005e80565b34801562000a1b57600080fd5b506200041862000a2d36600462009f3d565b62005eed565b34801562000a4057600080fd5b5060005462010000900460ff1662000687565b34801562000a6057600080fd5b506200041862000a7236600462009ff6565b62006d8c565b34801562000a8557600080fd5b5062000491603c5481565b34801562000a9d57600080fd5b5062000ab562000aaf36600462009c85565b62006f59565b60405162000470939291906200a052565b34801562000ad357600080fd5b506200041862000ae536600462009910565b62007135565b34801562000af857600080fd5b506200049160385481565b34801562000b1057600080fd5b5062000b2862000b2236600462009910565b620073f5565b6040805193845291151560208401529082015260600162000470565b34801562000b5157600080fd5b5062000491620186a081565b34801562000b6a57600080fd5b506200041862000b7c3660046200a0af565b62007838565b34801562000b8f57600080fd5b506200041862000ba13660046200a198565b62007a5d565b34801562000bb457600080fd5b5062000491603b5481565b34801562000bcc57600080fd5b506200049160495481565b34801562000be457600080fd5b506200045c62000bf636600462009910565b62007b53565b34801562000c0957600080fd5b506200049160355481565b34801562000c2157600080fd5b5062000491603a5481565b34801562000c3957600080fd5b506200049162000c4b36600462009b62565b805160208183018101805160468252928201919093012091525481565b34801562000c7557600080fd5b5062000491603e5481565b34801562000c8d57600080fd5b50620006f9601181565b34801562000ca457600080fd5b506200049162000cb636600462009bb7565b62007f7d565b34801562000cc957600080fd5b506200041862000cdb36600462009f3d565b62007fee565b34801562000cee57600080fd5b506200049160395481565b34801562000d0657600080fd5b5062000491604a5481565b600054630100000090046001600160a01b0316331462000d44576040516306fbb1e360e01b815260040160405180910390fd5b60005462010000900460ff1662000d6e57604051636cd6020160e01b815260040160405180910390fd5b6000805462ff0000191681556040517f62451d457bc659158be6e6247f56ec1df424a5c7597f71c20c2bc44e0965c8f99190a1565b6001600160a01b038082166000908152604160209081526040808320815161018081018352815486168152600182015486169381019390935260028101549094169082015260038301546060820152600483018054929384939091608084019162000e0e906200a1fe565b80601f016020809104026020016040519081016040528092919081815260200182805462000e3c906200a1fe565b801562000e8d5780601f1062000e615761010080835404028352916020019162000e8d565b820191906000526020600020905b81548152906001019060200180831162000e6f57829003601f168201915b505050505081526020016005820160405180608001604052908160008201805462000eb8906200a1fe565b80601f016020809104026020016040519081016040528092919081815260200182805462000ee6906200a1fe565b801562000f375780601f1062000f0b5761010080835404028352916020019162000f37565b820191906000526020600020905b81548152906001019060200180831162000f1957829003601f168201915b5050505050815260200160018201805462000f52906200a1fe565b80601f016020809104026020016040519081016040528092919081815260200182805462000f80906200a1fe565b801562000fd15780601f1062000fa55761010080835404028352916020019162000fd1565b820191906000526020600020905b81548152906001019060200180831162000fb357829003601f168201915b5050505050815260200160028201805462000fec906200a1fe565b80601f01602080910402602001604051908101604052809291908181526020018280546200101a906200a1fe565b80156200106b5780601f106200103f576101008083540402835291602001916200106b565b820191906000526020600020905b8154815290600101906020018083116200104d57829003601f168201915b5050505050815260200160038201805462001086906200a1fe565b80601f0160208091040260200160405190810160405280929190818152602001828054620010b4906200a1fe565b8015620011055780601f10620010d95761010080835404028352916020019162001105565b820191906000526020600020905b815481529060010190602001808311620010e757829003601f168201915b505050919092525050508152604080516060808201835260098501546001600160401b038082168452600160401b82048116602080860191909152600160801b9092041683850152840191909152600a84015460ff16151582840152600b84015490830152600c8301546080830152600d8301546001600160a01b031660a0830152805161026081019182905260c09092019190600e84019060139082845b815481526020019060010190808311620011a4575050509190925250509051949350505050565b3361100014620011f757604051630f22c43960e41b815261100060048201526024015b60405180910390fd5b6001600160a01b0380821660009081526043602090815260408083205484168084526041835281842082516101808101845281548716815260018201548716948101949094526002810154909516918301919091526003840154606083015260048401805491949160808401919062001270906200a1fe565b80601f01602080910402602001604051908101604052809291908181526020018280546200129e906200a1fe565b8015620012ef5780601f10620012c357610100808354040283529160200191620012ef565b820191906000526020600020905b815481529060010190602001808311620012d157829003601f168201915b50505050508152602001600582016040518060800160405290816000820180546200131a906200a1fe565b80601f016020809104026020016040519081016040528092919081815260200182805462001348906200a1fe565b8015620013995780601f106200136d5761010080835404028352916020019162001399565b820191906000526020600020905b8154815290600101906020018083116200137b57829003601f168201915b50505050508152602001600182018054620013b4906200a1fe565b80601f0160208091040260200160405190810160405280929190818152602001828054620013e2906200a1fe565b8015620014335780601f10620014075761010080835404028352916020019162001433565b820191906000526020600020905b8154815290600101906020018083116200141557829003601f168201915b505050505081526020016002820180546200144e906200a1fe565b80601f01602080910402602001604051908101604052809291908181526020018280546200147c906200a1fe565b8015620014cd5780601f10620014a157610100808354040283529160200191620014cd565b820191906000526020600020905b815481529060010190602001808311620014af57829003601f168201915b50505050508152602001600382018054620014e8906200a1fe565b80601f016020809104026020016040519081016040528092919081815260200182805462001516906200a1fe565b8015620015675780601f106200153b5761010080835404028352916020019162001567565b820191906000526020600020905b8154815290600101906020018083116200154957829003601f168201915b505050919092525050508152604080516060808201835260098501546001600160401b038082168452600160401b82048116602080860191909152600160801b9092041683850152840191909152600a84015460ff16151582840152600b84015490830152600c8301546080830152600d8301546001600160a01b031660a0830152805161026081019182905260c09092019190600e84019060139082845b81548152602001906001019080831162001606575050509190925250505060408101519091506001600160a01b031615806200164357508060e001515b156200170057604051611002903490600081818185875af1925050503d80600081146200168d576040519150601f19603f3d011682016040523d82523d6000602084013e62001692565b606091505b505050816001600160a01b03167ffc8bff675087dd2da069cc3fb517b9ed001e19750c0865241a5542dba1ba170d604051620016f39060208082526011908201527024a72b20a624a22fab20a624a220aa27a960791b604082015260600190565b60405180910390a2505050565b60408181015160c0830151519151632f303ebb60e11b81526001600160401b0390921660048301526001600160a01b031690635e607d769034906024016000604051808303818588803b1580156200175757600080fd5b505af11580156200176c573d6000803e3d6000fd5b5050505050816001600160a01b03167fe34918ff1c7084970068b53fd71ad6d8b04e9f15d3886cbf006443e6cdc52ea634604051620017ad91815260200190565b60405180910390a26040808201519051633041949b60e01b815261200591633041949b91620017e2919086906004016200a234565b600060405180830381600087803b158015620017fd57600080fd5b505af115801562001812573d6000803e3d6000fd5b5050505050505b50565b33611001146200184457604051630f22c43960e41b81526110016004820152602401620011ee565b60005462010000900460ff16156200186f57604051631785c68160e01b815260040160405180910390fd5b600060458383604051620018859291906200a24e565b908152604051908190036020019020546001600160a01b03169050620018ad603f8262008257565b620018cb5760405163056e881160e01b815260040160405180910390fd5b6001600160a01b038116600090815260416020526040812090620018f2610258426200a274565b604a546000828152604b602052604090205491925011620019265760405163bd52fcdb60e01b815260040160405180910390fd5b6000818152604b60205260408120805460019290620019479084906200a297565b90915550506040516046906200196190879087906200a24e565b908152602001604051809103902054600014158015620019b157504261025860468787604051620019949291906200a24e565b908152602001604051809103902054620019af91906200a297565b105b15620019d057604051631898eb6b60e01b815260040160405180910390fd5b600080620019e08560026200827a565b915091508162001a0357604051631b919bb160e11b815260040160405180910390fd5b6002840154603c5460405163045bc4d160e41b815260048101919091526000916001600160a01b0316906345bc4d10906024016020604051808303816000875af115801562001a56573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001a7c91906200a2ad565b905062001a8a858362008304565b856001600160a01b03167f6e9a2ee7aee95665e3a774a212eb11441b217e3e4656ab9563793094689aabb28383600260405162001aca939291906200a2dd565b60405180910390a26002850154604051633041949b60e01b815261200591633041949b9162001b08916001600160a01b0316908a906004016200a234565b600060405180830381600087803b15801562001b2357600080fd5b505af115801562001b38573d6000803e3d6000fd5b505050505050505050505050565b6060336120001462001b7057604051630f22c43960e41b81526120006004820152602401620011ee565b60005462010000900460ff161562001b9b57604051631785c68160e01b815260040160405180910390fd5b6034805460ff19166001179055604080516020601f8501819004810282018101909252838152600091829162001bec918790879081908401838280828437600092019190915250620084cb92505050565b915091508062001c0f5760405163035ede3560e21b815260040160405180910390fd5b816060015160000362001c35575050604080516000815260208101909152905062001ea8565b606082015160405163e04c83a760e01b81526000916110049163e04c83a79162001c659160040190815260200190565b6020604051808303816000875af115801562001c85573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001cab91906200a30c565b90508062001d525782602001516001600160a01b031683600001516001600160a01b03167fa9084c89a291b43bc984e045671d394974730a159b9a826b577bb148ab504c3a8560600151600160405162001d079291906200a32c565b60405180910390a385858080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092965062001ea895505050505050565b600062001d5f846200862e565b9050600081600481111562001d785762001d786200a2c7565b0362001d9a575050604080516000815260208101909152925062001ea8915050565b6040516000906110049047908381818185875af1925050503d806000811462001de0576040519150601f19603f3d011682016040523d82523d6000602084013e62001de5565b606091505b505090508062001e08576040516312171d8360e31b815260040160405180910390fd5b84602001516001600160a01b031685600001516001600160a01b03167fa9084c89a291b43bc984e045671d394974730a159b9a826b577bb148ab504c3a87606001518560405162001e5b9291906200a32c565b60405180910390a387878080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092985062001ea8975050505050505050565b6034805460ff191690559392505050565b60008162001ec9603f8262008257565b62001ee75760405163056e881160e01b815260040160405180910390fd5b6001600160a01b038084166000908152604160205260409020600d01541691505b50919050565b600054630100000090046001600160a01b0316331462001f41576040516306fbb1e360e01b815260040160405180910390fd5b6001600160a01b0381166000818152600160208190526040808320805460ff1916909217909155517f7fd26be6fc92aff63f1f4409b2b2ddeb272a888031d7f55ec830485ec61941869190a250565b60005462010000900460ff161562001fbb57604051631785c68160e01b815260040160405180910390fd5b3360009081526001602052604090205460ff161562001fed5760405163b1d02c3d60e01b815260040160405180910390fd5b8062001ffb603f8262008257565b620020195760405163056e881160e01b815260040160405180910390fd5b6001600160a01b0382166000908152604160205260409020600a81015460ff166200205757604051634b6b857d60e01b815260040160405180910390fd5b6036546002820154604051630913db4760e01b81526001600160a01b03868116600483015290911690630913db4790602401602060405180830381865afa158015620020a7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620020cd91906200a2ad565b1015620020ed576040516317b204bf60e11b815260040160405180910390fd5b4281600b01541115620021135760405163170cb76760e21b815260040160405180910390fd5b600a8101805460ff191690556049805460019190600090620021379084906200a353565b90915550506040516001600160a01b038416907f9390b453426557da5ebdc31f19a37753ca04addf656d32f35232211bb2af3f1990600090a2505050565b60005462010000900460ff1615620021a057604051631785c68160e01b815260040160405180910390fd5b3360009081526001602052604090205460ff1615620021d25760405163b1d02c3d60e01b815260040160405180910390fd5b620021dc62008c97565b620021e9603f8262008257565b620022075760405163056e881160e01b815260040160405180910390fd5b6001600160a01b0382166200222f57604051636520611b60e11b815260040160405180910390fd5b6001600160a01b03828116600090815260436020526040902054161515806200227057506001600160a01b03821660009081526047602052604090205460ff165b156200228f57604051631e6f587560e11b815260040160405180910390fd5b60006200229b62008c97565b6001600160a01b0381166000908152604160205260409020600c810154919250904290620022cd90610258906200a297565b1115620022ed57604051631f92cdbd60e11b815260040160405180910390fd5b80546001600160a01b039081166000908152604460209081526040808320429081905585548986166001600160a01b031991821681178855600c88019290925581855260439093528184208054958816959093168517909255519092917f6e4e747ca35203f16401c69805c7dd52fff67ef60b0ebc5c7fe16890530f223591a350505050565b3362002381603f8262008257565b6200239f5760405163056e881160e01b815260040160405180910390fd5b60005462010000900460ff1615620023ca57604051631785c68160e01b815260040160405180910390fd5b3360009081526001602052604090205460ff1615620023fc5760405163b1d02c3d60e01b815260040160405180910390fd5b6001600160a01b038281166000908152604d60205260409020541615620024365760405163bebdc75760e01b815260040160405180910390fd5b62002443603f8362008257565b15620024625760405163bebdc75760e01b815260040160405180910390fd5b336000818152604160205260409020600d01546001600160a01b039081169084168103620024a35760405163bebdc75760e01b815260040160405180910390fd5b6001600160a01b03811615620024da576001600160a01b0381166000908152604d6020526040902080546001600160a01b03191690555b6001600160a01b038281166000908152604160205260409020600d0180546001600160a01b0319169186169182179055156200253f576001600160a01b038481166000908152604d6020526040902080546001600160a01b0319169184169190911790555b836001600160a01b0316816001600160a01b0316836001600160a01b03167fcbb728765de145e99c00e8ae32a325231e850359b7b8a6da3b84d672ab3f1d0a60405160405180910390a450505050565b600054630100000090046001600160a01b03163314620025c2576040516306fbb1e360e01b815260040160405180910390fd5b6001600160a01b038116600081815260016020526040808220805460ff19169055517fe0db3499b7fdc3da4cddff5f45d694549c19835e7f719fb5606d3ad1a5de40119190a250565b60005462010000900460ff16156200263657604051631785c68160e01b815260040160405180910390fd5b3360009081526001602052604090205460ff1615620026685760405163b1d02c3d60e01b815260040160405180910390fd5b8162002676603f8262008257565b620026945760405163056e881160e01b815260040160405180910390fd5b81600003620026b657604051639811e0c760e01b815260040160405180910390fd5b6001600160a01b03808416600090815260416020908152604080832081516101808101835281548616815260018201548616938101939093526002810154909416908201526003830154606082015260048301805433949160808401916200271e906200a1fe565b80601f01602080910402602001604051908101604052809291908181526020018280546200274c906200a1fe565b80156200279d5780601f1062002771576101008083540402835291602001916200279d565b820191906000526020600020905b8154815290600101906020018083116200277f57829003601f168201915b5050505050815260200160058201604051806080016040529081600082018054620027c8906200a1fe565b80601f0160208091040260200160405190810160405280929190818152602001828054620027f6906200a1fe565b8015620028475780601f106200281b5761010080835404028352916020019162002847565b820191906000526020600020905b8154815290600101906020018083116200282957829003601f168201915b5050505050815260200160018201805462002862906200a1fe565b80601f016020809104026020016040519081016040528092919081815260200182805462002890906200a1fe565b8015620028e15780601f10620028b557610100808354040283529160200191620028e1565b820191906000526020600020905b815481529060010190602001808311620028c357829003601f168201915b50505050508152602001600282018054620028fc906200a1fe565b80601f01602080910402602001604051908101604052809291908181526020018280546200292a906200a1fe565b80156200297b5780601f106200294f576101008083540402835291602001916200297b565b820191906000526020600020905b8154815290600101906020018083116200295d57829003601f168201915b5050505050815260200160038201805462002996906200a1fe565b80601f0160208091040260200160405190810160405280929190818152602001828054620029c4906200a1fe565b801562002a155780601f10620029e95761010080835404028352916020019162002a15565b820191906000526020600020905b815481529060010190602001808311620029f757829003601f168201915b505050919092525050508152604080516060808201835260098501546001600160401b038082168452600160401b82048116602080860191909152600160801b9092041683850152840191909152600a84015460ff16151582840152600b84015490830152600c8301546080830152600d8301546001600160a01b031660a0830152805161026081019182905260c09092019190600e84019060139082845b81548152602001906001019080831162002ab4575050509190925250505060408082015190516326ccee8b60e11b81526001600160a01b0385811660048301526024820188905292935060009290911690634d99dd16906044016020604051808303816000875af115801562002b2e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062002b5491906200a2ad565b9050826001600160a01b0316866001600160a01b03167f3aace7340547de7b9156593a7652dc07ee900cea3fd8f82cb6c9d38b40829802878460405162002ba5929190918252602082015260400190565b60405180910390a3856001600160a01b0316836001600160a01b03160362002bd25762002bd28662008cd8565b6040808301519051633041949b60e01b815261200591633041949b9162002bff919087906004016200a234565b600060405180830381600087803b15801562002c1a57600080fd5b505af115801562002c2f573d6000803e3d6000fd5b50505050505050505050565b60005462010000900460ff161562002c6657604051631785c68160e01b815260040160405180910390fd5b3360009081526001602052604090205460ff161562002c985760405163b1d02c3d60e01b815260040160405180910390fd5b8362002ca6603f8262008257565b62002cc45760405163056e881160e01b815260040160405180910390fd5b8362002cd2603f8262008257565b62002cf05760405163056e881160e01b815260040160405180910390fd5b6034805460ff19166001179055600084900362002d2057604051639811e0c760e01b815260040160405180910390fd5b846001600160a01b0316866001600160a01b03160362002d535760405163f0e3e62960e01b815260040160405180910390fd5b6001600160a01b038087166000908152604160209081526040808320815161018081018352815486168152600182015486169381019390935260028101549094169082015260038301546060820152600483018054339491608084019162002dbb906200a1fe565b80601f016020809104026020016040519081016040528092919081815260200182805462002de9906200a1fe565b801562002e3a5780601f1062002e0e5761010080835404028352916020019162002e3a565b820191906000526020600020905b81548152906001019060200180831162002e1c57829003601f168201915b505050505081526020016005820160405180608001604052908160008201805462002e65906200a1fe565b80601f016020809104026020016040519081016040528092919081815260200182805462002e93906200a1fe565b801562002ee45780601f1062002eb85761010080835404028352916020019162002ee4565b820191906000526020600020905b81548152906001019060200180831162002ec657829003601f168201915b5050505050815260200160018201805462002eff906200a1fe565b80601f016020809104026020016040519081016040528092919081815260200182805462002f2d906200a1fe565b801562002f7e5780601f1062002f525761010080835404028352916020019162002f7e565b820191906000526020600020905b81548152906001019060200180831162002f6057829003601f168201915b5050505050815260200160028201805462002f99906200a1fe565b80601f016020809104026020016040519081016040528092919081815260200182805462002fc7906200a1fe565b8015620030185780601f1062002fec5761010080835404028352916020019162003018565b820191906000526020600020905b81548152906001019060200180831162002ffa57829003601f168201915b5050505050815260200160038201805462003033906200a1fe565b80601f016020809104026020016040519081016040528092919081815260200182805462003061906200a1fe565b8015620030b25780601f106200308657610100808354040283529160200191620030b2565b820191906000526020600020905b8154815290600101906020018083116200309457829003601f168201915b505050919092525050508152604080516060808201835260098501546001600160401b038082168452600160401b82048116602080860191909152600160801b9092041683850152840191909152600a84015460ff16151582840152600b84015490830152600c8301546080830152600d8301546001600160a01b031660a0830152805161026081019182905260c09092019190600e84019060139082845b8154815260200190600101908083116200315157505050919092525050506001600160a01b03808916600090815260416020908152604080832081516101808101835281548616815260018201548616938101939093526002810154909416908201526003830154606082015260048301805494955091939092916080840191620031dc906200a1fe565b80601f01602080910402602001604051908101604052809291908181526020018280546200320a906200a1fe565b80156200325b5780601f106200322f576101008083540402835291602001916200325b565b820191906000526020600020905b8154815290600101906020018083116200323d57829003601f168201915b505050505081526020016005820160405180608001604052908160008201805462003286906200a1fe565b80601f0160208091040260200160405190810160405280929190818152602001828054620032b4906200a1fe565b8015620033055780601f10620032d95761010080835404028352916020019162003305565b820191906000526020600020905b815481529060010190602001808311620032e757829003601f168201915b5050505050815260200160018201805462003320906200a1fe565b80601f01602080910402602001604051908101604052809291908181526020018280546200334e906200a1fe565b80156200339f5780601f1062003373576101008083540402835291602001916200339f565b820191906000526020600020905b8154815290600101906020018083116200338157829003601f168201915b50505050508152602001600282018054620033ba906200a1fe565b80601f0160208091040260200160405190810160405280929190818152602001828054620033e8906200a1fe565b8015620034395780601f106200340d5761010080835404028352916020019162003439565b820191906000526020600020905b8154815290600101906020018083116200341b57829003601f168201915b5050505050815260200160038201805462003454906200a1fe565b80601f016020809104026020016040519081016040528092919081815260200182805462003482906200a1fe565b8015620034d35780601f10620034a757610100808354040283529160200191620034d3565b820191906000526020600020905b815481529060010190602001808311620034b557829003601f168201915b505050919092525050508152604080516060808201835260098501546001600160401b038082168452600160401b82048116602080860191909152600160801b9092041683850152840191909152600a84015460ff16151582840152600b84015490830152600c8301546080830152600d8301546001600160a01b031660a0830152805161026081019182905260c09092019190600e84019060139082845b815481526020019060010190808311620035725750505050508152505090508060e001518015620035b55750876001600160a01b0316836001600160a01b031614155b15620035d457604051636468920360e01b815260040160405180910390fd5b60408083015190516352e82ce560e11b81526001600160a01b038581166004830152602482018a9052600092169063a5d059ca906044016020604051808303816000875af11580156200362b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200365191906200a2ad565b9050603754811015620036775760405163dc6f0bdd60e01b815260040160405180910390fd5b896001600160a01b0316846001600160a01b03161480156200370c57506036546040808501519051630913db4760e01b81526001600160a01b038d8116600483015290911690630913db4790602401602060405180830381865afa158015620036e4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200370a91906200a2ad565b105b156200372b576040516317b204bf60e11b815260040160405180910390fd5b6000620186a0603a54836200374191906200a369565b6200374d91906200a274565b9050600083604001516001600160a01b03168260405160006040518083038185875af1925050503d8060008114620037a2576040519150601f19603f3d011682016040523d82523d6000602084013e620037a7565b606091505b5050905080620037ca576040516312171d8360e31b815260040160405180910390fd5b620037d682846200a353565b60408086015190516317066a5760e21b81526001600160a01b03898116600483015292955060009290911690635c19a95c90869060240160206040518083038185885af11580156200382c573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906200385391906200a2ad565b9050866001600160a01b03168c6001600160a01b03168e6001600160a01b03167ffdac6e81913996d95abcc289e90f2d8bd235487ce6fe6f821e7d21002a1915b48e8589604051620038b8939291909283526020830191909152604082015260600190565b60405180910390a4604080516002808252606082018352600092602083019080368337019050509050866040015181600081518110620038fc57620038fc6200a383565b60200260200101906001600160a01b031690816001600160a01b0316815250508560400151816001815181106200393757620039376200a383565b6001600160a01b0390921660209283029190910190910152604051634484077560e01b815261200590634484077590620039789084908c906004016200a399565b600060405180830381600087803b1580156200399357600080fd5b505af1158015620039a8573d6000803e3d6000fd5b505050508a1562003a1a576120056001600160a01b031663e5ed5b1e898f6040518363ffffffff1660e01b8152600401620039e59291906200a234565b600060405180830381600087803b15801562003a0057600080fd5b505af115801562003a15573d6000803e3d6000fd5b505050505b50506034805460ff19169055505050505050505050505050565b60005462010000900460ff161562003a5f57604051631785c68160e01b815260040160405180910390fd5b3360009081526001602052604090205460ff161562003a915760405163b1d02c3d60e01b815260040160405180910390fd5b62003a9b62008c97565b62003aa8603f8262008257565b62003ac65760405163056e881160e01b815260040160405180910390fd5b600062003ad262008c97565b6001600160a01b0381166000908152604160205260409020600c81015491925090429062003b0490610258906200a297565b111562003b2457604051631f92cdbd60e11b815260040160405180910390fd5b60098101546001600160401b03600160401b9091048116908516111562003b5e5760405163dc81db8560e01b815260040160405180910390fd5b60098101546000906001600160401b03908116908616101562003b9c57600982015462003b969086906001600160401b03166200a3c5565b62003bb6565b600982015462003bb6906001600160401b0316866200a3c5565b60098301546001600160401b039182169250600160801b90041681111562003bf15760405163dc81db8560e01b815260040160405180910390fd5b60098201805467ffffffffffffffff19166001600160401b03871690811790915542600c8401556040519081526001600160a01b038416907f78cdd96edf59e09cfd4d26ef6ef6c92d166effe6a40970c54821206d541932cb9060200160405180910390a25050505050565b6060806060600062003c70603f62008dfe565b905080861015620042f957841562003c89578462003c8b565b805b945060008562003c9c88846200a353565b1162003cb45762003cae87836200a353565b62003cb6565b855b9050806001600160401b0381111562003cd35762003cd362009a81565b60405190808252806020026020018201604052801562003cfd578160200160208202803683370190505b509450806001600160401b0381111562003d1b5762003d1b62009a81565b60405190808252806020026020018201604052801562003d45578160200160208202803683370190505b509350806001600160401b0381111562003d635762003d6362009a81565b60405190808252806020026020018201604052801562003d9857816020015b606081526020019060019003908162003d825790505b50925060005b81811015620042f657600062003dc262003db9838b6200a297565b603f9062008e09565b6001600160a01b0380821660009081526041602090815260408083208151610180810183528154861681526001820154861693810193909352600281015490941690820152600383015460608201526004830180549495509193909291608084019162003e2f906200a1fe565b80601f016020809104026020016040519081016040528092919081815260200182805462003e5d906200a1fe565b801562003eae5780601f1062003e825761010080835404028352916020019162003eae565b820191906000526020600020905b81548152906001019060200180831162003e9057829003601f168201915b505050505081526020016005820160405180608001604052908160008201805462003ed9906200a1fe565b80601f016020809104026020016040519081016040528092919081815260200182805462003f07906200a1fe565b801562003f585780601f1062003f2c5761010080835404028352916020019162003f58565b820191906000526020600020905b81548152906001019060200180831162003f3a57829003601f168201915b5050505050815260200160018201805462003f73906200a1fe565b80601f016020809104026020016040519081016040528092919081815260200182805462003fa1906200a1fe565b801562003ff25780601f1062003fc65761010080835404028352916020019162003ff2565b820191906000526020600020905b81548152906001019060200180831162003fd457829003601f168201915b505050505081526020016002820180546200400d906200a1fe565b80601f01602080910402602001604051908101604052809291908181526020018280546200403b906200a1fe565b80156200408c5780601f1062004060576101008083540402835291602001916200408c565b820191906000526020600020905b8154815290600101906020018083116200406e57829003601f168201915b50505050508152602001600382018054620040a7906200a1fe565b80601f0160208091040260200160405190810160405280929190818152602001828054620040d5906200a1fe565b8015620041265780601f10620040fa5761010080835404028352916020019162004126565b820191906000526020600020905b8154815290600101906020018083116200410857829003601f168201915b505050919092525050508152604080516060808201835260098501546001600160401b038082168452600160401b82048116602080860191909152600160801b9092041683850152840191909152600a84015460ff16151582840152600b84015490830152600c8301546080830152600d8301546001600160a01b031660a0830152805161026081019182905260c09092019190600e84019060139082845b815481526020019060010190808311620041c55750505050508152505090508060000151888481518110620041fe57620041fe6200a383565b60200260200101906001600160a01b031690816001600160a01b0316815250508060e00151620042975780604001516001600160a01b03166315d1f8986040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200426b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200429191906200a2ad565b6200429a565b60005b878481518110620042af57620042af6200a383565b6020026020010181815250508060800151868481518110620042d557620042d56200a383565b6020026020010181905250505080620042ee906200a3e8565b905062003d9e565b50505b92959194509250565b60005462010000900460ff16156200432d57604051631785c68160e01b815260040160405180910390fd5b3360009081526001602052604090205460ff16156200435f5760405163b1d02c3d60e01b815260040160405180910390fd5b336200436d603f8262008257565b156200438c57604051635f28f62b60e01b815260040160405180910390fd5b6001600160a01b038181166000908152604d60205260409020541615620043c657604051631a0a9b9f60e21b815260040160405180910390fd5b6001600160a01b03888116600090815260436020526040902054161515806200440757506001600160a01b03881660009081526047602052604090205460ff165b156200442657604051631e6f587560e11b815260040160405180910390fd5b60006001600160a01b031660458888604051620044459291906200a24e565b908152604051908190036020019020546001600160a01b03161415806200448f5750604887876040516200447b9291906200a24e565b9081526040519081900360200190205460ff165b15620044ae576040516311fdb94760e01b815260040160405180910390fd5b6000620044bc83806200a404565b604051602001620044cf9291906200a24e565b60408051601f1981840301815291815281516020928301206000818152604290935291205490915060ff1615620045195760405163c0bf414360e01b815260040160405180910390fd5b60006200452f670de0b6b3a7640000346200a353565b905060365481101562004555576040516317b204bf60e11b815260040160405180910390fd5b6001600160a01b038a166200457d57604051636520611b60e11b815260040160405180910390fd5b61138862004592604087016020880162009c65565b6001600160401b03161180620045d85750620045b5604086016020870162009c65565b6001600160401b0316620045cd602087018762009c65565b6001600160401b0316115b80620046175750620045f1604086016020870162009c65565b6001600160401b03166200460c606087016040880162009c65565b6001600160401b0316115b15620046365760405163dc81db8560e01b815260040160405180910390fd5b620046816200464685806200a404565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525062008e1792505050565b6200469f57604051635dba5ad760e01b815260040160405180910390fd5b620046ae838a8a8a8a62008fb9565b620046cc57604051631647e3cb60e11b815260040160405180910390fd5b60006200471a84620046df87806200a404565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250620090e992505050565b905062004729603f85620091ea565b506000838152604260209081526040808320805460ff191660019081179091556001600160a01b0380891680865260419094529190932080548f83166001600160a01b031991821617825593810180548516909317909255600282018054918516919093161790915542600382015560048101620047a98b8d836200a4ac565b508560058201620047bb82826200a574565b5087905060098201620047cf82826200a6ad565b505042600c8201556001600160a01b038c81166000908152604360205260409081902080546001600160a01b031916928816929092179091555185906045906200481d908e908e906200a24e565b908152602001604051809103902060006101000a8154816001600160a01b0302191690836001600160a01b03160217905550816001600160a01b0316856001600160a01b03168d6001600160a01b03167faecd9fb95e79c75a3a1de93362c6be5fe6ab65770d8614be583884161cd8228d8e8e604051620048a09291906200a77d565b60405180910390a460408051848152602081018590526001600160a01b0387169182916000805160206200ba84833981519152910160405180910390a360408051670de0b6b3a7640000808252602082015261dead916001600160a01b038816916000805160206200ba84833981519152910160405180910390a3604051633041949b60e01b815261200590633041949b906200494490859089906004016200a234565b600060405180830381600087803b1580156200495f57600080fd5b505af115801562004974573d6000803e3d6000fd5b50505050505050505050505050505050565b604080516060810182526000808252602082018190529181019190915281620049b1603f8262008257565b620049cf5760405163056e881160e01b815260040160405180910390fd5b50506001600160a01b031660009081526041602090815260409182902082516060810184526009909101546001600160401b038082168352600160401b8204811693830193909352600160801b90049091169181019190915290565b6001600160a01b0380821660009081526041602090815260408083208151610180810183528154861681526001820154861693810193909352600281015490941690820152600383015460608281019190915260048401805491949160808401919062004a98906200a1fe565b80601f016020809104026020016040519081016040528092919081815260200182805462004ac6906200a1fe565b801562004b175780601f1062004aeb5761010080835404028352916020019162004b17565b820191906000526020600020905b81548152906001019060200180831162004af957829003601f168201915b505050505081526020016005820160405180608001604052908160008201805462004b42906200a1fe565b80601f016020809104026020016040519081016040528092919081815260200182805462004b70906200a1fe565b801562004bc15780601f1062004b955761010080835404028352916020019162004bc1565b820191906000526020600020905b81548152906001019060200180831162004ba357829003601f168201915b5050505050815260200160018201805462004bdc906200a1fe565b80601f016020809104026020016040519081016040528092919081815260200182805462004c0a906200a1fe565b801562004c5b5780601f1062004c2f5761010080835404028352916020019162004c5b565b820191906000526020600020905b81548152906001019060200180831162004c3d57829003601f168201915b5050505050815260200160028201805462004c76906200a1fe565b80601f016020809104026020016040519081016040528092919081815260200182805462004ca4906200a1fe565b801562004cf55780601f1062004cc95761010080835404028352916020019162004cf5565b820191906000526020600020905b81548152906001019060200180831162004cd757829003601f168201915b5050505050815260200160038201805462004d10906200a1fe565b80601f016020809104026020016040519081016040528092919081815260200182805462004d3e906200a1fe565b801562004d8f5780601f1062004d635761010080835404028352916020019162004d8f565b820191906000526020600020905b81548152906001019060200180831162004d7157829003601f168201915b505050919092525050508152604080516060808201835260098501546001600160401b038082168452600160401b82048116602080860191909152600160801b9092041683850152840191909152600a84015460ff16151582840152600b84015490830152600c8301546080830152600d8301546001600160a01b031660a0830152805161026081019182905260c09092019190600e84019060139082845b81548152602001906001019080831162004e2e5750505091909252505050608001519392505050565b336110011462004e7f57604051630f22c43960e41b81526110016004820152602401620011ee565b6001600160a01b038082166000908152604360205260409020541662004ea7603f8262008257565b62004ec55760405163056e881160e01b815260040160405180910390fd5b6001600160a01b038181166000908152604160205260408082206002810154603b54925163045bc4d160e41b81526004810193909352909316906345bc4d10906024016020604051808303816000875af115801562004f28573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062004f4e91906200a2ad565b90506000603d544262004f6291906200a297565b905062004f70838262008304565b836001600160a01b03167f6e9a2ee7aee95665e3a774a212eb11441b217e3e4656ab9563793094689aabb28284600160405162004fb0939291906200a2dd565b60405180910390a26002830154604051633041949b60e01b815261200591633041949b9162004fee916001600160a01b03169088906004016200a234565b600060405180830381600087803b1580156200500957600080fd5b505af11580156200501e573d6000803e3d6000fd5b505050505050505050565b600054610100900460ff16158080156200504a5750600054600160ff909116105b80620050665750303b15801562005066575060005460ff166001145b620050cb5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608401620011ee565b6000805460ff191660011790558015620050ef576000805461ff0019166101001790555b334114620051105760405163022d8c9560e31b815260040160405180910390fd5b3a1562005130576040516383f1b1d360e01b815260040160405180910390fd5b611388603555686c6b935b8bbd400000603655670de0b6b3a7640000603755602d603855607860398190556002603a819055678ac7230489e80000603b55680ad78ebc5ac6200000603c55603d9190915560b4603e55604a556040805160c0810190915260a080825260609182916200baa46020830139806020019051810190620051bc91906200a7b9565b9150604051806101e001604052806101c081526020016200bb446101c09139806020019051810190620051f091906200a85d565b905060005b82518110156200525f576001604760008584815181106200521a576200521a6200a383565b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff191691151591909117905562005257816200a3e8565b9050620051f5565b5060005b8151811015620052d057600160488383815181106200528657620052866200a383565b60200260200101516040516200529d91906200a95a565b908152604051908190036020019020805491151560ff19909216919091179055620052c8816200a3e8565b905062005263565b50620052f07304d63abcd2b9b1baa327f2dda0f873f197ccd18662009201565b5050801562001819576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a150565b33612000146200536357604051630f22c43960e41b81526120006004820152602401620011ee565b7faa5ba621c8b3d7d05bb9e51a7506108251d4d5dbe542ca66fc7bb52aacb02b6583838360405162005398939291906200a978565b60405180910390a1505050565b600054630100000090046001600160a01b03163314620053d8576040516306fbb1e360e01b815260040160405180910390fd5b60005462010000900460ff16156200540357604051631785c68160e01b815260040160405180910390fd5b6000805462ff00001916620100001781556040517f9e87fac88ff661f02d44f95383c817fece4bce600a3dab7a54406878b965e7529190a1565b60006200544c603f8462008257565b6200546a5760405163056e881160e01b815260040160405180910390fd5b6001600160a01b0383811660009081526041602052604090819020600201549051636bbf224960e01b815260048101859052911690636bbf2249906024015b602060405180830381865afa158015620054c7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620054ed91906200a2ad565b90505b92915050565b60005462010000900460ff16156200552157604051631785c68160e01b815260040160405180910390fd5b3360009081526001602052604090205460ff1615620055535760405163b1d02c3d60e01b815260040160405180910390fd5b8162005561603f8262008257565b6200557f5760405163056e881160e01b815260040160405180910390fd5b6037543490811015620055a55760405163dc6f0bdd60e01b815260040160405180910390fd5b6001600160a01b03808516600090815260416020908152604080832081516101808101835281548616815260018201548616938101939093526002810154909416908201526003830154606082015260048301805433949160808401916200560d906200a1fe565b80601f01602080910402602001604051908101604052809291908181526020018280546200563b906200a1fe565b80156200568c5780601f1062005660576101008083540402835291602001916200568c565b820191906000526020600020905b8154815290600101906020018083116200566e57829003601f168201915b5050505050815260200160058201604051806080016040529081600082018054620056b7906200a1fe565b80601f0160208091040260200160405190810160405280929190818152602001828054620056e5906200a1fe565b8015620057365780601f106200570a5761010080835404028352916020019162005736565b820191906000526020600020905b8154815290600101906020018083116200571857829003601f168201915b5050505050815260200160018201805462005751906200a1fe565b80601f01602080910402602001604051908101604052809291908181526020018280546200577f906200a1fe565b8015620057d05780601f10620057a457610100808354040283529160200191620057d0565b820191906000526020600020905b815481529060010190602001808311620057b257829003601f168201915b50505050508152602001600282018054620057eb906200a1fe565b80601f016020809104026020016040519081016040528092919081815260200182805462005819906200a1fe565b80156200586a5780601f106200583e576101008083540402835291602001916200586a565b820191906000526020600020905b8154815290600101906020018083116200584c57829003601f168201915b5050505050815260200160038201805462005885906200a1fe565b80601f0160208091040260200160405190810160405280929190818152602001828054620058b3906200a1fe565b8015620059045780601f10620058d85761010080835404028352916020019162005904565b820191906000526020600020905b815481529060010190602001808311620058e657829003601f168201915b505050919092525050508152604080516060808201835260098501546001600160401b038082168452600160401b82048116602080860191909152600160801b9092041683850152840191909152600a84015460ff16151582840152600b84015490830152600c8301546080830152600d8301546001600160a01b031660a0830152805161026081019182905260c09092019190600e84019060139082845b815481526020019060010190808311620059a35750505050508152505090508060e001518015620059e65750856001600160a01b0316826001600160a01b031614155b1562005a0557604051636468920360e01b815260040160405180910390fd5b60408082015190516317066a5760e21b81526001600160a01b0384811660048301526000921690635c19a95c90869060240160206040518083038185885af115801562005a56573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019062005a7d91906200a2ad565b9050826001600160a01b0316876001600160a01b03166000805160206200ba84833981519152838760405162005abd929190918252602082015260400190565b60405180910390a36040808301519051633041949b60e01b815261200591633041949b9162005af2919087906004016200a234565b600060405180830381600087803b15801562005b0d57600080fd5b505af115801562005b22573d6000803e3d6000fd5b50505050851562001812576040516372f6ad8f60e11b81526120059063e5ed5b1e9062005b569086908b906004016200a234565b600060405180830381600087803b15801562005b7157600080fd5b505af115801562005b86573d6000803e3d6000fd5b5050505050505050505050565b62005bbf6040518060800160405280606081526020016060815260200160608152602001606081525090565b8162005bcd603f8262008257565b62005beb5760405163056e881160e01b815260040160405180910390fd5b6001600160a01b0383166000908152604160205260409081902081516080810190925260050180548290829062005c22906200a1fe565b80601f016020809104026020016040519081016040528092919081815260200182805462005c50906200a1fe565b801562005ca15780601f1062005c755761010080835404028352916020019162005ca1565b820191906000526020600020905b81548152906001019060200180831162005c8357829003601f168201915b5050505050815260200160018201805462005cbc906200a1fe565b80601f016020809104026020016040519081016040528092919081815260200182805462005cea906200a1fe565b801562005d3b5780601f1062005d0f5761010080835404028352916020019162005d3b565b820191906000526020600020905b81548152906001019060200180831162005d1d57829003601f168201915b5050505050815260200160028201805462005d56906200a1fe565b80601f016020809104026020016040519081016040528092919081815260200182805462005d84906200a1fe565b801562005dd55780601f1062005da95761010080835404028352916020019162005dd5565b820191906000526020600020905b81548152906001019060200180831162005db757829003601f168201915b5050505050815260200160038201805462005df0906200a1fe565b80601f016020809104026020016040519081016040528092919081815260200182805462005e1e906200a1fe565b801562005e6f5780601f1062005e435761010080835404028352916020019162005e6f565b820191906000526020600020905b81548152906001019060200180831162005e5157829003601f168201915b505050505081525050915050919050565b60005462010000900460ff161562005eab57604051631785c68160e01b815260040160405180910390fd5b3360009081526001602052604090205460ff161562005edd5760405163b1d02c3d60e01b815260040160405180910390fd5b62005ee982826200929a565b5050565b336110071462005f1557604051630f22c43960e41b81526110076004820152602401620011ee565b62005f826040518060400160405280601081526020016f1d1c985b9cd9995c91d85cd31a5b5a5d60821b81525085858080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509293925050620093a69050565b156200603d576020811462005fb45783838383604051630a5a604160e01b8152600401620011ee94939291906200a997565b604080516020601f840181900481028201810190925282815260009162005ff7918585808385018382808284376000920191909152509293925050620094039050565b90506108fc8110806200600b575061271081115b15620060345784848484604051630a5a604160e01b8152600401620011ee94939291906200a997565b60355562006d47565b620060ae6040518060400160405280601481526020017336b4b729b2b6332232b632b3b0ba34b7b721272160611b81525085858080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509293925050620093a69050565b15620061785760208114620060e05783838383604051630a5a604160e01b8152600401620011ee94939291906200a997565b604080516020601f840181900481028201810190925282815260009162006123918585808385018382808284376000920191909152509293925050620094039050565b9050683635c9adc5dea0000081108062006146575069152d02c7e14af680000081115b156200616f5784848484604051630a5a604160e01b8152600401620011ee94939291906200a997565b60365562006d47565b620061eb604051806040016040528060168152602001756d696e44656c65676174696f6e424e424368616e676560501b81525085858080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509293925050620093a69050565b15620062b257602081146200621d5783838383604051630a5a604160e01b8152600401620011ee94939291906200a997565b604080516020601f840181900481028201810190925282815260009162006260918585808385018382808284376000920191909152509293925050620094039050565b905067016345785d8a0000811080620062805750678ac7230489e8000081115b15620062a95784848484604051630a5a604160e01b8152600401620011ee94939291906200a997565b60375562006d47565b62006323604051806040016040528060148152602001736d6178456c656374656456616c696461746f727360601b81525085858080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509293925050620093a69050565b15620063db5760208114620063555783838383604051630a5a604160e01b8152600401620011ee94939291906200a997565b604080516020601f840181900481028201810190925282815260009162006398918585808385018382808284376000920191909152509293925050620094039050565b9050801580620063a957506101f481115b15620063d25784848484604051630a5a604160e01b8152600401620011ee94939291906200a997565b60385562006d47565b620064446040518060400160405280600c81526020016b1d5b989bdb9914195c9a5bd960a21b81525085858080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509293925050620093a69050565b15620065015760208114620064765783838383604051630a5a604160e01b8152600401620011ee94939291906200a997565b604080516020601f8401819004810282018101909252828152600091620064b9918585808385018382808284376000920191909152509293925050620094039050565b90506203f480811080620064cf575062278d0081115b15620064f85784848484604051630a5a604160e01b8152600401620011ee94939291906200a997565b60395562006d47565b6200656f60405180604001604052806011815260200170726564656c65676174654665655261746560781b81525085858080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509293925050620093a69050565b156200661c5760208114620065a15783838383604051630a5a604160e01b8152600401620011ee94939291906200a997565b604080516020601f8401819004810282018101909252828152600091620065e4918585808385018382808284376000920191909152509293925050620094039050565b90506064811115620066135784848484604051630a5a604160e01b8152600401620011ee94939291906200a997565b603a5562006d47565b6200668c60405180604001604052806013815260200172191bdddb9d1a5b5954db185cda105b5bdd5b9d606a1b81525085858080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509293925050620093a69050565b156200674d5760208114620066be5783838383604051630a5a604160e01b8152600401620011ee94939291906200a997565b604080516020601f840181900481028201810190925282815260009162006701918585808385018382808284376000920191909152509293925050620094039050565b9050674563918244f400008110806200671b5750603c5481115b15620067445784848484604051630a5a604160e01b8152600401620011ee94939291906200a997565b603b5562006d47565b620067bb6040518060400160405280601181526020017019995b1bdb9e54db185cda105b5bdd5b9d607a1b81525085858080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509293925050620093a69050565b156200687e5760208114620067ed5783838383604051630a5a604160e01b8152600401620011ee94939291906200a997565b604080516020601f840181900481028201810190925282815260009162006830918585808385018382808284376000920191909152509293925050620094039050565b905068056bc75e2d631000008110806200684c5750603b548111155b15620068755784848484604051630a5a604160e01b8152600401620011ee94939291906200a997565b603c5562006d47565b620068eb6040518060400160405280601081526020016f646f776e74696d654a61696c54696d6560801b81525085858080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509293925050620093a69050565b15620069a857602081146200691d5783838383604051630a5a604160e01b8152600401620011ee94939291906200a997565b604080516020601f840181900481028201810190925282815260009162006960918585808385018382808284376000920191909152509293925050620094039050565b90506202a300811080620069765750603e548110155b156200699f5784848484604051630a5a604160e01b8152600401620011ee94939291906200a997565b603d5562006d47565b62006a136040518060400160405280600e81526020016d66656c6f6e794a61696c54696d6560901b81525085858080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509293925050620093a69050565b1562006ad0576020811462006a455783838383604051630a5a604160e01b8152600401620011ee94939291906200a997565b604080516020601f840181900481028201810190925282815260009162006a88918585808385018382808284376000920191909152509293925050620094039050565b9050620d2f0081108062006a9e5750603d548111155b1562006ac75784848484604051630a5a604160e01b8152600401620011ee94939291906200a997565b603e5562006d47565b62006b4a6040518060400160405280601c81526020017f6d617846656c6f6e794265747765656e42726561746865426c6f636b0000000081525085858080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509293925050620093a69050565b1562006bf6576020811462006b7c5783838383604051630a5a604160e01b8152600401620011ee94939291906200a997565b604080516020601f840181900481028201810190925282815260009162006bbf918585808385018382808284376000920191909152509293925050620094039050565b90508060000362006bed5784848484604051630a5a604160e01b8152600401620011ee94939291906200a997565b604a5562006d47565b62006c646040518060400160405280601181526020017039ba30b5b2a43ab1283937ba32b1ba37b960791b81525085858080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509293925050620093a69050565b1562006d24576014811462006c965783838383604051630a5a604160e01b8152600401620011ee94939291906200a997565b600062006cde601484848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509293925050620094039050565b90506001600160a01b03811662006d125784848484604051630a5a604160e01b8152600401620011ee94939291906200a997565b62006d1d8162009408565b5062006d47565b838383836040516325ee20d560e21b8152600401620011ee94939291906200a997565b7ff1ce9b2cbf50eeb05769a29e2543fd350cab46894a7dd9978a12d534bb20e6338484848460405162006d7e94939291906200a997565b60405180910390a150505050565b60005462010000900460ff161562006db757604051631785c68160e01b815260040160405180910390fd5b3360009081526001602052604090205460ff161562006de95760405163b1d02c3d60e01b815260040160405180910390fd5b816000816001600160401b0381111562006e075762006e0762009a81565b60405190808252806020026020018201604052801562006e31578160200160208202803683370190505b5090506000805b8381101562006f2f5762006e7a87878381811062006e5a5762006e5a6200a383565b905060200201602081019062006e71919062009910565b603f9062008257565b62006e985760405163056e881160e01b815260040160405180910390fd5b6041600088888481811062006eb15762006eb16200a383565b905060200201602081019062006ec8919062009910565b6001600160a01b039081168252602082019290925260400160002060020154845191169250829084908390811062006f045762006f046200a383565b6001600160a01b039092166020928302919091019091015262006f27816200a3e8565b905062006e38565b50604051634484077560e01b81526120059063448407759062002bff90859088906004016200a399565b606080600062006f6a603f62008dfe565b9050808510156200712e57831562006f83578362006f85565b805b935060008462006f9687846200a353565b1162006fae5762006fa886836200a353565b62006fb0565b845b9050806001600160401b0381111562006fcd5762006fcd62009a81565b60405190808252806020026020018201604052801562006ff7578160200160208202803683370190505b509350806001600160401b0381111562007015576200701562009a81565b6040519080825280602002602001820160405280156200703f578160200160208202803683370190505b50925060005b818110156200712b576200705e62003db982896200a297565b8582815181106200707357620070736200a383565b60200260200101906001600160a01b031690816001600160a01b03168152505060416000868381518110620070ac57620070ac6200a383565b60200260200101516001600160a01b03166001600160a01b0316815260200190815260200160002060020160009054906101000a90046001600160a01b03168482815181106200710057620071006200a383565b6001600160a01b039092166020928302919091019091015262007123816200a3e8565b905062007045565b50505b9250925092565b33611001146200715d57604051630f22c43960e41b81526110016004820152602401620011ee565b60005462010000900460ff16156200718857604051631785c68160e01b815260040160405180910390fd5b6001600160a01b0380821660009081526043602052604090205416620071b0603f8262008257565b620071ce5760405163056e881160e01b815260040160405180910390fd5b6001600160a01b038116600090815260416020526040812090620071f5610258426200a274565b604a546000828152604b602052604090205491925011620072295760405163bd52fcdb60e01b815260040160405180910390fd5b6000818152604b602052604081208054600192906200724a9084906200a297565b90915550506001600160a01b038416600090815260446020526040902054158015906200729e57506001600160a01b03841660009081526044602052604090205442906200729c90610258906200a297565b105b15620072bd576040516330abb81d60e21b815260040160405180910390fd5b600080620072cd8560006200827a565b9150915081620072f057604051631b919bb160e11b815260040160405180910390fd5b6002840154603c5460405163045bc4d160e41b815260048101919091526000916001600160a01b0316906345bc4d10906024016020604051808303816000875af115801562007343573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200736991906200a2ad565b905062007377858362008304565b856001600160a01b03167f6e9a2ee7aee95665e3a774a212eb11441b217e3e4656ab9563793094689aabb283836000604051620073b7939291906200a2dd565b60405180910390a26002850154604051633041949b60e01b815261200591633041949b9162005b56916001600160a01b0316908a906004016200a234565b6001600160a01b038082166000908152604160209081526040808320815161018081018352815486168152600182015486169381019390935260028101549094169082015260038301546060820152600483018054929384938493849390929160808401919062007466906200a1fe565b80601f016020809104026020016040519081016040528092919081815260200182805462007494906200a1fe565b8015620074e55780601f10620074b957610100808354040283529160200191620074e5565b820191906000526020600020905b815481529060010190602001808311620074c757829003601f168201915b505050505081526020016005820160405180608001604052908160008201805462007510906200a1fe565b80601f01602080910402602001604051908101604052809291908181526020018280546200753e906200a1fe565b80156200758f5780601f1062007563576101008083540402835291602001916200758f565b820191906000526020600020905b8154815290600101906020018083116200757157829003601f168201915b50505050508152602001600182018054620075aa906200a1fe565b80601f0160208091040260200160405190810160405280929190818152602001828054620075d8906200a1fe565b8015620076295780601f10620075fd5761010080835404028352916020019162007629565b820191906000526020600020905b8154815290600101906020018083116200760b57829003601f168201915b5050505050815260200160028201805462007644906200a1fe565b80601f016020809104026020016040519081016040528092919081815260200182805462007672906200a1fe565b8015620076c35780601f106200769757610100808354040283529160200191620076c3565b820191906000526020600020905b815481529060010190602001808311620076a557829003601f168201915b50505050508152602001600382018054620076de906200a1fe565b80601f01602080910402602001604051908101604052809291908181526020018280546200770c906200a1fe565b80156200775d5780601f1062007731576101008083540402835291602001916200775d565b820191906000526020600020905b8154815290600101906020018083116200773f57829003601f168201915b505050919092525050508152604080516060808201835260098501546001600160401b038082168452600160401b82048116602080860191909152600160801b9092041683850152840191909152600a84015460ff16151582840152600b84015490830152600c8301546080830152600d8301546001600160a01b031660a0830152805161026081019182905260c09092019190600e84019060139082845b815481526020019060010190808311620077fc5750505091909252505050606081015160e0820151610100909201519097919650945092505050565b60005462010000900460ff16156200786357604051631785c68160e01b815260040160405180910390fd5b3360009081526001602052604090205460ff1615620078955760405163b1d02c3d60e01b815260040160405180910390fd5b6200789f62008c97565b620078ac603f8262008257565b620078ca5760405163056e881160e01b815260040160405180910390fd5b6000620078d662008c97565b6001600160a01b0381166000908152604160205260409020600c8101549192509042906200790890610258906200a297565b11156200792857604051631f92cdbd60e11b815260040160405180910390fd5b60058101805462007939906200a1fe565b80601f016020809104026020016040519081016040528092919081815260200182805462007967906200a1fe565b8015620079b85780601f106200798c57610100808354040283529160200191620079b8565b820191906000526020600020905b8154815290600101906020018083116200799a57829003601f168201915b5050508287525085916005840191508190620079d590826200a9c2565b5060208201516001820190620079ec90826200a9c2565b506040820151600282019062007a0390826200a9c2565b506060820151600382019062007a1a90826200a9c2565b505042600c830155506040516001600160a01b038316907f85d6366b336ade7f106987ec7a8eac1e8799e508aeab045a39d2f63e0dc969d990600090a250505050565b60005462010000900460ff161562007a8857604051631785c68160e01b815260040160405180910390fd5b3360009081526001602052604090205460ff161562007aba5760405163b1d02c3d60e01b815260040160405180910390fd5b82811462007adb576040516341abc80160e01b815260040160405180910390fd5b60005b8381101562007b4c5762007b3985858381811062007b005762007b006200a383565b905060200201602081019062007b17919062009910565b84848481811062007b2c5762007b2c6200a383565b905060200201356200929a565b62007b44816200a3e8565b905062007ade565b5050505050565b6001600160a01b038082166000908152604160209081526040808320815161018081018352815486168152600182015486169381019390935260028101549094169082015260038301546060820152600483018054929384939091608084019162007bbe906200a1fe565b80601f016020809104026020016040519081016040528092919081815260200182805462007bec906200a1fe565b801562007c3d5780601f1062007c115761010080835404028352916020019162007c3d565b820191906000526020600020905b81548152906001019060200180831162007c1f57829003601f168201915b505050505081526020016005820160405180608001604052908160008201805462007c68906200a1fe565b80601f016020809104026020016040519081016040528092919081815260200182805462007c96906200a1fe565b801562007ce75780601f1062007cbb5761010080835404028352916020019162007ce7565b820191906000526020600020905b81548152906001019060200180831162007cc957829003601f168201915b5050505050815260200160018201805462007d02906200a1fe565b80601f016020809104026020016040519081016040528092919081815260200182805462007d30906200a1fe565b801562007d815780601f1062007d555761010080835404028352916020019162007d81565b820191906000526020600020905b81548152906001019060200180831162007d6357829003601f168201915b5050505050815260200160028201805462007d9c906200a1fe565b80601f016020809104026020016040519081016040528092919081815260200182805462007dca906200a1fe565b801562007e1b5780601f1062007def5761010080835404028352916020019162007e1b565b820191906000526020600020905b81548152906001019060200180831162007dfd57829003601f168201915b5050505050815260200160038201805462007e36906200a1fe565b80601f016020809104026020016040519081016040528092919081815260200182805462007e64906200a1fe565b801562007eb55780601f1062007e895761010080835404028352916020019162007eb5565b820191906000526020600020905b81548152906001019060200180831162007e9757829003601f168201915b505050919092525050508152604080516060808201835260098501546001600160401b038082168452600160401b82048116602080860191909152600160801b9092041683850152840191909152600a84015460ff16151582840152600b84015490830152600c8301546080830152600d8301546001600160a01b031660a0830152805161026081019182905260c09092019190600e84019060139082845b81548152602001906001019080831162007f545750505091909252505050604001519392505050565b600062007f8c603f8462008257565b62007faa5760405163056e881160e01b815260040160405180910390fd5b6001600160a01b038381166000908152604160205260409081902060020154905163aa1966cd60e01b81526004810185905291169063aa1966cd90602401620054a9565b60005462010000900460ff16156200801957604051631785c68160e01b815260040160405180910390fd5b3360009081526001602052604090205460ff16156200804b5760405163b1d02c3d60e01b815260040160405180910390fd5b6200805562008c97565b62008062603f8262008257565b620080805760405163056e881160e01b815260040160405180910390fd5b60006200808c62008c97565b90506200809d818787878762008fb9565b620080bb57604051631647e3cb60e11b815260040160405180910390fd5b60006001600160a01b031660458787604051620080da9291906200a24e565b908152604051908190036020019020546001600160a01b031614158062008124575060488686604051620081109291906200a24e565b9081526040519081900360200190205460ff165b1562008143576040516311fdb94760e01b815260040160405180910390fd5b6001600160a01b0381166000908152604160205260409020600c81015442906200817190610258906200a297565b11156200819157604051631f92cdbd60e11b815260040160405180910390fd5b42604682600401604051620081a791906200aa8a565b9081526040519081900360200190205560048101620081c88789836200a4ac565b5042600c8201556040518290604590620081e6908a908a906200a24e565b90815260405190819003602001812080546001600160a01b039384166001600160a01b0319909116179055908316907f783156582145bd0ff7924fae6953ba054cf1233eb60739a200ddb10de068ff0d9062008246908a908a906200a77d565b60405180910390a250505050505050565b6001600160a01b03811660009081526001830160205260408120541515620054ed565b60008060008484604051602001620082949291906200ab08565b60408051601f1981840301815291815281516020928301206000818152604c90935291205490915042811115620082d457600080935093505050620082fd565b603e54620082e390426200a297565b6000928352604c6020526040909220829055506001925090505b9250929050565b8154604051631507fdb760e11b81526001600160a01b03909116600482015261100090632a0ffb6e90602401600060405180830381600087803b1580156200834b57600080fd5b505af115801562008360573d6000803e3d6000fd5b505050506000600162008374603f62008dfe565b6200838091906200a353565b60495410801591506200843e5760405163d31f968d60e01b81526110006004820152600860248201526120009063d31f968d90604401602060405180830381865afa158015620083d4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620083fa91906200a30c565b6200843e5760018301546040516001600160a01b03909116907f2afdc18061ac21cff7d9f11527ab9c8dec6fabd4edf6f894ed634bebd6a20d4590600090a2505050565b82600b01548211156200845357600b83018290555b600a83015460ff16620084c657600a8301805460ff1916600190811790915560498054600090620084869084906200a297565b909155505060018301546040516001600160a01b03909116907f4905ac32602da3fb8b4b7b00c285e5fc4c6c2308cc908b4a1e4e9625a29c90a390600090a25b505050565b604080516080808201835260008083526020808401829052838501829052606080850183905285519384018652828452838201839052838601839052830182905284518086018652828152810182905284518086019095528551855285810190850152919282906200853d9062009474565b90506000805b6200854e83620094e7565b156200862157806000036200858357620085726200856c846200950d565b62009571565b6001600160a01b031684526200860e565b80600103620085af576200859b6200856c846200950d565b6001600160a01b031660208501526200860e565b80600203620085db57620085c76200856c846200950d565b6001600160a01b031660408501526200860e565b806003036200860857620085f9620085f3846200950d565b62009589565b6060850152600191506200860e565b62008621565b62008619816200a3e8565b905062008543565b5091959194509092505050565b6020808201516001600160a01b031660009081526001909152604081205460ff168062008666575060208201516001600160a01b0316155b156200867457506004919050565b81516200868490603f9062008257565b6200869157506002919050565b81516001600160a01b03908116600090815260416020908152604080832081516101808101835281548616815260018201548616938101939093526002810154909416908201526003830154606082015260048301805492939192608084019190620086fd906200a1fe565b80601f01602080910402602001604051908101604052809291908181526020018280546200872b906200a1fe565b80156200877c5780601f1062008750576101008083540402835291602001916200877c565b820191906000526020600020905b8154815290600101906020018083116200875e57829003601f168201915b5050505050815260200160058201604051806080016040529081600082018054620087a7906200a1fe565b80601f0160208091040260200160405190810160405280929190818152602001828054620087d5906200a1fe565b8015620088265780601f10620087fa5761010080835404028352916020019162008826565b820191906000526020600020905b8154815290600101906020018083116200880857829003601f168201915b5050505050815260200160018201805462008841906200a1fe565b80601f01602080910402602001604051908101604052809291908181526020018280546200886f906200a1fe565b8015620088c05780601f106200889457610100808354040283529160200191620088c0565b820191906000526020600020905b815481529060010190602001808311620088a257829003601f168201915b50505050508152602001600282018054620088db906200a1fe565b80601f016020809104026020016040519081016040528092919081815260200182805462008909906200a1fe565b80156200895a5780601f106200892e576101008083540402835291602001916200895a565b820191906000526020600020905b8154815290600101906020018083116200893c57829003601f168201915b5050505050815260200160038201805462008975906200a1fe565b80601f0160208091040260200160405190810160405280929190818152602001828054620089a3906200a1fe565b8015620089f45780601f10620089c857610100808354040283529160200191620089f4565b820191906000526020600020905b815481529060010190602001808311620089d657829003601f168201915b505050919092525050508152604080516060808201835260098501546001600160401b038082168452600160401b82048116602080860191909152600160801b9092041683850152840191909152600a84015460ff16151582840152600b84015490830152600c8301546080830152600d8301546001600160a01b031660a0830152805161026081019182905260c09092019190600e84019060139082845b81548152602001906001019080831162008a935750505050508152505090508060e00151801562008ade575082600001516001600160a01b031683602001516001600160a01b031614155b1562008aed5750600392915050565b6040808201516060850151602086015192516317066a5760e21b81526001600160a01b03938416600482015260009390921691635c19a95c919060240160206040518083038185885af115801562008b49573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019062008b7091906200a2ad565b905083602001516001600160a01b031684600001516001600160a01b03166000805160206200ba8483398151915283876060015160405162008bbc929190918252602082015260400190565b60405180910390a383602001516001600160a01b031684600001516001600160a01b03167f607b17598da6bdca05650a2fc08bd2bc8e38c3236806a0fa8e0daabc1d6cb1d883876060015160405162008c1f929190918252602082015260400190565b60405180910390a360408083015160208601519151633041949b60e01b815261200592633041949b9262008c59929091906004016200a234565b600060405180830381600087803b15801562008c7457600080fd5b505af115801562008c89573d6000803e3d6000fd5b506000979650505050505050565b336000908152604d60205260408120546001600160a01b03161562008cd35750336000908152604d60205260409020546001600160a01b031690565b503390565b6001600160a01b0381166000908152604160205260409020600a81015460ff161562008d02575050565b6036546002820154604051630913db4760e01b81526001600160a01b03858116600483015290911690630913db4790602401602060405180830381865afa15801562008d52573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062008d7891906200a2ad565b101562005ee95762008d9a81603d544262008d9491906200a297565b62008304565b80546040516335409f7f60e01b81526001600160a01b039091166004820152611000906335409f7f90602401600060405180830381600087803b15801562008de157600080fd5b505af115801562008df6573d6000803e3d6000fd5b505050505050565b6000620054f0825490565b6000620054ed838362009661565b60008082905060038151108062008e2f575060098151115b1562008e3e5750600092915050565b60418160008151811062008e565762008e566200a383565b016020015160f81c108062008e885750605a8160008151811062008e7e5762008e7e6200a383565b016020015160f81c115b1562008e975750600092915050565b60015b815181101562008faf57603082828151811062008ebb5762008ebb6200a383565b016020015160f81c108062008eec5750603982828151811062008ee25762008ee26200a383565b016020015160f81c115b801562008f3c5750604182828151811062008f0b5762008f0b6200a383565b016020015160f81c108062008f3c5750605a82828151811062008f325762008f326200a383565b016020015160f81c115b801562008f8c5750606182828151811062008f5b5762008f5b6200a383565b016020015160f81c108062008f8c5750607a82828151811062008f825762008f826200a383565b016020015160f81c115b1562008f9c575060009392505050565b62008fa7816200a3e8565b905062008e9a565b5060019392505050565b600060308414158062008fcd575060608214155b1562008fdc57506000620090e0565b60008686864660405160200162008ff794939291906200ab46565b60408051808303601f1901815282825280516020918201208184528383019092529092506000919060208201818036833701905050905081602082015260008186868a8a604051602001620090519594939291906200ab73565b60408051808303601f190181526001808452838301909252925060009190602082018180368337019050509050815160016020830182602086016066600019fa6200909b57600080fd5b50600081600081518110620090b457620090b46200a383565b016020015160f81c905060018114620090d657600095505050505050620090e0565b6001955050505050505b95945050505050565b60008061200361dead6040516200910090620098ec565b6001600160a01b03928316815291166020820152606060408201819052600090820152608001604051809103906000f08015801562009143573d6000803e3d6000fd5b509050806001600160a01b031663f399e22e3486866040518463ffffffff1660e01b8152600401620091779291906200abab565b6000604051808303818588803b1580156200919157600080fd5b505af1158015620091a6573d6000803e3d6000fd5b50506040516001600160a01b038086169450881692507fd481492e4e93bb36b4c12a5af93f03be3bf04b454dfbc35dd2663fa26f44d5b09150600090a39392505050565b6000620054ed836001600160a01b0384166200968e565b600054610100900460ff166200926e5760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b6064820152608401620011ee565b600080546001600160a01b039092166301000000026301000000600160b81b0319909216919091179055565b81620092a8603f8262008257565b620092c65760405163056e881160e01b815260040160405180910390fd5b6001600160a01b03838116600090815260416020526040808220600201549051635569f64b60e11b8152336004820152602481018690529192169063aad3ec96906044016020604051808303816000875af11580156200932a573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200935091906200a2ad565b9050336001600160a01b0316846001600160a01b03167ff7a40077ff7a04c7e61f6f26fb13774259ddf1b6bce9ecf26a8276cdd3992683836040516200939891815260200190565b60405180910390a350505050565b600081604051602001620093bb91906200a95a565b6040516020818303038152906040528051906020012083604051602001620093e491906200a95a565b6040516020818303038152906040528051906020012014905092915050565b015190565b600080546040516001600160a01b0380851693630100000090930416917f44fc1b38a4abaa91ebd1b628a5b259a698f86238c8217d68f516e87769c60c0b91a3600080546001600160a01b039092166301000000026301000000600160b81b0319909216919091179055565b6040805160808101825260009181018281526060820183905281526020810191909152620094a282620096e0565b620094ac57600080fd5b6000620094bd836020015162009713565b8360200151620094ce91906200a297565b6040805180820190915293845260208401525090919050565b80518051602082015160009291620094ff916200a297565b836020015110915050919050565b60408051808201909152600080825260208201526200952c82620094e7565b6200953657600080fd5b602082015160006200954882620097a2565b90506200955681836200a297565b60209485015260408051808201909152908152928301525090565b80516000906015146200958357600080fd5b620054f0825b8051600090158015906200959f57508151602110155b620095a957600080fd5b6000620095ba836020015162009713565b90508083600001511015620096125760405162461bcd60e51b815260206004820152601a60248201527f6c656e677468206973206c657373207468616e206f66667365740000000000006044820152606401620011ee565b8251600090620096249083906200a353565b90506000808386602001516200963b91906200a297565b90508051915060208310156200965857826020036101000a820491505b50949350505050565b60008260000182815481106200967b576200967b6200a383565b9060005260206000200154905092915050565b6000818152600183016020526040812054620096d757508154600181810184556000848152602080822090930184905584548482528286019093526040902091909155620054f0565b506000620054f0565b80516000908103620096f457506000919050565b6020820151805160001a9060c082101562008faf575060009392505050565b8051600090811a60808110156200972d5750600092915050565b60b88110806200974a575060c081108015906200974a575060f881105b15620097595750600192915050565b60c0811015620097945762009771600160b86200abd1565b620097809060ff16826200a353565b6200978d9060016200a297565b9392505050565b62009771600160f86200abd1565b80516000908190811a6080811015620097bf5760019150620098e5565b60b8811015620097eb57620097d66080826200a353565b620097e39060016200a297565b9150620098e5565b60c08110156200986457600060b78203600186019550806020036101000a8651049150600181018201935050808310156200985d5760405162461bcd60e51b81526020600482015260116024820152706164646974696f6e206f766572666c6f7760781b6044820152606401620011ee565b50620098e5565b60f88110156200987b57620097d660c0826200a353565b600060f78203600186019550806020036101000a865104915060018101820193505080831015620098e35760405162461bcd60e51b81526020600482015260116024820152706164646974696f6e206f766572666c6f7760781b6044820152606401620011ee565b505b5092915050565b610e96806200abee83390190565b6001600160a01b03811681146200181957600080fd5b6000602082840312156200992357600080fd5b81356200978d81620098fa565b60008083601f8401126200994357600080fd5b5081356001600160401b038111156200995b57600080fd5b602083019150836020828501011115620082fd57600080fd5b600080602083850312156200998857600080fd5b82356001600160401b038111156200999f57600080fd5b620099ad8582860162009930565b90969095509350505050565b600080600060408486031215620099cf57600080fd5b833560ff81168114620099e157600080fd5b925060208401356001600160401b03811115620099fd57600080fd5b62009a0b8682870162009930565b9497909650939450505050565b60005b8381101562009a3557818101518382015260200162009a1b565b50506000910152565b6000815180845262009a5881602086016020860162009a18565b601f01601f19169290920160200192915050565b602081526000620054ed602083018462009a3e565b634e487b7160e01b600052604160045260246000fd5b604051608081016001600160401b038111828210171562009abc5762009abc62009a81565b60405290565b604051601f8201601f191681016001600160401b038111828210171562009aed5762009aed62009a81565b604052919050565b60006001600160401b0382111562009b115762009b1162009a81565b50601f01601f191660200190565b600062009b3662009b308462009af5565b62009ac2565b905082815283838301111562009b4b57600080fd5b828260208301376000602084830101529392505050565b60006020828403121562009b7557600080fd5b81356001600160401b0381111562009b8c57600080fd5b8201601f8101841362009b9e57600080fd5b62009baf8482356020840162009b1f565b949350505050565b6000806040838503121562009bcb57600080fd5b823562009bd881620098fa565b946020939093013593505050565b80151581146200181957600080fd5b6000806000806080858703121562009c0c57600080fd5b843562009c1981620098fa565b9350602085013562009c2b81620098fa565b925060408501359150606085013562009c448162009be6565b939692955090935050565b6001600160401b03811681146200181957600080fd5b60006020828403121562009c7857600080fd5b81356200978d8162009c4f565b6000806040838503121562009c9957600080fd5b50508035926020909101359150565b600081518084526020808501945080840160005b8381101562009ce35781516001600160a01b03168752958201959082019060010162009cbc565b509495945050505050565b60808152600062009d03608083018762009ca8565b82810360208481019190915286518083528782019282019060005b8181101562009d3c5784518352938301939183019160010162009d1e565b5050848103604086015286518082528282019350600581901b8201830183890160005b8381101562009d9157601f1985840301875262009d7e83835162009a3e565b9686019692509085019060010162009d5f565b5050809550505050505082606083015295945050505050565b600080600080600080600087890360e081121562009dc757600080fd5b883562009dd481620098fa565b975060208901356001600160401b038082111562009df157600080fd5b62009dff8c838d0162009930565b909950975060408b013591508082111562009e1957600080fd5b62009e278c838d0162009930565b90975095508591506060605f198401121562009e4257600080fd5b60608b01945060c08b013592508083111562009e5d57600080fd5b505088016080818b03121562009e7257600080fd5b8091505092959891949750929550565b6000806040838503121562009e9657600080fd5b823562009ea381620098fa565b9150602083013562009eb58162009be6565b809150509250929050565b60208152600082516080602084015262009ede60a084018262009a3e565b90506020840151601f198085840301604086015262009efe838362009a3e565b9250604086015191508085840301606086015262009f1d838362009a3e565b9250606086015191508085840301608086015250620090e0828262009a3e565b6000806000806040858703121562009f5457600080fd5b84356001600160401b038082111562009f6c57600080fd5b62009f7a8883890162009930565b9096509450602087013591508082111562009f9457600080fd5b5062009fa38782880162009930565b95989497509550505050565b60008083601f84011262009fc257600080fd5b5081356001600160401b0381111562009fda57600080fd5b6020830191508360208260051b8501011115620082fd57600080fd5b6000806000604084860312156200a00c57600080fd5b83356001600160401b038111156200a02357600080fd5b6200a0318682870162009faf565b90945092505060208401356200a04781620098fa565b809150509250925092565b6060815260006200a067606083018662009ca8565b82810360208401526200a07b818662009ca8565b915050826040830152949350505050565b600082601f8301126200a09e57600080fd5b620054ed8383356020850162009b1f565b6000602082840312156200a0c257600080fd5b81356001600160401b03808211156200a0da57600080fd5b90830190608082860312156200a0ef57600080fd5b6200a0f962009a97565b8235828111156200a10957600080fd5b6200a117878286016200a08c565b8252506020830135828111156200a12d57600080fd5b6200a13b878286016200a08c565b6020830152506040830135828111156200a15457600080fd5b6200a162878286016200a08c565b6040830152506060830135828111156200a17b57600080fd5b6200a189878286016200a08c565b60608301525095945050505050565b600080600080604085870312156200a1af57600080fd5b84356001600160401b03808211156200a1c757600080fd5b6200a1d58883890162009faf565b909650945060208701359150808211156200a1ef57600080fd5b5062009fa38782880162009faf565b600181811c908216806200a21357607f821691505b60208210810362001f0857634e487b7160e01b600052602260045260246000fd5b6001600160a01b0392831681529116602082015260400190565b8183823760009101908152919050565b634e487b7160e01b600052601160045260246000fd5b6000826200a29257634e487b7160e01b600052601260045260246000fd5b500490565b80820180821115620054f057620054f06200a25e565b6000602082840312156200a2c057600080fd5b5051919050565b634e487b7160e01b600052602160045260246000fd5b8381526020810183905260608101600383106200a2fe576200a2fe6200a2c7565b826040830152949350505050565b6000602082840312156200a31f57600080fd5b81516200978d8162009be6565b82815260408101600583106200a346576200a3466200a2c7565b8260208301529392505050565b81810381811115620054f057620054f06200a25e565b8082028115828204841417620054f057620054f06200a25e565b634e487b7160e01b600052603260045260246000fd5b6040815260006200a3ae604083018562009ca8565b905060018060a01b03831660208301529392505050565b6001600160401b03828116828216039080821115620098e557620098e56200a25e565b6000600182016200a3fd576200a3fd6200a25e565b5060010190565b6000808335601e198436030181126200a41c57600080fd5b8301803591506001600160401b038211156200a43757600080fd5b602001915036819003821315620082fd57600080fd5b601f821115620084c657600081815260208120601f850160051c810160208610156200a4765750805b601f850160051c820191505b8181101562008df6578281556001016200a482565b600019600383901b1c191660019190911b1790565b6001600160401b038311156200a4c6576200a4c662009a81565b6200a4de836200a4d783546200a1fe565b836200a44d565b6000601f8411600181146200a51157600085156200a4fc5750838201355b6200a50886826200a497565b84555062007b4c565b600083815260209020601f19861690835b828110156200a54457868501358255602094850194600190920191016200a522565b50868210156200a5625760001960f88860031b161c19848701351681555b505060018560011b0183555050505050565b6200a58082836200a404565b6001600160401b038111156200a59a576200a59a62009a81565b6200a5b2816200a5ab85546200a1fe565b856200a44d565b6000601f8211600181146200a5e557600083156200a5d05750838201355b6200a5dc84826200a497565b8655506200a642565b600085815260209020601f19841690835b828110156200a61857868501358255602094850194600190920191016200a5f6565b50848210156200a6365760001960f88660031b161c19848701351681555b505060018360011b0185555b505050506200a65560208301836200a404565b6200a6658183600186016200a4ac565b50506200a67660408301836200a404565b6200a6868183600286016200a4ac565b50506200a69760608301836200a404565b6200a6a78183600386016200a4ac565b50505050565b81356200a6ba8162009c4f565b6001600160401b03811690508154816001600160401b0319821617835560208401356200a6e78162009c4f565b6fffffffffffffffff0000000000000000604091821b166fffffffffffffffffffffffffffffffff198316841781178555908501356200a7278162009c4f565b6001600160c01b0319929092169092179190911760809190911b67ffffffffffffffff60801b1617905550565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b60208152600062009baf6020830184866200a754565b60006001600160401b038211156200a7af576200a7af62009a81565b5060051b60200190565b600060208083850312156200a7cd57600080fd5b82516001600160401b038111156200a7e457600080fd5b8301601f810185136200a7f657600080fd5b80516200a80762009b30826200a793565b81815260059190911b820183019083810190878311156200a82757600080fd5b928401925b828410156200a8525783516200a84281620098fa565b825292840192908401906200a82c565b979650505050505050565b600060208083850312156200a87157600080fd5b82516001600160401b03808211156200a88957600080fd5b818501915085601f8301126200a89e57600080fd5b81516200a8af62009b30826200a793565b81815260059190911b830184019084810190888311156200a8cf57600080fd5b8585015b838110156200a94d578051858111156200a8ed5760008081fd5b8601603f81018b136200a9005760008081fd5b8781015160406200a91562009b308362009af5565b8281528d828486010111156200a92b5760008081fd5b6200a93c838c830184870162009a18565b86525050509186019186016200a8d3565b5098975050505050505050565b600082516200a96e81846020870162009a18565b9190910192915050565b60ff84168152604060208201526000620090e06040830184866200a754565b6040815260006200a9ad6040830186886200a754565b82810360208401526200a8528185876200a754565b81516001600160401b038111156200a9de576200a9de62009a81565b6200a9f6816200a9ef84546200a1fe565b846200a44d565b602080601f8311600181146200aa2a57600084156200aa155750858301515b6200aa2185826200a497565b86555062008df6565b600085815260208120601f198616915b828110156200aa5b578886015182559484019460019091019084016200aa3a565b50858210156200aa7a5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b60008083546200aa9a816200a1fe565b600182811680156200aab557600181146200aacb576200aafc565b60ff19841687528215158302870194506200aafc565b8760005260208060002060005b858110156200aaf35781548a8201529084019082016200aad8565b50505082870194505b50929695505050505050565b6bffffffffffffffffffffffff198360601b1681526000600383106200ab32576200ab326200a2c7565b5060f89190911b6014820152601501919050565b6bffffffffffffffffffffffff198560601b16815282846014830137601492019182015260340192915050565b600086516200ab87818460208b0162009a18565b82018587823760009086019081528385823760009301928352509095945050505050565b6001600160a01b038316815260406020820181905260009062009baf9083018462009a3e565b60ff8281168282160390811115620054f057620054f06200a25e56fe608060405260405162000e9638038062000e96833981016040819052620000269162000497565b828162000036828260006200004d565b50620000449050826200008a565b505050620005ca565b6200005883620000e5565b600082511180620000665750805b1562000085576200008383836200012760201b620001691760201c565b505b505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f620000b562000156565b604080516001600160a01b03928316815291841660208301520160405180910390a1620000e2816200018f565b50565b620000f08162000244565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b60606200014f838360405180606001604052806027815260200162000e6f60279139620002f8565b9392505050565b60006200018060008051602062000e4f83398151915260001b6200037760201b620001951760201c565b546001600160a01b0316919050565b6001600160a01b038116620001fa5760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b60648201526084015b60405180910390fd5b806200022360008051602062000e4f83398151915260001b6200037760201b620001951760201c565b80546001600160a01b0319166001600160a01b039290921691909117905550565b6200025a816200037a60201b620001981760201c565b620002be5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b6064820152608401620001f1565b80620002237f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc60001b6200037760201b620001951760201c565b6060600080856001600160a01b03168560405162000317919062000577565b600060405180830381855af49150503d806000811462000354576040519150601f19603f3d011682016040523d82523d6000602084013e62000359565b606091505b5090925090506200036d8683838762000389565b9695505050505050565b90565b6001600160a01b03163b151590565b60608315620003fd578251600003620003f5576001600160a01b0385163b620003f55760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401620001f1565b508162000409565b62000409838362000411565b949350505050565b815115620004225781518083602001fd5b8060405162461bcd60e51b8152600401620001f1919062000595565b80516001600160a01b03811681146200045657600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b60005b838110156200048e57818101518382015260200162000474565b50506000910152565b600080600060608486031215620004ad57600080fd5b620004b8846200043e565b9250620004c8602085016200043e565b60408501519092506001600160401b0380821115620004e657600080fd5b818601915086601f830112620004fb57600080fd5b8151818111156200051057620005106200045b565b604051601f8201601f19908116603f011681019083821181831017156200053b576200053b6200045b565b816040528281528960208487010111156200055557600080fd5b6200056883602083016020880162000471565b80955050505050509250925092565b600082516200058b81846020870162000471565b9190910192915050565b6020815260008251806020840152620005b681604085016020870162000471565b601f01601f19169190910160400192915050565b61087580620005da6000396000f3fe60806040523661001357610011610017565b005b6100115b61001f6101a7565b6001600160a01b0316330361015f5760606001600160e01b0319600035166364d3180d60e11b810161005a576100536101da565b9150610157565b63587086bd60e11b6001600160e01b031982160161007a57610053610231565b63070d7c6960e41b6001600160e01b031982160161009a57610053610277565b621eb96f60e61b6001600160e01b03198216016100b9576100536102a8565b63a39f25e560e01b6001600160e01b03198216016100d9576100536102e8565b60405162461bcd60e51b815260206004820152604260248201527f5472616e73706172656e745570677261646561626c6550726f78793a2061646d60448201527f696e2063616e6e6f742066616c6c6261636b20746f2070726f78792074617267606482015261195d60f21b608482015260a4015b60405180910390fd5b815160208301f35b6101676102fc565b565b606061018e83836040518060600160405280602781526020016108426027913961030c565b9392505050565b90565b6001600160a01b03163b151590565b60007fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b546001600160a01b0316919050565b60606101e4610384565b60006101f33660048184610695565b81019061020091906106db565b905061021d8160405180602001604052806000815250600061038f565b505060408051602081019091526000815290565b60606000806102433660048184610695565b810190610250919061070c565b915091506102608282600161038f565b604051806020016040528060008152509250505090565b6060610281610384565b60006102903660048184610695565b81019061029d91906106db565b905061021d816103bb565b60606102b2610384565b60006102bc6101a7565b604080516001600160a01b03831660208201529192500160405160208183030381529060405291505090565b60606102f2610384565b60006102bc610412565b610167610307610412565b610421565b6060600080856001600160a01b03168560405161032991906107f2565b600060405180830381855af49150503d8060008114610364576040519150601f19603f3d011682016040523d82523d6000602084013e610369565b606091505b509150915061037a86838387610445565b9695505050505050565b341561016757600080fd5b610398836104c6565b6000825111806103a55750805b156103b6576103b48383610169565b505b505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f6103e46101a7565b604080516001600160a01b03928316815291841660208301520160405180910390a161040f81610506565b50565b600061041c6105af565b905090565b3660008037600080366000845af43d6000803e808015610440573d6000f35b3d6000fd5b606083156104b45782516000036104ad576001600160a01b0385163b6104ad5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015260640161014e565b50816104be565b6104be83836105d7565b949350505050565b6104cf81610601565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b6001600160a01b03811661056b5760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b606482015260840161014e565b807fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b80546001600160a01b0319166001600160a01b039290921691909117905550565b60007f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc6101cb565b8151156105e75781518083602001fd5b8060405162461bcd60e51b815260040161014e919061080e565b6001600160a01b0381163b61066e5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b606482015260840161014e565b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc61058e565b600080858511156106a557600080fd5b838611156106b257600080fd5b5050820193919092039150565b80356001600160a01b03811681146106d657600080fd5b919050565b6000602082840312156106ed57600080fd5b61018e826106bf565b634e487b7160e01b600052604160045260246000fd5b6000806040838503121561071f57600080fd5b610728836106bf565b9150602083013567ffffffffffffffff8082111561074557600080fd5b818501915085601f83011261075957600080fd5b81358181111561076b5761076b6106f6565b604051601f8201601f19908116603f01168101908382118183101715610793576107936106f6565b816040528281528860208487010111156107ac57600080fd5b8260208601602083013760006020848301015280955050505050509250929050565b60005b838110156107e95781810151838201526020016107d1565b50506000910152565b600082516108048184602087016107ce565b9190910192915050565b602081526000825180602084015261082d8160408501602087016107ce565b601f01601f1916919091016040019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a164736f6c6343000811000ab53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c656424d7bda8602b916d64417f0dbfe2e2e88ec9b1157bd9f596dfdb91ba26624e0400000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000003000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb9226600000000000000000000000070997970c51812dc3a010c7d01b50e0d17dc79c80000000000000000000000003c44cdddb6a900fa2b585dd299e03d12fa4293bc00000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000003000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000c000000000000000000000000000000000000000000000000000000000000001200000000000000000000000000000000000000000000000000000000000000030b86b3146bdd2200b1dbdb1cea5e40d3451c028cbb4fb03b1826f7f2d82bee76bbd5cd68a74a16a7eceea093fd5826b9200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003087ce273bb9b51fd69e50de7a8d9a99cfb3b1a5c6a7b85f6673d137a5a2ce7df3d6ee4e6d579a142d58b0606c4a7a1c27000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030a33ac14980d85c0d154c5909ebf7a11d455f54beb4d5d0dc1d8b3670b9c4a6b6c450ee3d623ecc48026f09ed1f0b5c1200000000000000000000000000000000a164736f6c6343000811000a \ No newline at end of file diff --git a/core/systemcontracts/bohr/rialto/ValidatorContract b/core/systemcontracts/bohr/rialto/ValidatorContract deleted file mode 100644 index 78dbe27aa8..0000000000 --- a/core/systemcontracts/bohr/rialto/ValidatorContract +++ /dev/null @@ -1 +0,0 @@ -60806040526004361061051c5760003560e01c80638a7beb01116102a2578063c81b166211610165578063e40716a1116100cc578063f92eb86b11610085578063f92eb86b14610d8d578063f9a2bbc714610da2578063fc3e590814610db7578063fccc281314610dcc578063fd4ad81f14610de1578063fd6a687914610e1057610523565b8063e40716a114610cfb578063ea321e4914610d10578063eb57e20214610d30578063eda5868c14610d50578063f1fad10414610d65578063f340fa0114610d7a57610523565b8063d86222d51161011e578063d86222d514610c7d578063daacdb6614610c92578063dc927faf14610ca7578063df8079e914610cbc578063e086c7b114610cd1578063e1c7392a14610ce657610523565b8063c81b166214610c09578063c8509d81146109ae578063cb75a59214610c1e578063ce910b0c14610c33578063d58918ae14610c53578063d68fb56a14610c6857610523565b8063aa82dce111610209578063aef198a9116101c2578063aef198a914610b93578063b7ab4db514610ba8578063b8cf4ef114610bca578063bf9f499514610734578063c466689d14610bdf578063c6d3394514610bf457610523565b8063aa82dce114610aff578063aad5606314610b14578063aaf5eb6814610b29578063ab51bb9614610b3e578063ac43175114610b53578063ad3c9da614610b7357610523565b80639dc092621161025b5780639dc0926214610a815780639fe0f81614610a96578063a0dc275814610aab578063a1a11bf514610ac0578063a5422d5c14610ad5578063a78abc1614610aea57610523565b80638a7beb01146109f85780638b5ad0c914610a0d5780638c5d749d14610a225780638d19a41014610a375780639369d7de14610a5757806396713da914610a6c57610523565b80635192c82c116103ea578063718a8aa81161035157806381650b621161030a57806381650b6214610984578063820dcaa814610999578063831d65d1146109ae578063853230aa1461093057806386249882146109ce57806388b32f11146109e357610523565b8063718a8aa81461090657806375d47a0a1461091b57806378dfed4a146109305780637942fd05146109455780637a84ca2a1461095a5780637e434d541461096f57610523565b80635d77156c116103a35780635d77156c1461086057806360eba4fe1461087557806362b72cf5146108955780636969a25c146108aa5780636e47b482146108dc57806370fd5bad146108f157610523565b80635192c82c146107cc57806351b4dce3146107e157806351e80672146107f657806355614fcc1461080b578063565c56b31461082b5780635667515a1461084b57610523565b80632a0ffb6e1161048e5780633dffc387116104475780633dffc3871461073457806343756e5c1461075657806345cf9daf1461076b578063493279b1146107805780634bf6c882146107a25780634df6e0c3146107b757610523565b80632a0ffb6e14610671578063300c356714610691578063321d398a146106b15780633365af3a146106d157806335409f7f146106f15780633b071dcc1461071157610523565b8063152ad3b8116104e0578063152ad3b8146105db5780631bd14ed8146105fd5780631e4c1524146106125780631ff1806914610632578063219f22d514610647578063280870281461065c57610523565b806304c4fec61461052857806307a568471461053f5780630bee7a671461056a5780630e2374a51461058c5780631182b875146105ae57610523565b3661052357005b600080fd5b34801561053457600080fd5b5061053d610e25565b005b34801561054b57600080fd5b50610554610e99565b604051610561919061947a565b60405180910390f35b34801561057657600080fd5b5061057f610e9f565b60405161056191906194a4565b34801561059857600080fd5b506105a1610ea4565b60405161056191906185b8565b3480156105ba57600080fd5b506105ce6105c936600461849e565b610eaa565b604051610561919061876e565b3480156105e757600080fd5b506105f06111a6565b6040516105619190618763565b34801561060957600080fd5b506105546111af565b34801561061e57600080fd5b5061053d61062d3660046182ac565b6111b5565b34801561063e57600080fd5b5061055461188b565b34801561065357600080fd5b5061057f611891565b34801561066857600080fd5b506105a1611896565b34801561067d57600080fd5b5061053d61068c36600461820c565b61189c565b34801561069d57600080fd5b5061053d6106ac366004618244565b611949565b3480156106bd57600080fd5b506105f06106cc36600461844b565b611c92565b3480156106dd57600080fd5b506105f06106ec36600461844b565b611d61565b3480156106fd57600080fd5b5061053d61070c36600461820c565b611e12565b34801561071d57600080fd5b50610726611f77565b604051610561929190618679565b34801561074057600080fd5b50610749612253565b60405161056191906194b5565b34801561076257600080fd5b506105a1612258565b34801561077757600080fd5b5061055461225e565b34801561078c57600080fd5b50610795612264565b604051610561919061946b565b3480156107ae57600080fd5b5061074961226a565b3480156107c357600080fd5b5061072661226f565b3480156107d857600080fd5b506105546123fb565b3480156107ed57600080fd5b506105a1612401565b34801561080257600080fd5b506105a1612407565b34801561081757600080fd5b506105f061082636600461820c565b61240d565b34801561083757600080fd5b5061055461084636600461820c565b612442565b34801561085757600080fd5b50610749612493565b34801561086c57600080fd5b5061057f612498565b34801561088157600080fd5b506105ce61089036600461844b565b61249d565b3480156108a157600080fd5b50610554612543565b3480156108b657600080fd5b506108ca6108c536600461844b565b612549565b604051610561969594939291906185e5565b3480156108e857600080fd5b506105a16125ad565b3480156108fd57600080fd5b506107496125b3565b34801561091257600080fd5b506107496125b8565b34801561092757600080fd5b506105a16125bd565b34801561093c57600080fd5b506105546125c3565b34801561095157600080fd5b506107496125c9565b34801561096657600080fd5b506105546125ce565b34801561097b57600080fd5b506105a16125d4565b34801561099057600080fd5b5061057f6125da565b3480156109a557600080fd5b506105546125df565b3480156109ba57600080fd5b5061053d6109c936600461849e565b6125e5565b3480156109da57600080fd5b50610554612646565b3480156109ef57600080fd5b5061055461264c565b348015610a0457600080fd5b506105f0612652565b348015610a1957600080fd5b5061055461265b565b348015610a2e57600080fd5b50610554612661565b348015610a4357600080fd5b50610554610a5236600461820c565b61267e565b348015610a6357600080fd5b5061053d6126be565b348015610a7857600080fd5b506107496127d2565b348015610a8d57600080fd5b506105a16127d7565b348015610aa257600080fd5b506105546127dd565b348015610ab757600080fd5b506105546127e2565b348015610acc57600080fd5b506105a16127e7565b348015610ae157600080fd5b506105ce6127ed565b348015610af657600080fd5b506105f0612809565b348015610b0b57600080fd5b506105a1612812565b348015610b2057600080fd5b506105a1612818565b348015610b3557600080fd5b5061055461281e565b348015610b4a57600080fd5b5061057f612493565b348015610b5f57600080fd5b5061053d610b6e3660046183ef565b612827565b348015610b7f57600080fd5b50610554610b8e36600461820c565b613320565b348015610b9f57600080fd5b50610554613332565b348015610bb457600080fd5b50610bbd61333f565b6040516105619190618666565b348015610bd657600080fd5b5061055461342a565b348015610beb57600080fd5b5061055461342f565b348015610c0057600080fd5b506105546125b3565b348015610c1557600080fd5b506105a1613435565b348015610c2a57600080fd5b5061055461343b565b348015610c3f57600080fd5b506105ce610c4e36600461844b565b613441565b348015610c5f57600080fd5b5061055461344e565b348015610c7457600080fd5b50610554613454565b348015610c8957600080fd5b50610554613493565b348015610c9e57600080fd5b5061055461349f565b348015610cb357600080fd5b506105a16134a5565b348015610cc857600080fd5b506105a16134ab565b348015610cdd57600080fd5b50610554610e9f565b348015610cf257600080fd5b5061053d6134b1565b348015610d0757600080fd5b50610554613742565b348015610d1c57600080fd5b506105f0610d2b3660046183b0565b613748565b348015610d3c57600080fd5b5061053d610d4b36600461820c565b6138ce565b348015610d5c57600080fd5b5061057f6139d2565b348015610d7157600080fd5b506107496139d7565b61053d610d8836600461820c565b6139dc565b348015610d9957600080fd5b50610554613d92565b348015610dae57600080fd5b506105a1613d98565b348015610dc357600080fd5b506107496127dd565b348015610dd857600080fd5b506105a1613d9e565b348015610ded57600080fd5b50610e01610dfc36600461844b565b613da4565b60405161056193929190619483565b348015610e1c57600080fd5b506105a1613e66565b6000610e303361267e565b9050600b8181548110610e3f57fe5b600091825260209091206001601690920201015460ff16610e7b5760405162461bcd60e51b8152600401610e729061909b565b60405180910390fd5b6000610e85613454565b9050610e943383836001613e6c565b505050565b60095481565b606481565b61200181565b60005460609060ff16610ecf5760405162461bcd60e51b8152600401610e729061892d565b600b54610f8d57610ede617db8565b60015460005b81811015610f8957600b8054600181018255600091909152835160008051602061958783398151915260169092029182019081556020808601516000805160206195c78339815191528401805460ff1916911515919091179055604086015180518794610f65936000805160206195a7833981519152909101920190617de7565b506060820151610f7b9060038301906013617e61565b505050806001019050610ee4565b5050505b610f95617e8e565b6000610fd685858080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061414192505050565b9150915080610ff257610fe960646142fd565b9250505061119f565b815160009060ff16611017576110108360200151846040015161435e565b905061116b565b825160ff16600114156111675782602001515160011461105c5760008051602061956783398151915260405161104c90618f54565b60405180910390a1506067611162565b6000836020015160008151811061106f57fe5b602090810291909101810151516001600160a01b038116600090815260049092526040909120549091508015806110d057506001808203815481106110b057fe5b9060005260206000209060040201600201601c9054906101000a900460ff165b1561110e576040516001600160a01b038316907fe209c46bebf57cf265d5d9009a00870e256d9150f3ed5281ab9d9eb3cec6e4be90600090a261115b565b600061111d8360018403615520565b905080611159576040516001600160a01b038416907fe209c46bebf57cf265d5d9009a00870e256d9150f3ed5281ab9d9eb3cec6e4be90600090a25b505b6000925050505b61116b565b5060655b63ffffffff8116611190575050604080516000815260208101909152915061119f9050565b611199816142fd565b93505050505b9392505050565b60075460ff1681565b600f5481565b3341146111d45760405162461bcd60e51b8152600401610e72906192d2565b3a156111f25760405162461bcd60e51b8152600401610e7290618fda565b825160408051828152602080840282010190915260609082801561123057816020015b61121d617eb2565b8152602001906001900390816112155790505b50905060005b828110156112da576040518060c0016040528087838151811061125557fe5b60200260200101516001600160a01b0316815260200160006001600160a01b0316815260200160006001600160a01b0316815260200186838151811061129757fe5b60200260200101516001600160401b0316815260200160001515815260200160008152508282815181106112c757fe5b6020908102919091010152600101611236565b5060405163d31f968d60e01b81526120009063d31f968d90611305906110009060089060040161864a565b60206040518083038186803b15801561131d57600080fd5b505afa158015611331573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113559190618390565b15611678578051601554818111156113f757815b818110156113f557601580548061137c57fe5b60008281526020812060046000199093019283020180546001600160a01b0319908116825560018201805490911690556002810180546001600160e81b031916905560030155905560168054806113cf57fe5b6001900381819060005260206000200160006113eb9190617ee7565b9055600101611369565b505b60005b828110156116375781811061151f57601584828151811061141757fe5b602090810291909101810151825460018181018555600094855293839020825160049092020180546001600160a01b039283166001600160a01b0319918216178255938301519481018054958316958516959095179094556040820151600285018054606085015160808601511515600160e01b0260ff60e01b196001600160401b03909216600160a01b0267ffffffffffffffff60a01b199590961692909716919091179290921692909217169290921790915560a0015160039091015585516016908790839081106114e757fe5b602090810291909101810151825460018101845560009384529282902081516115199491909101929190910190617de7565b5061162f565b83818151811061152b57fe5b60200260200101516015828154811061154057fe5b6000918252602091829020835160049092020180546001600160a01b039283166001600160a01b0319918216178255928401516001820180549184169185169190911790556040840151600282018054606087015160808801511515600160e01b0260ff60e01b196001600160401b03909216600160a01b0267ffffffffffffffff60a01b1995909716929097169190911792909216939093171692909217905560a09091015160039091015585518690829081106115fb57fe5b60200260200101516016828154811061161057fe5b90600052602060002001908051906020019061162d929190617de7565b505b6001016113fa565b507fb8e726330a0dad1cf3d04e925663b17e391f1ed547d79b7f4e5f344119b4424682604051611667919061947a565b60405180910390a150505050610e94565b60608061168583866158e3565b9150915060005b60015481101561177b576000600182815481106116a557fe5b906000526020600020906004020160030154905080600014611772576000600183815481106116d057fe5b9060005260206000209060040201600301819055506120026001600160a01b031663092193ab826001858154811061170457fe5b60009182526020909120600491820201546040516001600160e01b031960e086901b16815261173f926001600160a01b0390921691016185b8565b6000604051808303818588803b15801561175857600080fd5b505af115801561176c573d6000803e3d6000fd5b50505050505b5060010161168c565b5047156117e9577f6ecc855f9440a9282c90913bbc91619fd44f5ec0b462af28d127b116f130aa4d476040516117b1919061947a565b60405180910390a1604051611002904780156108fc02916000818181858888f193505050501580156117e7573d6000803e3d6000fd5b505b60006003819055600555815115611804576118048282615dcd565b6110016001600160a01b031663fc4333cd6040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561184157600080fd5b505af1158015611855573d6000803e3d6000fd5b50506040517fedd8d7296956dd970ab4de3f2fc03be2b0ffc615d20cd4c72c6e44f928630ebf925060009150a150505050505050565b60035481565b606881565b61200581565b33612002146118bd5760405162461bcd60e51b8152600401610e7290619434565b60005b60155481101561194557816001600160a01b0316601582815481106118e157fe5b60009182526020909120600490910201546001600160a01b0316141561193d5760016015828154811061191057fe5b9060005260206000209060040201600201601c6101000a81548160ff021916908315150217905550611945565b6001016118c0565b5050565b3341146119685760405162461bcd60e51b8152600401610e72906192d2565b60105443116119895760405162461bcd60e51b8152600401610e7290618b4f565b3a156119a75760405162461bcd60e51b8152600401610e7290618fda565b60005460ff166119c95760405162461bcd60e51b8152600401610e729061892d565b60006110023168056bc75e2d63100000811115611a00576119f98168056bc75e2d6310000063ffffffff6165bc16565b9150611a07565b5050611c88565b6040516309a99b4f60e41b815261100290639a99b4f090611a2e90309086906004016185cc565b602060405180830381600087803b158015611a4857600080fd5b505af1158015611a5c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a809190618463565b915081611a8e575050611c88565b6000805b84811015611abc57858582818110611aa657fe5b9050602002013582019150806001019050611a92565b5080611aca57505050611c88565b6000806000805b89811015611c805784898983818110611ae657fe5b90506020020135880281611af657fe5b0493508a8a82818110611b0557fe5b9050602002016020810190611b1a919061820c565b6001600160a01b03811660009081526004602052604090205490935091508115611c36576000600180840381548110611b4f57fe5b9060005260206000209060040201905080600201601c9054906101000a900460ff1615611bbc57836001600160a01b03167fb9c75cbbfde137c4281689580799ef5f52144e78858f776a5979b2b212137d8586604051611baf919061947a565b60405180910390a2611c30565b600354611bcf908663ffffffff6165fe16565b6003908155810154611be7908663ffffffff6165fe16565b60038201556040516001600160a01b038516907fcb0aad6cf9cd03bdf6137e359f541c42f38b39f007cae8e89e88aa7d8c6617b290611c2790889061947a565b60405180910390a25b50611c78565b826001600160a01b03167fb9c75cbbfde137c4281689580799ef5f52144e78858f776a5979b2b212137d8585604051611c6f919061947a565b60405180910390a25b600101611ad1565b505050505050505b5050436010555050565b6001546000908210611ca657506000611d5c565b60006001600160a01b031660018381548110611cbe57fe5b60009182526020909120600490910201546001600160a01b03161480611cee57506008541580611cee5750600a54155b80611cfd575060085460095410155b80611d0e5750611d0c82611d61565b155b80611d3757506000600b8381548110611d2357fe5b906000526020600020906016020160000154115b80611d4b57506001611d4761333f565b5111155b15611d5857506000611d5c565b5060015b919050565b6001546000908210611d7557506000611d5c565b600b548210611db25760018281548110611d8b57fe5b9060005260206000209060040201600201601c9054906101000a900460ff16159050611d5c565b60018281548110611dbf57fe5b9060005260206000209060040201600201601c9054906101000a900460ff16158015611e0c5750600b8281548110611df357fe5b600091825260209091206001601690920201015460ff16155b92915050565b600b54611ed057611e21617db8565b60015460005b81811015611ecc57600b8054600181018255600091909152835160008051602061958783398151915260169092029182019081556020808601516000805160206195c78339815191528401805460ff1916911515919091179055604086015180518794611ea8936000805160206195a7833981519152909101920190617de7565b506060820151611ebe9060038301906013617e61565b505050806001019050611e27565b5050505b336110011480611ee1575033612002145b611efd5760405162461bcd60e51b8152600401610e7290618964565b6001600160a01b03811660009081526004602052604090205480611f215750611f74565b6001810390506000600b8281548110611f3657fe5b600091825260209091206001601690920201015460ff169050611f598383615520565b8015611f625750805b15610e94576009805460001901905550505b50565b60015460609081906000805b82811015611fca5760018181548110611f9857fe5b9060005260206000209060040201600201601c9054906101000a900460ff16611fc2576001909101905b600101611f83565b50606081604051908082528060200260200182016040528015611ff7578160200160208202803683370190505b50905060608260405190808252806020026020018201604052801561203057816020015b606081526020019060019003908161201b5790505b50600b54600094509091508414156121ab5760005b848110156121a5576001818154811061205a57fe5b9060005260206000209060040201600201601c9054906101000a900460ff1661219d576001818154811061208a57fe5b600091825260209091206004909102015483516001600160a01b03909116908490869081106120b557fe5b60200260200101906001600160a01b031690816001600160a01b031681525050600b81815481106120e257fe5b600091825260209182902060026016909202018101805460408051601f60001961010060018616150201909316949094049182018590048502840185019052808352919290919083018282801561217a5780601f1061214f5761010080835404028352916020019161217a565b820191906000526020600020905b81548152906001019060200180831161215d57829003601f168201915b505050505082858151811061218b57fe5b60209081029190910101526001909301925b600101612045565b50612247565b60005b8481101561224557600181815481106121c357fe5b9060005260206000209060040201600201601c9054906101000a900460ff1661223d57600181815481106121f357fe5b600091825260209091206004909102015483516001600160a01b039091169084908690811061221e57fe5b6001600160a01b03909216602092830291909101909101526001909301925b6001016121ae565b505b909450925050505b9091565b600181565b61100181565b60085481565b6102ca81565b600881565b6060806000600e549050600080600c541161228b57601561228f565b600c545b9050606061229b61333f565b905060606122a882616623565b9050828251116122bf57909450925061224f915050565b838383510310156122d1578282510393505b83156123075760c843046122ed83838388880360008a8a616791565b6123058383838888038989038a8b8b8b510301616791565b505b606083604051908082528060200260200182016040528015612333578160200160208202803683370190505b50905060608460405190808252806020026020018201604052801561236c57816020015b60608152602001906001900390816123575790505b50905060005b858110156123ed5784818151811061238657fe5b602002602001015183828151811061239a57fe5b60200260200101906001600160a01b031690816001600160a01b0316815250508381815181106123c657fe5b60200260200101518282815181106123da57fe5b6020908102919091010152600101612372565b509096509450505050509091565b60065481565b61200681565b61200081565b6001600160a01b03811660009081526004602052604081205480612435576000915050611d5c565b6000190161119f81611d61565b6001600160a01b0381166000908152600460205260408120548061246a576000915050611d5c565b60018082038154811061247957fe5b906000526020600020906004020160030154915050919050565b600081565b606781565b601281815481106124aa57fe5b600091825260209182902001805460408051601f600260001961010060018716150201909416939093049283018590048502810185019091528181529350909183018282801561253b5780601f106125105761010080835404028352916020019161253b565b820191906000526020600020905b81548152906001019060200180831161251e57829003601f168201915b505050505081565b60105481565b6001818154811061255657fe5b600091825260209091206004909102018054600182015460028301546003909301546001600160a01b0392831694509082169291821691600160a01b81046001600160401b031691600160e01b90910460ff169086565b61100581565b600281565b601081565b61100881565b6103e881565b600b81565b600c5481565b61200381565b606681565b61271081565b33612000146126065760405162461bcd60e51b8152600401610e7290619283565b7f41ce201247b6ceb957dcdb217d0b8acb50b9ea0e12af9af4f5e7f38902101605838383604051612639939291906194c3565b60405180910390a1505050565b60025481565b60115481565b60145460ff1681565b600a5481565b6000601754600014156126765750600161267b565b506017545b90565b6001600160a01b038116600090815260046020526040812054806126b45760405162461bcd60e51b8152600401610e729061920b565b6000190192915050565b600b5461277c576126cd617db8565b60015460005b8181101561277857600b8054600181018255600091909152835160008051602061958783398151915260169092029182019081556020808601516000805160206195c78339815191528401805460ff1916911515919091179055604086015180518794612754936000805160206195a7833981519152909101920190617de7565b50606082015161276a9060038301906013617e61565b5050508060010190506126d3565b5050505b6008546127895760036008555b600a54612796576002600a555b60006127a13361267e565b90506127ac81611c92565b6127c85760405162461bcd60e51b8152600401610e7290618f11565b611f7433826168e8565b600981565b61100781565b600381565b60c881565b61100681565b6040518060a00160405280607881526020016195e76078913981565b60005460ff1681565b61200281565b61300081565b6402540be40081565b60005460ff166128495760405162461bcd60e51b8152600401610e729061892d565b336110071461286a5760405162461bcd60e51b8152600401610e7290619008565b6128d484848080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050604080518082019091526013815272065787069726554696d655365636f6e6447617606c1b602082015291506169809050565b1561297157602081146128f95760405162461bcd60e51b8152600401610e72906191c5565b604080516020601f8401819004810282018101909252828152600091612937918585808385018382808284376000920191909152506169d992505050565b90506064811015801561294d5750620186a08111155b6129695760405162461bcd60e51b8152600401610e7290618d72565b6002556132dd565b6129d184848080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250506040805180820190915260098152686275726e526174696f60b81b602082015291506169809050565b15612a8657602081146129f65760405162461bcd60e51b8152600401610e72906187b3565b604080516020601f8401819004810282018101909252828152600091612a34918585808385018382808284376000920191909152506169d992505050565b9050612710612a60601854612a54600f54856165fe90919063ffffffff16565b9063ffffffff6165fe16565b1115612a7e5760405162461bcd60e51b8152600401610e7290618c98565b6006556132dd565b612af084848080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250506040805180820190915260138152726d61784e756d4f664d61696e7461696e696e6760681b602082015291506169809050565b15612b8a5760208114612b155760405162461bcd60e51b8152600401610e72906187ea565b604080516020601f8401819004810282018101909252828152600091612b53918585808385018382808284376000920191909152506169d992505050565b600c5490915080612b62575060155b808210612b815760405162461bcd60e51b8152600401610e7290618bb9565b506008556132dd565b612bf384848080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250506040805180820190915260128152716d61696e7461696e536c6173685363616c6560701b602082015291506169809050565b15612c8c5760208114612c185760405162461bcd60e51b8152600401610e72906188b3565b604080516020601f8401819004810282018101909252828152600091612c56918585808385018382808284376000920191909152506169d992505050565b9050600081118015612c685750600a81105b612c845760405162461bcd60e51b8152600401610e7290619367565b600a556132dd565b612d0084848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505060408051808201909152601981527f6d61784e756d4f66576f726b696e6743616e6469646174657300000000000000602082015291506169809050565b15612d8f5760208114612d255760405162461bcd60e51b8152600401610e7290618867565b604080516020601f8401819004810282018101909252828152600091612d63918585808385018382808284376000920191909152506169d992505050565b9050600d54811115612d875760405162461bcd60e51b8152600401610e7290618de8565b600e556132dd565b612df884848080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250506040805180820190915260128152716d61784e756d4f6643616e6469646174657360701b602082015291506169809050565b15612e7a5760208114612e1d5760405162461bcd60e51b8152600401610e7290619056565b604080516020601f8401819004810282018101909252828152600091612e5b918585808385018382808284376000920191909152506169d992505050565b600d819055600e54909150811015612e7457600d54600e555b506132dd565b612ede84848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505060408051808201909152600d81526c6e756d4f66436162696e65747360981b602082015291506169809050565b15612f8c5760208114612f035760405162461bcd60e51b8152600401610e72906188f8565b604080516020601f8401819004810282018101909252828152600091612f41918585808385018382808284376000920191909152506169d992505050565b905060008111612f635760405162461bcd60e51b8152600401610e7290618a61565b6064811115612f845760405162461bcd60e51b8152600401610e7290618aa9565b600c556132dd565b612ff884848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505060408051808201909152601581527473797374656d52657761726442617365526174696f60581b602082015291506169809050565b156130a1576020811461301d5760405162461bcd60e51b8152600401610e729061931f565b604080516020601f840181900481028201810190925282815260009161305b918585808385018382808284376000920191909152506169d992505050565b905061271061307b601854612a54600654856165fe90919063ffffffff16565b11156130995760405162461bcd60e51b8152600401610e72906189d2565b600f556132dd565b61311584848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505060408051808201909152601881527f73797374656d526577617264416e74694d4556526174696f0000000000000000602082015291506169809050565b156131be576020811461313a5760405162461bcd60e51b8152600401610e7290618d27565b604080516020601f8401819004810282018101909252828152600091613178918585808385018382808284376000920191909152506169d992505050565b9050612710613198600f54612a54600654856165fe90919063ffffffff16565b11156131b65760405162461bcd60e51b8152600401610e7290618e82565b6018556132dd565b61321f84848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505060408051808201909152600a8152690e8eae4dc98cadccee8d60b31b602082015291506169809050565b156132c557602081146132445760405162461bcd60e51b8152600401610e7290618c16565b604080516020601f8401819004810282018101909252828152600091613282918585808385018382808284376000920191909152506169d992505050565b905060038110158015613296575060098111155b806132a15750806001145b6132bd5760405162461bcd60e51b8152600401610e729061913f565b6017556132dd565b60405162461bcd60e51b8152600401610e72906193c4565b7f6cdb0ac70ab7f2e2d035cca5be60d89906f2dede7648ddbd7402189c1eeed17a848484846040516133129493929190618781565b60405180910390a150505050565b60046020526000908152604090205481565b68056bc75e2d6310000081565b6001546060906000805b8281101561336e5761335a81611d61565b15613366578160010191505b600101613349565b5060608160405190808252806020026020018201604052801561339b578160200160208202803683370190505b5090506000915060005b83811015613422576133b681611d61565b1561341a57600181815481106133c857fe5b600091825260209091206004909102015482516001600160a01b03909116908390859081106133f357fe5b60200260200101906001600160a01b031690816001600160a01b0316815250508260010192505b6001016133a5565b509250505090565b601581565b61027181565b61100281565b60175481565b601381815481106124aa57fe5b60185481565b600061345e61333f565b519050600080600c5411613473576015613477565b600c545b905080821115613485578091505b8161348f57600191505b5090565b67016345785d8a000081565b60055481565b61100381565b61200481565b60005460ff16156134d45760405162461bcd60e51b8152600401610e7290619108565b6134dc617e8e565b60006134ff6040518060a00160405280607881526020016195e760789139614141565b91509150806135205760405162461bcd60e51b8152600401610e7290619242565b613528617db8565b60005b83602001515181101561372957600b8054600181018255600091909152825160008051602061958783398151915260169092029182019081556020808501516000805160206195c78339815191528401805460ff19169115159190911790556040850151805186946135b1936000805160206195a7833981519152909101920190617de7565b5060608201516135c79060038301906013617e61565b505050836040015181815181106135da57fe5b6020026020010151600b82815481106135ef57fe5b90600052602060002090601602016002019080519060200190613613929190617de7565b5060018460200151828151811061362657fe5b60209081029190910181015182546001818101855560009485528385208351600493840290910180546001600160a01b039283166001600160a01b03199182161782558587015182850180549185169183169190911790556040860151600283018054606089015160808a01511515600160e01b0260ff60e01b196001600160401b03909216600160a01b0267ffffffffffffffff60a01b199590981692909516919091179290921694909417161790915560a0909301516003909301929092559187015180519185019391859081106136fc57fe5b602090810291909101810151516001600160a01b031682528101919091526040016000205560010161352b565b50506103e860025550506000805460ff19166001179055565b600d5481565b601354600090815b818110156138515761383985858080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250506013805490925085915081106137a157fe5b600091825260209182902001805460408051601f600260001961010060018716150201909416939093049283018590048502810185019091528181529283018282801561382f5780601f106138045761010080835404028352916020019161382f565b820191906000526020600020905b81548152906001019060200180831161381257829003601f168201915b50505050506169de565b1561384957600192505050611e0c565b600101613750565b5060125460005b818110156138c2576138a986868080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250506012805490925085915081106137a157fe5b156138ba5760019350505050611e0c565b600101613858565b50600095945050505050565b33611001146138ef5760405162461bcd60e51b8152600401610e72906193eb565b600b546139ad576138fe617db8565b60015460005b818110156139a957600b8054600181018255600091909152835160008051602061958783398151915260169092029182019081556020808601516000805160206195c78339815191528401805460ff1916911515919091179055604086015180518794613985936000805160206195a7833981519152909101920190617de7565b50606082015161399b9060038301906013617e61565b505050806001019050613904565b5050505b60006139b882616a42565b90506139c381611c92565b156119455761194582826168e8565b606581565b601181565b3341146139fb5760405162461bcd60e51b8152600401610e72906192d2565b60005460ff16613a1d5760405162461bcd60e51b8152600401610e729061892d565b60003411613a3d5760405162461bcd60e51b8152600401610e7290618db9565b3a15613a5b5760405162461bcd60e51b8152600401610e7290618fda565b6001600160a01b03811660009081526004602052604090205460145434919060ff16613a9b57610271600f556103e86006556014805460ff191660011790555b600f546017546001108015613ab257506000601854115b15613ad7576001601754036017544381613ac857fe5b066018540281613ad457fe5b04015b600083118015613ae75750600081115b15613b94576000613b10612710613b04348563ffffffff616bc516565b9063ffffffff616bff16565b90508015613b92576040516110029082156108fc029083906000818181858888f19350505050158015613b47573d6000803e3d6000fd5b507f6ecc855f9440a9282c90913bbc91619fd44f5ec0b462af28d127b116f130aa4d81604051613b77919061947a565b60405180910390a1613b8f848263ffffffff6165bc16565b93505b505b600083118015613ba657506000600654115b15613c4c576000613bc8612710613b0460065434616bc590919063ffffffff16565b90508015613c4a5760405161dead9082156108fc029083906000818181858888f19350505050158015613bff573d6000803e3d6000fd5b507f627059660ea01c4733a328effb2294d2f86905bf806da763a89cee254de8bee581604051613c2f919061947a565b60405180910390a1613c47848263ffffffff6165bc16565b93505b505b8115613d4a576000600180840381548110613c6357fe5b9060005260206000209060040201905080600201601c9054906101000a900460ff1615613cd057846001600160a01b03167ff177e5d6c5764d79c32883ed824111d9b13f5668cf6ab1cc12dd36791dd955b485604051613cc3919061947a565b60405180910390a2613d44565b600354613ce3908563ffffffff6165fe16565b6003908155810154613cfb908563ffffffff6165fe16565b60038201556040516001600160a01b038616907f93a090ecc682c002995fad3c85b30c5651d7fd29b0be5da9d784a3302aedc05590613d3b90879061947a565b60405180910390a25b50613d8c565b836001600160a01b03167ff177e5d6c5764d79c32883ed824111d9b13f5668cf6ab1cc12dd36791dd955b484604051613d83919061947a565b60405180910390a25b50505050565b600e5481565b61100081565b61dead81565b600b8181548110613db157fe5b6000918252602091829020601691909102018054600180830154600280850180546040805161010096831615969096026000190190911692909204601f810188900488028501880190925281845293965060ff90911694919291830182828015613e5c5780601f10613e3157610100808354040283529160200191613e5c565b820191906000526020600020905b815481529060010190602001808311613e3f57829003601f168201915b5050505050905083565b61100481565b6000600a5460001480613e7d575082155b80613e885750600954155b15613e9557506000614139565b60096000815460019003919050819055506000613ee0600a54613b0486613b04600b8a81548110613ec257fe5b6000918252602090912060169091020154439063ffffffff6165bc16565b90506000600b8681548110613ef157fe5b906000526020600020906016020160010160006101000a81548160ff0219169083151502179055506000806110016001600160a01b0316638256ace66040518163ffffffff1660e01b8152600401604080518083038186803b158015613f5657600080fd5b505afa158015613f6a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613f8e919061847b565b91509150600093508083106140ef57613fa78888615520565b5060405163436aa28360e11b8152600090612002906386d5450690613fd0908c906004016185b8565b60206040518083038186803b158015613fe857600080fd5b505afa158015613ffc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906140209190618228565b6001600160a01b03161461408e576040516328aa02b160e01b8152611001906328aa02b190614057908b9087908a90600401618627565b600060405180830381600087803b15801561407157600080fd5b505af1158015614085573d6000803e3d6000fd5b505050506140e6565b6040516305bfb49960e41b815261100190635bfb4990906140b3908b906004016185b8565b600060405180830381600087803b1580156140cd57600080fd5b505af11580156140e1573d6000803e3d6000fd5b505050505b60019350614101565b818310614101576140ff88616a42565b505b6040516001600160a01b038916907fb9d38178dc641ff1817967a63c9078cbcd955a9f1fcd75e0e3636de615d44d3b90600090a25050505b949350505050565b614149617e8e565b6000614153617e8e565b61415b617f2b565b61416c61416786616c41565b616c66565b90506000805b61417b83616cb0565b156142ef57806141a05761419661419184616cd1565b616d1f565b60ff1684526142e7565b80600114156142e25760606141bc6141b785616cd1565b616d9f565b905080516040519080825280602002602001820160405280156141f957816020015b6141e6617eb2565b8152602001906001900390816141de5790505b508560200181905250805160405190808252806020026020018201604052801561423757816020015b60608152602001906001900390816142225790505b50604086015260005b81518110156142d757614251617eb2565b6060600061427185858151811061426457fe5b6020026020010151616e70565b92509250925080614291578860009a509a505050505050505050506142f8565b82896020015185815181106142a257fe5b602002602001018190525081896040015185815181106142be57fe5b6020026020010181905250505050806001019050614240565b5060019250506142e7565b6142ef565b600101614172565b50919350909150505b915091565b604080516001808252818301909252606091829190816020015b606081526020019060019003908161431757905050905061433d8363ffffffff16616f8a565b8160008151811061434a57fe5b602002602001018190525061119f81616f9d565b60006064835111156143955760008051602061956783398151915260405161438590618b06565b60405180910390a1506066611e0c565b60005b83518110156144335760005b8181101561442a578481815181106143b857fe5b6020026020010151600001516001600160a01b03168583815181106143d957fe5b6020026020010151600001516001600160a01b031614156144225760008051602061956783398151915260405161440f90618c4d565b60405180910390a1606692505050611e0c565b6001016143a4565b50600101614398565b5060608060606015805480602002602001604051908101604052809291908181526020016000905b828210156144e55760008481526020908190206040805160c0810182526004860290920180546001600160a01b039081168452600180830154821685870152600283015491821693850193909352600160a01b81046001600160401b03166060850152600160e01b900460ff16151560808401526003015460a0830152908352909201910161445b565b50505050905060606016805480602002602001604051908101604052809291908181526020016000905b828210156145ba5760008481526020908190208301805460408051601f60026000196101006001871615020190941693909304928301859004850281018501909152818152928301828280156145a65780601f1061457b576101008083540402835291602001916145a6565b820191906000526020600020905b81548152906001019060200180831161458957829003601f168201915b50505050508152602001906001019061450f565b50505050905060005b8251811015614617578281815181106145d857fe5b6020026020010151606001516003028382815181106145f357fe5b60209081029190910101516001600160401b039091166060909101526001016145c3565b5060608061462789898686617027565b9150915061463582826158e3565b60015460408051828152602080840282010190915292985090965060009550859450925060609150828015614674578160200160208202803683370190505b50905060005b828110156148055760006001600160a01b03166120026001600160a01b03166386d54506600184815481106146ab57fe5b60009182526020909120600491820201546040516001600160e01b031960e085901b1681526146e6926001600160a01b0390921691016185b8565b60206040518083038186803b1580156146fe57600080fd5b505afa158015614712573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906147369190618228565b6001600160a01b03161461479857600182828151811061475257fe5b602002602001019060ff16908160ff16815250506001818154811061477357fe5b906000526020600020906004020160030154600014614793578360010193505b6147fd565b67016345785d8a0000600182815481106147ae57fe5b906000526020600020906004020160030154106147d0578460010194506147fd565b600181815481106147dd57fe5b9060005260206000209060040201600301546000146147fd578360010193505b60010161467a565b50606084604051908082528060200260200182016040528015614832578160200160208202803683370190505b509050606085604051908082528060200260200182016040528015614861578160200160208202803683370190505b509050606086604051908082528060200260200182016040528015614890578160200160208202803683370190505b5090506060876040519080825280602002602001820160405280156148bf578160200160208202803683370190505b50905060006060886040519080825280602002602001820160405280156148f0578160200160208202803683370190505b50905060608960405190808252806020026020018201604052801561491f578160200160208202803683370190505b50905060009a506000995060006110046001600160a01b031663149d14d96040518163ffffffff1660e01b815260040160206040518083038186803b15801561496757600080fd5b505afa15801561497b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061499f9190618463565b905067016345785d8a00008111156149eb576000805160206195678339815191526040516149cc906190c7565b60405180910390a160689e505050505050505050505050505050611e0c565b60005b8a811015614d7f57898181518110614a0257fe5b602002602001015160ff1660011415614af85760018181548110614a2257fe5b906000526020600020906004020160030154600014614af35760018181548110614a4857fe5b600091825260209091206004909102015484516001600160a01b039091169085908e908110614a7357fe5b60200260200101906001600160a01b031690816001600160a01b03168152505060018181548110614aa057fe5b906000526020600020906004020160030154838d81518110614abe57fe5b60200260200101818152505060018a8d81518110614ad857fe5b602002602001019060ff16908160ff16815250508b6001019b505b614d77565b67016345785d8a000060018281548110614b0e57fe5b90600052602060002090600402016003015410614c935760018181548110614b3257fe5b906000526020600020906004020160020160009054906101000a90046001600160a01b0316898e81518110614b6357fe5b60200260200101906001600160a01b031690816001600160a01b03168152505060006402540be40060018381548110614b9857fe5b90600052602060002090600402016003015481614bb157fe5b0660018381548110614bbf57fe5b906000526020600020906004020160030154039050614be783826165bc90919063ffffffff16565b898f81518110614bf357fe5b60200260200101818152505060018281548110614c0c57fe5b906000526020600020906004020160010160009054906101000a90046001600160a01b0316878f81518110614c3d57fe5b60200260200101906001600160a01b031690816001600160a01b03168152505081888f81518110614c6a57fe5b6020908102919091010152614c85868263ffffffff6165fe16565b95508d6001019d5050614d77565b60018181548110614ca057fe5b906000526020600020906004020160030154600014614d775760018181548110614cc657fe5b906000526020600020906004020160010160009054906101000a90046001600160a01b0316848d81518110614cf757fe5b60200260200101906001600160a01b031690816001600160a01b03168152505060018181548110614d2457fe5b906000526020600020906004020160030154838d81518110614d4257fe5b60200260200101818152505060008a8d81518110614d5c57fe5b602002602001019060ff16908160ff16815250508b6001019b505b6001016149ee565b5060008415614ff5576002546040516303702b2960e51b815261100491636e056520918891614db9918e918e918d914201906004016186e9565b6020604051808303818588803b158015614dd257600080fd5b505af193505050508015614e03575060408051601f3d908101601f19168201909252614e0091810190618390565b60015b614f7a576040516000815260443d1015614e1f57506000614eba565b60046000803e60005160e01c6308c379a08114614e40576000915050614eba565b60043d036004833e81513d60248201116001600160401b0382111715614e6b57600092505050614eba565b80830180516001600160401b03811115614e8c576000945050505050614eba565b8060208301013d8601811115614eaa57600095505050505050614eba565b601f01601f191660405250925050505b80614ec55750614f07565b60019150857fa7cdeed7d0db45e3219a6e5d60838824c16f1d39991fcfe3f963029c844bf28082604051614ef9919061876e565b60405180910390a250614f75565b3d808015614f31576040519150601f19603f3d011682016040523d82523d6000602084013e614f36565b606091505b5060019150857fbfa884552dd8921b6ce90bfe906952ae5b3b29be0cc1a951d4f62697635a3a4582604051614f6b919061876e565b60405180910390a2505b614ff5565b8015614fbc577fa217d08e65f80c73121cd9db834d81652d544bfbf452f6d04922b16c90a37b7086604051614faf919061947a565b60405180910390a1614ff3565b857fa7cdeed7d0db45e3219a6e5d60838824c16f1d39991fcfe3f963029c844bf280604051614fea90618830565b60405180910390a25b505b80156151ab5760005b87518110156151a957600088828151811061501557fe5b6020026020010151905060006001828154811061502e57fe5b60009182526020909120600160049092020181015481546001600160a01b03909116916108fc918590811061505f57fe5b9060005260206000209060040201600301549081150290604051600060405180830381858888f193505050509050801561511b57600182815481106150a057fe5b60009182526020909120600160049092020181015481546001600160a01b03909116917f6c61d60f69a7beb3e1c80db7f39f37b208537cbb19da3174511b477812b2fc7d91859081106150ef57fe5b90600052602060002090600402016003015460405161510e919061947a565b60405180910390a261519f565b6001828154811061512857fe5b60009182526020909120600160049092020181015481546001600160a01b03909116917f25d0ce7d2f0cec669a8c17efe49d195c13455bb8872b65fa610ac7f53fe4ca7d918590811061517757fe5b906000526020600020906004020160030154604051615196919061947a565b60405180910390a25b5050600101614ffe565b505b8351156153a15760005b845181101561539f578a81815181106151ca57fe5b602002602001015160ff1660011415615269576120026001600160a01b031663092193ab8583815181106151fa57fe5b602002602001015187848151811061520e57fe5b60200260200101516040518363ffffffff1660e01b815260040161523291906185b8565b6000604051808303818588803b15801561524b57600080fd5b505af115801561525f573d6000803e3d6000fd5b5050505050615397565b600085828151811061527757fe5b60200260200101516001600160a01b03166108fc86848151811061529757fe5b60200260200101519081150290604051600060405180830381858888f193505050509050801561532d578582815181106152cd57fe5b60200260200101516001600160a01b03167f6c61d60f69a7beb3e1c80db7f39f37b208537cbb19da3174511b477812b2fc7d86848151811061530b57fe5b6020026020010151604051615320919061947a565b60405180910390a2615395565b85828151811061533957fe5b60200260200101516001600160a01b03167f25d0ce7d2f0cec669a8c17efe49d195c13455bb8872b65fa610ac7f53fe4ca7d86848151811061537757fe5b602002602001015160405161538c919061947a565b60405180910390a25b505b6001016151b5565b505b5050505050505050505050505060005b60015481101561540e57600181815481106153c857fe5b906000526020600020906004020160030154600014615406576000600182815481106153f057fe5b9060005260206000209060040201600301819055505b6001016153b1565b50471561547c577f6ecc855f9440a9282c90913bbc91619fd44f5ec0b462af28d127b116f130aa4d47604051615444919061947a565b60405180910390a1604051611002904780156108fc02916000818181858888f1935050505015801561547a573d6000803e3d6000fd5b505b60006003819055600555815115615497576154978282615dcd565b6110016001600160a01b031663fc4333cd6040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156154d457600080fd5b505af11580156154e8573d6000803e3d6000fd5b50506040517fedd8d7296956dd970ab4de3f2fc03be2b0ffc615d20cd4c72c6e44f928630ebf925060009150a1506000949350505050565b6000806001838154811061553057fe5b9060005260206000209060040201600301549050600060018080549050039050600161555a61333f565b511161558f5760006001858154811061556f57fe5b906000526020600020906004020160030181905550600092505050611e0c565b846001600160a01b03167f3b6f9ef90462b512a1293ecec018670bf7b7f1876fb727590a8a6d7643130a70836040516155c8919061947a565b60405180910390a26001600160a01b038516600090815260046020526040812055835b600154600019018110156157b5576001816001018154811061560957fe5b90600052602060002090600402016001828154811061562457fe5b60009182526020909120825460049092020180546001600160a01b03199081166001600160a01b0393841617825560018085015481840180548416918616919091179055600280860180549185018054909416919095161780835584546001600160401b03600160a01b91829004160267ffffffffffffffff60a01b1990911617808355935460ff600160e01b918290041615150260ff60e01b19909416939093179055600392830154920191909155600b8054909183019081106156e557fe5b9060005260206000209060160201600b828154811061570057fe5b600091825260209091208254601690920201908155600180830154818301805460ff909216151560ff1990921691909117905560028084018054615757938386019390821615610100026000190190911604617f4b565b5061576a60038281019084016013617fc0565b5090505080600101600460006001848154811061578357fe5b600091825260208083206004909202909101546001600160a01b031683528201929092526040019020556001016155eb565b5060018054806157c157fe5b60008281526020812060046000199093019283020180546001600160a01b0319908116825560018201805490911690556002810180546001600160e81b0319169055600301559055600b80548061581457fe5b60008281526020812060166000199093019283020181815560018101805460ff19169055906158466002830182617ee7565b615854600383016000617fea565b50509055600081838161586357fe5b04905080156158d75760015460005b818110156158d4576158ab836001838154811061588b57fe5b9060005260206000209060040201600301546165fe90919063ffffffff16565b600182815481106158b857fe5b6000918252602090912060036004909202010155600101615872565b50505b50600195945050505050565b6060806000808080806158f4613454565b6001549091505b8015615b2657600181039250600b838154811061591457fe5b600091825260209091206001601690920201015460ff1661593457615b1d565b6001838154811061594157fe5b600091825260208220600490910201546001600160a01b0316955061596b90869085908590613e6c565b93508361597757615b1d565b60405163436aa28360e11b81526000908190612002906386d54506906159a1908a906004016185b8565b60206040518083038186803b1580156159b957600080fd5b505afa1580156159cd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906159f19190618228565b90506001600160a01b03811615615a7a576040516302ceee9160e11b81526120029063059ddd2290615a279084906004016185b8565b60206040518083038186803b158015615a3f57600080fd5b505afa158015615a53573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190615a779190618228565b91505b60005b8c51811015615b1957876001600160a01b03168d8281518110615a9c57fe5b6020026020010151600001516001600160a01b03161480615ae55750826001600160a01b03168d8281518110615ace57fe5b6020026020010151600001516001600160a01b0316145b15615b115760018d8281518110615af857fe5b6020908102919091010151901515608090910152615b19565b600101615a7d565b5050505b600019016158fb565b5060005b8951811015615b9357898181518110615b3f57fe5b60200260200101516080015180615b7f575060006001600160a01b03168a8281518110615b6857fe5b6020026020010151600001516001600160a01b0316145b15615b8b578560010195505b600101615b2a565b5088518510615c7b5760408051600180825281830190925290816020015b615bb9617eb2565b815260200190600190039081615bb1575050604080516001808252818301909252919850602082015b6060815260200190600190039081615be257905050955088600081518110615c0657fe5b602002602001015187600081518110615c1b57fe5b602002602001018190525087600081518110615c3357fe5b602002602001015186600081518110615c4857fe5b6020026020010181905250600087600081518110615c6257fe5b6020908102919091010151901515608090910152615dc0565b84895103604051908082528060200260200182016040528015615cb857816020015b615ca5617eb2565b815260200190600190039081615c9d5790505b50965084895103604051908082528060200260200182016040528015615cf257816020015b6060815260200190600190039081615cdd5790505b5095506000915060005b8951811015615dbe57898181518110615d1157fe5b602002602001015160800151158015615d54575060006001600160a01b03168a8281518110615d3c57fe5b6020026020010151600001516001600160a01b031614155b15615db657898181518110615d6557fe5b6020026020010151888481518110615d7957fe5b6020026020010181905250888181518110615d9057fe5b6020026020010151878481518110615da457fe5b60200260200101819052508260010192505b600101615cfc565b505b50505050505b9250929050565b600154825160005b82811015615eea576001615de7617eb2565b60018381548110615df457fe5b600091825260208083206040805160c08101825260049490940290910180546001600160a01b0390811685526001820154811693850193909352600281015492831691840191909152600160a01b82046001600160401b03166060840152600160e01b90910460ff16151560808301526003015460a082015291505b84811015615ebe57878181518110615e8457fe5b6020026020010151600001516001600160a01b031682600001516001600160a01b03161415615eb65760009250615ebe565b600101615e70565b508115615ee05780516001600160a01b03166000908152600460205260408120555b5050600101615dd5565b5080821115615fa957805b82811015615fa7576001805480615f0857fe5b60008281526020812060046000199093019283020180546001600160a01b0319908116825560018201805490911690556002810180546001600160e81b0319169055600301559055600b805480615f5b57fe5b60008281526020812060166000199093019283020181815560018101805460ff1916905590615f8d6002830182617ee7565b615f9b600383016000617fea565b50509055600101615ef5565b505b6000818310615fb85781615fba565b825b905060005b8181101561635e5761606c868281518110615fd657fe5b602002602001015160018381548110615feb57fe5b60009182526020918290206040805160c08101825260049390930290910180546001600160a01b0390811684526001820154811694840194909452600281015493841691830191909152600160a01b83046001600160401b03166060830152600160e01b90920460ff161515608082015260039091015460a08201526173f3565b61622057806001016004600088848151811061608457fe5b6020026020010151600001516001600160a01b03166001600160a01b03168152602001908152602001600020819055508581815181106160c057fe5b6020026020010151600182815481106160d557fe5b6000918252602091829020835160049092020180546001600160a01b039283166001600160a01b0319918216178255928401516001820180549184169185169190911790556040840151600282018054606087015160808801511515600160e01b0260ff60e01b196001600160401b03909216600160a01b0267ffffffffffffffff60a01b1995909716929097169190911792909216939093171692909217905560a090910151600390910155845185908290811061619057fe5b6020026020010151600b82815481106161a557fe5b906000526020600020906016020160020190805190602001906161c9929190617de7565b506000600b82815481106161d957fe5b60009182526020822060169190910201600101805460ff191692151592909217909155600b80548390811061620a57fe5b6000918252602090912060169091020155616356565b85818151811061622c57fe5b6020026020010151606001516001828154811061624557fe5b906000526020600020906004020160020160146101000a8154816001600160401b0302191690836001600160401b0316021790555061630b85828151811061628957fe5b6020026020010151600b838154811061629e57fe5b600091825260209182902060026016909202018101805460408051601f60001961010060018616150201909316949094049182018590048502840185019052808352919290919083018282801561382f5780601f106138045761010080835404028352916020019161382f565b6163565784818151811061631b57fe5b6020026020010151600b828154811061633057fe5b90600052602060002090601602016002019080519060200190616354929190617de7565b505b600101615fbf565b50828211156165365761636f617db8565b835b838110156165335785818151811061638557fe5b6020026020010151826040018190525060018782815181106163a357fe5b6020908102919091018101518254600181810185556000948552838520835160049093020180546001600160a01b039384166001600160a01b0319918216178255848601518284018054918616918316919091179055604080860151600284018054606089015160808a01511515600160e01b0260ff60e01b196001600160401b03909216600160a01b0267ffffffffffffffff60a01b1995909a1692909616919091179290921696909617169190911790935560a090930151600390930192909255600b80549283018155909352845160169091026000805160206195878339815191528101918255858301516000805160206195c78339815191528201805491151560ff19909216919091179055928501518051869492936164d9936000805160206195a783398151915201920190617de7565b5060608201516164ef9060038301906013617e61565b505050806001016004600089848151811061650657fe5b602090810291909101810151516001600160a01b0316825281019190915260400160002055600101616371565b50505b61653e61744f565b616546617631565b6000600981905560015493505b838110156165b4576000600b828154811061656a57fe5b60009182526020822060169190910201600101805460ff191692151592909217909155600b80548390811061659b57fe5b6000918252602090912060169091020155600101616553565b505050505050565b600061119f83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525061781f565b60008282018381101561119f5760405162461bcd60e51b8152600401610e729061899b565b60015481516040805182815260208084028201019091526060929190839082801561666257816020015b606081526020019060019003908161664d5790505b50600b549091508314616679579250611d5c915050565b60005b8281101561678857600b60016004600089858151811061669857fe5b60200260200101516001600160a01b03166001600160a01b031681526020019081526020016000205403815481106166cc57fe5b600091825260209182902060026016909202018101805460408051601f6000196101006001861615020190931694909404918201859004850284018501905280835291929091908301828280156167645780601f1061673957610100808354040283529160200191616764565b820191906000526020600020905b81548152906001019060200180831161674757829003601f168201915b505050505082828151811061677557fe5b602090810291909101015260010161667c565b50949350505050565b60005b828110156168de57600082878388016040516020016167b49291906185aa565b6040516020818303038152906040528051906020012060001c816167d457fe5b069050808501828701146168d557600089838801815181106167f257fe5b602002602001015190506060898489018151811061680c57fe5b602002602001015190508a8388018151811061682457fe5b60200260200101518b858a018151811061683a57fe5b60200260200101906001600160a01b031690816001600160a01b031681525050818b8489018151811061686957fe5b60200260200101906001600160a01b031690816001600160a01b031681525050898388018151811061689757fe5b60200260200101518a858a01815181106168ad57fe5b6020026020010181905250808a848901815181106168c757fe5b602002602001018190525050505b50600101616794565b5050505050505050565b600980546001908101909155600b80548390811061690257fe5b906000526020600020906016020160010160006101000a81548160ff02191690831515021790555043600b828154811061693857fe5b600091825260208220601690910201919091556040516001600160a01b038416917ff62981a567ec3cec866c6fa93c55bcdf841d6292d18b8d522ececa769375d82d91a25050565b600081604051602001616993919061858e565b60405160208183030381529060405280519060200120836040516020016169ba919061858e565b6040516020818303038152906040528051906020012014905092915050565b015190565b8151815160009160019181148083146169fa5760009250616a38565b600160208701838101602088015b600284838510011415616a33578051835114616a275760009650600093505b60209283019201616a08565b505050505b5090949350505050565b6001600160a01b03811660009081526004602052604081205480616a6b57506000199050611d5c565b600181039050600060018281548110616a8057fe5b9060005260206000209060040201600301549050600060018381548110616aa357fe5b6000918252602090912060036004909202010155600154604051600019909101906001600160a01b038616907f8cd4e147d8af98a9e3b6724021b8bf6aed2e5dac71c38f2dce8161b82585b25d90616afc90859061947a565b60405180910390a280616b1457829350505050611d5c565b6000818381616b1f57fe5b0490508015616bbb5760005b84811015616b6d57616b44826001838154811061588b57fe5b60018281548110616b5157fe5b6000918252602090912060036004909202010155600101616b2b565b50600180549085015b81811015616bb857616b8f836001838154811061588b57fe5b60018281548110616b9c57fe5b6000918252602090912060036004909202010155600101616b76565b50505b5091949350505050565b600082616bd457506000611e0c565b82820282848281616be157fe5b041461119f5760405162461bcd60e51b8152600401610e7290618f99565b600061119f83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525061784b565b616c49617ff9565b506040805180820190915281518152602082810190820152919050565b616c6e617f2b565b616c7782617882565b616c8057600080fd5b6000616c8f83602001516178bc565b60208085015160408051808201909152868152920190820152915050919050565b6000616cba617ff9565b505080518051602091820151919092015191011190565b616cd9617ff9565b616ce282616cb0565b616ceb57600080fd5b60208201516000616cfb8261791f565b80830160209586015260408051808201909152908152938401919091525090919050565b805160009015801590616d3457508151602110155b616d3d57600080fd5b6000616d4c83602001516178bc565b90508083600001511015616d725760405162461bcd60e51b8152600401610e729061918e565b82516020808501518301805192849003929183101561678857506020919091036101000a90049392505050565b6060616daa82617882565b616db357600080fd5b6000616dbe83617a00565b9050606081604051908082528060200260200182016040528015616dfc57816020015b616de9617ff9565b815260200190600190039081616de15790505b5090506000616e0e85602001516178bc565b60208601510190506000805b84811015616e6557616e2b8361791f565b9150604051806040016040528083815260200184815250848281518110616e4e57fe5b602090810291909101015291810191600101616e1a565b509195945050505050565b616e78617eb2565b60606000616e84617eb2565b6060616e8e617f2b565b616e9787616c66565b90506000805b616ea683616cb0565b15616f7b5780616ed157616ec1616ebc84616cd1565b617a5c565b6001600160a01b03168552616f73565b8060011415616ef957616ee6616ebc84616cd1565b6001600160a01b03166020860152616f73565b8060021415616f2157616f0e616ebc84616cd1565b6001600160a01b03166040860152616f73565b8060031415616f4d57616f3661419184616cd1565b6001600160401b0316606086015260019150616f73565b8060041415616f6e57616f67616f6284616cd1565b617a76565b9350616f73565b616f7b565b600101616e9d565b50929791965091945092505050565b6060611e0c616f9883617ae6565b617bcc565b6060815160001415616fbe5750604080516000815260208101909152611d5c565b606082600081518110616fcd57fe5b602002602001015190506000600190505b835181101561700e5761700482858381518110616ff757fe5b6020026020010151617c1e565b9150600101616fde565b5061119f617021825160c060ff16617c9b565b82617c1e565b60608060006120026001600160a01b031663c473318f6040518163ffffffff1660e01b815260040160206040518083038186803b15801561706757600080fd5b505afa15801561707b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061709f9190618463565b905080855188510110156170b4575083518651015b6060816040519080825280602002602001820160405280156170f057816020015b6170dd617eb2565b8152602001906001900390816170d55790505b50905060608260405190808252806020026020018201604052801561712957816020015b60608152602001906001900390816171145790505b50905060008060005b8b518310806171415750895182105b801561714c57508581105b156173e1578b518314156171bc5789828151811061716657fe5b602002602001015185828151811061717a57fe5b602002602001018190525088828151811061719157fe5b60200260200101518482815181106171a557fe5b602090810291909101015260019182019101617132565b8951821415617227578b83815181106171d157fe5b60200260200101518582815181106171e557fe5b60200260200101819052508a83815181106171fc57fe5b602002602001015184828151811061721057fe5b602090810291909101015260019283019201617132565b89828151811061723357fe5b6020026020010151606001516001600160401b03168c848151811061725457fe5b6020026020010151606001516001600160401b031611156172d0578b838151811061727b57fe5b602002602001015185828151811061728f57fe5b60200260200101819052508a83815181106172a657fe5b60200260200101518482815181106172ba57fe5b60200260200101819052508260010192506173d9565b8982815181106172dc57fe5b6020026020010151606001516001600160401b03168c84815181106172fd57fe5b6020026020010151606001516001600160401b031610156173795789828151811061732457fe5b602002602001015185828151811061733857fe5b602002602001018190525088828151811061734f57fe5b602002602001015184828151811061736357fe5b60200260200101819052508160010191506173d9565b89828151811061738557fe5b6020026020010151600001516001600160a01b03168c84815181106173a657fe5b6020026020010151600001516001600160a01b031610156173cd578b838151811061727b57fe5b89828151811061716657fe5b600101617132565b50929a91995090975050505050505050565b805182516000916001600160a01b03918216911614801561742d575081602001516001600160a01b031683602001516001600160a01b0316145b801561119f5750506040908101519101516001600160a01b0390811691161490565b6012546013548082111561749a57805b8281101561749857601280548061747257fe5b60019003818190600052602060002001600061748e9190617ee7565b905560010161745f565b505b60008183106174a957816174ab565b825b905060005b818110156175c357617568601282815481106174c857fe5b600091825260209182902001805460408051601f60026000196101006001871615020190941693909304928301859004850281018501909152818152928301828280156175565780601f1061752b57610100808354040283529160200191617556565b820191906000526020600020905b81548152906001019060200180831161753957829003601f168201915b5050505050601383815481106137a157fe5b6175bb576013818154811061757957fe5b906000526020600020016012828154811061759057fe5b9060005260206000200190805460018160011615610100020316600290046175b9929190617f4b565b505b6001016174b0565b5082821115610e9457825b82811015613d8c576012601382815481106175e557fe5b6000918252602080832084546001818101875595855291909320929091018054617628949390920192909160026101009282161592909202600019011604617f4b565b506001016175ce565b601354600b548082111561767c57805b8281101561767a57601380548061765457fe5b6001900381819060005260206000200160006176709190617ee7565b9055600101617641565b505b600081831061768b578161768d565b825b905060005b818110156177ac5761774a601382815481106176aa57fe5b600091825260209182902001805460408051601f60026000196101006001871615020190941693909304928301859004850281018501909152818152928301828280156177385780601f1061770d57610100808354040283529160200191617738565b820191906000526020600020905b81548152906001019060200180831161771b57829003601f168201915b5050505050600b838154811061629e57fe5b6177a457600b818154811061775b57fe5b90600052602060002090601602016002016013828154811061777957fe5b9060005260206000200190805460018160011615610100020316600290046177a2929190617f4b565b505b600101617692565b5082821115610e9457825b82811015613d8c576013600b82815481106177ce57fe5b60009182526020808320845460018082018755958552919093206016929092029092016002908101805461781695939094019390926000199082161561010002011604617f4b565b506001016177b7565b600081848411156178435760405162461bcd60e51b8152600401610e72919061876e565b505050900390565b6000818361786c5760405162461bcd60e51b8152600401610e72919061876e565b50600083858161787857fe5b0495945050505050565b805160009061789357506000611d5c565b6020820151805160001a9060c08210156178b257600092505050611d5c565b5060019392505050565b8051600090811a60808110156178d6576000915050611d5c565b60b88110806178f1575060c081108015906178f1575060f881105b15617900576001915050611d5c565b60c08110156179145760b519019050611d5c565b60f519019050611d5c565b80516000908190811a608081101561793a57600191506179f9565b60b881101561794f57607e19810191506179f9565b60c08110156179a057600060b78203600186019550806020036101000a86510491506001810182019350508083101561799a5760405162461bcd60e51b8152600401610e7290618e57565b506179f9565b60f88110156179b55760be19810191506179f9565b600060f78203600186019550806020036101000a8651049150600181018201935050808310156179f75760405162461bcd60e51b8152600401610e7290618e57565b505b5092915050565b8051600090617a1157506000611d5c565b60008090506000617a2584602001516178bc565b602085015185519181019250015b80821015617a5357617a448261791f565b82019150826001019250617a33565b50909392505050565b8051600090601514617a6d57600080fd5b611e0c82616d1f565b8051606090617a8457600080fd5b6000617a9383602001516178bc565b83516040805191839003808352601f19601f8201168301602001909152919250606090828015617aca576020820181803683370190505b5090506000816020019050616788848760200151018285617d6d565b604080516020808252818301909252606091829190602082018180368337505050602081018490529050600067ffffffffffffffff198416617b2a57506018617b4e565b6fffffffffffffffffffffffffffffffff198416617b4a57506010617b4e565b5060005b6020811015617b8457818181518110617b6357fe5b01602001516001600160f81b03191615617b7c57617b84565b600101617b4e565b60008160200390506060816040519080825280601f01601f191660200182016040528015617bb9576020820181803683370190505b5080830196909652508452509192915050565b606081516001148015617bfe5750607f60f81b82600081518110617bec57fe5b01602001516001600160f81b03191611155b15617c0a575080611d5c565b611e0c617c1c8351608060ff16617c9b565b835b6060806040519050835180825260208201818101602087015b81831015617c4f578051835260209283019201617c37565b50855184518101855292509050808201602086015b81831015617c7c578051835260209283019201617c64565b508651929092011591909101601f01601f191660405250905092915050565b6060680100000000000000008310617cc55760405162461bcd60e51b8152600401610e7290618b91565b60408051600180825281830190925260609160208201818036833701905050905060378411617d1f5782840160f81b81600081518110617d0157fe5b60200101906001600160f81b031916908160001a9053509050611e0c565b6060617d2a85617ae6565b90508381510160370160f81b82600081518110617d4357fe5b60200101906001600160f81b031916908160001a905350617d648282617c1e565b95945050505050565b80617d7757610e94565b5b60208110617d97578251825260209283019290910190601f1901617d78565b915181516020939093036101000a6000190180199091169216919091179052565b60405180608001604052806000815260200160001515815260200160608152602001617de2618013565b905290565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10617e2857805160ff1916838001178555617e55565b82800160010185558215617e55579182015b82811115617e55578251825591602001919060010190617e3a565b5061348f929150618032565b8260138101928215617e555791602002820182811115617e55578251825591602001919060010190617e3a565b6040518060600160405280600060ff16815260200160608152602001606081525090565b6040805160c081018252600080825260208201819052918101829052606081018290526080810182905260a081019190915290565b50805460018160011615610100020316600290046000825580601f10617f0d5750611f74565b601f016020900490600052602060002090810190611f749190618032565b6040518060400160405280617f3e617ff9565b8152602001600081525090565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10617f845780548555617e55565b82800160010185558215617e5557600052602060002091601f016020900482015b82811115617e55578254825591600101919060010190617fa5565b8260138101928215617e555791820182811115617e55578254825591600101919060010190617fa5565b50611f74906013810190618032565b604051806040016040528060008152602001600081525090565b6040518061026001604052806013906020820280368337509192915050565b61267b91905b8082111561348f5760008155600101618038565b8035611e0c81619551565b60008083601f840112618068578182fd5b5081356001600160401b0381111561807e578182fd5b6020830191508360208083028501011115615dc657600080fd5b6000601f83818401126180a9578182fd5b82356180bc6180b782619506565b6194e0565b818152925060208084019085810160005b8481101561814e578135880189603f8201126180e857600080fd5b838101356001600160401b0381111561810057600080fd5b618111818901601f191686016194e0565b81815260408c8184860101111561812757600080fd5b828185018884013750600091810186019190915285525092820192908201906001016180cd565b50505050505092915050565b600082601f83011261816a578081fd5b81356181786180b782619506565b81815291506020808301908481018184028601820187101561819957600080fd5b6000805b8581101561814e5782356001600160401b03811681146181bb578283fd5b8552938301939183019160010161819d565b60008083601f8401126181de578182fd5b5081356001600160401b038111156181f4578182fd5b602083019150836020828501011115615dc657600080fd5b60006020828403121561821d578081fd5b813561119f81619551565b600060208284031215618239578081fd5b815161119f81619551565b60008060008060408587031215618259578283fd5b84356001600160401b038082111561826f578485fd5b61827b88838901618057565b90965094506020870135915080821115618293578384fd5b506182a087828801618057565b95989497509550505050565b6000806000606084860312156182c0578283fd5b83356001600160401b03808211156182d6578485fd5b81860187601f8201126182e7578586fd5b803592506182f76180b784619506565b80848252602080830192508084018b82838902870101111561831757898afd5b8994505b868510156183415761832d8c8261804c565b84526001949094019392810192810161831b565b509097508801359350505080821115618358578384fd5b6183648783880161815a565b93506040860135915080821115618379578283fd5b5061838686828701618098565b9150509250925092565b6000602082840312156183a1578081fd5b8151801515811461119f578182fd5b600080602083850312156183c2578182fd5b82356001600160401b038111156183d7578283fd5b6183e3858286016181cd565b90969095509350505050565b60008060008060408587031215618404578384fd5b84356001600160401b038082111561841a578586fd5b618426888389016181cd565b9096509450602087013591508082111561843e578384fd5b506182a0878288016181cd565b60006020828403121561845c578081fd5b5035919050565b600060208284031215618474578081fd5b5051919050565b6000806040838503121561848d578182fd5b505080516020909101519092909150565b6000806000604084860312156184b2578081fd5b833560ff811681146184c2578182fd5b925060208401356001600160401b038111156184dc578182fd5b6184e8868287016181cd565b9497909650939450505050565b6000815180845260208085019450808401835b8381101561852d5781516001600160a01b031687529582019590820190600101618508565b509495945050505050565b60008284528282602086013780602084860101526020601f19601f85011685010190509392505050565b6000815180845261857a816020860160208601619525565b601f01601f19169290920160200192915050565b600082516185a0818460208701619525565b9190910192915050565b918252602082015260400190565b6001600160a01b0391909116815260200190565b6001600160a01b03929092168252602082015260400190565b6001600160a01b03968716815294861660208601529290941660408401526001600160401b03166060830152911515608082015260a081019190915260c00190565b6001600160a01b0393909316835260208301919091521515604082015260600190565b6001600160a01b0392909216825260ff16602082015260400190565b60006020825261119f60208301846184f5565b60006040825261868c60408301856184f5565b602083820381850152818551808452828401915082838202850101838801865b838110156186da57601f198784030185526186c8838351618562565b948601949250908501906001016186ac565b50909998505050505050505050565b6000608082526186fc60808301876184f5565b828103602084810191909152865180835287820192820190845b8181101561873257845183529383019391830191600101618716565b5050848103604086015261874681886184f5565b93505050506001600160401b038316606083015295945050505050565b901515815260200190565b60006020825261119f6020830184618562565b600060408252618795604083018688618538565b82810360208401526187a8818587618538565b979650505050505050565b6020808252601c908201527f6c656e677468206f66206275726e526174696f206d69736d6174636800000000604082015260600190565b60208082526026908201527f6c656e677468206f66206d61784e756d4f664d61696e7461696e696e67206d696040820152650e6dac2e8c6d60d31b606082015260800190565b6020808252601b908201527f6261746368207472616e736665722072657475726e2066616c73650000000000604082015260600190565b6020808252602c908201527f6c656e677468206f66206d61784e756d4f66576f726b696e6743616e6469646160408201526b0e8cae640dad2e6dac2e8c6d60a31b606082015260800190565b60208082526025908201527f6c656e677468206f66206d61696e7461696e536c6173685363616c65206d69736040820152640dac2e8c6d60db1b606082015260800190565b6020808252818101527f6c656e677468206f66206e756d4f66436162696e657473206d69736d61746368604082015260600190565b60208082526019908201527f74686520636f6e7472616374206e6f7420696e69742079657400000000000000604082015260600190565b6020808252601f908201527f6f6e6c7920736c617368206f72207374616b6548756220636f6e747261637400604082015260600190565b6020808252601b908201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604082015260600190565b60208082526063908201527f7468652073797374656d52657761726442617365526174696f20706c7573206260408201527f75726e526174696f20616e642073797374656d526577617264416e74694d455660608201527f526174696f206d757374206265206e6f2067726561746572207468616e20313060808201526203030360ec1b60a082015260c00190565b60208082526028908201527f746865206e756d4f66436162696e657473206d75737420626520677265617465604082015267072207468616e20360c41b606082015260800190565b60208082526039908201527f746865206e756d4f66436162696e657473206d757374206265206c657373207460408201527f68616e204d41585f4e554d5f4f465f56414c494441544f525300000000000000606082015260800190565b60208082526029908201527f746865206e756d626572206f662076616c696461746f727320657863656564206040820152681d1a19481b1a5b5a5d60ba1b606082015260800190565b60208082526022908201527f63616e206e6f7420646f207468697320747769636520696e206f6e6520626c6f604082015261636b60f01b606082015260800190565b6020808252600e908201526d696e70757420746f6f206c6f6e6760901b604082015260600190565b60208082526037908201527f746865206d61784e756d4f664d61696e7461696e696e67206d7573742062652060408201527f6c657373207468616e206e756d4f66436162696e657473000000000000000000606082015260800190565b6020808252601d908201527f6c656e677468206f66207475726e4c656e677468206d69736d61746368000000604082015260600190565b6020808252602b908201527f6475706c696361746520636f6e73656e7375732061646472657373206f66207660408201526a185b1a59185d1bdc94d95d60aa1b606082015260800190565b60208082526063908201527f746865206275726e526174696f20706c75732073797374656d5265776172644260408201527f617365526174696f20616e642073797374656d526577617264416e74694d455660608201527f526174696f206d757374206265206e6f2067726561746572207468616e20313060808201526203030360ec1b60a082015260c00190565b6020808252602b908201527f6c656e677468206f662073797374656d526577617264416e74694d455652617460408201526a0d2de40dad2e6dac2e8c6d60ab1b606082015260800190565b60208082526027908201527f7468652065787069726554696d655365636f6e64476170206973206f7574206f604082015266662072616e676560c81b606082015260800190565b6020808252601590820152746465706f7369742076616c7565206973207a65726f60581b604082015260600190565b60208082526049908201527f746865206d61784e756d4f66576f726b696e6743616e64696461746573206d7560408201527f7374206265206e6f742067726561746572207468616e206d61784e756d4f6643606082015268616e6469646174657360b81b608082015260a00190565b6020808252601190820152706164646974696f6e206f766572666c6f7760781b604082015260600190565b60208082526063908201527f7468652073797374656d526577617264416e74694d4556526174696f20706c7560408201527f73206275726e526174696f20616e642073797374656d5265776172644261736560608201527f526174696f206d757374206265206e6f2067726561746572207468616e20313060808201526203030360ec1b60a082015260c00190565b60208082526023908201527f63616e206e6f7420656e7465722054656d706f72617279204d61696e74656e616040820152626e636560e81b606082015260800190565b60208082526025908201527f6c656e677468206f66206a61696c2076616c696461746f7273206d757374206260408201526465206f6e6560d81b606082015260800190565b60208082526021908201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6040820152607760f81b606082015260800190565b6020808252601490820152736761737072696365206973206e6f74207a65726f60601b604082015260600190565b6020808252602e908201527f746865206d6573736167652073656e646572206d75737420626520676f76657260408201526d1b985b98d94818dbdb9d1c9858dd60921b606082015260800190565b60208082526025908201527f6c656e677468206f66206d61784e756d4f6643616e64696461746573206d69736040820152640dac2e8c6d60db1b606082015260800190565b6020808252601290820152716e6f7420696e206d61696e74656e616e636560701b604082015260600190565b60208082526021908201527f666565206973206c6172676572207468616e2044555354595f494e434f4d494e6040820152604760f81b606082015260800190565b60208082526019908201527f74686520636f6e747261637420616c726561647920696e697400000000000000604082015260600190565b6020808252602f908201527f746865207475726e4c656e6774682073686f756c6420626520696e205b332c3960408201526e5d206f7220657175616c20746f203160881b606082015260800190565b6020808252601a908201527f6c656e677468206973206c657373207468616e206f6666736574000000000000604082015260600190565b60208082526026908201527f6c656e677468206f662065787069726554696d655365636f6e64476170206d696040820152650e6dac2e8c6d60d31b606082015260800190565b60208082526017908201527f6f6e6c792063757272656e742076616c696461746f7273000000000000000000604082015260600190565b60208082526021908201527f6661696c656420746f20706172736520696e69742076616c696461746f7253656040820152601d60fa1b606082015260800190565b6020808252602f908201527f746865206d6573736167652073656e646572206d7573742062652063726f737360408201526e0818da185a5b8818dbdb9d1c9858dd608a1b606082015260800190565b6020808252602d908201527f746865206d6573736167652073656e646572206d75737420626520746865206260408201526c3637b1b590383937b23ab1b2b960991b606082015260800190565b60208082526028908201527f6c656e677468206f662073797374656d52657761726442617365526174696f206040820152670dad2e6dac2e8c6d60c31b606082015260800190565b6020808252603e908201527f746865206d61696e7461696e536c6173685363616c65206d757374206265206760408201527f726561746572207468616e203020616e64206c657373207468616e2031300000606082015260800190565b6020808252600d908201526c756e6b6e6f776e20706172616d60981b604082015260600190565b60208082526029908201527f746865206d6573736167652073656e646572206d75737420626520736c6173686040820152680818dbdb9d1c9858dd60ba1b606082015260800190565b6020808252601f908201527f746865206d73672073656e646572206d757374206265207374616b6548756200604082015260600190565b61ffff91909116815260200190565b90815260200190565b6000848252831515602083015260606040830152617d646060830184618562565b63ffffffff91909116815260200190565b60ff91909116815260200190565b600060ff8516825260406020830152617d64604083018486618538565b6040518181016001600160401b03811182821017156194fe57600080fd5b604052919050565b60006001600160401b0382111561951b578081fd5b5060209081020190565b60005b83811015619540578181015183820152602001619528565b83811115613d8c5750506000910152565b6001600160a01b0381168114611f7457600080fdfe70e72399380dcfb0338abc03dc8d47f9f470ada8e769c9a78d644ea97385ecb20175b7a638427703f0dbe7bb9bbf987a2551717b34e79f33b5b1008d1fa01db90175b7a638427703f0dbe7bb9bbf987a2551717b34e79f33b5b1008d1fa01dbb0175b7a638427703f0dbe7bb9bbf987a2551717b34e79f33b5b1008d1fa01dbaf87680f873f871949fb29aac15b9a4b7f17c3385939b007540f4d791949fb29aac15b9a4b7f17c3385939b007540f4d791949fb29aac15b9a4b7f17c3385939b007540f4d79164b085e6972fc98cd3c81d64d40e325acfed44365b97a7567a27939c14dbc7512ddcf54cb1284eb637cfa308ae4e00cb5588a164736f6c6343000604000a \ No newline at end of file diff --git a/core/systemcontracts/bohr/types.go b/core/systemcontracts/bohr/types.go index 7c859194a0..6995324b65 100644 --- a/core/systemcontracts/bohr/types.go +++ b/core/systemcontracts/bohr/types.go @@ -17,11 +17,3 @@ var ( //go:embed chapel/StakeHubContract ChapelStakeHubContract string ) - -// contract codes for Rialto upgrade -var ( - //go:embed rialto/ValidatorContract - RialtoValidatorContract string - //go:embed rialto/StakeHubContract - RialtoStakeHubContract string -) diff --git a/core/systemcontracts/upgrade.go b/core/systemcontracts/upgrade.go index f9a776e245..30492342d7 100644 --- a/core/systemcontracts/upgrade.go +++ b/core/systemcontracts/upgrade.go @@ -776,22 +776,6 @@ func init() { }, } - bohrUpgrade[rialtoNet] = &Upgrade{ - UpgradeName: "bohr", - Configs: []*UpgradeConfig{ - { - ContractAddr: common.HexToAddress(ValidatorContract), - CommitUrl: "https://github.com/bnb-chain/bsc-genesis-contract/commit/398c9364aad5261c1ecd90ac3ab2df89b65c45e3", - Code: bohr.RialtoValidatorContract, - }, - { - ContractAddr: common.HexToAddress(StakeHubContract), - CommitUrl: "https://github.com/bnb-chain/bsc-genesis-contract/commit/398c9364aad5261c1ecd90ac3ab2df89b65c45e3", - Code: bohr.RialtoStakeHubContract, - }, - }, - } - pascalUpgrade[mainNet] = &Upgrade{ UpgradeName: "pascal", Configs: []*UpgradeConfig{ diff --git a/eth/backend.go b/eth/backend.go index 930924e7a6..56add41cc0 100644 --- a/eth/backend.go +++ b/eth/backend.go @@ -193,12 +193,9 @@ func New(stack *node.Node, config *ethconfig.Config) (*Ethereum, error) { chainConfig.CancunTime = config.OverridePassedForkTime chainConfig.HaberTime = config.OverridePassedForkTime chainConfig.HaberFixTime = config.OverridePassedForkTime + chainConfig.BohrTime = config.OverridePassedForkTime overrides.OverridePassedForkTime = config.OverridePassedForkTime } - if config.OverrideBohr != nil { - chainConfig.BohrTime = config.OverrideBohr - overrides.OverrideBohr = config.OverrideBohr - } if config.OverridePascal != nil { chainConfig.PascalTime = config.OverridePascal overrides.OverridePascal = config.OverridePascal diff --git a/eth/ethconfig/config.go b/eth/ethconfig/config.go index e40ec440cf..697a9fb91f 100644 --- a/eth/ethconfig/config.go +++ b/eth/ethconfig/config.go @@ -191,9 +191,6 @@ type Config struct { // OverridePassedForkTime OverridePassedForkTime *uint64 `toml:",omitempty"` - // OverrideBohr (TODO: remove after the fork) - OverrideBohr *uint64 `toml:",omitempty"` - // OverridePascal (TODO: remove after the fork) OverridePascal *uint64 `toml:",omitempty"` diff --git a/eth/ethconfig/gen_config.go b/eth/ethconfig/gen_config.go index bfad53a4d2..2d86b97ab1 100644 --- a/eth/ethconfig/gen_config.go +++ b/eth/ethconfig/gen_config.go @@ -71,7 +71,6 @@ func (c Config) MarshalTOML() (interface{}, error) { RPCEVMTimeout time.Duration RPCTxFeeCap float64 OverridePassedForkTime *uint64 `toml:",omitempty"` - OverrideBohr *uint64 `toml:",omitempty"` OverridePascal *uint64 `toml:",omitempty"` OverridePrague *uint64 `toml:",omitempty"` OverrideVerkle *uint64 `toml:",omitempty"` @@ -132,7 +131,6 @@ func (c Config) MarshalTOML() (interface{}, error) { enc.RPCEVMTimeout = c.RPCEVMTimeout enc.RPCTxFeeCap = c.RPCTxFeeCap enc.OverridePassedForkTime = c.OverridePassedForkTime - enc.OverrideBohr = c.OverrideBohr enc.OverridePascal = c.OverridePascal enc.OverridePrague = c.OverridePrague enc.OverrideVerkle = c.OverrideVerkle @@ -197,7 +195,6 @@ func (c *Config) UnmarshalTOML(unmarshal func(interface{}) error) error { RPCEVMTimeout *time.Duration RPCTxFeeCap *float64 OverridePassedForkTime *uint64 `toml:",omitempty"` - OverrideBohr *uint64 `toml:",omitempty"` OverridePascal *uint64 `toml:",omitempty"` OverridePrague *uint64 `toml:",omitempty"` OverrideVerkle *uint64 `toml:",omitempty"` @@ -369,9 +366,6 @@ func (c *Config) UnmarshalTOML(unmarshal func(interface{}) error) error { if dec.OverridePassedForkTime != nil { c.OverridePassedForkTime = dec.OverridePassedForkTime } - if dec.OverrideBohr != nil { - c.OverrideBohr = dec.OverrideBohr - } if dec.OverridePascal != nil { c.OverridePascal = dec.OverridePascal } diff --git a/params/config.go b/params/config.go index 1c07b294cf..faa3178639 100644 --- a/params/config.go +++ b/params/config.go @@ -244,9 +244,9 @@ var ( HaberTime: newUint64(0), HaberFixTime: newUint64(0), BohrTime: newUint64(0), - // TODO - PascalTime: newUint64(0), - PragueTime: newUint64(0), + // TODO: set them to `0` when passed on the mainnet + PascalTime: nil, + PragueTime: nil, Parlia: &ParliaConfig{ Period: 3, From 55896bf6106a63cd6f9d538c78ed83e3a46c74be Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Vitor=20Naz=C3=A1rio=20Coelho?= Date: Tue, 8 Oct 2024 04:49:41 -0300 Subject: [PATCH 24/27] minor Update group_prover.sage (#2716) --- .github/workflows/pre-release.yml | 8 ++++---- .github/workflows/release.yml | 8 ++++---- crypto/secp256k1/libsecp256k1/sage/group_prover.sage | 2 +- 3 files changed, 9 insertions(+), 9 deletions(-) diff --git a/.github/workflows/pre-release.yml b/.github/workflows/pre-release.yml index b8658f732b..0b6e802ff0 100644 --- a/.github/workflows/pre-release.yml +++ b/.github/workflows/pre-release.yml @@ -82,28 +82,28 @@ jobs: # ============================== - name: Upload Linux Build - uses: actions/upload-artifact@v3 + uses: actions/upload-artifact@v4.3.3 if: matrix.os == 'ubuntu-latest' with: name: linux path: ./build/bin/geth - name: Upload MacOS Build - uses: actions/upload-artifact@v3 + uses: actions/upload-artifact@v4.3.3 if: matrix.os == 'macos-latest' with: name: macos path: ./build/bin/geth - name: Upload Windows Build - uses: actions/upload-artifact@v3 + uses: actions/upload-artifact@v4.3.3 if: matrix.os == 'windows-latest' with: name: windows path: ./build/bin/geth.exe - name: Upload ARM-64 Build - uses: actions/upload-artifact@v3 + uses: actions/upload-artifact@v4.3.3 if: matrix.os == 'ubuntu-latest' with: name: arm64 diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index b0b57e8d90..c90c28c6e7 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -81,28 +81,28 @@ jobs: # ============================== - name: Upload Linux Build - uses: actions/upload-artifact@v3 + uses: actions/upload-artifact@v4.3.3 if: matrix.os == 'ubuntu-latest' with: name: linux path: ./build/bin/geth - name: Upload MacOS Build - uses: actions/upload-artifact@v3 + uses: actions/upload-artifact@v4.3.3 if: matrix.os == 'macos-latest' with: name: macos path: ./build/bin/geth - name: Upload Windows Build - uses: actions/upload-artifact@v3 + uses: actions/upload-artifact@v4.3.3 if: matrix.os == 'windows-latest' with: name: windows path: ./build/bin/geth.exe - name: Upload ARM-64 Build - uses: actions/upload-artifact@v3 + uses: actions/upload-artifact@v4.3.3 if: matrix.os == 'ubuntu-latest' with: name: arm64 diff --git a/crypto/secp256k1/libsecp256k1/sage/group_prover.sage b/crypto/secp256k1/libsecp256k1/sage/group_prover.sage index ab580c5b23..68882e9365 100644 --- a/crypto/secp256k1/libsecp256k1/sage/group_prover.sage +++ b/crypto/secp256k1/libsecp256k1/sage/group_prover.sage @@ -17,7 +17,7 @@ # - A constraint describing the requirements of the law, called "require" # * Implementations are transliterated into functions that operate as well on # algebraic input points, and are called once per combination of branches -# exectured. Each execution returns: +# executed. Each execution returns: # - A constraint describing the assumptions this implementation requires # (such as Z1=1), called "assumeFormula" # - A constraint describing the assumptions this specific branch requires, From 72ec06eae77b8e818b30204843dec46d273a96ab Mon Sep 17 00:00:00 2001 From: Ethan Date: Thu, 10 Oct 2024 13:01:30 +0800 Subject: [PATCH 25/27] feat: update system contract bytecodes of pascal hardfork (#2734) --- .../pascal/chapel/GovernorContract | 2 +- .../pascal/chapel/StakeHubContract | 2 +- .../pascal/chapel/TokenHubContract | 2 +- .../pascal/chapel/TokenRecoverPortalContract | 2 +- .../pascal/chapel/ValidatorContract | 2 +- .../pascal/mainnet/GovernorContract | 2 +- .../pascal/mainnet/StakeHubContract | 2 +- .../pascal/mainnet/TokenHubContract | 2 +- .../pascal/mainnet/TokenRecoverPortalContract | 2 +- .../pascal/mainnet/ValidatorContract | 2 +- .../pascal/rialto/GovernorContract | 2 +- .../pascal/rialto/StakeHubContract | 2 +- .../pascal/rialto/TokenHubContract | 2 +- .../pascal/rialto/TokenRecoverPortalContract | 2 +- .../pascal/rialto/ValidatorContract | 2 +- core/systemcontracts/upgrade.go | 102 +++++++++--------- 16 files changed, 66 insertions(+), 66 deletions(-) diff --git a/core/systemcontracts/pascal/chapel/GovernorContract b/core/systemcontracts/pascal/chapel/GovernorContract index 615329506d..34ad7b2d37 100644 --- a/core/systemcontracts/pascal/chapel/GovernorContract +++ b/core/systemcontracts/pascal/chapel/GovernorContract @@ -1 +1 @@ -6080604052600436106103dd5760003560e01c80637b3c71d3116101fd578063c170ec0b11610118578063deaaa7cc116100ab578063ece40cc11161007a578063ece40cc114610de9578063f23a6e6114610e09578063f8ce560a14610e35578063fc0c546a14610e55578063fe0d94c114610e7657600080fd5b8063deaaa7cc14610caa578063e23a9a5214610cde578063ea0217cf14610da9578063eb9019d414610dc957600080fd5b8063d33219b4116100e7578063d33219b414610c05578063da95691a14610c24578063dd4e2ba514610c44578063ddf0b00914610c8a57600080fd5b8063c170ec0b14610b97578063c28bc2fa14610bb2578063c59057e414610bc5578063d07f91e914610be557600080fd5b8063a7713a7011610190578063b187bd261161015f578063b187bd2614610b18578063b58131b014610b36578063bc197c8114610b4b578063c01f9e3714610b7757600080fd5b8063a7713a7014610aa3578063a890c91014610ab8578063ab58fb8e14610ad8578063ac43175114610af857600080fd5b806384b0196e116101cc57806384b0196e14610a1b57806391ddadf414610a4357806397c3d33414610a6f5780639a802a6d14610a8357600080fd5b80637b3c71d3146109b15780637d5e81e2146109d15780638129fc1c146109f15780638456cb5914610a0657600080fd5b806332b8113e116102f85780634838d1651161028b57806354fd4d501161025a57806354fd4d501461090757806356781388146109315780635f398a141461095157806360c4247f1461097157806370b0f6601461099157600080fd5b80634838d165146108715780634a49ac4c146108a15780634bf5d7e9146108c1578063533ddd14146108d657600080fd5b806340e58ee5116102c757806340e58ee5146107c6578063417c73a7146107e65780634385963214610806578063452115d61461085157600080fd5b806332b8113e1461073a5780633932abb1146107635780633bccf4fd146107795780633e4f49e61461079957600080fd5b8063150b7a02116103705780632656227d1161033f5780632656227d1461068c5780632d63f6931461069f5780632fe3e261146106d6578063328dd9821461070a57600080fd5b8063150b7a02146105e5578063160cbed71461062957806317977c611461064957806324bc1a641461067757600080fd5b8063046f7da2116103ac578063046f7da21461053857806306f3f9e61461054d57806306fdde031461056d578063143489d01461058f57600080fd5b8063013cf08b1461044d57806301ffc9a7146104c857806302a251a3146104f8578063034201811461051857600080fd5b3661044857306103eb610e89565b6001600160a01b0316146104465760405162461bcd60e51b815260206004820152601f60248201527f476f7665726e6f723a206d7573742073656e6420746f206578656375746f720060448201526064015b60405180910390fd5b005b600080fd5b34801561045957600080fd5b5061046d610468366004615c38565b610ea3565b604080519a8b526001600160a01b0390991660208b0152978901969096526060880194909452608087019290925260a086015260c085015260e084015215156101008301521515610120820152610140015b60405180910390f35b3480156104d457600080fd5b506104e86104e3366004615c51565b610f5e565b60405190151581526020016104bf565b34801561050457600080fd5b50610195545b6040519081526020016104bf565b34801561052457600080fd5b5061050a610533366004615d97565b610f6f565b34801561054457600080fd5b50610446611067565b34801561055957600080fd5b50610446610568366004615c38565b6110f7565b34801561057957600080fd5b50610582611182565b6040516104bf9190615e8d565b34801561059b57600080fd5b506105cd6105aa366004615c38565b60009081526101636020526040902054600160401b90046001600160a01b031690565b6040516001600160a01b0390911681526020016104bf565b3480156105f157600080fd5b50610610610600366004615eb5565b630a85bd0160e11b949350505050565b6040516001600160e01b031990911681526020016104bf565b34801561063557600080fd5b5061050a61064436600461608c565b611215565b34801561065557600080fd5b5061050a61066436600461611b565b6102c36020526000908152604090205481565b34801561068357600080fd5b5061050a611300565b61050a61069a36600461608c565b611326565b3480156106ab57600080fd5b5061050a6106ba366004615c38565b600090815261016360205260409020546001600160401b031690565b3480156106e257600080fd5b5061050a7fb3b3f3b703cd84ce352197dcff232b1b5d3cfb2025ce47cf04742d0651f1af8881565b34801561071657600080fd5b5061072a610725366004615c38565b611419565b6040516104bf9493929190616201565b34801561074657600080fd5b5061028f546040516001600160401b0390911681526020016104bf565b34801561076f57600080fd5b506101945461050a565b34801561078557600080fd5b5061050a61079436600461624e565b6116ab565b3480156107a557600080fd5b506107b96107b4366004615c38565b611721565b6040516104bf91906162b2565b3480156107d257600080fd5b506104466107e1366004615c38565b61172c565b3480156107f257600080fd5b5061044661080136600461611b565b611757565b34801561081257600080fd5b506104e86108213660046162da565b60008281526101c6602090815260408083206001600160a01b038516845260080190915290205460ff1692915050565b34801561085d57600080fd5b5061050a61086c36600461608c565b6117d8565b34801561087d57600080fd5b506104e861088c36600461611b565b60016020526000908152604090205460ff1681565b3480156108ad57600080fd5b506104466108bc36600461611b565b6117e6565b3480156108cd57600080fd5b50610582611861565b3480156108e257600080fd5b506104e86108f136600461611b565b6102c16020526000908152604090205460ff1681565b34801561091357600080fd5b506040805180820190915260018152603160f81b6020820152610582565b34801561093d57600080fd5b5061050a61094c36600461630a565b61190e565b34801561095d57600080fd5b5061050a61096c366004616336565b611937565b34801561097d57600080fd5b5061050a61098c366004615c38565b611981565b34801561099d57600080fd5b506104466109ac366004615c38565b611a36565b3480156109bd57600080fd5b5061050a6109cc3660046163b9565b611abe565b3480156109dd57600080fd5b5061050a6109ec366004616412565b611b10565b3480156109fd57600080fd5b50610446611c2b565b348015610a1257600080fd5b50610446611e5c565b348015610a2757600080fd5b50610a30611ef2565b6040516104bf97969594939291906164b2565b348015610a4f57600080fd5b50610a58611f90565b60405165ffffffffffff90911681526020016104bf565b348015610a7b57600080fd5b50606461050a565b348015610a8f57600080fd5b5061050a610a9e366004616514565b612004565b348015610aaf57600080fd5b5061050a61201b565b348015610ac457600080fd5b50610446610ad336600461611b565b612048565b348015610ae457600080fd5b5061050a610af3366004615c38565b6120d0565b348015610b0457600080fd5b50610446610b1336600461656c565b61216c565b348015610b2457600080fd5b5060005462010000900460ff166104e8565b348015610b4257600080fd5b5061050a6128b1565b348015610b5757600080fd5b50610610610b663660046165cb565b63bc197c8160e01b95945050505050565b348015610b8357600080fd5b5061050a610b92366004615c38565b6128bd565b348015610ba357600080fd5b506102c2546104e89060ff1681565b610446610bc036600461665e565b6128c8565b348015610bd157600080fd5b5061050a610be036600461608c565b6129d8565b348015610bf157600080fd5b50610446610c003660046166a1565b612a12565b348015610c1157600080fd5b5061022b546001600160a01b03166105cd565b348015610c3057600080fd5b5061050a610c3f3660046166ca565b612a9a565b348015610c5057600080fd5b5060408051808201909152601a81527f737570706f72743d627261766f2671756f72756d3d627261766f0000000000006020820152610582565b348015610c9657600080fd5b50610446610ca5366004615c38565b612b21565b348015610cb657600080fd5b5061050a7f150214d74d59b7d1e90c73fc22ef3d991dd0a76b046543d4d80ab92d2a50328f81565b348015610cea57600080fd5b50610d79610cf93660046162da565b60408051606081018252600080825260208201819052918101919091525060009182526101c6602090815260408084206001600160a01b0393909316845260089092018152918190208151606081018352905460ff8082161515835261010082041693820193909352620100009092046001600160601b03169082015290565b6040805182511515815260208084015160ff1690820152918101516001600160601b0316908201526060016104bf565b348015610db557600080fd5b50610446610dc4366004615c38565b612b44565b348015610dd557600080fd5b5061050a610de436600461676b565b612bcc565b348015610df557600080fd5b50610446610e04366004615c38565b612bed565b348015610e1557600080fd5b50610610610e24366004616797565b63f23a6e6160e01b95945050505050565b348015610e4157600080fd5b5061050a610e50366004615c38565b612c75565b348015610e6157600080fd5b506101f8546105cd906001600160a01b031681565b610446610e84366004615c38565b612d04565b6000610e9e61022b546001600160a01b031690565b905090565b8060008080808080808080610eb78a6120d0565b60008c815261016360205260409020549098506001600160401b03169650610ede8b6128bd565b60008c81526101c66020526040812080546005820154600683015460078401546001600160a01b039093169e50949a509850929650919450610f1f8d611721565b90506002816007811115610f3557610f3561629c565b1493506007816007811115610f4c57610f4c61629c565b14925050509193959799509193959799565b6000610f6982612d27565b92915050565b60008061101361100b7fb3b3f3b703cd84ce352197dcff232b1b5d3cfb2025ce47cf04742d0651f1af888c8c8c8c604051610fab9291906167ff565b60405180910390208b80519060200120604051602001610ff0959493929190948552602085019390935260ff9190911660408401526060830152608082015260a00190565b60405160208183030381529060405280519060200120612d4c565b868686612d79565b90506110598a828b8b8b8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152508d9250612d97915050565b9a9950505050505050505050565b600054630100000090046001600160a01b03163314611099576040516306fbb1e360e01b815260040160405180910390fd5b60005462010000900460ff166110c257604051636cd6020160e01b815260040160405180910390fd5b6000805462ff0000191681556040517f62451d457bc659158be6e6247f56ec1df424a5c7597f71c20c2bc44e0965c8f99190a1565b6110ff610e89565b6001600160a01b0316336001600160a01b03161461112f5760405162461bcd60e51b815260040161043d9061680f565b30611138610e89565b6001600160a01b03161461117657600080366040516111589291906167ff565b604051809103902090505b8061116f610164612e00565b0361116357505b61117f81612e7f565b50565b6060610162805461119290616846565b80601f01602080910402602001604051908101604052809291908181526020018280546111be90616846565b801561120b5780601f106111e05761010080835404028352916020019161120b565b820191906000526020600020905b8154815290600101906020018083116111ee57829003601f168201915b5050505050905090565b6000805462010000900460ff161561124057604051631785c68160e01b815260040160405180910390fd5b3360009081526001602052604090205460ff16156112715760405163b1d02c3d60e01b815260040160405180910390fd5b60005b85518110156112ea576102c1600087838151811061129457611294616880565b6020908102919091018101516001600160a01b031682528101919091526040016000205460ff166112d857604051630b094f2760e31b815260040160405180910390fd5b806112e2816168ac565b915050611274565b506112f785858585612ff0565b95945050505050565b6000610e9e600161130f611f90565b61131991906168c5565b65ffffffffffff16612c75565b600080611335868686866129d8565b9050600061134282611721565b905060048160078111156113585761135861629c565b1480611375575060058160078111156113735761137361629c565b145b6113915760405162461bcd60e51b815260040161043d906168eb565b6000828152610163602052604090819020600201805460ff19166001179055517f712ae1383f79ac853f8d882153778e0260ef8f03b504e2866e0593e04d2b291f906113e09084815260200190565b60405180910390a16113f582888888886131f5565b6114028288888888613296565b61140f8288888888613378565b5095945050505050565b60608060608060006101c660008781526020019081526020016000209050806001018160020182600301836004018380548060200260200160405190810160405280929190818152602001828054801561149c57602002820191906000526020600020905b81546001600160a01b0316815260019091019060200180831161147e575b50505050509350828054806020026020016040519081016040528092919081815260200182805480156114ee57602002820191906000526020600020905b8154815260200190600101908083116114da575b5050505050925081805480602002602001604051908101604052809291908181526020016000905b828210156115c257838290600052602060002001805461153590616846565b80601f016020809104026020016040519081016040528092919081815260200182805461156190616846565b80156115ae5780601f10611583576101008083540402835291602001916115ae565b820191906000526020600020905b81548152906001019060200180831161159157829003601f168201915b505050505081526020019060010190611516565b50505050915080805480602002602001604051908101604052809291908181526020016000905b8282101561169557838290600052602060002001805461160890616846565b80601f016020809104026020016040519081016040528092919081815260200182805461163490616846565b80156116815780601f1061165657610100808354040283529160200191611681565b820191906000526020600020905b81548152906001019060200180831161166457829003601f168201915b5050505050815260200190600101906115e9565b5050505090509450945094509450509193509193565b604080517f150214d74d59b7d1e90c73fc22ef3d991dd0a76b046543d4d80ab92d2a50328f602082015290810186905260ff8516606082015260009081906116f99061100b90608001610ff0565b9050611716878288604051806020016040528060008152506133b3565b979650505050505050565b6000610f69826133d6565b60008060008061173b85613523565b935093509350935061174f848484846117d8565b505050505050565b600054630100000090046001600160a01b03163314611789576040516306fbb1e360e01b815260040160405180910390fd5b6001600160a01b0381166000818152600160208190526040808320805460ff1916909217909155517f7fd26be6fc92aff63f1f4409b2b2ddeb272a888031d7f55ec830485ec61941869190a250565b60006112f7858585856137b4565b600054630100000090046001600160a01b03163314611818576040516306fbb1e360e01b815260040160405180910390fd5b6001600160a01b038116600081815260016020526040808220805460ff19169055517fe0db3499b7fdc3da4cddff5f45d694549c19835e7f719fb5606d3ad1a5de40119190a250565b6101f85460408051634bf5d7e960e01b815290516060926001600160a01b031691634bf5d7e99160048083019260009291908290030181865afa9250505080156118cd57506040513d6000823e601f3d908101601f191682016040526118ca919081019061692c565b60015b611909575060408051808201909152601d81527f6d6f64653d626c6f636b6e756d6265722666726f6d3d64656661756c74000000602082015290565b919050565b60008033905061192f848285604051806020016040528060008152506133b3565b949350505050565b60008033905061171687828888888080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152508a9250612d97915050565b61025e5460009080820361199a57505061025d54919050565b600061025e6119aa600184616999565b815481106119ba576119ba616880565b60009182526020918290206040805180820190915291015463ffffffff8116808352600160201b9091046001600160e01b03169282019290925291508410611a1057602001516001600160e01b03169392505050565b611a25611a1c8561387f565b61025e906138e8565b6001600160e01b0316949350505050565b611a3e610e89565b6001600160a01b0316336001600160a01b031614611a6e5760405162461bcd60e51b815260040161043d9061680f565b30611a77610e89565b6001600160a01b031614611ab55760008036604051611a979291906167ff565b604051809103902090505b80611aae610164612e00565b03611aa257505b61117f8161399b565b600080339050611b0686828787878080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506133b392505050565b9695505050505050565b6000805462010000900460ff1615611b3b57604051631785c68160e01b815260040160405180910390fd5b3360009081526001602052604090205460ff1615611b6c5760405163b1d02c3d60e01b815260040160405180910390fd5b611b746139de565b3360009081526102c360205260409020548015611be9576000611b9682611721565b90506001816007811115611bac57611bac61629c565b1480611bc957506000816007811115611bc757611bc761629c565b145b15611be75760405163867f3ee560e01b815260040160405180910390fd5b505b825160208401206000611bfe888888856129d8565b3360009081526102c3602052604090208190559050611c1f88888888613a89565b98975050505050505050565b600054610100900460ff1615808015611c4b5750600054600160ff909116105b80611c655750303b158015611c65575060005460ff166001145b611cc85760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b606482015260840161043d565b6000805460ff191660011790558015611ceb576000805461ff0019166101001790555b334114611d0b5760405163022d8c9560e31b815260040160405180910390fd5b3a15611d2a576040516383f1b1d360e01b815260040160405180910390fd5b611d566040518060400160405280600b81526020016a2129a1a3b7bb32b93737b960a91b815250613af1565b611d82611d65600360006169c2565b611d736003620151806169c2565b68056bc75e2d63100000613b48565b611d8a613b7f565b611d95612005613ba6565b611da0612006613bd6565b611daa600a613c06565b611dbf611dba6003610e106169c2565b613c36565b6110076000526102c16020527f2f832952f0ef896b8c8edd6d16a2e4f2591a90375e33021e3b9ff197f3793fc0805460ff19166001179055611e147330151da466ec8ab345bef3d6983023e050fb0673613c66565b801561117f576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a150565b600054630100000090046001600160a01b03163314611e8e576040516306fbb1e360e01b815260040160405180910390fd5b60005462010000900460ff1615611eb857604051631785c68160e01b815260040160405180910390fd5b6000805462ff00001916620100001781556040517f9e87fac88ff661f02d44f95383c817fece4bce600a3dab7a54406878b965e7529190a1565b6000606080600080600060606098546000801b148015611f125750609954155b611f565760405162461bcd60e51b81526020600482015260156024820152741152540dcc4c8e88155b9a5b9a5d1a585b1a5e9959605a1b604482015260640161043d565b611f5e613cb9565b611f66613cc8565b60408051600080825260208201909252600f60f81b9b939a50919850469750309650945092509050565b6101f854604080516324776b7d60e21b815290516000926001600160a01b0316916391ddadf49160048083019260209291908290030181865afa925050508015611ff7575060408051601f3d908101601f19168201909252611ff4918101906169e4565b60015b61190957610e9e43613cd7565b6000612011848484613d3e565b90505b9392505050565b61025e54600090156120405761203261025e613db5565b6001600160e01b0316905090565b5061025d5490565b612050610e89565b6001600160a01b0316336001600160a01b0316146120805760405162461bcd60e51b815260040161043d9061680f565b30612089610e89565b6001600160a01b0316146120c757600080366040516120a99291906167ff565b604051809103902090505b806120c0610164612e00565b036120b457505b61117f81613de5565b61022b54600082815261022c602052604080822054905163d45c443560e01b81526004810191909152909182916001600160a01b039091169063d45c443590602401602060405180830381865afa15801561212f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121539190616a0c565b9050806001146121635780612014565b60009392505050565b336110071461219257604051630f22c43960e41b8152611007600482015260240161043d565b6121f86040518060400160405280600b81526020016a766f74696e6744656c617960a81b81525085858080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509293925050613e509050565b156122ad57602081146122265783838383604051630a5a604160e01b815260040161043d9493929190616a4e565b604080516020601f8401819004810282018101909252828152600091612267918585808385018382808284376000920191909152509293925050613ea99050565b905080158061227857506201518081115b1561229e5784848484604051630a5a604160e01b815260040161043d9493929190616a4e565b6122a78161399b565b5061286e565b6123146040518060400160405280600c81526020016b1d9bdd1a5b99d4195c9a5bd960a21b81525085858080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509293925050613e509050565b156123c357602081146123425783838383604051630a5a604160e01b815260040161043d9493929190616a4e565b604080516020601f8401819004810282018101909252828152600091612383918585808385018382808284376000920191909152509293925050613ea99050565b9050801580612394575062278d0081115b156123ba5784848484604051630a5a604160e01b815260040161043d9493929190616a4e565b6122a781613eae565b61242f604051806040016040528060118152602001701c1c9bdc1bdcd85b151a1c995cda1bdb19607a1b81525085858080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509293925050613e509050565b156124e5576020811461245d5783838383604051630a5a604160e01b815260040161043d9493929190616a4e565b604080516020601f840181900481028201810190925282815260009161249e918585808385018382808284376000920191909152509293925050613ea99050565b90508015806124b6575069021e19e0c9bab240000081115b156124dc5784848484604051630a5a604160e01b815260040161043d9493929190616a4e565b6122a781613f51565b61254f6040518060400160405280600f81526020016e38bab7b93ab6a73ab6b2b930ba37b960891b81525085858080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509293925050613e509050565b156125fe576020811461257d5783838383604051630a5a604160e01b815260040161043d9493929190616a4e565b604080516020601f84018190048102820181019092528281526000916125be918585808385018382808284376000920191909152509293925050613ea99050565b905060058110806125cf5750601481115b156125f55784848484604051630a5a604160e01b815260040161043d9493929190616a4e565b6122a781612e7f565b61266d604051806040016040528060148152602001736d696e506572696f64416674657251756f72756d60601b81525085858080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509293925050613e509050565b15612733576008811461269b5783838383604051630a5a604160e01b815260040161043d9493929190616a4e565b60006126e1600884848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509293925050613ea99050565b90506001600160401b038116158061270457506202a300816001600160401b0316115b1561272a5784848484604051630a5a604160e01b815260040161043d9493929190616a4e565b6122a781613f94565b61279f6040518060400160405280601181526020017033b7bb32b93737b9283937ba32b1ba37b960791b81525085858080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509293925050613e509050565b1561284d57601481146127cd5783838383604051630a5a604160e01b815260040161043d9493929190616a4e565b6000612813601484848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509293925050613ea99050565b90506001600160a01b0381166128445784848484604051630a5a604160e01b815260040161043d9493929190616a4e565b6122a781614000565b838383836040516325ee20d560e21b815260040161043d9493929190616a4e565b7ff1ce9b2cbf50eeb05769a29e2543fd350cab46894a7dd9978a12d534bb20e633848484846040516128a39493929190616a4e565b60405180910390a150505050565b6000610e9e6101965490565b6000610f698261406c565b6128d0610e89565b6001600160a01b0316336001600160a01b0316146129005760405162461bcd60e51b815260040161043d9061680f565b30612909610e89565b6001600160a01b03161461294757600080366040516129299291906167ff565b604051809103902090505b80612940610164612e00565b0361293457505b600080856001600160a01b03168585856040516129659291906167ff565b60006040518083038185875af1925050503d80600081146129a2576040519150601f19603f3d011682016040523d82523d6000602084013e6129a7565b606091505b50915091506129cf8282604051806060016040528060288152602001616eab602891396140aa565b50505050505050565b6000848484846040516020016129f19493929190616a75565b60408051601f19818403018152919052805160209091012095945050505050565b612a1a610e89565b6001600160a01b0316336001600160a01b031614612a4a5760405162461bcd60e51b815260040161043d9061680f565b30612a53610e89565b6001600160a01b031614612a915760008036604051612a739291906167ff565b604051809103902090505b80612a8a610164612e00565b03612a7e57505b61117f81613f94565b60008251845114612afe5760405162461bcd60e51b815260206004820152602860248201527f476f7665726e6f72427261766f3a20696e76616c6964207369676e61747572656044820152670e640d8cadccee8d60c31b606482015260840161043d565b612b0c3387878787876140c3565b611b068686612b1b8787614181565b85611b10565b600080600080612b3085613523565b935093509350935061174f84848484611215565b612b4c610e89565b6001600160a01b0316336001600160a01b031614612b7c5760405162461bcd60e51b815260040161043d9061680f565b30612b85610e89565b6001600160a01b031614612bc35760008036604051612ba59291906167ff565b604051809103902090505b80612bbc610164612e00565b03612bb057505b61117f81613eae565b60006120148383612be860408051602081019091526000815290565b613d3e565b612bf5610e89565b6001600160a01b0316336001600160a01b031614612c255760405162461bcd60e51b815260040161043d9061680f565b30612c2e610e89565b6001600160a01b031614612c6c5760008036604051612c4e9291906167ff565b604051809103902090505b80612c65610164612e00565b03612c5957505b61117f81613f51565b60006064612c8283611981565b6101f854604051632394e7a360e21b8152600481018690526001600160a01b0390911690638e539e8c90602401602060405180830381865afa158015612ccc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612cf09190616a0c565b612cfa9190616ac0565b610f6991906169c2565b600080600080612d1385613523565b935093509350935061174f84848484611326565b60006001600160e01b03198216636e665ced60e01b1480610f695750610f69826142b3565b6000610f69612d5961434f565b8360405161190160f01b8152600281019290925260228201526042902090565b6000806000612d8a87878787614359565b9150915061140f8161441d565b6000805462010000900460ff1615612dc257604051631785c68160e01b815260040160405180910390fd5b3360009081526001602052604090205460ff1615612df35760405163b1d02c3d60e01b815260040160405180910390fd5b611b068686868686614567565b6000612e1b8254600f81810b600160801b909204900b131590565b15612e3957604051631ed9509560e11b815260040160405180910390fd5b508054600f0b6000818152600180840160205260408220805492905583546fffffffffffffffffffffffffffffffff191692016001600160801b03169190911790915590565b6064811115612f025760405162461bcd60e51b815260206004820152604360248201527f476f7665726e6f72566f74657351756f72756d4672616374696f6e3a2071756f60448201527f72756d4e756d657261746f72206f7665722071756f72756d44656e6f6d696e616064820152623a37b960e91b608482015260a40161043d565b6000612f0c61201b565b90508015801590612f1e575061025e54155b15612f8357604080518082019091526000815261025e9060208101612f428461466a565b6001600160e01b039081169091528254600181018455600093845260209384902083519490930151909116600160201b0263ffffffff909316929092179101555b612fb1612f9e612f91611f90565b65ffffffffffff1661387f565b612fa78461466a565b61025e91906146d3565b505060408051828152602081018490527f0553476bf02ef2726e8ce5ced78d63e26e602e4a2257b1f559418e24b4633997910160405180910390a15050565b600080612fff868686866129d8565b9050600461300c82611721565b600781111561301d5761301d61629c565b1461303a5760405162461bcd60e51b815260040161043d906168eb565b61022b546040805163793d064960e11b815290516000926001600160a01b03169163f27a0c929160048083019260209291908290030181865afa158015613085573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906130a99190616a0c565b61022b5460405163b1c5f42760e01b81529192506001600160a01b03169063b1c5f427906130e4908a908a908a906000908b90600401616ad7565b602060405180830381865afa158015613101573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906131259190616a0c565b600083815261022c60205260408082209290925561022b5491516308f2a0bb60e41b81526001600160a01b0390921691638f2a0bb091613172918b918b918b91908b908990600401616b25565b600060405180830381600087803b15801561318c57600080fd5b505af11580156131a0573d6000803e3d6000fd5b505050507f9a2e42fd6722813d69113e7d0079d3d940171428df7373df9c7f7617cfda28928282426131d29190616b7d565b604080519283526020830191909152015b60405180910390a15095945050505050565b306131fe610e89565b6001600160a01b03161461328f5760005b845181101561174f57306001600160a01b031685828151811061323457613234616880565b60200260200101516001600160a01b03160361327f5761327f83828151811061325f5761325f616880565b6020026020010151805190602001206101646146ee90919063ffffffff16565b613288816168ac565b905061320f565b5050505050565b60005462010000900460ff16156132c057604051631785c68160e01b815260040160405180910390fd5b3360009081526001602052604090205460ff16156132f15760405163b1d02c3d60e01b815260040160405180910390fd5b60005b845181101561336a576102c1600086838151811061331457613314616880565b6020908102919091018101516001600160a01b031682528101919091526040016000205460ff1661335857604051630b094f2760e31b815260040160405180910390fd5b80613362816168ac565b9150506132f4565b5061328f858585858561472a565b30613381610e89565b6001600160a01b03161461328f5761016454600f81810b600160801b909204900b131561328f5760006101645561328f565b60006112f7858585856133d160408051602081019091526000815290565b612d97565b6000806133e28361479f565b905060048160078111156133f8576133f861629c565b146134035792915050565b600083815261022c60205260409020548061341f575092915050565b61022b54604051632ab0f52960e01b8152600481018390526001600160a01b0390911690632ab0f52990602401602060405180830381865afa158015613469573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061348d9190616b90565b1561349c575060079392505050565b61022b54604051632c258a9f60e11b8152600481018390526001600160a01b039091169063584b153e90602401602060405180830381865afa1580156134e6573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061350a9190616b90565b15613519575060059392505050565b5060029392505050565b60608060606000806101c66000878152602001908152602001600020905080600101816002016136f583600301805480602002602001604051908101604052809291908181526020016000905b8282101561361c57838290600052602060002001805461358f90616846565b80601f01602080910402602001604051908101604052809291908181526020018280546135bb90616846565b80156136085780601f106135dd57610100808354040283529160200191613608565b820191906000526020600020905b8154815290600101906020018083116135eb57829003601f168201915b505050505081526020019060010190613570565b50505060048601805460408051602080840282018101909252828152935060009084015b828210156136ec57838290600052602060002001805461365f90616846565b80601f016020809104026020016040519081016040528092919081815260200182805461368b90616846565b80156136d85780601f106136ad576101008083540402835291602001916136d8565b820191906000526020600020905b8154815290600101906020018083116136bb57829003601f168201915b505050505081526020019060010190613640565b50505050614181565b600984015483546040805160208084028201810190925282815291869183018282801561374b57602002820191906000526020600020905b81546001600160a01b0316815260019091019060200180831161372d575b505050505093508280548060200260200160405190810160405280929190818152602001828054801561379d57602002820191906000526020600020905b815481526020019060010190808311613789575b505050505092509450945094509450509193509193565b6000806137c3868686866129d8565b60008181526101c660205260409020549091506001600160a01b03163381148061381757506137f06128b1565b6138158260016137fe611f90565b61380891906168c5565b65ffffffffffff16612bcc565b105b6138735760405162461bcd60e51b815260206004820152602760248201527f476f7665726e6f72427261766f3a2070726f706f7365722061626f76652074686044820152661c995cda1bdb1960ca1b606482015260840161043d565b611716878787876148d7565b600063ffffffff8211156138e45760405162461bcd60e51b815260206004820152602660248201527f53616665436173743a2076616c756520646f65736e27742066697420696e203360448201526532206269747360d01b606482015260840161043d565b5090565b815460009081816005811115613945576000613903846148e5565b61390d9085616999565b60008881526020902090915081015463ffffffff908116908716101561393557809150613943565b613940816001616b7d565b92505b505b6000613953878785856149cd565b9050801561398e576139788761396a600184616999565b600091825260209091200190565b54600160201b90046001600160e01b0316611716565b6000979650505050505050565b6101945460408051918252602082018390527fc565b045403dc03c2eea82b81a0465edad9e2e7fc4d97e11421c209da93d7a93910160405180910390a161019455565b6102c25460ff16613a87576a084595161401484a0000006120056001600160a01b03166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015613a35573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613a599190616a0c565b1015613a78576040516311b6707f60e01b815260040160405180910390fd5b6102c2805460ff191660011790555b565b6000613ae533868686516001600160401b03811115613aaa57613aaa615cd4565b604051908082528060200260200182016040528015613add57816020015b6060815260200190600190039081613ac85790505b5087876140c3565b6112f785858585614a23565b600054610100900460ff16613b185760405162461bcd60e51b815260040161043d90616bb2565b613b3f81613b3a6040805180820190915260018152603160f81b602082015290565b614e02565b61117f81614e51565b600054610100900460ff16613b6f5760405162461bcd60e51b815260040161043d90616bb2565b613b7a838383614e89565b505050565b600054610100900460ff16613a875760405162461bcd60e51b815260040161043d90616bb2565b600054610100900460ff16613bcd5760405162461bcd60e51b815260040161043d90616bb2565b61117f81614ecb565b600054610100900460ff16613bfd5760405162461bcd60e51b815260040161043d90616bb2565b61117f81614f15565b600054610100900460ff16613c2d5760405162461bcd60e51b815260040161043d90616bb2565b61117f81614f3c565b600054610100900460ff16613c5d5760405162461bcd60e51b815260040161043d90616bb2565b61117f81614f63565b600054610100900460ff16613c8d5760405162461bcd60e51b815260040161043d90616bb2565b600080546001600160a01b039092166301000000026301000000600160b81b0319909216919091179055565b6060609a805461119290616846565b6060609b805461119290616846565b600065ffffffffffff8211156138e45760405162461bcd60e51b815260206004820152602660248201527f53616665436173743a2076616c756520646f65736e27742066697420696e203460448201526538206269747360d01b606482015260840161043d565b6101f854604051630748d63560e31b81526001600160a01b038581166004830152602482018590526000921690633a46b1a890604401602060405180830381865afa158015613d91573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120119190616a0c565b8054600090801561216357613dcf8361396a600184616999565b54600160201b90046001600160e01b0316612014565b61022b54604080516001600160a01b03928316815291831660208301527f08f74ea46ef7894f65eabfb5e6e695de773a000b47c529ab559178069b226401910160405180910390a161022b80546001600160a01b0319166001600160a01b0392909216919091179055565b600081604051602001613e639190616bfd565b6040516020818303038152906040528051906020012083604051602001613e8a9190616bfd565b6040516020818303038152906040528051906020012014905092915050565b015190565b60008111613f0e5760405162461bcd60e51b815260206004820152602760248201527f476f7665726e6f7253657474696e67733a20766f74696e6720706572696f6420604482015266746f6f206c6f7760c81b606482015260840161043d565b6101955460408051918252602082018390527f7e3f7f0708a84de9203036abaa450dccc85ad5ff52f78c170f3edb55cf5e8828910160405180910390a161019555565b6101965460408051918252602082018390527fccb45da8d5717e6c4544694297c4ba5cf151d455c9bb0ed4fc7a38411bc05461910160405180910390a161019655565b61028f54604080516001600160401b03928316815291831660208301527f7ca4ac117ed3cdce75c1161d8207c440389b1a15d69d096831664657c07dafc2910160405180910390a161028f805467ffffffffffffffff19166001600160401b0392909216919091179055565b600080546040516001600160a01b0380851693630100000090930416917f44fc1b38a4abaa91ebd1b628a5b259a698f86238c8217d68f516e87769c60c0b91a3600080546001600160a01b039092166301000000026301000000600160b81b0319909216919091179055565b60008181526101636020526040812060010154610f69906001600160401b0316600084815261029060205260409020546001600160401b0316614f8a565b606083156140b9575081612014565b6120148383614fa0565b8051602082012060006140e187876140db8888614181565b856129d8565b60008181526101c6602052604090206009810154919250906141765780546001600160a01b0319166001600160a01b038a16178155875161412b90600183019060208b0190615a6f565b50865161414190600283019060208a0190615ad0565b5085516141579060038301906020890190615b0b565b50845161416d9060048301906020880190615b5d565b50600981018390555b505050505050505050565b6060600082516001600160401b0381111561419e5761419e615cd4565b6040519080825280602002602001820160405280156141d157816020015b60608152602001906001900390816141bc5790505b50905060005b81518110156142ab578481815181106141f2576141f2616880565b6020026020010151516000146142625784818151811061421457614214616880565b60200260200101518051906020012084828151811061423557614235616880565b602002602001015160405160200161424e929190616c19565b60405160208183030381529060405261427d565b83818151811061427457614274616880565b60200260200101515b82828151811061428f5761428f616880565b6020026020010181905250806142a4906168ac565b90506141d7565b509392505050565b600063288ace0360e11b6318df743f60e31b63bf26d89760e01b6379dd796f60e01b6001600160e01b031986168214806142f957506001600160e01b0319868116908216145b8061431057506001600160e01b0319868116908516145b8061432b57506001600160e01b03198616630271189760e51b145b80611b0657506301ffc9a760e01b6001600160e01b03198716149695505050505050565b6000610e9e614fca565b6000807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a08311156143905750600090506003614414565b6040805160008082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa1580156143e4573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b03811661440d57600060019250925050614414565b9150600090505b94509492505050565b60008160048111156144315761443161629c565b036144395750565b600181600481111561444d5761444d61629c565b0361449a5760405162461bcd60e51b815260206004820152601860248201527f45434453413a20696e76616c6964207369676e61747572650000000000000000604482015260640161043d565b60028160048111156144ae576144ae61629c565b036144fb5760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e67746800604482015260640161043d565b600381600481111561450f5761450f61629c565b0361117f5760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b606482015260840161043d565b600080614577878787878761503e565b600088815261029060205260409020549091506001600160401b03161580156145a457506145a487615194565b15611b065760006145be61028f546001600160401b031690565b6145c6611f90565b65ffffffffffff166145d89190616c4a565b90506145e3886128bd565b816001600160401b03161115614632576040516001600160401b038216815288907f541f725fb9f7c98a30cc9c0ff32fbb14358cd7159c847a3aa20a2bdc442ba5119060200160405180910390a25b600088815261029060205260409020805467ffffffffffffffff19166001600160401b03929092169190911790559695505050505050565b60006001600160e01b038211156138e45760405162461bcd60e51b815260206004820152602760248201527f53616665436173743a2076616c756520646f65736e27742066697420696e20326044820152663234206269747360c81b606482015260840161043d565b6000806146e18585856151d4565b915091505b935093915050565b8154600160801b90819004600f0b6000818152600180860160205260409091209390935583546001600160801b03908116939091011602179055565b61022b5460405163e38335e560e01b81526001600160a01b039091169063e38335e5903490614766908890889088906000908990600401616ad7565b6000604051808303818588803b15801561477f57600080fd5b505af1158015614793573d6000803e3d6000fd5b50505050505050505050565b600081815261016360205260408120600281015460ff16156147c45750600792915050565b6002810154610100900460ff16156147df5750600292915050565b600083815261016360205260408120546001600160401b0316908190036148485760405162461bcd60e51b815260206004820152601d60248201527f476f7665726e6f723a20756e6b6e6f776e2070726f706f73616c206964000000604482015260640161043d565b6000614852611f90565b65ffffffffffff16905080821061486e57506000949350505050565b6000614879866128bd565b905081811061488e5750600195945050505050565b61489786615194565b80156148ba575060008681526101c6602052604090206006810154600590910154115b156148cb5750600495945050505050565b50600395945050505050565b60006112f785858585615373565b6000816000036148f757506000919050565b6000600161490484615429565b901c6001901b9050600181848161491d5761491d6169ac565b048201901c90506001818481614935576149356169ac565b048201901c9050600181848161494d5761494d6169ac565b048201901c90506001818481614965576149656169ac565b048201901c9050600181848161497d5761497d6169ac565b048201901c90506001818481614995576149956169ac565b048201901c905060018184816149ad576149ad6169ac565b048201901c9050612014818285816149c7576149c76169ac565b046154bd565b60005b818310156142ab5760006149e484846154cc565b60008781526020902090915063ffffffff86169082015463ffffffff161115614a0f57809250614a1d565b614a1a816001616b7d565b93505b506149d0565b600033614a3081846154e7565b614a7c5760405162461bcd60e51b815260206004820152601d60248201527f476f7665726e6f723a2070726f706f7365722072657374726963746564000000604482015260640161043d565b6000614a86611f90565b65ffffffffffff169050614a986128b1565b614aa783610de4600185616999565b1015614b0f5760405162461bcd60e51b815260206004820152603160248201527f476f7665726e6f723a2070726f706f73657220766f7465732062656c6f7720706044820152701c9bdc1bdcd85b081d1a1c995cda1bdb19607a1b606482015260840161043d565b6000614b2488888888805190602001206129d8565b90508651885114614b475760405162461bcd60e51b815260040161043d90616c6a565b8551885114614b685760405162461bcd60e51b815260040161043d90616c6a565b6000885111614bb95760405162461bcd60e51b815260206004820152601860248201527f476f7665726e6f723a20656d7074792070726f706f73616c0000000000000000604482015260640161043d565b600081815261016360205260409020546001600160401b031615614c295760405162461bcd60e51b815260206004820152602160248201527f476f7665726e6f723a2070726f706f73616c20616c72656164792065786973746044820152607360f81b606482015260840161043d565b6000614c356101945490565b614c3f9084616b7d565b90506000614c4d6101955490565b614c579083616b7d565b90506040518060e00160405280614c6d846155d8565b6001600160401b031681526001600160a01b038716602082015260006040820152606001614c9a836155d8565b6001600160401b03908116825260006020808401829052604080850183905260609485018390528883526101638252918290208551815492870151878501519186166001600160e01b031990941693909317600160401b6001600160a01b039094168402176001600160e01b0316600160e01b60e09290921c91909102178155938501516080860151908416921c0217600183015560a08301516002909201805460c09094015161ffff1990941692151561ff00191692909217610100931515939093029290921790558a517f7d84a6263ae0d98d3329bd7b46bb4e8d6f98cd35a7adb45c274c8b7fd5ebd5e091859188918e918e91811115614d9f57614d9f615cd4565b604051908082528060200260200182016040528015614dd257816020015b6060815260200190600190039081614dbd5790505b508d88888f604051614dec99989796959493929190616cab565b60405180910390a1509098975050505050505050565b600054610100900460ff16614e295760405162461bcd60e51b815260040161043d90616bb2565b609a614e358382616d89565b50609b614e428282616d89565b50506000609881905560995550565b600054610100900460ff16614e785760405162461bcd60e51b815260040161043d90616bb2565b610162614e858282616d89565b5050565b600054610100900460ff16614eb05760405162461bcd60e51b815260040161043d90616bb2565b614eb98361399b565b614ec282613eae565b613b7a81613f51565b600054610100900460ff16614ef25760405162461bcd60e51b815260040161043d90616bb2565b6101f880546001600160a01b0319166001600160a01b0392909216919091179055565b600054610100900460ff166120c75760405162461bcd60e51b815260040161043d90616bb2565b600054610100900460ff166111765760405162461bcd60e51b815260040161043d90616bb2565b600054610100900460ff16612a915760405162461bcd60e51b815260040161043d90616bb2565b6000818311614f995781612014565b5090919050565b815115614fb05781518083602001fd5b8060405162461bcd60e51b815260040161043d9190615e8d565b60007f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f614ff5615640565b614ffd615699565b60408051602081019490945283019190915260608201524660808201523060a082015260c00160405160208183030381529060405280519060200120905090565b600085815261016360205260408120600161505888611721565b60078111156150695761506961629c565b146150c25760405162461bcd60e51b815260206004820152602360248201527f476f7665726e6f723a20766f7465206e6f742063757272656e746c792061637460448201526269766560e81b606482015260840161043d565b80546000906150dc9088906001600160401b031686613d3e565b90506150eb88888884886156ca565b835160000361514057866001600160a01b03167fb8e138887d0aa13bab447e82de9d5c1777041ecd21ca36ba824ff1e6c07ddda4898884896040516151339493929190616e48565b60405180910390a2611716565b866001600160a01b03167fe2babfbac5889a709b63bb7f598b324e08bc5a4fb9ec647fb3cbc9ec07eb87128988848989604051615181959493929190616e70565b60405180910390a2979650505050505050565b60008181526101c66020526040812060058101546151cb610e5085600090815261016360205260409020546001600160401b031690565b11159392505050565b82546000908190801561531a5760006151f28761396a600185616999565b60408051808201909152905463ffffffff808216808452600160201b9092046001600160e01b0316602084015291925090871610156152735760405162461bcd60e51b815260206004820152601b60248201527f436865636b706f696e743a2064656372656173696e67206b6579730000000000604482015260640161043d565b805163ffffffff8088169116036152bb57846152948861396a600186616999565b80546001600160e01b0392909216600160201b0263ffffffff90921691909117905561530a565b6040805180820190915263ffffffff80881682526001600160e01b0380881660208085019182528b54600181018d5560008d81529190912094519151909216600160201b029216919091179101555b6020015192508391506146e69050565b50506040805180820190915263ffffffff80851682526001600160e01b0380851660208085019182528854600181018a5560008a815291822095519251909316600160201b0291909316179201919091559050816146e6565b60008061538286868686615868565b600081815261022c6020526040902054909150156112f75761022b54600082815261022c60205260409081902054905163c4d252f560e01b81526001600160a01b039092169163c4d252f5916153de9160040190815260200190565b600060405180830381600087803b1580156153f857600080fd5b505af115801561540c573d6000803e3d6000fd5b505050600082815261022c60205260408120555095945050505050565b600080608083901c1561543e57608092831c92015b604083901c1561545057604092831c92015b602083901c1561546257602092831c92015b601083901c1561547457601092831c92015b600883901c1561548657600892831c92015b600483901c1561549857600492831c92015b600283901c156154aa57600292831c92015b600183901c15610f695760010192915050565b6000818310614f995781612014565b60006154db60028484186169c2565b61201490848416616b7d565b805160009060348110156154ff576001915050610f69565b82810160131901516001600160a01b031981166b046e0e4dee0dee6cae47a60f60a31b1461553257600192505050610f69565b600080615540602885616999565b90505b838110156155b75760008061557788848151811061556357615563616880565b01602001516001600160f81b031916615975565b915091508161558f5760019650505050505050610f69565b8060ff166004856001600160a01b0316901b1793505050806155b0906168ac565b9050615543565b50856001600160a01b0316816001600160a01b031614935050505092915050565b60006001600160401b038211156138e45760405162461bcd60e51b815260206004820152602660248201527f53616665436173743a2076616c756520646f65736e27742066697420696e203660448201526534206269747360d01b606482015260840161043d565b60008061564b613cb9565b805190915015615662578051602090910120919050565b60985480156156715792915050565b7fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a4709250505090565b6000806156a4613cc8565b8051909150156156bb578051602090910120919050565b60995480156156715792915050565b60008581526101c6602090815260408083206001600160a01b038816845260088101909252909120805460ff161561575a5760405162461bcd60e51b815260206004820152602d60248201527f476f7665726e6f72436f6d7061746962696c697479427261766f3a20766f746560448201526c08185b1c9958591e4818d85cdd609a1b606482015260840161043d565b805460ff86166101000261ffff1990911617600117815561577a84615a07565b81546001600160601b039190911662010000026dffffffffffffffffffffffff00001990911617815560ff85166157ca57838260060160008282546157bf9190616b7d565b909155506129cf9050565b60001960ff8616016157ea57838260050160008282546157bf9190616b7d565b60011960ff86160161580a57838260070160008282546157bf9190616b7d565b60405162461bcd60e51b815260206004820152602d60248201527f476f7665726e6f72436f6d7061746962696c697479427261766f3a20696e766160448201526c6c696420766f7465207479706560981b606482015260840161043d565b600080615877868686866129d8565b9050600061588482611721565b9050600281600781111561589a5761589a61629c565b141580156158ba575060068160078111156158b7576158b761629c565b14155b80156158d8575060078160078111156158d5576158d561629c565b14155b6159245760405162461bcd60e51b815260206004820152601d60248201527f476f7665726e6f723a2070726f706f73616c206e6f7420616374697665000000604482015260640161043d565b6000828152610163602052604090819020600201805461ff001916610100179055517f789cf55be980739dad1d0699b93b58e806b51c9d96619bfa8fe0a28abaa7b30c906131e39084815260200190565b60008060f883901c602f811180156159905750603a8160ff16105b156159a557600194602f199091019350915050565b8060ff1660401080156159bb575060478160ff16105b156159d0576001946036199091019350915050565b8060ff1660601080156159e6575060678160ff16105b156159fb576001946056199091019350915050565b50600093849350915050565b60006001600160601b038211156138e45760405162461bcd60e51b815260206004820152602660248201527f53616665436173743a2076616c756520646f65736e27742066697420696e203960448201526536206269747360d01b606482015260840161043d565b828054828255906000526020600020908101928215615ac4579160200282015b82811115615ac457825182546001600160a01b0319166001600160a01b03909116178255602090920191600190910190615a8f565b506138e4929150615baf565b828054828255906000526020600020908101928215615ac4579160200282015b82811115615ac4578251825591602001919060010190615af0565b828054828255906000526020600020908101928215615b51579160200282015b82811115615b515782518290615b419082616d89565b5091602001919060010190615b2b565b506138e4929150615bc4565b828054828255906000526020600020908101928215615ba3579160200282015b82811115615ba35782518290615b939082616d89565b5091602001919060010190615b7d565b506138e4929150615be1565b5b808211156138e45760008155600101615bb0565b808211156138e4576000615bd88282615bfe565b50600101615bc4565b808211156138e4576000615bf58282615bfe565b50600101615be1565b508054615c0a90616846565b6000825580601f10615c1a575050565b601f01602090049060005260206000209081019061117f9190615baf565b600060208284031215615c4a57600080fd5b5035919050565b600060208284031215615c6357600080fd5b81356001600160e01b03198116811461201457600080fd5b803560ff8116811461190957600080fd5b60008083601f840112615c9e57600080fd5b5081356001600160401b03811115615cb557600080fd5b602083019150836020828501011115615ccd57600080fd5b9250929050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b0381118282101715615d1257615d12615cd4565b604052919050565b60006001600160401b03821115615d3357615d33615cd4565b50601f01601f191660200190565b600082601f830112615d5257600080fd5b8135615d65615d6082615d1a565b615cea565b818152846020838601011115615d7a57600080fd5b816020850160208301376000918101602001919091529392505050565b60008060008060008060008060e0898b031215615db357600080fd5b88359750615dc360208a01615c7b565b965060408901356001600160401b0380821115615ddf57600080fd5b615deb8c838d01615c8c565b909850965060608b0135915080821115615e0457600080fd5b50615e118b828c01615d41565b945050615e2060808a01615c7b565b925060a0890135915060c089013590509295985092959890939650565b60005b83811015615e58578181015183820152602001615e40565b50506000910152565b60008151808452615e79816020860160208601615e3d565b601f01601f19169290920160200192915050565b6020815260006120146020830184615e61565b6001600160a01b038116811461117f57600080fd5b60008060008060808587031215615ecb57600080fd5b8435615ed681615ea0565b93506020850135615ee681615ea0565b92506040850135915060608501356001600160401b03811115615f0857600080fd5b615f1487828801615d41565b91505092959194509250565b60006001600160401b03821115615f3957615f39615cd4565b5060051b60200190565b600082601f830112615f5457600080fd5b81356020615f64615d6083615f20565b82815260059290921b84018101918181019086841115615f8357600080fd5b8286015b84811015615fa7578035615f9a81615ea0565b8352918301918301615f87565b509695505050505050565b600082601f830112615fc357600080fd5b81356020615fd3615d6083615f20565b82815260059290921b84018101918181019086841115615ff257600080fd5b8286015b84811015615fa75780358352918301918301615ff6565b600082601f83011261601e57600080fd5b8135602061602e615d6083615f20565b82815260059290921b8401810191818101908684111561604d57600080fd5b8286015b84811015615fa75780356001600160401b038111156160705760008081fd5b61607e8986838b0101615d41565b845250918301918301616051565b600080600080608085870312156160a257600080fd5b84356001600160401b03808211156160b957600080fd5b6160c588838901615f43565b955060208701359150808211156160db57600080fd5b6160e788838901615fb2565b945060408701359150808211156160fd57600080fd5b5061610a8782880161600d565b949793965093946060013593505050565b60006020828403121561612d57600080fd5b813561201481615ea0565b600081518084526020808501945080840160005b838110156161715781516001600160a01b03168752958201959082019060010161614c565b509495945050505050565b600081518084526020808501945080840160005b8381101561617157815187529582019590820190600101616190565b600081518084526020808501808196508360051b8101915082860160005b858110156161f45782840389526161e2848351615e61565b988501989350908401906001016161ca565b5091979650505050505050565b6080815260006162146080830187616138565b8281036020840152616226818761617c565b9050828103604084015261623a81866161ac565b9050828103606084015261171681856161ac565b600080600080600060a0868803121561626657600080fd5b8535945061627660208701615c7b565b935061628460408701615c7b565b94979396509394606081013594506080013592915050565b634e487b7160e01b600052602160045260246000fd5b60208101600883106162d457634e487b7160e01b600052602160045260246000fd5b91905290565b600080604083850312156162ed57600080fd5b8235915060208301356162ff81615ea0565b809150509250929050565b6000806040838503121561631d57600080fd5b8235915061632d60208401615c7b565b90509250929050565b60008060008060006080868803121561634e57600080fd5b8535945061635e60208701615c7b565b935060408601356001600160401b038082111561637a57600080fd5b61638689838a01615c8c565b9095509350606088013591508082111561639f57600080fd5b506163ac88828901615d41565b9150509295509295909350565b600080600080606085870312156163cf57600080fd5b843593506163df60208601615c7b565b925060408501356001600160401b038111156163fa57600080fd5b61640687828801615c8c565b95989497509550505050565b6000806000806080858703121561642857600080fd5b84356001600160401b038082111561643f57600080fd5b61644b88838901615f43565b9550602087013591508082111561646157600080fd5b61646d88838901615fb2565b9450604087013591508082111561648357600080fd5b61648f8883890161600d565b935060608701359150808211156164a557600080fd5b50615f1487828801615d41565b60ff60f81b8816815260e0602082015260006164d160e0830189615e61565b82810360408401526164e38189615e61565b606084018890526001600160a01b038716608085015260a0840186905283810360c08501529050611059818561617c565b60008060006060848603121561652957600080fd5b833561653481615ea0565b92506020840135915060408401356001600160401b0381111561655657600080fd5b61656286828701615d41565b9150509250925092565b6000806000806040858703121561658257600080fd5b84356001600160401b038082111561659957600080fd5b6165a588838901615c8c565b909650945060208701359150808211156165be57600080fd5b5061640687828801615c8c565b600080600080600060a086880312156165e357600080fd5b85356165ee81615ea0565b945060208601356165fe81615ea0565b935060408601356001600160401b038082111561661a57600080fd5b61662689838a01615fb2565b9450606088013591508082111561663c57600080fd5b61664889838a01615fb2565b9350608088013591508082111561639f57600080fd5b6000806000806060858703121561667457600080fd5b843561667f81615ea0565b93506020850135925060408501356001600160401b038111156163fa57600080fd5b6000602082840312156166b357600080fd5b81356001600160401b038116811461201457600080fd5b600080600080600060a086880312156166e257600080fd5b85356001600160401b03808211156166f957600080fd5b61670589838a01615f43565b9650602088013591508082111561671b57600080fd5b61672789838a01615fb2565b9550604088013591508082111561673d57600080fd5b61674989838a0161600d565b9450606088013591508082111561675f57600080fd5b61664889838a0161600d565b6000806040838503121561677e57600080fd5b823561678981615ea0565b946020939093013593505050565b600080600080600060a086880312156167af57600080fd5b85356167ba81615ea0565b945060208601356167ca81615ea0565b9350604086013592506060860135915060808601356001600160401b038111156167f357600080fd5b6163ac88828901615d41565b8183823760009101908152919050565b60208082526018908201527f476f7665726e6f723a206f6e6c79476f7665726e616e63650000000000000000604082015260600190565b600181811c9082168061685a57607f821691505b60208210810361687a57634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b6000600182016168be576168be616896565b5060010190565b65ffffffffffff8281168282160390808211156168e4576168e4616896565b5092915050565b60208082526021908201527f476f7665726e6f723a2070726f706f73616c206e6f74207375636365737366756040820152601b60fa1b606082015260800190565b60006020828403121561693e57600080fd5b81516001600160401b0381111561695457600080fd5b8201601f8101841361696557600080fd5b8051616973615d6082615d1a565b81815285602083850101111561698857600080fd5b6112f7826020830160208601615e3d565b81810381811115610f6957610f69616896565b634e487b7160e01b600052601260045260246000fd5b6000826169df57634e487b7160e01b600052601260045260246000fd5b500490565b6000602082840312156169f657600080fd5b815165ffffffffffff8116811461201457600080fd5b600060208284031215616a1e57600080fd5b5051919050565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b604081526000616a62604083018688616a25565b8281036020840152611716818587616a25565b608081526000616a886080830187616138565b8281036020840152616a9a818761617c565b90508281036040840152616aae81866161ac565b91505082606083015295945050505050565b8082028115828204841417610f6957610f69616896565b60a081526000616aea60a0830188616138565b8281036020840152616afc818861617c565b90508281036040840152616b1081876161ac565b60608401959095525050608001529392505050565b60c081526000616b3860c0830189616138565b8281036020840152616b4a818961617c565b90508281036040840152616b5e81886161ac565b60608401969096525050608081019290925260a0909101529392505050565b80820180821115610f6957610f69616896565b600060208284031215616ba257600080fd5b8151801515811461201457600080fd5b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b60008251616c0f818460208701615e3d565b9190910192915050565b6001600160e01b0319831681528151600090616c3c816004850160208701615e3d565b919091016004019392505050565b6001600160401b038181168382160190808211156168e4576168e4616896565b60208082526021908201527f476f7665726e6f723a20696e76616c69642070726f706f73616c206c656e67746040820152600d60fb1b606082015260800190565b8981526001600160a01b038916602082015261012060408201819052600090616cd68382018b616138565b90508281036060840152616cea818a61617c565b90508281036080840152616cfe81896161ac565b905082810360a0840152616d1281886161ac565b90508560c08401528460e0840152828103610100840152616d338185615e61565b9c9b505050505050505050505050565b601f821115613b7a57600081815260208120601f850160051c81016020861015616d6a5750805b601f850160051c820191505b8181101561174f57828155600101616d76565b81516001600160401b03811115616da257616da2615cd4565b616db681616db08454616846565b84616d43565b602080601f831160018114616deb5760008415616dd35750858301515b600019600386901b1c1916600185901b17855561174f565b600085815260208120601f198616915b82811015616e1a57888601518255948401946001909101908401616dfb565b5085821015616e385787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b84815260ff84166020820152826040820152608060608201526000611b066080830184615e61565b85815260ff8516602082015283604082015260a060608201526000616e9860a0830185615e61565b8281036080840152611c1f8185615e6156fe476f7665726e6f723a2072656c617920726576657274656420776974686f7574206d657373616765a164736f6c6343000811000a \ No newline at end of file +6080604052600436106103e85760003560e01c80637b3c71d311610208578063c28bc2fa11610118578063deaaa7cc116100ab578063ece40cc11161007a578063ece40cc114610e19578063f23a6e6114610e39578063f8ce560a14610e65578063fc0c546a14610e85578063fe0d94c114610ea657600080fd5b8063deaaa7cc14610cda578063e23a9a5214610d0e578063ea0217cf14610dd9578063eb9019d414610df957600080fd5b8063da95691a116100e7578063da95691a14610c2f578063dd42a1dd14610c4f578063dd4e2ba514610c74578063ddf0b00914610cba57600080fd5b8063c28bc2fa14610bbd578063c59057e414610bd0578063d07f91e914610bf0578063d33219b414610c1057600080fd5b8063a7713a701161019b578063b187bd261161016a578063b187bd2614610b23578063b58131b014610b41578063bc197c8114610b56578063c01f9e3714610b82578063c170ec0b14610ba257600080fd5b8063a7713a7014610aae578063a890c91014610ac3578063ab58fb8e14610ae3578063ac43175114610b0357600080fd5b806384b0196e116101d757806384b0196e14610a2657806391ddadf414610a4e57806397c3d33414610a7a5780639a802a6d14610a8e57600080fd5b80637b3c71d3146109bc5780637d5e81e2146109dc5780638129fc1c146109fc5780638456cb5914610a1157600080fd5b806332b8113e116103035780634838d1651161029657806354fd4d501161026557806354fd4d5014610912578063567813881461093c5780635f398a141461095c57806360c4247f1461097c57806370b0f6601461099c57600080fd5b80634838d1651461087c5780634a49ac4c146108ac5780634bf5d7e9146108cc578063533ddd14146108e157600080fd5b806340e58ee5116102d257806340e58ee5146107d1578063417c73a7146107f15780634385963214610811578063452115d61461085c57600080fd5b806332b8113e146107455780633932abb11461076e5780633bccf4fd146107845780633e4f49e6146107a457600080fd5b8063150b7a021161037b5780632656227d1161034a5780632656227d146106975780632d63f693146106aa5780632fe3e261146106e1578063328dd9821461071557600080fd5b8063150b7a02146105f0578063160cbed71461063457806317977c611461065457806324bc1a641461068257600080fd5b8063046f7da2116103b7578063046f7da21461054357806306f3f9e61461055857806306fdde0314610578578063143489d01461059a57600080fd5b8063013cf08b1461045857806301ffc9a7146104d357806302a251a314610503578063034201811461052357600080fd5b3661045357306103f6610eb9565b6001600160a01b0316146104515760405162461bcd60e51b815260206004820152601f60248201527f476f7665726e6f723a206d7573742073656e6420746f206578656375746f720060448201526064015b60405180910390fd5b005b600080fd5b34801561046457600080fd5b50610478610473366004615c68565b610ed3565b604080519a8b526001600160a01b0390991660208b0152978901969096526060880194909452608087019290925260a086015260c085015260e084015215156101008301521515610120820152610140015b60405180910390f35b3480156104df57600080fd5b506104f36104ee366004615c81565b610f8e565b60405190151581526020016104ca565b34801561050f57600080fd5b50610195545b6040519081526020016104ca565b34801561052f57600080fd5b5061051561053e366004615dc7565b610f9f565b34801561054f57600080fd5b50610451611097565b34801561056457600080fd5b50610451610573366004615c68565b611127565b34801561058457600080fd5b5061058d6111b2565b6040516104ca9190615ebd565b3480156105a657600080fd5b506105d86105b5366004615c68565b60009081526101636020526040902054600160401b90046001600160a01b031690565b6040516001600160a01b0390911681526020016104ca565b3480156105fc57600080fd5b5061061b61060b366004615ee5565b630a85bd0160e11b949350505050565b6040516001600160e01b031990911681526020016104ca565b34801561064057600080fd5b5061051561064f3660046160bc565b611245565b34801561066057600080fd5b5061051561066f36600461614b565b6102c36020526000908152604090205481565b34801561068e57600080fd5b50610515611330565b6105156106a53660046160bc565b611356565b3480156106b657600080fd5b506105156106c5366004615c68565b600090815261016360205260409020546001600160401b031690565b3480156106ed57600080fd5b506105157fb3b3f3b703cd84ce352197dcff232b1b5d3cfb2025ce47cf04742d0651f1af8881565b34801561072157600080fd5b50610735610730366004615c68565b611449565b6040516104ca9493929190616231565b34801561075157600080fd5b5061028f546040516001600160401b0390911681526020016104ca565b34801561077a57600080fd5b5061019454610515565b34801561079057600080fd5b5061051561079f36600461627e565b6116db565b3480156107b057600080fd5b506107c46107bf366004615c68565b611751565b6040516104ca91906162e2565b3480156107dd57600080fd5b506104516107ec366004615c68565b61175c565b3480156107fd57600080fd5b5061045161080c36600461614b565b611787565b34801561081d57600080fd5b506104f361082c36600461630a565b60008281526101c6602090815260408083206001600160a01b038516845260080190915290205460ff1692915050565b34801561086857600080fd5b506105156108773660046160bc565b611808565b34801561088857600080fd5b506104f361089736600461614b565b60016020526000908152604090205460ff1681565b3480156108b857600080fd5b506104516108c736600461614b565b611816565b3480156108d857600080fd5b5061058d611891565b3480156108ed57600080fd5b506104f36108fc36600461614b565b6102c16020526000908152604090205460ff1681565b34801561091e57600080fd5b506040805180820190915260018152603160f81b602082015261058d565b34801561094857600080fd5b5061051561095736600461633a565b61193e565b34801561096857600080fd5b50610515610977366004616366565b611967565b34801561098857600080fd5b50610515610997366004615c68565b6119b1565b3480156109a857600080fd5b506104516109b7366004615c68565b611a66565b3480156109c857600080fd5b506105156109d73660046163e9565b611aee565b3480156109e857600080fd5b506105156109f7366004616442565b611b40565b348015610a0857600080fd5b50610451611c5b565b348015610a1d57600080fd5b50610451611e8c565b348015610a3257600080fd5b50610a3b611f22565b6040516104ca97969594939291906164e2565b348015610a5a57600080fd5b50610a63611fc0565b60405165ffffffffffff90911681526020016104ca565b348015610a8657600080fd5b506064610515565b348015610a9a57600080fd5b50610515610aa9366004616544565b612034565b348015610aba57600080fd5b5061051561204b565b348015610acf57600080fd5b50610451610ade36600461614b565b612078565b348015610aef57600080fd5b50610515610afe366004615c68565b612100565b348015610b0f57600080fd5b50610451610b1e36600461659c565b61219c565b348015610b2f57600080fd5b5060005462010000900460ff166104f3565b348015610b4d57600080fd5b506105156128e1565b348015610b6257600080fd5b5061061b610b713660046165fb565b63bc197c8160e01b95945050505050565b348015610b8e57600080fd5b50610515610b9d366004615c68565b6128ed565b348015610bae57600080fd5b506102c2546104f39060ff1681565b610451610bcb36600461668e565b6128f8565b348015610bdc57600080fd5b50610515610beb3660046160bc565b612a08565b348015610bfc57600080fd5b50610451610c0b3660046166d1565b612a42565b348015610c1c57600080fd5b5061022b546001600160a01b03166105d8565b348015610c3b57600080fd5b50610515610c4a3660046166fa565b612aca565b348015610c5b57600080fd5b50600054630100000090046001600160a01b03166105d8565b348015610c8057600080fd5b5060408051808201909152601a81527f737570706f72743d627261766f2671756f72756d3d627261766f000000000000602082015261058d565b348015610cc657600080fd5b50610451610cd5366004615c68565b612b51565b348015610ce657600080fd5b506105157f150214d74d59b7d1e90c73fc22ef3d991dd0a76b046543d4d80ab92d2a50328f81565b348015610d1a57600080fd5b50610da9610d2936600461630a565b60408051606081018252600080825260208201819052918101919091525060009182526101c6602090815260408084206001600160a01b0393909316845260089092018152918190208151606081018352905460ff8082161515835261010082041693820193909352620100009092046001600160601b03169082015290565b6040805182511515815260208084015160ff1690820152918101516001600160601b0316908201526060016104ca565b348015610de557600080fd5b50610451610df4366004615c68565b612b74565b348015610e0557600080fd5b50610515610e1436600461679b565b612bfc565b348015610e2557600080fd5b50610451610e34366004615c68565b612c1d565b348015610e4557600080fd5b5061061b610e543660046167c7565b63f23a6e6160e01b95945050505050565b348015610e7157600080fd5b50610515610e80366004615c68565b612ca5565b348015610e9157600080fd5b506101f8546105d8906001600160a01b031681565b610451610eb4366004615c68565b612d34565b6000610ece61022b546001600160a01b031690565b905090565b8060008080808080808080610ee78a612100565b60008c815261016360205260409020549098506001600160401b03169650610f0e8b6128ed565b60008c81526101c66020526040812080546005820154600683015460078401546001600160a01b039093169e50949a509850929650919450610f4f8d611751565b90506002816007811115610f6557610f656162cc565b1493506007816007811115610f7c57610f7c6162cc565b14925050509193959799509193959799565b6000610f9982612d57565b92915050565b60008061104361103b7fb3b3f3b703cd84ce352197dcff232b1b5d3cfb2025ce47cf04742d0651f1af888c8c8c8c604051610fdb92919061682f565b60405180910390208b80519060200120604051602001611020959493929190948552602085019390935260ff9190911660408401526060830152608082015260a00190565b60405160208183030381529060405280519060200120612d7c565b868686612da9565b90506110898a828b8b8b8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152508d9250612dc7915050565b9a9950505050505050505050565b600054630100000090046001600160a01b031633146110c9576040516306fbb1e360e01b815260040160405180910390fd5b60005462010000900460ff166110f257604051636cd6020160e01b815260040160405180910390fd5b6000805462ff0000191681556040517f62451d457bc659158be6e6247f56ec1df424a5c7597f71c20c2bc44e0965c8f99190a1565b61112f610eb9565b6001600160a01b0316336001600160a01b03161461115f5760405162461bcd60e51b81526004016104489061683f565b30611168610eb9565b6001600160a01b0316146111a6576000803660405161118892919061682f565b604051809103902090505b8061119f610164612e30565b0361119357505b6111af81612eaf565b50565b606061016280546111c290616876565b80601f01602080910402602001604051908101604052809291908181526020018280546111ee90616876565b801561123b5780601f106112105761010080835404028352916020019161123b565b820191906000526020600020905b81548152906001019060200180831161121e57829003601f168201915b5050505050905090565b6000805462010000900460ff161561127057604051631785c68160e01b815260040160405180910390fd5b3360009081526001602052604090205460ff16156112a15760405163b1d02c3d60e01b815260040160405180910390fd5b60005b855181101561131a576102c160008783815181106112c4576112c46168b0565b6020908102919091018101516001600160a01b031682528101919091526040016000205460ff1661130857604051630b094f2760e31b815260040160405180910390fd5b80611312816168dc565b9150506112a4565b5061132785858585613020565b95945050505050565b6000610ece600161133f611fc0565b61134991906168f5565b65ffffffffffff16612ca5565b60008061136586868686612a08565b9050600061137282611751565b90506004816007811115611388576113886162cc565b14806113a5575060058160078111156113a3576113a36162cc565b145b6113c15760405162461bcd60e51b81526004016104489061691b565b6000828152610163602052604090819020600201805460ff19166001179055517f712ae1383f79ac853f8d882153778e0260ef8f03b504e2866e0593e04d2b291f906114109084815260200190565b60405180910390a16114258288888888613225565b61143282888888886132c6565b61143f82888888886133a8565b5095945050505050565b60608060608060006101c66000878152602001908152602001600020905080600101816002018260030183600401838054806020026020016040519081016040528092919081815260200182805480156114cc57602002820191906000526020600020905b81546001600160a01b031681526001909101906020018083116114ae575b505050505093508280548060200260200160405190810160405280929190818152602001828054801561151e57602002820191906000526020600020905b81548152602001906001019080831161150a575b5050505050925081805480602002602001604051908101604052809291908181526020016000905b828210156115f257838290600052602060002001805461156590616876565b80601f016020809104026020016040519081016040528092919081815260200182805461159190616876565b80156115de5780601f106115b3576101008083540402835291602001916115de565b820191906000526020600020905b8154815290600101906020018083116115c157829003601f168201915b505050505081526020019060010190611546565b50505050915080805480602002602001604051908101604052809291908181526020016000905b828210156116c557838290600052602060002001805461163890616876565b80601f016020809104026020016040519081016040528092919081815260200182805461166490616876565b80156116b15780601f10611686576101008083540402835291602001916116b1565b820191906000526020600020905b81548152906001019060200180831161169457829003601f168201915b505050505081526020019060010190611619565b5050505090509450945094509450509193509193565b604080517f150214d74d59b7d1e90c73fc22ef3d991dd0a76b046543d4d80ab92d2a50328f602082015290810186905260ff8516606082015260009081906117299061103b90608001611020565b9050611746878288604051806020016040528060008152506133e3565b979650505050505050565b6000610f9982613406565b60008060008061176b85613553565b935093509350935061177f84848484611808565b505050505050565b600054630100000090046001600160a01b031633146117b9576040516306fbb1e360e01b815260040160405180910390fd5b6001600160a01b0381166000818152600160208190526040808320805460ff1916909217909155517f7fd26be6fc92aff63f1f4409b2b2ddeb272a888031d7f55ec830485ec61941869190a250565b6000611327858585856137e4565b600054630100000090046001600160a01b03163314611848576040516306fbb1e360e01b815260040160405180910390fd5b6001600160a01b038116600081815260016020526040808220805460ff19169055517fe0db3499b7fdc3da4cddff5f45d694549c19835e7f719fb5606d3ad1a5de40119190a250565b6101f85460408051634bf5d7e960e01b815290516060926001600160a01b031691634bf5d7e99160048083019260009291908290030181865afa9250505080156118fd57506040513d6000823e601f3d908101601f191682016040526118fa919081019061695c565b60015b611939575060408051808201909152601d81527f6d6f64653d626c6f636b6e756d6265722666726f6d3d64656661756c74000000602082015290565b919050565b60008033905061195f848285604051806020016040528060008152506133e3565b949350505050565b60008033905061174687828888888080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152508a9250612dc7915050565b61025e546000908082036119ca57505061025d54919050565b600061025e6119da6001846169c9565b815481106119ea576119ea6168b0565b60009182526020918290206040805180820190915291015463ffffffff8116808352600160201b9091046001600160e01b03169282019290925291508410611a4057602001516001600160e01b03169392505050565b611a55611a4c856138af565b61025e90613918565b6001600160e01b0316949350505050565b611a6e610eb9565b6001600160a01b0316336001600160a01b031614611a9e5760405162461bcd60e51b81526004016104489061683f565b30611aa7610eb9565b6001600160a01b031614611ae55760008036604051611ac792919061682f565b604051809103902090505b80611ade610164612e30565b03611ad257505b6111af816139cb565b600080339050611b3686828787878080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506133e392505050565b9695505050505050565b6000805462010000900460ff1615611b6b57604051631785c68160e01b815260040160405180910390fd5b3360009081526001602052604090205460ff1615611b9c5760405163b1d02c3d60e01b815260040160405180910390fd5b611ba4613a0e565b3360009081526102c360205260409020548015611c19576000611bc682611751565b90506001816007811115611bdc57611bdc6162cc565b1480611bf957506000816007811115611bf757611bf76162cc565b145b15611c175760405163867f3ee560e01b815260040160405180910390fd5b505b825160208401206000611c2e88888885612a08565b3360009081526102c3602052604090208190559050611c4f88888888613ab9565b98975050505050505050565b600054610100900460ff1615808015611c7b5750600054600160ff909116105b80611c955750303b158015611c95575060005460ff166001145b611cf85760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608401610448565b6000805460ff191660011790558015611d1b576000805461ff0019166101001790555b334114611d3b5760405163022d8c9560e31b815260040160405180910390fd5b3a15611d5a576040516383f1b1d360e01b815260040160405180910390fd5b611d866040518060400160405280600b81526020016a2129a1a3b7bb32b93737b960a91b815250613b21565b611db2611d95600360006169f2565b611da36003620151806169f2565b68056bc75e2d63100000613b78565b611dba613baf565b611dc5612005613bd6565b611dd0612006613c06565b611dda600a613c36565b611def611dea6003610e106169f2565b613c66565b6110076000526102c16020527f2f832952f0ef896b8c8edd6d16a2e4f2591a90375e33021e3b9ff197f3793fc0805460ff19166001179055611e447330151da466ec8ab345bef3d6983023e050fb0673613c96565b80156111af576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a150565b600054630100000090046001600160a01b03163314611ebe576040516306fbb1e360e01b815260040160405180910390fd5b60005462010000900460ff1615611ee857604051631785c68160e01b815260040160405180910390fd5b6000805462ff00001916620100001781556040517f9e87fac88ff661f02d44f95383c817fece4bce600a3dab7a54406878b965e7529190a1565b6000606080600080600060606098546000801b148015611f425750609954155b611f865760405162461bcd60e51b81526020600482015260156024820152741152540dcc4c8e88155b9a5b9a5d1a585b1a5e9959605a1b6044820152606401610448565b611f8e613ce9565b611f96613cf8565b60408051600080825260208201909252600f60f81b9b939a50919850469750309650945092509050565b6101f854604080516324776b7d60e21b815290516000926001600160a01b0316916391ddadf49160048083019260209291908290030181865afa925050508015612027575060408051601f3d908101601f1916820190925261202491810190616a14565b60015b61193957610ece43613d07565b6000612041848484613d6e565b90505b9392505050565b61025e54600090156120705761206261025e613de5565b6001600160e01b0316905090565b5061025d5490565b612080610eb9565b6001600160a01b0316336001600160a01b0316146120b05760405162461bcd60e51b81526004016104489061683f565b306120b9610eb9565b6001600160a01b0316146120f757600080366040516120d992919061682f565b604051809103902090505b806120f0610164612e30565b036120e457505b6111af81613e15565b61022b54600082815261022c602052604080822054905163d45c443560e01b81526004810191909152909182916001600160a01b039091169063d45c443590602401602060405180830381865afa15801561215f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121839190616a3c565b9050806001146121935780612044565b60009392505050565b33611007146121c257604051630f22c43960e41b81526110076004820152602401610448565b6122286040518060400160405280600b81526020016a766f74696e6744656c617960a81b81525085858080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509293925050613e809050565b156122dd57602081146122565783838383604051630a5a604160e01b81526004016104489493929190616a7e565b604080516020601f8401819004810282018101909252828152600091612297918585808385018382808284376000920191909152509293925050613ed99050565b90508015806122a857506201518081115b156122ce5784848484604051630a5a604160e01b81526004016104489493929190616a7e565b6122d7816139cb565b5061289e565b6123446040518060400160405280600c81526020016b1d9bdd1a5b99d4195c9a5bd960a21b81525085858080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509293925050613e809050565b156123f357602081146123725783838383604051630a5a604160e01b81526004016104489493929190616a7e565b604080516020601f84018190048102820181019092528281526000916123b3918585808385018382808284376000920191909152509293925050613ed99050565b90508015806123c4575062278d0081115b156123ea5784848484604051630a5a604160e01b81526004016104489493929190616a7e565b6122d781613ede565b61245f604051806040016040528060118152602001701c1c9bdc1bdcd85b151a1c995cda1bdb19607a1b81525085858080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509293925050613e809050565b15612515576020811461248d5783838383604051630a5a604160e01b81526004016104489493929190616a7e565b604080516020601f84018190048102820181019092528281526000916124ce918585808385018382808284376000920191909152509293925050613ed99050565b90508015806124e6575069021e19e0c9bab240000081115b1561250c5784848484604051630a5a604160e01b81526004016104489493929190616a7e565b6122d781613f81565b61257f6040518060400160405280600f81526020016e38bab7b93ab6a73ab6b2b930ba37b960891b81525085858080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509293925050613e809050565b1561262e57602081146125ad5783838383604051630a5a604160e01b81526004016104489493929190616a7e565b604080516020601f84018190048102820181019092528281526000916125ee918585808385018382808284376000920191909152509293925050613ed99050565b905060058110806125ff5750601481115b156126255784848484604051630a5a604160e01b81526004016104489493929190616a7e565b6122d781612eaf565b61269d604051806040016040528060148152602001736d696e506572696f64416674657251756f72756d60601b81525085858080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509293925050613e809050565b1561276357600881146126cb5783838383604051630a5a604160e01b81526004016104489493929190616a7e565b6000612711600884848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509293925050613ed99050565b90506001600160401b038116158061273457506202a300816001600160401b0316115b1561275a5784848484604051630a5a604160e01b81526004016104489493929190616a7e565b6122d781613fc4565b6127cf6040518060400160405280601181526020017033b7bb32b93737b9283937ba32b1ba37b960791b81525085858080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509293925050613e809050565b1561287d57601481146127fd5783838383604051630a5a604160e01b81526004016104489493929190616a7e565b6000612843601484848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509293925050613ed99050565b90506001600160a01b0381166128745784848484604051630a5a604160e01b81526004016104489493929190616a7e565b6122d781614030565b838383836040516325ee20d560e21b81526004016104489493929190616a7e565b7ff1ce9b2cbf50eeb05769a29e2543fd350cab46894a7dd9978a12d534bb20e633848484846040516128d39493929190616a7e565b60405180910390a150505050565b6000610ece6101965490565b6000610f998261409c565b612900610eb9565b6001600160a01b0316336001600160a01b0316146129305760405162461bcd60e51b81526004016104489061683f565b30612939610eb9565b6001600160a01b031614612977576000803660405161295992919061682f565b604051809103902090505b80612970610164612e30565b0361296457505b600080856001600160a01b031685858560405161299592919061682f565b60006040518083038185875af1925050503d80600081146129d2576040519150601f19603f3d011682016040523d82523d6000602084013e6129d7565b606091505b50915091506129ff8282604051806060016040528060288152602001616edb602891396140da565b50505050505050565b600084848484604051602001612a219493929190616aa5565b60408051601f19818403018152919052805160209091012095945050505050565b612a4a610eb9565b6001600160a01b0316336001600160a01b031614612a7a5760405162461bcd60e51b81526004016104489061683f565b30612a83610eb9565b6001600160a01b031614612ac15760008036604051612aa392919061682f565b604051809103902090505b80612aba610164612e30565b03612aae57505b6111af81613fc4565b60008251845114612b2e5760405162461bcd60e51b815260206004820152602860248201527f476f7665726e6f72427261766f3a20696e76616c6964207369676e61747572656044820152670e640d8cadccee8d60c31b6064820152608401610448565b612b3c3387878787876140f3565b611b368686612b4b87876141b1565b85611b40565b600080600080612b6085613553565b935093509350935061177f84848484611245565b612b7c610eb9565b6001600160a01b0316336001600160a01b031614612bac5760405162461bcd60e51b81526004016104489061683f565b30612bb5610eb9565b6001600160a01b031614612bf35760008036604051612bd592919061682f565b604051809103902090505b80612bec610164612e30565b03612be057505b6111af81613ede565b60006120448383612c1860408051602081019091526000815290565b613d6e565b612c25610eb9565b6001600160a01b0316336001600160a01b031614612c555760405162461bcd60e51b81526004016104489061683f565b30612c5e610eb9565b6001600160a01b031614612c9c5760008036604051612c7e92919061682f565b604051809103902090505b80612c95610164612e30565b03612c8957505b6111af81613f81565b60006064612cb2836119b1565b6101f854604051632394e7a360e21b8152600481018690526001600160a01b0390911690638e539e8c90602401602060405180830381865afa158015612cfc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612d209190616a3c565b612d2a9190616af0565b610f9991906169f2565b600080600080612d4385613553565b935093509350935061177f84848484611356565b60006001600160e01b03198216636e665ced60e01b1480610f995750610f99826142e3565b6000610f99612d8961437f565b8360405161190160f01b8152600281019290925260228201526042902090565b6000806000612dba87878787614389565b9150915061143f8161444d565b6000805462010000900460ff1615612df257604051631785c68160e01b815260040160405180910390fd5b3360009081526001602052604090205460ff1615612e235760405163b1d02c3d60e01b815260040160405180910390fd5b611b368686868686614597565b6000612e4b8254600f81810b600160801b909204900b131590565b15612e6957604051631ed9509560e11b815260040160405180910390fd5b508054600f0b6000818152600180840160205260408220805492905583546fffffffffffffffffffffffffffffffff191692016001600160801b03169190911790915590565b6064811115612f325760405162461bcd60e51b815260206004820152604360248201527f476f7665726e6f72566f74657351756f72756d4672616374696f6e3a2071756f60448201527f72756d4e756d657261746f72206f7665722071756f72756d44656e6f6d696e616064820152623a37b960e91b608482015260a401610448565b6000612f3c61204b565b90508015801590612f4e575061025e54155b15612fb357604080518082019091526000815261025e9060208101612f728461469a565b6001600160e01b039081169091528254600181018455600093845260209384902083519490930151909116600160201b0263ffffffff909316929092179101555b612fe1612fce612fc1611fc0565b65ffffffffffff166138af565b612fd78461469a565b61025e9190614703565b505060408051828152602081018490527f0553476bf02ef2726e8ce5ced78d63e26e602e4a2257b1f559418e24b4633997910160405180910390a15050565b60008061302f86868686612a08565b9050600461303c82611751565b600781111561304d5761304d6162cc565b1461306a5760405162461bcd60e51b81526004016104489061691b565b61022b546040805163793d064960e11b815290516000926001600160a01b03169163f27a0c929160048083019260209291908290030181865afa1580156130b5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906130d99190616a3c565b61022b5460405163b1c5f42760e01b81529192506001600160a01b03169063b1c5f42790613114908a908a908a906000908b90600401616b07565b602060405180830381865afa158015613131573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906131559190616a3c565b600083815261022c60205260408082209290925561022b5491516308f2a0bb60e41b81526001600160a01b0390921691638f2a0bb0916131a2918b918b918b91908b908990600401616b55565b600060405180830381600087803b1580156131bc57600080fd5b505af11580156131d0573d6000803e3d6000fd5b505050507f9a2e42fd6722813d69113e7d0079d3d940171428df7373df9c7f7617cfda28928282426132029190616bad565b604080519283526020830191909152015b60405180910390a15095945050505050565b3061322e610eb9565b6001600160a01b0316146132bf5760005b845181101561177f57306001600160a01b0316858281518110613264576132646168b0565b60200260200101516001600160a01b0316036132af576132af83828151811061328f5761328f6168b0565b60200260200101518051906020012061016461471e90919063ffffffff16565b6132b8816168dc565b905061323f565b5050505050565b60005462010000900460ff16156132f057604051631785c68160e01b815260040160405180910390fd5b3360009081526001602052604090205460ff16156133215760405163b1d02c3d60e01b815260040160405180910390fd5b60005b845181101561339a576102c16000868381518110613344576133446168b0565b6020908102919091018101516001600160a01b031682528101919091526040016000205460ff1661338857604051630b094f2760e31b815260040160405180910390fd5b80613392816168dc565b915050613324565b506132bf858585858561475a565b306133b1610eb9565b6001600160a01b0316146132bf5761016454600f81810b600160801b909204900b13156132bf576000610164556132bf565b60006113278585858561340160408051602081019091526000815290565b612dc7565b600080613412836147cf565b90506004816007811115613428576134286162cc565b146134335792915050565b600083815261022c60205260409020548061344f575092915050565b61022b54604051632ab0f52960e01b8152600481018390526001600160a01b0390911690632ab0f52990602401602060405180830381865afa158015613499573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906134bd9190616bc0565b156134cc575060079392505050565b61022b54604051632c258a9f60e11b8152600481018390526001600160a01b039091169063584b153e90602401602060405180830381865afa158015613516573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061353a9190616bc0565b15613549575060059392505050565b5060029392505050565b60608060606000806101c660008781526020019081526020016000209050806001018160020161372583600301805480602002602001604051908101604052809291908181526020016000905b8282101561364c5783829060005260206000200180546135bf90616876565b80601f01602080910402602001604051908101604052809291908181526020018280546135eb90616876565b80156136385780601f1061360d57610100808354040283529160200191613638565b820191906000526020600020905b81548152906001019060200180831161361b57829003601f168201915b5050505050815260200190600101906135a0565b50505060048601805460408051602080840282018101909252828152935060009084015b8282101561371c57838290600052602060002001805461368f90616876565b80601f01602080910402602001604051908101604052809291908181526020018280546136bb90616876565b80156137085780601f106136dd57610100808354040283529160200191613708565b820191906000526020600020905b8154815290600101906020018083116136eb57829003601f168201915b505050505081526020019060010190613670565b505050506141b1565b600984015483546040805160208084028201810190925282815291869183018282801561377b57602002820191906000526020600020905b81546001600160a01b0316815260019091019060200180831161375d575b50505050509350828054806020026020016040519081016040528092919081815260200182805480156137cd57602002820191906000526020600020905b8154815260200190600101908083116137b9575b505050505092509450945094509450509193509193565b6000806137f386868686612a08565b60008181526101c660205260409020549091506001600160a01b03163381148061384757506138206128e1565b61384582600161382e611fc0565b61383891906168f5565b65ffffffffffff16612bfc565b105b6138a35760405162461bcd60e51b815260206004820152602760248201527f476f7665726e6f72427261766f3a2070726f706f7365722061626f76652074686044820152661c995cda1bdb1960ca1b6064820152608401610448565b61174687878787614907565b600063ffffffff8211156139145760405162461bcd60e51b815260206004820152602660248201527f53616665436173743a2076616c756520646f65736e27742066697420696e203360448201526532206269747360d01b6064820152608401610448565b5090565b81546000908181600581111561397557600061393384614915565b61393d90856169c9565b60008881526020902090915081015463ffffffff908116908716101561396557809150613973565b613970816001616bad565b92505b505b6000613983878785856149fd565b905080156139be576139a88761399a6001846169c9565b600091825260209091200190565b54600160201b90046001600160e01b0316611746565b6000979650505050505050565b6101945460408051918252602082018390527fc565b045403dc03c2eea82b81a0465edad9e2e7fc4d97e11421c209da93d7a93910160405180910390a161019455565b6102c25460ff16613ab7576a084595161401484a0000006120056001600160a01b03166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015613a65573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613a899190616a3c565b1015613aa8576040516311b6707f60e01b815260040160405180910390fd5b6102c2805460ff191660011790555b565b6000613b1533868686516001600160401b03811115613ada57613ada615d04565b604051908082528060200260200182016040528015613b0d57816020015b6060815260200190600190039081613af85790505b5087876140f3565b61132785858585614a53565b600054610100900460ff16613b485760405162461bcd60e51b815260040161044890616be2565b613b6f81613b6a6040805180820190915260018152603160f81b602082015290565b614e32565b6111af81614e81565b600054610100900460ff16613b9f5760405162461bcd60e51b815260040161044890616be2565b613baa838383614eb9565b505050565b600054610100900460ff16613ab75760405162461bcd60e51b815260040161044890616be2565b600054610100900460ff16613bfd5760405162461bcd60e51b815260040161044890616be2565b6111af81614efb565b600054610100900460ff16613c2d5760405162461bcd60e51b815260040161044890616be2565b6111af81614f45565b600054610100900460ff16613c5d5760405162461bcd60e51b815260040161044890616be2565b6111af81614f6c565b600054610100900460ff16613c8d5760405162461bcd60e51b815260040161044890616be2565b6111af81614f93565b600054610100900460ff16613cbd5760405162461bcd60e51b815260040161044890616be2565b600080546001600160a01b039092166301000000026301000000600160b81b0319909216919091179055565b6060609a80546111c290616876565b6060609b80546111c290616876565b600065ffffffffffff8211156139145760405162461bcd60e51b815260206004820152602660248201527f53616665436173743a2076616c756520646f65736e27742066697420696e203460448201526538206269747360d01b6064820152608401610448565b6101f854604051630748d63560e31b81526001600160a01b038581166004830152602482018590526000921690633a46b1a890604401602060405180830381865afa158015613dc1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120419190616a3c565b8054600090801561219357613dff8361399a6001846169c9565b54600160201b90046001600160e01b0316612044565b61022b54604080516001600160a01b03928316815291831660208301527f08f74ea46ef7894f65eabfb5e6e695de773a000b47c529ab559178069b226401910160405180910390a161022b80546001600160a01b0319166001600160a01b0392909216919091179055565b600081604051602001613e939190616c2d565b6040516020818303038152906040528051906020012083604051602001613eba9190616c2d565b6040516020818303038152906040528051906020012014905092915050565b015190565b60008111613f3e5760405162461bcd60e51b815260206004820152602760248201527f476f7665726e6f7253657474696e67733a20766f74696e6720706572696f6420604482015266746f6f206c6f7760c81b6064820152608401610448565b6101955460408051918252602082018390527f7e3f7f0708a84de9203036abaa450dccc85ad5ff52f78c170f3edb55cf5e8828910160405180910390a161019555565b6101965460408051918252602082018390527fccb45da8d5717e6c4544694297c4ba5cf151d455c9bb0ed4fc7a38411bc05461910160405180910390a161019655565b61028f54604080516001600160401b03928316815291831660208301527f7ca4ac117ed3cdce75c1161d8207c440389b1a15d69d096831664657c07dafc2910160405180910390a161028f805467ffffffffffffffff19166001600160401b0392909216919091179055565b600080546040516001600160a01b0380851693630100000090930416917f44fc1b38a4abaa91ebd1b628a5b259a698f86238c8217d68f516e87769c60c0b91a3600080546001600160a01b039092166301000000026301000000600160b81b0319909216919091179055565b60008181526101636020526040812060010154610f99906001600160401b0316600084815261029060205260409020546001600160401b0316614fba565b606083156140e9575081612044565b6120448383614fd0565b805160208201206000614111878761410b88886141b1565b85612a08565b60008181526101c6602052604090206009810154919250906141a65780546001600160a01b0319166001600160a01b038a16178155875161415b90600183019060208b0190615a9f565b50865161417190600283019060208a0190615b00565b5085516141879060038301906020890190615b3b565b50845161419d9060048301906020880190615b8d565b50600981018390555b505050505050505050565b6060600082516001600160401b038111156141ce576141ce615d04565b60405190808252806020026020018201604052801561420157816020015b60608152602001906001900390816141ec5790505b50905060005b81518110156142db57848181518110614222576142226168b0565b60200260200101515160001461429257848181518110614244576142446168b0565b602002602001015180519060200120848281518110614265576142656168b0565b602002602001015160405160200161427e929190616c49565b6040516020818303038152906040526142ad565b8381815181106142a4576142a46168b0565b60200260200101515b8282815181106142bf576142bf6168b0565b6020026020010181905250806142d4906168dc565b9050614207565b509392505050565b600063288ace0360e11b6318df743f60e31b63bf26d89760e01b6379dd796f60e01b6001600160e01b0319861682148061432957506001600160e01b0319868116908216145b8061434057506001600160e01b0319868116908516145b8061435b57506001600160e01b03198616630271189760e51b145b80611b3657506301ffc9a760e01b6001600160e01b03198716149695505050505050565b6000610ece614ffa565b6000807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a08311156143c05750600090506003614444565b6040805160008082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa158015614414573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b03811661443d57600060019250925050614444565b9150600090505b94509492505050565b6000816004811115614461576144616162cc565b036144695750565b600181600481111561447d5761447d6162cc565b036144ca5760405162461bcd60e51b815260206004820152601860248201527f45434453413a20696e76616c6964207369676e617475726500000000000000006044820152606401610448565b60028160048111156144de576144de6162cc565b0361452b5760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e677468006044820152606401610448565b600381600481111561453f5761453f6162cc565b036111af5760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b6064820152608401610448565b6000806145a7878787878761506e565b600088815261029060205260409020549091506001600160401b03161580156145d457506145d4876151c4565b15611b365760006145ee61028f546001600160401b031690565b6145f6611fc0565b65ffffffffffff166146089190616c7a565b9050614613886128ed565b816001600160401b03161115614662576040516001600160401b038216815288907f541f725fb9f7c98a30cc9c0ff32fbb14358cd7159c847a3aa20a2bdc442ba5119060200160405180910390a25b600088815261029060205260409020805467ffffffffffffffff19166001600160401b03929092169190911790559695505050505050565b60006001600160e01b038211156139145760405162461bcd60e51b815260206004820152602760248201527f53616665436173743a2076616c756520646f65736e27742066697420696e20326044820152663234206269747360c81b6064820152608401610448565b600080614711858585615204565b915091505b935093915050565b8154600160801b90819004600f0b6000818152600180860160205260409091209390935583546001600160801b03908116939091011602179055565b61022b5460405163e38335e560e01b81526001600160a01b039091169063e38335e5903490614796908890889088906000908990600401616b07565b6000604051808303818588803b1580156147af57600080fd5b505af11580156147c3573d6000803e3d6000fd5b50505050505050505050565b600081815261016360205260408120600281015460ff16156147f45750600792915050565b6002810154610100900460ff161561480f5750600292915050565b600083815261016360205260408120546001600160401b0316908190036148785760405162461bcd60e51b815260206004820152601d60248201527f476f7665726e6f723a20756e6b6e6f776e2070726f706f73616c2069640000006044820152606401610448565b6000614882611fc0565b65ffffffffffff16905080821061489e57506000949350505050565b60006148a9866128ed565b90508181106148be5750600195945050505050565b6148c7866151c4565b80156148ea575060008681526101c6602052604090206006810154600590910154115b156148fb5750600495945050505050565b50600395945050505050565b6000611327858585856153a3565b60008160000361492757506000919050565b6000600161493484615459565b901c6001901b9050600181848161494d5761494d6169dc565b048201901c90506001818481614965576149656169dc565b048201901c9050600181848161497d5761497d6169dc565b048201901c90506001818481614995576149956169dc565b048201901c905060018184816149ad576149ad6169dc565b048201901c905060018184816149c5576149c56169dc565b048201901c905060018184816149dd576149dd6169dc565b048201901c9050612044818285816149f7576149f76169dc565b046154ed565b60005b818310156142db576000614a1484846154fc565b60008781526020902090915063ffffffff86169082015463ffffffff161115614a3f57809250614a4d565b614a4a816001616bad565b93505b50614a00565b600033614a608184615517565b614aac5760405162461bcd60e51b815260206004820152601d60248201527f476f7665726e6f723a2070726f706f73657220726573747269637465640000006044820152606401610448565b6000614ab6611fc0565b65ffffffffffff169050614ac86128e1565b614ad783610e146001856169c9565b1015614b3f5760405162461bcd60e51b815260206004820152603160248201527f476f7665726e6f723a2070726f706f73657220766f7465732062656c6f7720706044820152701c9bdc1bdcd85b081d1a1c995cda1bdb19607a1b6064820152608401610448565b6000614b548888888880519060200120612a08565b90508651885114614b775760405162461bcd60e51b815260040161044890616c9a565b8551885114614b985760405162461bcd60e51b815260040161044890616c9a565b6000885111614be95760405162461bcd60e51b815260206004820152601860248201527f476f7665726e6f723a20656d7074792070726f706f73616c00000000000000006044820152606401610448565b600081815261016360205260409020546001600160401b031615614c595760405162461bcd60e51b815260206004820152602160248201527f476f7665726e6f723a2070726f706f73616c20616c72656164792065786973746044820152607360f81b6064820152608401610448565b6000614c656101945490565b614c6f9084616bad565b90506000614c7d6101955490565b614c879083616bad565b90506040518060e00160405280614c9d84615608565b6001600160401b031681526001600160a01b038716602082015260006040820152606001614cca83615608565b6001600160401b03908116825260006020808401829052604080850183905260609485018390528883526101638252918290208551815492870151878501519186166001600160e01b031990941693909317600160401b6001600160a01b039094168402176001600160e01b0316600160e01b60e09290921c91909102178155938501516080860151908416921c0217600183015560a08301516002909201805460c09094015161ffff1990941692151561ff00191692909217610100931515939093029290921790558a517f7d84a6263ae0d98d3329bd7b46bb4e8d6f98cd35a7adb45c274c8b7fd5ebd5e091859188918e918e91811115614dcf57614dcf615d04565b604051908082528060200260200182016040528015614e0257816020015b6060815260200190600190039081614ded5790505b508d88888f604051614e1c99989796959493929190616cdb565b60405180910390a1509098975050505050505050565b600054610100900460ff16614e595760405162461bcd60e51b815260040161044890616be2565b609a614e658382616db9565b50609b614e728282616db9565b50506000609881905560995550565b600054610100900460ff16614ea85760405162461bcd60e51b815260040161044890616be2565b610162614eb58282616db9565b5050565b600054610100900460ff16614ee05760405162461bcd60e51b815260040161044890616be2565b614ee9836139cb565b614ef282613ede565b613baa81613f81565b600054610100900460ff16614f225760405162461bcd60e51b815260040161044890616be2565b6101f880546001600160a01b0319166001600160a01b0392909216919091179055565b600054610100900460ff166120f75760405162461bcd60e51b815260040161044890616be2565b600054610100900460ff166111a65760405162461bcd60e51b815260040161044890616be2565b600054610100900460ff16612ac15760405162461bcd60e51b815260040161044890616be2565b6000818311614fc95781612044565b5090919050565b815115614fe05781518083602001fd5b8060405162461bcd60e51b81526004016104489190615ebd565b60007f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f615025615670565b61502d6156c9565b60408051602081019490945283019190915260608201524660808201523060a082015260c00160405160208183030381529060405280519060200120905090565b600085815261016360205260408120600161508888611751565b6007811115615099576150996162cc565b146150f25760405162461bcd60e51b815260206004820152602360248201527f476f7665726e6f723a20766f7465206e6f742063757272656e746c792061637460448201526269766560e81b6064820152608401610448565b805460009061510c9088906001600160401b031686613d6e565b905061511b88888884886156fa565b835160000361517057866001600160a01b03167fb8e138887d0aa13bab447e82de9d5c1777041ecd21ca36ba824ff1e6c07ddda4898884896040516151639493929190616e78565b60405180910390a2611746565b866001600160a01b03167fe2babfbac5889a709b63bb7f598b324e08bc5a4fb9ec647fb3cbc9ec07eb871289888489896040516151b1959493929190616ea0565b60405180910390a2979650505050505050565b60008181526101c66020526040812060058101546151fb610e8085600090815261016360205260409020546001600160401b031690565b11159392505050565b82546000908190801561534a5760006152228761399a6001856169c9565b60408051808201909152905463ffffffff808216808452600160201b9092046001600160e01b0316602084015291925090871610156152a35760405162461bcd60e51b815260206004820152601b60248201527f436865636b706f696e743a2064656372656173696e67206b65797300000000006044820152606401610448565b805163ffffffff8088169116036152eb57846152c48861399a6001866169c9565b80546001600160e01b0392909216600160201b0263ffffffff90921691909117905561533a565b6040805180820190915263ffffffff80881682526001600160e01b0380881660208085019182528b54600181018d5560008d81529190912094519151909216600160201b029216919091179101555b6020015192508391506147169050565b50506040805180820190915263ffffffff80851682526001600160e01b0380851660208085019182528854600181018a5560008a815291822095519251909316600160201b029190931617920191909155905081614716565b6000806153b286868686615898565b600081815261022c6020526040902054909150156113275761022b54600082815261022c60205260409081902054905163c4d252f560e01b81526001600160a01b039092169163c4d252f59161540e9160040190815260200190565b600060405180830381600087803b15801561542857600080fd5b505af115801561543c573d6000803e3d6000fd5b505050600082815261022c60205260408120555095945050505050565b600080608083901c1561546e57608092831c92015b604083901c1561548057604092831c92015b602083901c1561549257602092831c92015b601083901c156154a457601092831c92015b600883901c156154b657600892831c92015b600483901c156154c857600492831c92015b600283901c156154da57600292831c92015b600183901c15610f995760010192915050565b6000818310614fc95781612044565b600061550b60028484186169f2565b61204490848416616bad565b8051600090603481101561552f576001915050610f99565b82810160131901516001600160a01b031981166b046e0e4dee0dee6cae47a60f60a31b1461556257600192505050610f99565b6000806155706028856169c9565b90505b838110156155e7576000806155a7888481518110615593576155936168b0565b01602001516001600160f81b0319166159a5565b91509150816155bf5760019650505050505050610f99565b8060ff166004856001600160a01b0316901b1793505050806155e0906168dc565b9050615573565b50856001600160a01b0316816001600160a01b031614935050505092915050565b60006001600160401b038211156139145760405162461bcd60e51b815260206004820152602660248201527f53616665436173743a2076616c756520646f65736e27742066697420696e203660448201526534206269747360d01b6064820152608401610448565b60008061567b613ce9565b805190915015615692578051602090910120919050565b60985480156156a15792915050565b7fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a4709250505090565b6000806156d4613cf8565b8051909150156156eb578051602090910120919050565b60995480156156a15792915050565b60008581526101c6602090815260408083206001600160a01b038816845260088101909252909120805460ff161561578a5760405162461bcd60e51b815260206004820152602d60248201527f476f7665726e6f72436f6d7061746962696c697479427261766f3a20766f746560448201526c08185b1c9958591e4818d85cdd609a1b6064820152608401610448565b805460ff86166101000261ffff199091161760011781556157aa84615a37565b81546001600160601b039190911662010000026dffffffffffffffffffffffff00001990911617815560ff85166157fa57838260060160008282546157ef9190616bad565b909155506129ff9050565b60001960ff86160161581a57838260050160008282546157ef9190616bad565b60011960ff86160161583a57838260070160008282546157ef9190616bad565b60405162461bcd60e51b815260206004820152602d60248201527f476f7665726e6f72436f6d7061746962696c697479427261766f3a20696e766160448201526c6c696420766f7465207479706560981b6064820152608401610448565b6000806158a786868686612a08565b905060006158b482611751565b905060028160078111156158ca576158ca6162cc565b141580156158ea575060068160078111156158e7576158e76162cc565b14155b801561590857506007816007811115615905576159056162cc565b14155b6159545760405162461bcd60e51b815260206004820152601d60248201527f476f7665726e6f723a2070726f706f73616c206e6f74206163746976650000006044820152606401610448565b6000828152610163602052604090819020600201805461ff001916610100179055517f789cf55be980739dad1d0699b93b58e806b51c9d96619bfa8fe0a28abaa7b30c906132139084815260200190565b60008060f883901c602f811180156159c05750603a8160ff16105b156159d557600194602f199091019350915050565b8060ff1660401080156159eb575060478160ff16105b15615a00576001946036199091019350915050565b8060ff166060108015615a16575060678160ff16105b15615a2b576001946056199091019350915050565b50600093849350915050565b60006001600160601b038211156139145760405162461bcd60e51b815260206004820152602660248201527f53616665436173743a2076616c756520646f65736e27742066697420696e203960448201526536206269747360d01b6064820152608401610448565b828054828255906000526020600020908101928215615af4579160200282015b82811115615af457825182546001600160a01b0319166001600160a01b03909116178255602090920191600190910190615abf565b50613914929150615bdf565b828054828255906000526020600020908101928215615af4579160200282015b82811115615af4578251825591602001919060010190615b20565b828054828255906000526020600020908101928215615b81579160200282015b82811115615b815782518290615b719082616db9565b5091602001919060010190615b5b565b50613914929150615bf4565b828054828255906000526020600020908101928215615bd3579160200282015b82811115615bd35782518290615bc39082616db9565b5091602001919060010190615bad565b50613914929150615c11565b5b808211156139145760008155600101615be0565b80821115613914576000615c088282615c2e565b50600101615bf4565b80821115613914576000615c258282615c2e565b50600101615c11565b508054615c3a90616876565b6000825580601f10615c4a575050565b601f0160209004906000526020600020908101906111af9190615bdf565b600060208284031215615c7a57600080fd5b5035919050565b600060208284031215615c9357600080fd5b81356001600160e01b03198116811461204457600080fd5b803560ff8116811461193957600080fd5b60008083601f840112615cce57600080fd5b5081356001600160401b03811115615ce557600080fd5b602083019150836020828501011115615cfd57600080fd5b9250929050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b0381118282101715615d4257615d42615d04565b604052919050565b60006001600160401b03821115615d6357615d63615d04565b50601f01601f191660200190565b600082601f830112615d8257600080fd5b8135615d95615d9082615d4a565b615d1a565b818152846020838601011115615daa57600080fd5b816020850160208301376000918101602001919091529392505050565b60008060008060008060008060e0898b031215615de357600080fd5b88359750615df360208a01615cab565b965060408901356001600160401b0380821115615e0f57600080fd5b615e1b8c838d01615cbc565b909850965060608b0135915080821115615e3457600080fd5b50615e418b828c01615d71565b945050615e5060808a01615cab565b925060a0890135915060c089013590509295985092959890939650565b60005b83811015615e88578181015183820152602001615e70565b50506000910152565b60008151808452615ea9816020860160208601615e6d565b601f01601f19169290920160200192915050565b6020815260006120446020830184615e91565b6001600160a01b03811681146111af57600080fd5b60008060008060808587031215615efb57600080fd5b8435615f0681615ed0565b93506020850135615f1681615ed0565b92506040850135915060608501356001600160401b03811115615f3857600080fd5b615f4487828801615d71565b91505092959194509250565b60006001600160401b03821115615f6957615f69615d04565b5060051b60200190565b600082601f830112615f8457600080fd5b81356020615f94615d9083615f50565b82815260059290921b84018101918181019086841115615fb357600080fd5b8286015b84811015615fd7578035615fca81615ed0565b8352918301918301615fb7565b509695505050505050565b600082601f830112615ff357600080fd5b81356020616003615d9083615f50565b82815260059290921b8401810191818101908684111561602257600080fd5b8286015b84811015615fd75780358352918301918301616026565b600082601f83011261604e57600080fd5b8135602061605e615d9083615f50565b82815260059290921b8401810191818101908684111561607d57600080fd5b8286015b84811015615fd75780356001600160401b038111156160a05760008081fd5b6160ae8986838b0101615d71565b845250918301918301616081565b600080600080608085870312156160d257600080fd5b84356001600160401b03808211156160e957600080fd5b6160f588838901615f73565b9550602087013591508082111561610b57600080fd5b61611788838901615fe2565b9450604087013591508082111561612d57600080fd5b5061613a8782880161603d565b949793965093946060013593505050565b60006020828403121561615d57600080fd5b813561204481615ed0565b600081518084526020808501945080840160005b838110156161a15781516001600160a01b03168752958201959082019060010161617c565b509495945050505050565b600081518084526020808501945080840160005b838110156161a1578151875295820195908201906001016161c0565b600081518084526020808501808196508360051b8101915082860160005b85811015616224578284038952616212848351615e91565b988501989350908401906001016161fa565b5091979650505050505050565b6080815260006162446080830187616168565b828103602084015261625681876161ac565b9050828103604084015261626a81866161dc565b9050828103606084015261174681856161dc565b600080600080600060a0868803121561629657600080fd5b853594506162a660208701615cab565b93506162b460408701615cab565b94979396509394606081013594506080013592915050565b634e487b7160e01b600052602160045260246000fd5b602081016008831061630457634e487b7160e01b600052602160045260246000fd5b91905290565b6000806040838503121561631d57600080fd5b82359150602083013561632f81615ed0565b809150509250929050565b6000806040838503121561634d57600080fd5b8235915061635d60208401615cab565b90509250929050565b60008060008060006080868803121561637e57600080fd5b8535945061638e60208701615cab565b935060408601356001600160401b03808211156163aa57600080fd5b6163b689838a01615cbc565b909550935060608801359150808211156163cf57600080fd5b506163dc88828901615d71565b9150509295509295909350565b600080600080606085870312156163ff57600080fd5b8435935061640f60208601615cab565b925060408501356001600160401b0381111561642a57600080fd5b61643687828801615cbc565b95989497509550505050565b6000806000806080858703121561645857600080fd5b84356001600160401b038082111561646f57600080fd5b61647b88838901615f73565b9550602087013591508082111561649157600080fd5b61649d88838901615fe2565b945060408701359150808211156164b357600080fd5b6164bf8883890161603d565b935060608701359150808211156164d557600080fd5b50615f4487828801615d71565b60ff60f81b8816815260e06020820152600061650160e0830189615e91565b82810360408401526165138189615e91565b606084018890526001600160a01b038716608085015260a0840186905283810360c0850152905061108981856161ac565b60008060006060848603121561655957600080fd5b833561656481615ed0565b92506020840135915060408401356001600160401b0381111561658657600080fd5b61659286828701615d71565b9150509250925092565b600080600080604085870312156165b257600080fd5b84356001600160401b03808211156165c957600080fd5b6165d588838901615cbc565b909650945060208701359150808211156165ee57600080fd5b5061643687828801615cbc565b600080600080600060a0868803121561661357600080fd5b853561661e81615ed0565b9450602086013561662e81615ed0565b935060408601356001600160401b038082111561664a57600080fd5b61665689838a01615fe2565b9450606088013591508082111561666c57600080fd5b61667889838a01615fe2565b935060808801359150808211156163cf57600080fd5b600080600080606085870312156166a457600080fd5b84356166af81615ed0565b93506020850135925060408501356001600160401b0381111561642a57600080fd5b6000602082840312156166e357600080fd5b81356001600160401b038116811461204457600080fd5b600080600080600060a0868803121561671257600080fd5b85356001600160401b038082111561672957600080fd5b61673589838a01615f73565b9650602088013591508082111561674b57600080fd5b61675789838a01615fe2565b9550604088013591508082111561676d57600080fd5b61677989838a0161603d565b9450606088013591508082111561678f57600080fd5b61667889838a0161603d565b600080604083850312156167ae57600080fd5b82356167b981615ed0565b946020939093013593505050565b600080600080600060a086880312156167df57600080fd5b85356167ea81615ed0565b945060208601356167fa81615ed0565b9350604086013592506060860135915060808601356001600160401b0381111561682357600080fd5b6163dc88828901615d71565b8183823760009101908152919050565b60208082526018908201527f476f7665726e6f723a206f6e6c79476f7665726e616e63650000000000000000604082015260600190565b600181811c9082168061688a57607f821691505b6020821081036168aa57634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b6000600182016168ee576168ee6168c6565b5060010190565b65ffffffffffff828116828216039080821115616914576169146168c6565b5092915050565b60208082526021908201527f476f7665726e6f723a2070726f706f73616c206e6f74207375636365737366756040820152601b60fa1b606082015260800190565b60006020828403121561696e57600080fd5b81516001600160401b0381111561698457600080fd5b8201601f8101841361699557600080fd5b80516169a3615d9082615d4a565b8181528560208385010111156169b857600080fd5b611327826020830160208601615e6d565b81810381811115610f9957610f996168c6565b634e487b7160e01b600052601260045260246000fd5b600082616a0f57634e487b7160e01b600052601260045260246000fd5b500490565b600060208284031215616a2657600080fd5b815165ffffffffffff8116811461204457600080fd5b600060208284031215616a4e57600080fd5b5051919050565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b604081526000616a92604083018688616a55565b8281036020840152611746818587616a55565b608081526000616ab86080830187616168565b8281036020840152616aca81876161ac565b90508281036040840152616ade81866161dc565b91505082606083015295945050505050565b8082028115828204841417610f9957610f996168c6565b60a081526000616b1a60a0830188616168565b8281036020840152616b2c81886161ac565b90508281036040840152616b4081876161dc565b60608401959095525050608001529392505050565b60c081526000616b6860c0830189616168565b8281036020840152616b7a81896161ac565b90508281036040840152616b8e81886161dc565b60608401969096525050608081019290925260a0909101529392505050565b80820180821115610f9957610f996168c6565b600060208284031215616bd257600080fd5b8151801515811461204457600080fd5b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b60008251616c3f818460208701615e6d565b9190910192915050565b6001600160e01b0319831681528151600090616c6c816004850160208701615e6d565b919091016004019392505050565b6001600160401b03818116838216019080821115616914576169146168c6565b60208082526021908201527f476f7665726e6f723a20696e76616c69642070726f706f73616c206c656e67746040820152600d60fb1b606082015260800190565b8981526001600160a01b038916602082015261012060408201819052600090616d068382018b616168565b90508281036060840152616d1a818a6161ac565b90508281036080840152616d2e81896161dc565b905082810360a0840152616d4281886161dc565b90508560c08401528460e0840152828103610100840152616d638185615e91565b9c9b505050505050505050505050565b601f821115613baa57600081815260208120601f850160051c81016020861015616d9a5750805b601f850160051c820191505b8181101561177f57828155600101616da6565b81516001600160401b03811115616dd257616dd2615d04565b616de681616de08454616876565b84616d73565b602080601f831160018114616e1b5760008415616e035750858301515b600019600386901b1c1916600185901b17855561177f565b600085815260208120601f198616915b82811015616e4a57888601518255948401946001909101908401616e2b565b5085821015616e685787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b84815260ff84166020820152826040820152608060608201526000611b366080830184615e91565b85815260ff8516602082015283604082015260a060608201526000616ec860a0830185615e91565b8281036080840152611c4f8185615e9156fe476f7665726e6f723a2072656c617920726576657274656420776974686f7574206d657373616765a164736f6c6343000811000a \ No newline at end of file diff --git a/core/systemcontracts/pascal/chapel/StakeHubContract b/core/systemcontracts/pascal/chapel/StakeHubContract index a84e45061d..f094944137 100644 --- a/core/systemcontracts/pascal/chapel/StakeHubContract +++ b/core/systemcontracts/pascal/chapel/StakeHubContract @@ -1 +1 @@ -608060405260043610620003e75760003560e01c80638456cb591162000203578063cbb04d9d1162000117578063e8f67c3b11620000ad578063f80a34021162000078578063f80a34021462000c3f578063fb50b31f1462000c64578063fc0c5ff11462000c89578063ff69ab611462000ca157600080fd5b8063e8f67c3b1462000bbb578063e992aaf51462000bd3578063efdbf0e11462000beb578063f1f74d841462000c2757600080fd5b8063d7c2dfc811620000ee578063d7c2dfc81462000b41578063d8ca511f1462000b66578063daacdb661462000b7e578063dbda7fb31462000b9657600080fd5b8063cbb04d9d1462000ac2578063d115a2061462000b03578063d6ca429d1462000b1c57600080fd5b8063ac4317511162000199578063bff02e201162000164578063bff02e201462000a4f578063c38fbec81462000a85578063c473318f1462000aaa578063c8509d8114620008a357600080fd5b8063ac43175114620009cd578063b187bd2614620009f2578063baa7199e1462000a12578063bdceadf31462000a3757600080fd5b80638cd22b2211620001da5780638cd22b221462000938578063982ef0a7146200095d578063a43569b31462000974578063aad3ec9614620009a857600080fd5b80638456cb5914620008c857806386d5450614620008e05780638a4d3fa8146200091a57600080fd5b806349f41a4211620002fb57806364028fbd116200029157806375cc7d89116200025c57806375cc7d89146200084e57806376e7d6d614620008735780638129fc1c146200088b578063831d65d114620008a357600080fd5b806364028fbd1462000789578063663706d314620007a05780636ec01b2714620007d15780636f8e2fa4146200082957600080fd5b80634e6fd6c411620002d25780634e6fd6c414620006f05780635949187114620007085780635e7cc1c9146200072d57806363a036b5146200075257600080fd5b806349f41a4214620006815780634a49ac4c14620006a65780634d99dd1614620006cb57600080fd5b80631fa8882b116200037d578063417c73a71162000348578063417c73a714620005cd578063449ecfe614620005f257806345211bfd14620006175780634838d165146200063c57600080fd5b80631fa8882b146200053d5780632b727c8614620005565780632e8e8c71146200057b5780633840998814620005b557600080fd5b8063092193ab11620003be578063092193ab14620004885780630e9fbf51146200049f5780631182b87514620004c457806317b4f35314620004f857600080fd5b8063046f7da21462000407578063059ddd22146200041f5780630661806e146200046157600080fd5b36620004025760345460ff166001146200040057600080fd5b005b600080fd5b3480156200041457600080fd5b506200040062000cb9565b3480156200042c57600080fd5b50620004446200043e36600462008787565b62000d4b565b6040516001600160a01b0390911681526020015b60405180910390f35b3480156200046e57600080fd5b506200047960365481565b60405190815260200162000458565b620004006200049936600462008787565b62001173565b348015620004ac57600080fd5b5062000400620004be366004620087e9565b620017c4565b348015620004d157600080fd5b50620004e9620004e33660046200882e565b62001af0565b604051620004589190620088e1565b3480156200050557600080fd5b506200044462000517366004620089b3565b80516020818301810180516045825292820191909301209152546001600160a01b031681565b3480156200054a57600080fd5b50620004796201518081565b3480156200056357600080fd5b50620004446200057536600462008787565b62001b88565b3480156200058857600080fd5b50620004446200059a36600462008787565b604d602052600090815260409020546001600160a01b031681565b348015620005c257600080fd5b506200047960375481565b348015620005da57600080fd5b5062000400620005ec36600462008787565b62001bdd565b348015620005ff57600080fd5b50620004006200061136600462008787565b62001c5f565b3480156200062457600080fd5b50620004006200063636600462008787565b62001e44565b3480156200064957600080fd5b50620006706200065b36600462008787565b60016020526000908152604090205460ff1681565b604051901515815260200162000458565b3480156200068e57600080fd5b5062000400620006a036600462008787565b6200201d565b348015620006b357600080fd5b5062000400620006c536600462008787565b62002239565b348015620006d857600080fd5b5062000400620006ea36600462008a08565b620022b5565b348015620006fd57600080fd5b506200044461dead81565b3480156200071557600080fd5b50620004006200072736600462008a46565b620028e5565b3480156200073a57600080fd5b50620004006200074c36600462008ab0565b620036de565b3480156200075f57600080fd5b50620007776200077136600462008ad7565b62003908565b60405162000458949392919062008b40565b620004006200079a36600462008bfc565b62003fad565b348015620007ad57600080fd5b5062000479620007bf36600462008787565b60446020526000908152604090205481565b348015620007de57600080fd5b50620007f6620007f036600462008787565b620045fc565b6040805182516001600160401b039081168252602080850151821690830152928201519092169082015260600162000458565b3480156200083657600080fd5b50620004e96200084836600462008787565b620046a1565b3480156200085b57600080fd5b50620004006200086d36600462008787565b62004acd565b3480156200088057600080fd5b5062000479603d5481565b3480156200089857600080fd5b506200040062004c9f565b348015620008b057600080fd5b5062000400620008c23660046200882e565b62004e6a565b348015620008d557600080fd5b506200040062004ec8565b348015620008ed57600080fd5b5062000444620008ff36600462008787565b6043602052600090815260409020546001600160a01b031681565b3480156200092757600080fd5b5062000479670de0b6b3a764000081565b3480156200094557600080fd5b50620004796200095736600462008a08565b62004f60565b620004006200096e36600462008cd2565b62005019565b3480156200098157600080fd5b50620009996200099336600462008787565b620056c7565b60405162000458919062008d0a565b348015620009b557600080fd5b5062000400620009c736600462008a08565b620059b4565b348015620009da57600080fd5b5062000400620009ec36600462008d87565b62005a21565b348015620009ff57600080fd5b5060005462010000900460ff1662000670565b34801562000a1f57600080fd5b506200040062000a3136600462008e40565b620068c0565b34801562000a4457600080fd5b5062000479603c5481565b34801562000a5c57600080fd5b5062000a7462000a6e36600462008ad7565b62006a8d565b604051620004589392919062008e99565b34801562000a9257600080fd5b506200040062000aa436600462008787565b62006c69565b34801562000ab757600080fd5b506200047960385481565b34801562000acf57600080fd5b5062000ae762000ae136600462008787565b62006f2b565b6040805193845291151560208401529082015260600162000458565b34801562000b1057600080fd5b5062000479620186a081565b34801562000b2957600080fd5b506200040062000b3b36600462008ef6565b6200736e565b34801562000b4e57600080fd5b506200040062000b6036600462008fdf565b62007594565b34801562000b7357600080fd5b5062000479603b5481565b34801562000b8b57600080fd5b506200047960495481565b34801562000ba357600080fd5b506200044462000bb536600462008787565b6200768a565b34801562000bc857600080fd5b506200047960355481565b34801562000be057600080fd5b5062000479603a5481565b34801562000bf857600080fd5b506200047962000c0a366004620089b3565b805160208183018101805160468252928201919093012091525481565b34801562000c3457600080fd5b5062000479603e5481565b34801562000c4c57600080fd5b506200047962000c5e36600462008a08565b62007ab4565b34801562000c7157600080fd5b506200040062000c8336600462008d87565b62007b25565b34801562000c9657600080fd5b506200047960395481565b34801562000cae57600080fd5b5062000479604a5481565b600054630100000090046001600160a01b0316331462000cec576040516306fbb1e360e01b815260040160405180910390fd5b60005462010000900460ff1662000d1657604051636cd6020160e01b815260040160405180910390fd5b6000805462ff0000191681556040517f62451d457bc659158be6e6247f56ec1df424a5c7597f71c20c2bc44e0965c8f99190a1565b6001600160a01b038082166000908152604160209081526040808320815161018081018352815486168152600182015486169381019390935260028101549094169082015260038301546060820152600483018054929384939091608084019162000db69062009045565b80601f016020809104026020016040519081016040528092919081815260200182805462000de49062009045565b801562000e355780601f1062000e095761010080835404028352916020019162000e35565b820191906000526020600020905b81548152906001019060200180831162000e1757829003601f168201915b505050505081526020016005820160405180608001604052908160008201805462000e609062009045565b80601f016020809104026020016040519081016040528092919081815260200182805462000e8e9062009045565b801562000edf5780601f1062000eb35761010080835404028352916020019162000edf565b820191906000526020600020905b81548152906001019060200180831162000ec157829003601f168201915b5050505050815260200160018201805462000efa9062009045565b80601f016020809104026020016040519081016040528092919081815260200182805462000f289062009045565b801562000f795780601f1062000f4d5761010080835404028352916020019162000f79565b820191906000526020600020905b81548152906001019060200180831162000f5b57829003601f168201915b5050505050815260200160028201805462000f949062009045565b80601f016020809104026020016040519081016040528092919081815260200182805462000fc29062009045565b8015620010135780601f1062000fe75761010080835404028352916020019162001013565b820191906000526020600020905b81548152906001019060200180831162000ff557829003601f168201915b505050505081526020016003820180546200102e9062009045565b80601f01602080910402602001604051908101604052809291908181526020018280546200105c9062009045565b8015620010ad5780601f106200108157610100808354040283529160200191620010ad565b820191906000526020600020905b8154815290600101906020018083116200108f57829003601f168201915b505050919092525050508152604080516060808201835260098501546001600160401b038082168452600160401b82048116602080860191909152600160801b9092041683850152840191909152600a84015460ff16151582840152600b84015490830152600c8301546080830152600d8301546001600160a01b031660a0830152805161026081019182905260c09092019190600e84019060139082845b8154815260200190600101908083116200114c575050509190925250509051949350505050565b33611000146200119f57604051630f22c43960e41b815261100060048201526024015b60405180910390fd5b6001600160a01b03808216600090815260436020908152604080832054841680845260418352818420825161018081018452815487168152600182015487169481019490945260028101549095169183019190915260038401546060830152600484018054919491608084019190620012189062009045565b80601f0160208091040260200160405190810160405280929190818152602001828054620012469062009045565b8015620012975780601f106200126b5761010080835404028352916020019162001297565b820191906000526020600020905b8154815290600101906020018083116200127957829003601f168201915b5050505050815260200160058201604051806080016040529081600082018054620012c29062009045565b80601f0160208091040260200160405190810160405280929190818152602001828054620012f09062009045565b8015620013415780601f10620013155761010080835404028352916020019162001341565b820191906000526020600020905b8154815290600101906020018083116200132357829003601f168201915b505050505081526020016001820180546200135c9062009045565b80601f01602080910402602001604051908101604052809291908181526020018280546200138a9062009045565b8015620013db5780601f10620013af57610100808354040283529160200191620013db565b820191906000526020600020905b815481529060010190602001808311620013bd57829003601f168201915b50505050508152602001600282018054620013f69062009045565b80601f0160208091040260200160405190810160405280929190818152602001828054620014249062009045565b8015620014755780601f10620014495761010080835404028352916020019162001475565b820191906000526020600020905b8154815290600101906020018083116200145757829003601f168201915b50505050508152602001600382018054620014909062009045565b80601f0160208091040260200160405190810160405280929190818152602001828054620014be9062009045565b80156200150f5780601f10620014e3576101008083540402835291602001916200150f565b820191906000526020600020905b815481529060010190602001808311620014f157829003601f168201915b505050919092525050508152604080516060808201835260098501546001600160401b038082168452600160401b82048116602080860191909152600160801b9092041683850152840191909152600a84015460ff16151582840152600b84015490830152600c8301546080830152600d8301546001600160a01b031660a0830152805161026081019182905260c09092019190600e84019060139082845b815481526020019060010190808311620015ae575050509190925250505060408101519091506001600160a01b03161580620015eb57508060e001515b15620016a857604051611002903490600081818185875af1925050503d806000811462001635576040519150601f19603f3d011682016040523d82523d6000602084013e6200163a565b606091505b505050816001600160a01b03167ffc8bff675087dd2da069cc3fb517b9ed001e19750c0865241a5542dba1ba170d6040516200169b9060208082526011908201527024a72b20a624a22fab20a624a220aa27a960791b604082015260600190565b60405180910390a2505050565b60408181015160c0830151519151632f303ebb60e11b81526001600160401b0390921660048301526001600160a01b031690635e607d769034906024016000604051808303818588803b158015620016ff57600080fd5b505af115801562001714573d6000803e3d6000fd5b5050505050816001600160a01b03167fe34918ff1c7084970068b53fd71ad6d8b04e9f15d3886cbf006443e6cdc52ea6346040516200175591815260200190565b60405180910390a26040808201519051633041949b60e01b815261200591633041949b916200178a919086906004016200907b565b600060405180830381600087803b158015620017a557600080fd5b505af1158015620017ba573d6000803e3d6000fd5b5050505050505b50565b3361100114620017ec57604051630f22c43960e41b8152611001600482015260240162001196565b60005462010000900460ff16156200181757604051631785c68160e01b815260040160405180910390fd5b6000604583836040516200182d92919062009095565b908152604051908190036020019020546001600160a01b0316905062001855603f8262007d5e565b620018735760405163056e881160e01b815260040160405180910390fd5b6001600160a01b0381166000908152604160205260408120906200189b6201518042620090bb565b604a546000828152604b602052604090205491925011620018cf5760405163bd52fcdb60e01b815260040160405180910390fd5b6000818152604b60205260408120805460019290620018f0908490620090de565b90915550506040516046906200190a908790879062009095565b9081526020016040518091039020546000141580156200195b57504262015180604687876040516200193e92919062009095565b908152602001604051809103902054620019599190620090de565b105b156200197a57604051631898eb6b60e01b815260040160405180910390fd5b6000806200198a85600262007d81565b9150915081620019ad57604051631b919bb160e11b815260040160405180910390fd5b6002840154603c5460405163045bc4d160e41b815260048101919091526000916001600160a01b0316906345bc4d10906024016020604051808303816000875af115801562001a00573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001a269190620090f4565b905062001a34858362007e0b565b856001600160a01b03167f6e9a2ee7aee95665e3a774a212eb11441b217e3e4656ab9563793094689aabb28383600260405162001a74939291906200910e565b60405180910390a26002850154604051633041949b60e01b815261200591633041949b9162001ab2916001600160a01b0316908a906004016200907b565b600060405180830381600087803b15801562001acd57600080fd5b505af115801562001ae2573d6000803e3d6000fd5b505050505050505050505050565b6060336120001462001b1a57604051630f22c43960e41b8152612000600482015260240162001196565b60005462010000900460ff161562001b4557604051631785c68160e01b815260040160405180910390fd5b6034805460ff1916600117905560405162461bcd60e51b815260206004820152600a60248201526919195c1c9958d85d195960b21b604482015260640162001196565b60008162001b98603f8262007d5e565b62001bb65760405163056e881160e01b815260040160405180910390fd5b6001600160a01b038084166000908152604160205260409020600d01541691505b50919050565b600054630100000090046001600160a01b0316331462001c10576040516306fbb1e360e01b815260040160405180910390fd5b6001600160a01b0381166000818152600160208190526040808320805460ff1916909217909155517f7fd26be6fc92aff63f1f4409b2b2ddeb272a888031d7f55ec830485ec61941869190a250565b60005462010000900460ff161562001c8a57604051631785c68160e01b815260040160405180910390fd5b3360009081526001602052604090205460ff161562001cbc5760405163b1d02c3d60e01b815260040160405180910390fd5b8062001cca603f8262007d5e565b62001ce85760405163056e881160e01b815260040160405180910390fd5b6001600160a01b0382166000908152604160205260409020600a81015460ff1662001d2657604051634b6b857d60e01b815260040160405180910390fd5b6036546002820154604051630913db4760e01b81526001600160a01b03868116600483015290911690630913db4790602401602060405180830381865afa15801562001d76573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001d9c9190620090f4565b101562001dbc576040516317b204bf60e11b815260040160405180910390fd5b4281600b0154111562001de25760405163170cb76760e21b815260040160405180910390fd5b600a8101805460ff19169055604980546001919060009062001e0690849062009149565b90915550506040516001600160a01b038416907f9390b453426557da5ebdc31f19a37753ca04addf656d32f35232211bb2af3f1990600090a2505050565b60005462010000900460ff161562001e6f57604051631785c68160e01b815260040160405180910390fd5b3360009081526001602052604090205460ff161562001ea15760405163b1d02c3d60e01b815260040160405180910390fd5b62001eab62007f00565b62001eb8603f8262007d5e565b62001ed65760405163056e881160e01b815260040160405180910390fd5b6001600160a01b03821662001efe57604051636520611b60e11b815260040160405180910390fd5b6001600160a01b03828116600090815260436020526040902054161562001f3857604051631e6f587560e11b815260040160405180910390fd5b600062001f4462007f00565b6001600160a01b0381166000908152604160205260409020600c81015491925090429062001f77906201518090620090de565b111562001f9757604051631f92cdbd60e11b815260040160405180910390fd5b80546001600160a01b039081166000908152604460209081526040808320429081905585548986166001600160a01b031991821681178855600c88019290925581855260439093528184208054958816959093168517909255519092917f6e4e747ca35203f16401c69805c7dd52fff67ef60b0ebc5c7fe16890530f223591a350505050565b336200202b603f8262007d5e565b620020495760405163056e881160e01b815260040160405180910390fd5b60005462010000900460ff16156200207457604051631785c68160e01b815260040160405180910390fd5b3360009081526001602052604090205460ff1615620020a65760405163b1d02c3d60e01b815260040160405180910390fd5b6001600160a01b038281166000908152604d60205260409020541615620020e05760405163bebdc75760e01b815260040160405180910390fd5b620020ed603f8362007d5e565b156200210c5760405163bebdc75760e01b815260040160405180910390fd5b336000818152604160205260409020600d01546001600160a01b0390811690841681036200214d5760405163bebdc75760e01b815260040160405180910390fd5b6001600160a01b0381161562002184576001600160a01b0381166000908152604d6020526040902080546001600160a01b03191690555b6001600160a01b038281166000908152604160205260409020600d0180546001600160a01b031916918616918217905515620021e9576001600160a01b038481166000908152604d6020526040902080546001600160a01b0319169184169190911790555b836001600160a01b0316816001600160a01b0316836001600160a01b03167fcbb728765de145e99c00e8ae32a325231e850359b7b8a6da3b84d672ab3f1d0a60405160405180910390a450505050565b600054630100000090046001600160a01b031633146200226c576040516306fbb1e360e01b815260040160405180910390fd5b6001600160a01b038116600081815260016020526040808220805460ff19169055517fe0db3499b7fdc3da4cddff5f45d694549c19835e7f719fb5606d3ad1a5de40119190a250565b60005462010000900460ff1615620022e057604051631785c68160e01b815260040160405180910390fd5b3360009081526001602052604090205460ff1615620023125760405163b1d02c3d60e01b815260040160405180910390fd5b8162002320603f8262007d5e565b6200233e5760405163056e881160e01b815260040160405180910390fd5b816000036200236057604051639811e0c760e01b815260040160405180910390fd5b6001600160a01b0380841660009081526041602090815260408083208151610180810183528154861681526001820154861693810193909352600281015490941690820152600383015460608201526004830180543394916080840191620023c89062009045565b80601f0160208091040260200160405190810160405280929190818152602001828054620023f69062009045565b8015620024475780601f106200241b5761010080835404028352916020019162002447565b820191906000526020600020905b8154815290600101906020018083116200242957829003601f168201915b5050505050815260200160058201604051806080016040529081600082018054620024729062009045565b80601f0160208091040260200160405190810160405280929190818152602001828054620024a09062009045565b8015620024f15780601f10620024c557610100808354040283529160200191620024f1565b820191906000526020600020905b815481529060010190602001808311620024d357829003601f168201915b505050505081526020016001820180546200250c9062009045565b80601f01602080910402602001604051908101604052809291908181526020018280546200253a9062009045565b80156200258b5780601f106200255f576101008083540402835291602001916200258b565b820191906000526020600020905b8154815290600101906020018083116200256d57829003601f168201915b50505050508152602001600282018054620025a69062009045565b80601f0160208091040260200160405190810160405280929190818152602001828054620025d49062009045565b8015620026255780601f10620025f95761010080835404028352916020019162002625565b820191906000526020600020905b8154815290600101906020018083116200260757829003601f168201915b50505050508152602001600382018054620026409062009045565b80601f01602080910402602001604051908101604052809291908181526020018280546200266e9062009045565b8015620026bf5780601f106200269357610100808354040283529160200191620026bf565b820191906000526020600020905b815481529060010190602001808311620026a157829003601f168201915b505050919092525050508152604080516060808201835260098501546001600160401b038082168452600160401b82048116602080860191909152600160801b9092041683850152840191909152600a84015460ff16151582840152600b84015490830152600c8301546080830152600d8301546001600160a01b031660a0830152805161026081019182905260c09092019190600e84019060139082845b8154815260200190600101908083116200275e575050509190925250505060408082015190516326ccee8b60e11b81526001600160a01b0385811660048301526024820188905292935060009290911690634d99dd16906044016020604051808303816000875af1158015620027d8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620027fe9190620090f4565b9050826001600160a01b0316866001600160a01b03167f3aace7340547de7b9156593a7652dc07ee900cea3fd8f82cb6c9d38b4082980287846040516200284f929190918252602082015260400190565b60405180910390a3856001600160a01b0316836001600160a01b0316036200287c576200287c8662007f41565b6040808301519051633041949b60e01b815261200591633041949b91620028a9919087906004016200907b565b600060405180830381600087803b158015620028c457600080fd5b505af1158015620028d9573d6000803e3d6000fd5b50505050505050505050565b60005462010000900460ff16156200291057604051631785c68160e01b815260040160405180910390fd5b3360009081526001602052604090205460ff1615620029425760405163b1d02c3d60e01b815260040160405180910390fd5b8362002950603f8262007d5e565b6200296e5760405163056e881160e01b815260040160405180910390fd5b836200297c603f8262007d5e565b6200299a5760405163056e881160e01b815260040160405180910390fd5b6034805460ff191660011790556000849003620029ca57604051639811e0c760e01b815260040160405180910390fd5b846001600160a01b0316866001600160a01b031603620029fd5760405163f0e3e62960e01b815260040160405180910390fd5b6001600160a01b038087166000908152604160209081526040808320815161018081018352815486168152600182015486169381019390935260028101549094169082015260038301546060820152600483018054339491608084019162002a659062009045565b80601f016020809104026020016040519081016040528092919081815260200182805462002a939062009045565b801562002ae45780601f1062002ab85761010080835404028352916020019162002ae4565b820191906000526020600020905b81548152906001019060200180831162002ac657829003601f168201915b505050505081526020016005820160405180608001604052908160008201805462002b0f9062009045565b80601f016020809104026020016040519081016040528092919081815260200182805462002b3d9062009045565b801562002b8e5780601f1062002b625761010080835404028352916020019162002b8e565b820191906000526020600020905b81548152906001019060200180831162002b7057829003601f168201915b5050505050815260200160018201805462002ba99062009045565b80601f016020809104026020016040519081016040528092919081815260200182805462002bd79062009045565b801562002c285780601f1062002bfc5761010080835404028352916020019162002c28565b820191906000526020600020905b81548152906001019060200180831162002c0a57829003601f168201915b5050505050815260200160028201805462002c439062009045565b80601f016020809104026020016040519081016040528092919081815260200182805462002c719062009045565b801562002cc25780601f1062002c965761010080835404028352916020019162002cc2565b820191906000526020600020905b81548152906001019060200180831162002ca457829003601f168201915b5050505050815260200160038201805462002cdd9062009045565b80601f016020809104026020016040519081016040528092919081815260200182805462002d0b9062009045565b801562002d5c5780601f1062002d305761010080835404028352916020019162002d5c565b820191906000526020600020905b81548152906001019060200180831162002d3e57829003601f168201915b505050919092525050508152604080516060808201835260098501546001600160401b038082168452600160401b82048116602080860191909152600160801b9092041683850152840191909152600a84015460ff16151582840152600b84015490830152600c8301546080830152600d8301546001600160a01b031660a0830152805161026081019182905260c09092019190600e84019060139082845b81548152602001906001019080831162002dfb57505050919092525050506001600160a01b0380891660009081526041602090815260408083208151610180810183528154861681526001820154861693810193909352600281015490941690820152600383015460608201526004830180549495509193909291608084019162002e869062009045565b80601f016020809104026020016040519081016040528092919081815260200182805462002eb49062009045565b801562002f055780601f1062002ed95761010080835404028352916020019162002f05565b820191906000526020600020905b81548152906001019060200180831162002ee757829003601f168201915b505050505081526020016005820160405180608001604052908160008201805462002f309062009045565b80601f016020809104026020016040519081016040528092919081815260200182805462002f5e9062009045565b801562002faf5780601f1062002f835761010080835404028352916020019162002faf565b820191906000526020600020905b81548152906001019060200180831162002f9157829003601f168201915b5050505050815260200160018201805462002fca9062009045565b80601f016020809104026020016040519081016040528092919081815260200182805462002ff89062009045565b8015620030495780601f106200301d5761010080835404028352916020019162003049565b820191906000526020600020905b8154815290600101906020018083116200302b57829003601f168201915b50505050508152602001600282018054620030649062009045565b80601f0160208091040260200160405190810160405280929190818152602001828054620030929062009045565b8015620030e35780601f10620030b757610100808354040283529160200191620030e3565b820191906000526020600020905b815481529060010190602001808311620030c557829003601f168201915b50505050508152602001600382018054620030fe9062009045565b80601f01602080910402602001604051908101604052809291908181526020018280546200312c9062009045565b80156200317d5780601f1062003151576101008083540402835291602001916200317d565b820191906000526020600020905b8154815290600101906020018083116200315f57829003601f168201915b505050919092525050508152604080516060808201835260098501546001600160401b038082168452600160401b82048116602080860191909152600160801b9092041683850152840191909152600a84015460ff16151582840152600b84015490830152600c8301546080830152600d8301546001600160a01b031660a0830152805161026081019182905260c09092019190600e84019060139082845b8154815260200190600101908083116200321c5750505050508152505090508060e0015180156200325f5750876001600160a01b0316836001600160a01b031614155b156200327e57604051636468920360e01b815260040160405180910390fd5b60408083015190516352e82ce560e11b81526001600160a01b038581166004830152602482018a9052600092169063a5d059ca906044016020604051808303816000875af1158015620032d5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620032fb9190620090f4565b9050603754811015620033215760405163dc6f0bdd60e01b815260040160405180910390fd5b896001600160a01b0316846001600160a01b0316148015620033b657506036546040808501519051630913db4760e01b81526001600160a01b038d8116600483015290911690630913db4790602401602060405180830381865afa1580156200338e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620033b49190620090f4565b105b15620033d5576040516317b204bf60e11b815260040160405180910390fd5b6000620186a0603a5483620033eb91906200915f565b620033f79190620090bb565b9050600083604001516001600160a01b03168260405160006040518083038185875af1925050503d80600081146200344c576040519150601f19603f3d011682016040523d82523d6000602084013e62003451565b606091505b505090508062003474576040516312171d8360e31b815260040160405180910390fd5b62003480828462009149565b60408086015190516317066a5760e21b81526001600160a01b03898116600483015292955060009290911690635c19a95c90869060240160206040518083038185885af1158015620034d6573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190620034fd9190620090f4565b9050866001600160a01b03168c6001600160a01b03168e6001600160a01b03167ffdac6e81913996d95abcc289e90f2d8bd235487ce6fe6f821e7d21002a1915b48e858960405162003562939291909283526020830191909152604082015260600190565b60405180910390a4604080516002808252606082018352600092602083019080368337019050509050866040015181600081518110620035a657620035a662009179565b60200260200101906001600160a01b031690816001600160a01b031681525050856040015181600181518110620035e157620035e162009179565b6001600160a01b0390921660209283029190910190910152604051634484077560e01b815261200590634484077590620036229084908c906004016200918f565b600060405180830381600087803b1580156200363d57600080fd5b505af115801562003652573d6000803e3d6000fd5b505050508a15620036c4576120056001600160a01b031663e5ed5b1e898f6040518363ffffffff1660e01b81526004016200368f9291906200907b565b600060405180830381600087803b158015620036aa57600080fd5b505af1158015620036bf573d6000803e3d6000fd5b505050505b50506034805460ff19169055505050505050505050505050565b60005462010000900460ff16156200370957604051631785c68160e01b815260040160405180910390fd5b3360009081526001602052604090205460ff16156200373b5760405163b1d02c3d60e01b815260040160405180910390fd5b6200374562007f00565b62003752603f8262007d5e565b620037705760405163056e881160e01b815260040160405180910390fd5b60006200377c62007f00565b6001600160a01b0381166000908152604160205260409020600c810154919250904290620037af906201518090620090de565b1115620037cf57604051631f92cdbd60e11b815260040160405180910390fd5b60098101546001600160401b03600160401b90910481169085161115620038095760405163dc81db8560e01b815260040160405180910390fd5b60098101546000906001600160401b03908116908616101562003847576009820154620038419086906001600160401b0316620091bb565b62003861565b600982015462003861906001600160401b031686620091bb565b60098301546001600160401b039182169250600160801b9004168111156200389c5760405163dc81db8560e01b815260040160405180910390fd5b60098201805467ffffffffffffffff19166001600160401b03871690811790915542600c8401556040519081526001600160a01b038416907f78cdd96edf59e09cfd4d26ef6ef6c92d166effe6a40970c54821206d541932cb9060200160405180910390a25050505050565b606080606060006200391b603f62008067565b90508086101562003fa457841562003934578462003936565b805b945060008562003947888462009149565b116200395f5762003959878362009149565b62003961565b855b9050806001600160401b038111156200397e576200397e620088f6565b604051908082528060200260200182016040528015620039a8578160200160208202803683370190505b509450806001600160401b03811115620039c657620039c6620088f6565b604051908082528060200260200182016040528015620039f0578160200160208202803683370190505b509350806001600160401b0381111562003a0e5762003a0e620088f6565b60405190808252806020026020018201604052801562003a4357816020015b606081526020019060019003908162003a2d5790505b50925060005b8181101562003fa157600062003a6d62003a64838b620090de565b603f9062008072565b6001600160a01b0380821660009081526041602090815260408083208151610180810183528154861681526001820154861693810193909352600281015490941690820152600383015460608201526004830180549495509193909291608084019162003ada9062009045565b80601f016020809104026020016040519081016040528092919081815260200182805462003b089062009045565b801562003b595780601f1062003b2d5761010080835404028352916020019162003b59565b820191906000526020600020905b81548152906001019060200180831162003b3b57829003601f168201915b505050505081526020016005820160405180608001604052908160008201805462003b849062009045565b80601f016020809104026020016040519081016040528092919081815260200182805462003bb29062009045565b801562003c035780601f1062003bd75761010080835404028352916020019162003c03565b820191906000526020600020905b81548152906001019060200180831162003be557829003601f168201915b5050505050815260200160018201805462003c1e9062009045565b80601f016020809104026020016040519081016040528092919081815260200182805462003c4c9062009045565b801562003c9d5780601f1062003c715761010080835404028352916020019162003c9d565b820191906000526020600020905b81548152906001019060200180831162003c7f57829003601f168201915b5050505050815260200160028201805462003cb89062009045565b80601f016020809104026020016040519081016040528092919081815260200182805462003ce69062009045565b801562003d375780601f1062003d0b5761010080835404028352916020019162003d37565b820191906000526020600020905b81548152906001019060200180831162003d1957829003601f168201915b5050505050815260200160038201805462003d529062009045565b80601f016020809104026020016040519081016040528092919081815260200182805462003d809062009045565b801562003dd15780601f1062003da55761010080835404028352916020019162003dd1565b820191906000526020600020905b81548152906001019060200180831162003db357829003601f168201915b505050919092525050508152604080516060808201835260098501546001600160401b038082168452600160401b82048116602080860191909152600160801b9092041683850152840191909152600a84015460ff16151582840152600b84015490830152600c8301546080830152600d8301546001600160a01b031660a0830152805161026081019182905260c09092019190600e84019060139082845b81548152602001906001019080831162003e70575050505050815250509050806000015188848151811062003ea95762003ea962009179565b60200260200101906001600160a01b031690816001600160a01b0316815250508060e0015162003f425780604001516001600160a01b03166315d1f8986040518163ffffffff1660e01b8152600401602060405180830381865afa15801562003f16573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062003f3c9190620090f4565b62003f45565b60005b87848151811062003f5a5762003f5a62009179565b602002602001018181525050806080015186848151811062003f805762003f8062009179565b602002602001018190525050508062003f9990620091e5565b905062003a49565b50505b92959194509250565b60005462010000900460ff161562003fd857604051631785c68160e01b815260040160405180910390fd5b3360009081526001602052604090205460ff16156200400a5760405163b1d02c3d60e01b815260040160405180910390fd5b3362004018603f8262007d5e565b156200403757604051635f28f62b60e01b815260040160405180910390fd5b6001600160a01b038181166000908152604d602052604090205416156200407157604051631a0a9b9f60e21b815260040160405180910390fd5b6001600160a01b038881166000908152604360205260409020541615620040ab57604051631e6f587560e11b815260040160405180910390fd5b60006001600160a01b031660458888604051620040ca92919062009095565b908152604051908190036020019020546001600160a01b03161462004102576040516311fdb94760e01b815260040160405180910390fd5b600062004110838062009201565b6040516020016200412392919062009095565b60408051601f1981840301815291815281516020928301206000818152604290935291205490915060ff16156200416d5760405163c0bf414360e01b815260040160405180910390fd5b600062004183670de0b6b3a76400003462009149565b9050603654811015620041a9576040516317b204bf60e11b815260040160405180910390fd5b6001600160a01b038a16620041d157604051636520611b60e11b815260040160405180910390fd5b611388620041e6604087016020880162008ab0565b6001600160401b031611806200422c575062004209604086016020870162008ab0565b6001600160401b031662004221602087018762008ab0565b6001600160401b0316115b806200426b575062004245604086016020870162008ab0565b6001600160401b031662004260606087016040880162008ab0565b6001600160401b0316115b156200428a5760405163dc81db8560e01b815260040160405180910390fd5b620042d56200429a858062009201565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506200808092505050565b620042f357604051635dba5ad760e01b815260040160405180910390fd5b62004302838a8a8a8a62008222565b6200432057604051631647e3cb60e11b815260040160405180910390fd5b60006200436e8462004333878062009201565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506200835292505050565b90506200437d603f8562008453565b506000838152604260209081526040808320805460ff191660019081179091556001600160a01b0380891680865260419094529190932080548f83166001600160a01b031991821617825593810180548516909317909255600282018054918516919093161790915542600382015560048101620043fd8b8d83620092a9565b5085600582016200440f828262009371565b5087905060098201620044238282620094aa565b505042600c8201556001600160a01b038c81166000908152604360205260409081902080546001600160a01b0319169288169290921790915551859060459062004471908e908e9062009095565b908152602001604051809103902060006101000a8154816001600160a01b0302191690836001600160a01b03160217905550816001600160a01b0316856001600160a01b03168d6001600160a01b03167faecd9fb95e79c75a3a1de93362c6be5fe6ab65770d8614be583884161cd8228d8e8e604051620044f49291906200957a565b60405180910390a460408051848152602081018590526001600160a01b0387169182917f24d7bda8602b916d64417f0dbfe2e2e88ec9b1157bd9f596dfdb91ba26624e04910160405180910390a360408051670de0b6b3a7640000808252602082015261dead916001600160a01b038816917f24d7bda8602b916d64417f0dbfe2e2e88ec9b1157bd9f596dfdb91ba26624e04910160405180910390a3604051633041949b60e01b815261200590633041949b90620045ba90859089906004016200907b565b600060405180830381600087803b158015620045d557600080fd5b505af1158015620045ea573d6000803e3d6000fd5b50505050505050505050505050505050565b60408051606081018252600080825260208201819052918101919091528162004627603f8262007d5e565b620046455760405163056e881160e01b815260040160405180910390fd5b50506001600160a01b031660009081526041602090815260409182902082516060810184526009909101546001600160401b038082168352600160401b8204811693830193909352600160801b90049091169181019190915290565b6001600160a01b038082166000908152604160209081526040808320815161018081018352815486168152600182015486169381019390935260028101549094169082015260038301546060828101919091526004840180549194916080840191906200470e9062009045565b80601f01602080910402602001604051908101604052809291908181526020018280546200473c9062009045565b80156200478d5780601f1062004761576101008083540402835291602001916200478d565b820191906000526020600020905b8154815290600101906020018083116200476f57829003601f168201915b5050505050815260200160058201604051806080016040529081600082018054620047b89062009045565b80601f0160208091040260200160405190810160405280929190818152602001828054620047e69062009045565b8015620048375780601f106200480b5761010080835404028352916020019162004837565b820191906000526020600020905b8154815290600101906020018083116200481957829003601f168201915b50505050508152602001600182018054620048529062009045565b80601f0160208091040260200160405190810160405280929190818152602001828054620048809062009045565b8015620048d15780601f10620048a557610100808354040283529160200191620048d1565b820191906000526020600020905b815481529060010190602001808311620048b357829003601f168201915b50505050508152602001600282018054620048ec9062009045565b80601f01602080910402602001604051908101604052809291908181526020018280546200491a9062009045565b80156200496b5780601f106200493f576101008083540402835291602001916200496b565b820191906000526020600020905b8154815290600101906020018083116200494d57829003601f168201915b50505050508152602001600382018054620049869062009045565b80601f0160208091040260200160405190810160405280929190818152602001828054620049b49062009045565b801562004a055780601f10620049d95761010080835404028352916020019162004a05565b820191906000526020600020905b815481529060010190602001808311620049e757829003601f168201915b505050919092525050508152604080516060808201835260098501546001600160401b038082168452600160401b82048116602080860191909152600160801b9092041683850152840191909152600a84015460ff16151582840152600b84015490830152600c8301546080830152600d8301546001600160a01b031660a0830152805161026081019182905260c09092019190600e84019060139082845b81548152602001906001019080831162004aa45750505091909252505050608001519392505050565b336110011462004af557604051630f22c43960e41b8152611001600482015260240162001196565b6001600160a01b038082166000908152604360205260409020541662004b1d603f8262007d5e565b62004b3b5760405163056e881160e01b815260040160405180910390fd5b6001600160a01b038181166000908152604160205260408082206002810154603b54925163045bc4d160e41b81526004810193909352909316906345bc4d10906024016020604051808303816000875af115801562004b9e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062004bc49190620090f4565b90506000603d544262004bd89190620090de565b905062004be6838262007e0b565b836001600160a01b03167f6e9a2ee7aee95665e3a774a212eb11441b217e3e4656ab9563793094689aabb28284600160405162004c26939291906200910e565b60405180910390a26002830154604051633041949b60e01b815261200591633041949b9162004c64916001600160a01b03169088906004016200907b565b600060405180830381600087803b15801562004c7f57600080fd5b505af115801562004c94573d6000803e3d6000fd5b505050505050505050565b600054610100900460ff161580801562004cc05750600054600160ff909116105b8062004cdc5750303b15801562004cdc575060005460ff166001145b62004d415760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b606482015260840162001196565b6000805460ff19166001179055801562004d65576000805461ff0019166101001790555b33411462004d865760405163022d8c9560e31b815260040160405180910390fd5b3a1562004da6576040516383f1b1d360e01b815260040160405180910390fd5b611388603555686c6b935b8bbd400000603655670de0b6b3a7640000603755600960385562093a806039556002603a819055678ac7230489e80000603b55680ad78ebc5ac6200000603c556202a300603d5562069780603e55604a5562004e217330151da466ec8ab345bef3d6983023e050fb06736200846a565b8015620017c1576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a150565b336120001462004e9257604051630f22c43960e41b8152612000600482015260240162001196565b60405162461bcd60e51b815260206004820152600a60248201526919195c1c9958d85d195960b21b604482015260640162001196565b600054630100000090046001600160a01b0316331462004efb576040516306fbb1e360e01b815260040160405180910390fd5b60005462010000900460ff161562004f2657604051631785c68160e01b815260040160405180910390fd5b6000805462ff00001916620100001781556040517f9e87fac88ff661f02d44f95383c817fece4bce600a3dab7a54406878b965e7529190a1565b600062004f6f603f8462007d5e565b62004f8d5760405163056e881160e01b815260040160405180910390fd5b6001600160a01b0383811660009081526041602052604090819020600201549051636bbf224960e01b815260048101859052911690636bbf2249906024015b602060405180830381865afa15801562004fea573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620050109190620090f4565b90505b92915050565b60005462010000900460ff16156200504457604051631785c68160e01b815260040160405180910390fd5b3360009081526001602052604090205460ff1615620050765760405163b1d02c3d60e01b815260040160405180910390fd5b8162005084603f8262007d5e565b620050a25760405163056e881160e01b815260040160405180910390fd5b6037543490811015620050c85760405163dc6f0bdd60e01b815260040160405180910390fd5b6001600160a01b0380851660009081526041602090815260408083208151610180810183528154861681526001820154861693810193909352600281015490941690820152600383015460608201526004830180543394916080840191620051309062009045565b80601f01602080910402602001604051908101604052809291908181526020018280546200515e9062009045565b8015620051af5780601f106200518357610100808354040283529160200191620051af565b820191906000526020600020905b8154815290600101906020018083116200519157829003601f168201915b5050505050815260200160058201604051806080016040529081600082018054620051da9062009045565b80601f0160208091040260200160405190810160405280929190818152602001828054620052089062009045565b8015620052595780601f106200522d5761010080835404028352916020019162005259565b820191906000526020600020905b8154815290600101906020018083116200523b57829003601f168201915b50505050508152602001600182018054620052749062009045565b80601f0160208091040260200160405190810160405280929190818152602001828054620052a29062009045565b8015620052f35780601f10620052c757610100808354040283529160200191620052f3565b820191906000526020600020905b815481529060010190602001808311620052d557829003601f168201915b505050505081526020016002820180546200530e9062009045565b80601f01602080910402602001604051908101604052809291908181526020018280546200533c9062009045565b80156200538d5780601f1062005361576101008083540402835291602001916200538d565b820191906000526020600020905b8154815290600101906020018083116200536f57829003601f168201915b50505050508152602001600382018054620053a89062009045565b80601f0160208091040260200160405190810160405280929190818152602001828054620053d69062009045565b8015620054275780601f10620053fb5761010080835404028352916020019162005427565b820191906000526020600020905b8154815290600101906020018083116200540957829003601f168201915b505050919092525050508152604080516060808201835260098501546001600160401b038082168452600160401b82048116602080860191909152600160801b9092041683850152840191909152600a84015460ff16151582840152600b84015490830152600c8301546080830152600d8301546001600160a01b031660a0830152805161026081019182905260c09092019190600e84019060139082845b815481526020019060010190808311620054c65750505050508152505090508060e001518015620055095750856001600160a01b0316826001600160a01b031614155b156200552857604051636468920360e01b815260040160405180910390fd5b60408082015190516317066a5760e21b81526001600160a01b0384811660048301526000921690635c19a95c90869060240160206040518083038185885af115801562005579573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190620055a09190620090f4565b9050826001600160a01b0316876001600160a01b03167f24d7bda8602b916d64417f0dbfe2e2e88ec9b1157bd9f596dfdb91ba26624e048387604051620055f1929190918252602082015260400190565b60405180910390a36040808301519051633041949b60e01b815261200591633041949b9162005626919087906004016200907b565b600060405180830381600087803b1580156200564157600080fd5b505af115801562005656573d6000803e3d6000fd5b505050508515620017ba576040516372f6ad8f60e11b81526120059063e5ed5b1e906200568a9086908b906004016200907b565b600060405180830381600087803b158015620056a557600080fd5b505af1158015620056ba573d6000803e3d6000fd5b5050505050505050505050565b620056f36040518060800160405280606081526020016060815260200160608152602001606081525090565b8162005701603f8262007d5e565b6200571f5760405163056e881160e01b815260040160405180910390fd5b6001600160a01b03831660009081526041602052604090819020815160808101909252600501805482908290620057569062009045565b80601f0160208091040260200160405190810160405280929190818152602001828054620057849062009045565b8015620057d55780601f10620057a957610100808354040283529160200191620057d5565b820191906000526020600020905b815481529060010190602001808311620057b757829003601f168201915b50505050508152602001600182018054620057f09062009045565b80601f01602080910402602001604051908101604052809291908181526020018280546200581e9062009045565b80156200586f5780601f1062005843576101008083540402835291602001916200586f565b820191906000526020600020905b8154815290600101906020018083116200585157829003601f168201915b505050505081526020016002820180546200588a9062009045565b80601f0160208091040260200160405190810160405280929190818152602001828054620058b89062009045565b8015620059095780601f10620058dd5761010080835404028352916020019162005909565b820191906000526020600020905b815481529060010190602001808311620058eb57829003601f168201915b50505050508152602001600382018054620059249062009045565b80601f0160208091040260200160405190810160405280929190818152602001828054620059529062009045565b8015620059a35780601f106200597757610100808354040283529160200191620059a3565b820191906000526020600020905b8154815290600101906020018083116200598557829003601f168201915b505050505081525050915050919050565b60005462010000900460ff1615620059df57604051631785c68160e01b815260040160405180910390fd5b3360009081526001602052604090205460ff161562005a115760405163b1d02c3d60e01b815260040160405180910390fd5b62005a1d828262008503565b5050565b336110071462005a4957604051630f22c43960e41b8152611007600482015260240162001196565b62005ab66040518060400160405280601081526020016f1d1c985b9cd9995c91d85cd31a5b5a5d60821b81525085858080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092939250506200860f9050565b1562005b71576020811462005ae85783838383604051630a5a604160e01b815260040162001196949392919062009590565b604080516020601f840181900481028201810190925282815260009162005b2b9185858083850183828082843760009201919091525092939250506200866c9050565b90506108fc81108062005b3f575061271081115b1562005b685784848484604051630a5a604160e01b815260040162001196949392919062009590565b6035556200687b565b62005be26040518060400160405280601481526020017336b4b729b2b6332232b632b3b0ba34b7b721272160611b81525085858080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092939250506200860f9050565b1562005cac576020811462005c145783838383604051630a5a604160e01b815260040162001196949392919062009590565b604080516020601f840181900481028201810190925282815260009162005c579185858083850183828082843760009201919091525092939250506200866c9050565b9050683635c9adc5dea0000081108062005c7a575069152d02c7e14af680000081115b1562005ca35784848484604051630a5a604160e01b815260040162001196949392919062009590565b6036556200687b565b62005d1f604051806040016040528060168152602001756d696e44656c65676174696f6e424e424368616e676560501b81525085858080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092939250506200860f9050565b1562005de6576020811462005d515783838383604051630a5a604160e01b815260040162001196949392919062009590565b604080516020601f840181900481028201810190925282815260009162005d949185858083850183828082843760009201919091525092939250506200866c9050565b905067016345785d8a000081108062005db45750678ac7230489e8000081115b1562005ddd5784848484604051630a5a604160e01b815260040162001196949392919062009590565b6037556200687b565b62005e57604051806040016040528060148152602001736d6178456c656374656456616c696461746f727360601b81525085858080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092939250506200860f9050565b1562005f0f576020811462005e895783838383604051630a5a604160e01b815260040162001196949392919062009590565b604080516020601f840181900481028201810190925282815260009162005ecc9185858083850183828082843760009201919091525092939250506200866c9050565b905080158062005edd57506101f481115b1562005f065784848484604051630a5a604160e01b815260040162001196949392919062009590565b6038556200687b565b62005f786040518060400160405280600c81526020016b1d5b989bdb9914195c9a5bd960a21b81525085858080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092939250506200860f9050565b1562006035576020811462005faa5783838383604051630a5a604160e01b815260040162001196949392919062009590565b604080516020601f840181900481028201810190925282815260009162005fed9185858083850183828082843760009201919091525092939250506200866c9050565b90506203f48081108062006003575062278d0081115b156200602c5784848484604051630a5a604160e01b815260040162001196949392919062009590565b6039556200687b565b620060a360405180604001604052806011815260200170726564656c65676174654665655261746560781b81525085858080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092939250506200860f9050565b15620061505760208114620060d55783838383604051630a5a604160e01b815260040162001196949392919062009590565b604080516020601f8401819004810282018101909252828152600091620061189185858083850183828082843760009201919091525092939250506200866c9050565b90506064811115620061475784848484604051630a5a604160e01b815260040162001196949392919062009590565b603a556200687b565b620061c060405180604001604052806013815260200172191bdddb9d1a5b5954db185cda105b5bdd5b9d606a1b81525085858080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092939250506200860f9050565b15620062815760208114620061f25783838383604051630a5a604160e01b815260040162001196949392919062009590565b604080516020601f8401819004810282018101909252828152600091620062359185858083850183828082843760009201919091525092939250506200866c9050565b9050674563918244f400008110806200624f5750603c5481115b15620062785784848484604051630a5a604160e01b815260040162001196949392919062009590565b603b556200687b565b620062ef6040518060400160405280601181526020017019995b1bdb9e54db185cda105b5bdd5b9d607a1b81525085858080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092939250506200860f9050565b15620063b25760208114620063215783838383604051630a5a604160e01b815260040162001196949392919062009590565b604080516020601f8401819004810282018101909252828152600091620063649185858083850183828082843760009201919091525092939250506200866c9050565b905068056bc75e2d63100000811080620063805750603b548111155b15620063a95784848484604051630a5a604160e01b815260040162001196949392919062009590565b603c556200687b565b6200641f6040518060400160405280601081526020016f646f776e74696d654a61696c54696d6560801b81525085858080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092939250506200860f9050565b15620064dc5760208114620064515783838383604051630a5a604160e01b815260040162001196949392919062009590565b604080516020601f8401819004810282018101909252828152600091620064949185858083850183828082843760009201919091525092939250506200866c9050565b90506202a300811080620064aa5750603e548110155b15620064d35784848484604051630a5a604160e01b815260040162001196949392919062009590565b603d556200687b565b620065476040518060400160405280600e81526020016d66656c6f6e794a61696c54696d6560901b81525085858080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092939250506200860f9050565b15620066045760208114620065795783838383604051630a5a604160e01b815260040162001196949392919062009590565b604080516020601f8401819004810282018101909252828152600091620065bc9185858083850183828082843760009201919091525092939250506200866c9050565b9050620d2f00811080620065d25750603d548111155b15620065fb5784848484604051630a5a604160e01b815260040162001196949392919062009590565b603e556200687b565b6200667e6040518060400160405280601c81526020017f6d617846656c6f6e794265747765656e42726561746865426c6f636b0000000081525085858080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092939250506200860f9050565b156200672a5760208114620066b05783838383604051630a5a604160e01b815260040162001196949392919062009590565b604080516020601f8401819004810282018101909252828152600091620066f39185858083850183828082843760009201919091525092939250506200866c9050565b905080600003620067215784848484604051630a5a604160e01b815260040162001196949392919062009590565b604a556200687b565b620067986040518060400160405280601181526020017039ba30b5b2a43ab1283937ba32b1ba37b960791b81525085858080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092939250506200860f9050565b15620068585760148114620067ca5783838383604051630a5a604160e01b815260040162001196949392919062009590565b600062006812601484848080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092939250506200866c9050565b90506001600160a01b038116620068465784848484604051630a5a604160e01b815260040162001196949392919062009590565b620068518162008671565b506200687b565b838383836040516325ee20d560e21b815260040162001196949392919062009590565b7ff1ce9b2cbf50eeb05769a29e2543fd350cab46894a7dd9978a12d534bb20e63384848484604051620068b2949392919062009590565b60405180910390a150505050565b60005462010000900460ff1615620068eb57604051631785c68160e01b815260040160405180910390fd5b3360009081526001602052604090205460ff16156200691d5760405163b1d02c3d60e01b815260040160405180910390fd5b816000816001600160401b038111156200693b576200693b620088f6565b60405190808252806020026020018201604052801562006965578160200160208202803683370190505b5090506000805b8381101562006a6357620069ae8787838181106200698e576200698e62009179565b9050602002016020810190620069a5919062008787565b603f9062007d5e565b620069cc5760405163056e881160e01b815260040160405180910390fd5b60416000888884818110620069e557620069e562009179565b9050602002016020810190620069fc919062008787565b6001600160a01b039081168252602082019290925260400160002060020154845191169250829084908390811062006a385762006a3862009179565b6001600160a01b039092166020928302919091019091015262006a5b81620091e5565b90506200696c565b50604051634484077560e01b815261200590634484077590620028a990859088906004016200918f565b606080600062006a9e603f62008067565b90508085101562006c6257831562006ab7578362006ab9565b805b935060008462006aca878462009149565b1162006ae25762006adc868362009149565b62006ae4565b845b9050806001600160401b0381111562006b015762006b01620088f6565b60405190808252806020026020018201604052801562006b2b578160200160208202803683370190505b509350806001600160401b0381111562006b495762006b49620088f6565b60405190808252806020026020018201604052801562006b73578160200160208202803683370190505b50925060005b8181101562006c5f5762006b9262003a648289620090de565b85828151811062006ba75762006ba762009179565b60200260200101906001600160a01b031690816001600160a01b0316815250506041600086838151811062006be05762006be062009179565b60200260200101516001600160a01b03166001600160a01b0316815260200190815260200160002060020160009054906101000a90046001600160a01b031684828151811062006c345762006c3462009179565b6001600160a01b039092166020928302919091019091015262006c5781620091e5565b905062006b79565b50505b9250925092565b336110011462006c9157604051630f22c43960e41b8152611001600482015260240162001196565b60005462010000900460ff161562006cbc57604051631785c68160e01b815260040160405180910390fd5b6001600160a01b038082166000908152604360205260409020541662006ce4603f8262007d5e565b62006d025760405163056e881160e01b815260040160405180910390fd5b6001600160a01b03811660009081526041602052604081209062006d2a6201518042620090bb565b604a546000828152604b60205260409020549192501162006d5e5760405163bd52fcdb60e01b815260040160405180910390fd5b6000818152604b6020526040812080546001929062006d7f908490620090de565b90915550506001600160a01b0384166000908152604460205260409020541580159062006dd457506001600160a01b038416600090815260446020526040902054429062006dd2906201518090620090de565b105b1562006df3576040516330abb81d60e21b815260040160405180910390fd5b60008062006e0385600062007d81565b915091508162006e2657604051631b919bb160e11b815260040160405180910390fd5b6002840154603c5460405163045bc4d160e41b815260048101919091526000916001600160a01b0316906345bc4d10906024016020604051808303816000875af115801562006e79573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062006e9f9190620090f4565b905062006ead858362007e0b565b856001600160a01b03167f6e9a2ee7aee95665e3a774a212eb11441b217e3e4656ab9563793094689aabb28383600060405162006eed939291906200910e565b60405180910390a26002850154604051633041949b60e01b815261200591633041949b916200568a916001600160a01b0316908a906004016200907b565b6001600160a01b038082166000908152604160209081526040808320815161018081018352815486168152600182015486169381019390935260028101549094169082015260038301546060820152600483018054929384938493849390929160808401919062006f9c9062009045565b80601f016020809104026020016040519081016040528092919081815260200182805462006fca9062009045565b80156200701b5780601f1062006fef576101008083540402835291602001916200701b565b820191906000526020600020905b81548152906001019060200180831162006ffd57829003601f168201915b5050505050815260200160058201604051806080016040529081600082018054620070469062009045565b80601f0160208091040260200160405190810160405280929190818152602001828054620070749062009045565b8015620070c55780601f106200709957610100808354040283529160200191620070c5565b820191906000526020600020905b815481529060010190602001808311620070a757829003601f168201915b50505050508152602001600182018054620070e09062009045565b80601f01602080910402602001604051908101604052809291908181526020018280546200710e9062009045565b80156200715f5780601f1062007133576101008083540402835291602001916200715f565b820191906000526020600020905b8154815290600101906020018083116200714157829003601f168201915b505050505081526020016002820180546200717a9062009045565b80601f0160208091040260200160405190810160405280929190818152602001828054620071a89062009045565b8015620071f95780601f10620071cd57610100808354040283529160200191620071f9565b820191906000526020600020905b815481529060010190602001808311620071db57829003601f168201915b50505050508152602001600382018054620072149062009045565b80601f0160208091040260200160405190810160405280929190818152602001828054620072429062009045565b8015620072935780601f10620072675761010080835404028352916020019162007293565b820191906000526020600020905b8154815290600101906020018083116200727557829003601f168201915b505050919092525050508152604080516060808201835260098501546001600160401b038082168452600160401b82048116602080860191909152600160801b9092041683850152840191909152600a84015460ff16151582840152600b84015490830152600c8301546080830152600d8301546001600160a01b031660a0830152805161026081019182905260c09092019190600e84019060139082845b815481526020019060010190808311620073325750505091909252505050606081015160e0820151610100909201519097919650945092505050565b60005462010000900460ff16156200739957604051631785c68160e01b815260040160405180910390fd5b3360009081526001602052604090205460ff1615620073cb5760405163b1d02c3d60e01b815260040160405180910390fd5b620073d562007f00565b620073e2603f8262007d5e565b620074005760405163056e881160e01b815260040160405180910390fd5b60006200740c62007f00565b6001600160a01b0381166000908152604160205260409020600c8101549192509042906200743f906201518090620090de565b11156200745f57604051631f92cdbd60e11b815260040160405180910390fd5b600581018054620074709062009045565b80601f01602080910402602001604051908101604052809291908181526020018280546200749e9062009045565b8015620074ef5780601f10620074c357610100808354040283529160200191620074ef565b820191906000526020600020905b815481529060010190602001808311620074d157829003601f168201915b50505082875250859160058401915081906200750c9082620095c6565b5060208201516001820190620075239082620095c6565b50604082015160028201906200753a9082620095c6565b5060608201516003820190620075519082620095c6565b505042600c830155506040516001600160a01b038316907f85d6366b336ade7f106987ec7a8eac1e8799e508aeab045a39d2f63e0dc969d990600090a250505050565b60005462010000900460ff1615620075bf57604051631785c68160e01b815260040160405180910390fd5b3360009081526001602052604090205460ff1615620075f15760405163b1d02c3d60e01b815260040160405180910390fd5b82811462007612576040516341abc80160e01b815260040160405180910390fd5b60005b8381101562007683576200767085858381811062007637576200763762009179565b90506020020160208101906200764e919062008787565b84848481811062007663576200766362009179565b9050602002013562008503565b6200767b81620091e5565b905062007615565b5050505050565b6001600160a01b0380821660009081526041602090815260408083208151610180810183528154861681526001820154861693810193909352600281015490941690820152600383015460608201526004830180549293849390916080840191620076f59062009045565b80601f0160208091040260200160405190810160405280929190818152602001828054620077239062009045565b8015620077745780601f10620077485761010080835404028352916020019162007774565b820191906000526020600020905b8154815290600101906020018083116200775657829003601f168201915b50505050508152602001600582016040518060800160405290816000820180546200779f9062009045565b80601f0160208091040260200160405190810160405280929190818152602001828054620077cd9062009045565b80156200781e5780601f10620077f2576101008083540402835291602001916200781e565b820191906000526020600020905b8154815290600101906020018083116200780057829003601f168201915b50505050508152602001600182018054620078399062009045565b80601f0160208091040260200160405190810160405280929190818152602001828054620078679062009045565b8015620078b85780601f106200788c57610100808354040283529160200191620078b8565b820191906000526020600020905b8154815290600101906020018083116200789a57829003601f168201915b50505050508152602001600282018054620078d39062009045565b80601f0160208091040260200160405190810160405280929190818152602001828054620079019062009045565b8015620079525780601f10620079265761010080835404028352916020019162007952565b820191906000526020600020905b8154815290600101906020018083116200793457829003601f168201915b505050505081526020016003820180546200796d9062009045565b80601f01602080910402602001604051908101604052809291908181526020018280546200799b9062009045565b8015620079ec5780601f10620079c057610100808354040283529160200191620079ec565b820191906000526020600020905b815481529060010190602001808311620079ce57829003601f168201915b505050919092525050508152604080516060808201835260098501546001600160401b038082168452600160401b82048116602080860191909152600160801b9092041683850152840191909152600a84015460ff16151582840152600b84015490830152600c8301546080830152600d8301546001600160a01b031660a0830152805161026081019182905260c09092019190600e84019060139082845b81548152602001906001019080831162007a8b5750505091909252505050604001519392505050565b600062007ac3603f8462007d5e565b62007ae15760405163056e881160e01b815260040160405180910390fd5b6001600160a01b038381166000908152604160205260409081902060020154905163aa1966cd60e01b81526004810185905291169063aa1966cd9060240162004fcc565b60005462010000900460ff161562007b5057604051631785c68160e01b815260040160405180910390fd5b3360009081526001602052604090205460ff161562007b825760405163b1d02c3d60e01b815260040160405180910390fd5b62007b8c62007f00565b62007b99603f8262007d5e565b62007bb75760405163056e881160e01b815260040160405180910390fd5b600062007bc362007f00565b905062007bd4818787878762008222565b62007bf257604051631647e3cb60e11b815260040160405180910390fd5b60006001600160a01b03166045878760405162007c1192919062009095565b908152604051908190036020019020546001600160a01b03161462007c49576040516311fdb94760e01b815260040160405180910390fd5b6001600160a01b0381166000908152604160205260409020600c810154429062007c78906201518090620090de565b111562007c9857604051631f92cdbd60e11b815260040160405180910390fd5b4260468260040160405162007cae91906200968e565b908152604051908190036020019020556004810162007ccf878983620092a9565b5042600c820155604051829060459062007ced908a908a9062009095565b90815260405190819003602001812080546001600160a01b039384166001600160a01b0319909116179055908316907f783156582145bd0ff7924fae6953ba054cf1233eb60739a200ddb10de068ff0d9062007d4d908a908a906200957a565b60405180910390a250505050505050565b6001600160a01b0381166000908152600183016020526040812054151562005010565b6000806000848460405160200162007d9b9291906200970c565b60408051601f1981840301815291815281516020928301206000818152604c9093529120549091504281111562007ddb5760008093509350505062007e04565b603e5462007dea9042620090de565b6000928352604c6020526040909220829055506001925090505b9250929050565b6000600162007e1b603f62008067565b62007e27919062009149565b604954108015915062007e735760018301546040516001600160a01b03909116907f2afdc18061ac21cff7d9f11527ab9c8dec6fabd4edf6f894ed634bebd6a20d4590600090a2505050565b82600b015482111562007e8857600b83018290555b600a83015460ff1662007efb57600a8301805460ff191660019081179091556049805460009062007ebb908490620090de565b909155505060018301546040516001600160a01b03909116907f4905ac32602da3fb8b4b7b00c285e5fc4c6c2308cc908b4a1e4e9625a29c90a390600090a25b505050565b336000908152604d60205260408120546001600160a01b03161562007f3c5750336000908152604d60205260409020546001600160a01b031690565b503390565b6001600160a01b0381166000908152604160205260409020600a81015460ff161562007f6b575050565b6036546002820154604051630913db4760e01b81526001600160a01b03858116600483015290911690630913db4790602401602060405180830381865afa15801562007fbb573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062007fe19190620090f4565b101562005a1d576200800381603d544262007ffd9190620090de565b62007e0b565b80546040516335409f7f60e01b81526001600160a01b039091166004820152611000906335409f7f90602401600060405180830381600087803b1580156200804a57600080fd5b505af11580156200805f573d6000803e3d6000fd5b505050505050565b600062005013825490565b6000620050108383620086dd565b60008082905060038151108062008098575060098151115b15620080a75750600092915050565b604181600081518110620080bf57620080bf62009179565b016020015160f81c1080620080f15750605a81600081518110620080e757620080e762009179565b016020015160f81c115b15620081005750600092915050565b60015b81518110156200821857603082828151811062008124576200812462009179565b016020015160f81c108062008155575060398282815181106200814b576200814b62009179565b016020015160f81c115b8015620081a55750604182828151811062008174576200817462009179565b016020015160f81c1080620081a55750605a8282815181106200819b576200819b62009179565b016020015160f81c115b8015620081f557506061828281518110620081c457620081c462009179565b016020015160f81c1080620081f55750607a828281518110620081eb57620081eb62009179565b016020015160f81c115b1562008205575060009392505050565b6200821081620091e5565b905062008103565b5060019392505050565b600060308414158062008236575060608214155b15620082455750600062008349565b60008686864660405160200162008260949392919062009756565b60408051808303601f1901815282825280516020918201208184528383019092529092506000919060208201818036833701905050905081602082015260008186868a8a604051602001620082ba95949392919062009783565b60408051808303601f190181526001808452838301909252925060009190602082018180368337019050509050815160016020830182602086016066600019fa6200830457600080fd5b506000816000815181106200831d576200831d62009179565b016020015160f81c9050600181146200833f5760009550505050505062008349565b6001955050505050505b95945050505050565b60008061200361dead60405162008369906200875c565b6001600160a01b03928316815291166020820152606060408201819052600090820152608001604051809103906000f080158015620083ac573d6000803e3d6000fd5b509050806001600160a01b031663f399e22e3486866040518463ffffffff1660e01b8152600401620083e0929190620097bb565b6000604051808303818588803b158015620083fa57600080fd5b505af11580156200840f573d6000803e3d6000fd5b50506040516001600160a01b038086169450881692507fd481492e4e93bb36b4c12a5af93f03be3bf04b454dfbc35dd2663fa26f44d5b09150600090a39392505050565b600062005010836001600160a01b0384166200870a565b600054610100900460ff16620084d75760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b606482015260840162001196565b600080546001600160a01b039092166301000000026301000000600160b81b0319909216919091179055565b8162008511603f8262007d5e565b6200852f5760405163056e881160e01b815260040160405180910390fd5b6001600160a01b03838116600090815260416020526040808220600201549051635569f64b60e11b8152336004820152602481018690529192169063aad3ec96906044016020604051808303816000875af115801562008593573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620085b99190620090f4565b9050336001600160a01b0316846001600160a01b03167ff7a40077ff7a04c7e61f6f26fb13774259ddf1b6bce9ecf26a8276cdd3992683836040516200860191815260200190565b60405180910390a350505050565b600081604051602001620086249190620097e1565b60405160208183030381529060405280519060200120836040516020016200864d9190620097e1565b6040516020818303038152906040528051906020012014905092915050565b015190565b600080546040516001600160a01b0380851693630100000090930416917f44fc1b38a4abaa91ebd1b628a5b259a698f86238c8217d68f516e87769c60c0b91a3600080546001600160a01b039092166301000000026301000000600160b81b0319909216919091179055565b6000826000018281548110620086f757620086f762009179565b9060005260206000200154905092915050565b6000818152600183016020526040812054620087535750815460018181018455600084815260208082209093018490558454848252828601909352604090209190915562005013565b50600062005013565b610e96806200980083390190565b80356001600160a01b03811681146200878257600080fd5b919050565b6000602082840312156200879a57600080fd5b62005010826200876a565b60008083601f840112620087b857600080fd5b5081356001600160401b03811115620087d057600080fd5b60208301915083602082850101111562007e0457600080fd5b60008060208385031215620087fd57600080fd5b82356001600160401b038111156200881457600080fd5b6200882285828601620087a5565b90969095509350505050565b6000806000604084860312156200884457600080fd5b833560ff811681146200885657600080fd5b925060208401356001600160401b038111156200887257600080fd5b6200888086828701620087a5565b9497909650939450505050565b60005b83811015620088aa57818101518382015260200162008890565b50506000910152565b60008151808452620088cd8160208601602086016200888d565b601f01601f19169290920160200192915050565b602081526000620050106020830184620088b3565b634e487b7160e01b600052604160045260246000fd5b604051608081016001600160401b0381118282101715620089315762008931620088f6565b60405290565b60006001600160401b0380841115620089545762008954620088f6565b604051601f8501601f19908116603f011681019082821181831017156200897f576200897f620088f6565b816040528093508581528686860111156200899957600080fd5b858560208301376000602087830101525050509392505050565b600060208284031215620089c657600080fd5b81356001600160401b03811115620089dd57600080fd5b8201601f81018413620089ef57600080fd5b62008a008482356020840162008937565b949350505050565b6000806040838503121562008a1c57600080fd5b62008a27836200876a565b946020939093013593505050565b803580151581146200878257600080fd5b6000806000806080858703121562008a5d57600080fd5b62008a68856200876a565b935062008a78602086016200876a565b92506040850135915062008a8f6060860162008a35565b905092959194509250565b6001600160401b0381168114620017c157600080fd5b60006020828403121562008ac357600080fd5b813562008ad08162008a9a565b9392505050565b6000806040838503121562008aeb57600080fd5b50508035926020909101359150565b600081518084526020808501945080840160005b8381101562008b355781516001600160a01b03168752958201959082019060010162008b0e565b509495945050505050565b60808152600062008b55608083018762008afa565b82810360208481019190915286518083528782019282019060005b8181101562008b8e5784518352938301939183019160010162008b70565b5050848103604086015286518082528282019350600581901b8201830183890160005b8381101562008be357601f1985840301875262008bd0838351620088b3565b9686019692509085019060010162008bb1565b5050809550505050505082606083015295945050505050565b600080600080600080600087890360e081121562008c1957600080fd5b62008c24896200876a565b975060208901356001600160401b038082111562008c4157600080fd5b62008c4f8c838d01620087a5565b909950975060408b013591508082111562008c6957600080fd5b62008c778c838d01620087a5565b90975095508591506060605f198401121562008c9257600080fd5b60608b01945060c08b013592508083111562008cad57600080fd5b505088016080818b03121562008cc257600080fd5b8091505092959891949750929550565b6000806040838503121562008ce657600080fd5b62008cf1836200876a565b915062008d016020840162008a35565b90509250929050565b60208152600082516080602084015262008d2860a0840182620088b3565b90506020840151601f198085840301604086015262008d488383620088b3565b9250604086015191508085840301606086015262008d678383620088b3565b9250606086015191508085840301608086015250620083498282620088b3565b6000806000806040858703121562008d9e57600080fd5b84356001600160401b038082111562008db657600080fd5b62008dc488838901620087a5565b9096509450602087013591508082111562008dde57600080fd5b5062008ded87828801620087a5565b95989497509550505050565b60008083601f84011262008e0c57600080fd5b5081356001600160401b0381111562008e2457600080fd5b6020830191508360208260051b850101111562007e0457600080fd5b60008060006040848603121562008e5657600080fd5b83356001600160401b0381111562008e6d57600080fd5b62008e7b8682870162008df9565b909450925062008e909050602085016200876a565b90509250925092565b60608152600062008eae606083018662008afa565b828103602084015262008ec2818662008afa565b915050826040830152949350505050565b600082601f83011262008ee557600080fd5b620050108383356020850162008937565b60006020828403121562008f0957600080fd5b81356001600160401b038082111562008f2157600080fd5b908301906080828603121562008f3657600080fd5b62008f406200890c565b82358281111562008f5057600080fd5b62008f5e8782860162008ed3565b82525060208301358281111562008f7457600080fd5b62008f828782860162008ed3565b60208301525060408301358281111562008f9b57600080fd5b62008fa98782860162008ed3565b60408301525060608301358281111562008fc257600080fd5b62008fd08782860162008ed3565b60608301525095945050505050565b6000806000806040858703121562008ff657600080fd5b84356001600160401b03808211156200900e57600080fd5b6200901c8883890162008df9565b909650945060208701359150808211156200903657600080fd5b5062008ded8782880162008df9565b600181811c908216806200905a57607f821691505b60208210810362001bd757634e487b7160e01b600052602260045260246000fd5b6001600160a01b0392831681529116602082015260400190565b8183823760009101908152919050565b634e487b7160e01b600052601160045260246000fd5b600082620090d957634e487b7160e01b600052601260045260246000fd5b500490565b80820180821115620050135762005013620090a5565b6000602082840312156200910757600080fd5b5051919050565b8381526020810183905260608101600383106200913b57634e487b7160e01b600052602160045260246000fd5b826040830152949350505050565b81810381811115620050135762005013620090a5565b8082028115828204841417620050135762005013620090a5565b634e487b7160e01b600052603260045260246000fd5b604081526000620091a4604083018562008afa565b905060018060a01b03831660208301529392505050565b6001600160401b03828116828216039080821115620091de57620091de620090a5565b5092915050565b600060018201620091fa57620091fa620090a5565b5060010190565b6000808335601e198436030181126200921957600080fd5b8301803591506001600160401b038211156200923457600080fd5b60200191503681900382131562007e0457600080fd5b601f82111562007efb57600081815260208120601f850160051c81016020861015620092735750805b601f850160051c820191505b818110156200805f578281556001016200927f565b600019600383901b1c191660019190911b1790565b6001600160401b03831115620092c357620092c3620088f6565b620092db83620092d4835462009045565b836200924a565b6000601f8411600181146200930e5760008515620092f95750838201355b62009305868262009294565b84555062007683565b600083815260209020601f19861690835b828110156200934157868501358255602094850194600190920191016200931f565b50868210156200935f5760001960f88860031b161c19848701351681555b505060018560011b0183555050505050565b6200937d828362009201565b6001600160401b03811115620093975762009397620088f6565b620093af81620093a8855462009045565b856200924a565b6000601f821160018114620093e25760008315620093cd5750838201355b620093d9848262009294565b8655506200943f565b600085815260209020601f19841690835b82811015620094155786850135825560209485019460019092019101620093f3565b5084821015620094335760001960f88660031b161c19848701351681555b505060018360011b0185555b5050505062009452602083018362009201565b62009462818360018601620092a9565b505062009473604083018362009201565b62009483818360028601620092a9565b505062009494606083018362009201565b620094a4818360038601620092a9565b50505050565b8135620094b78162008a9a565b6001600160401b03811690508154816001600160401b031982161783556020840135620094e48162008a9a565b6fffffffffffffffff0000000000000000604091821b166fffffffffffffffffffffffffffffffff19831684178117855590850135620095248162008a9a565b6001600160c01b0319929092169092179190911760809190911b67ffffffffffffffff60801b1617905550565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b60208152600062008a0060208301848662009551565b604081526000620095a660408301868862009551565b8281036020840152620095bb81858762009551565b979650505050505050565b81516001600160401b03811115620095e257620095e2620088f6565b620095fa81620095f3845462009045565b846200924a565b602080601f8311600181146200962e5760008415620096195750858301515b62009625858262009294565b8655506200805f565b600085815260208120601f198616915b828110156200965f578886015182559484019460019091019084016200963e565b50858210156200967e5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b60008083546200969e8162009045565b60018281168015620096b95760018114620096cf5762009700565b60ff198416875282151583028701945062009700565b8760005260208060002060005b85811015620096f75781548a820152908401908201620096dc565b50505082870194505b50929695505050505050565b6bffffffffffffffffffffffff198360601b1681526000600383106200974257634e487b7160e01b600052602160045260246000fd5b5060f89190911b6014820152601501919050565b6bffffffffffffffffffffffff198560601b16815282846014830137601492019182015260340192915050565b6000865162009797818460208b016200888d565b82018587823760009086019081528385823760009301928352509095945050505050565b6001600160a01b038316815260406020820181905260009062008a0090830184620088b3565b60008251620097f58184602087016200888d565b919091019291505056fe608060405260405162000e9638038062000e96833981016040819052620000269162000497565b828162000036828260006200004d565b50620000449050826200008a565b505050620005ca565b6200005883620000e5565b600082511180620000665750805b1562000085576200008383836200012760201b620001691760201c565b505b505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f620000b562000156565b604080516001600160a01b03928316815291841660208301520160405180910390a1620000e2816200018f565b50565b620000f08162000244565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b60606200014f838360405180606001604052806027815260200162000e6f60279139620002f8565b9392505050565b60006200018060008051602062000e4f83398151915260001b6200037760201b620001951760201c565b546001600160a01b0316919050565b6001600160a01b038116620001fa5760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b60648201526084015b60405180910390fd5b806200022360008051602062000e4f83398151915260001b6200037760201b620001951760201c565b80546001600160a01b0319166001600160a01b039290921691909117905550565b6200025a816200037a60201b620001981760201c565b620002be5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b6064820152608401620001f1565b80620002237f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc60001b6200037760201b620001951760201c565b6060600080856001600160a01b03168560405162000317919062000577565b600060405180830381855af49150503d806000811462000354576040519150601f19603f3d011682016040523d82523d6000602084013e62000359565b606091505b5090925090506200036d8683838762000389565b9695505050505050565b90565b6001600160a01b03163b151590565b60608315620003fd578251600003620003f5576001600160a01b0385163b620003f55760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401620001f1565b508162000409565b62000409838362000411565b949350505050565b815115620004225781518083602001fd5b8060405162461bcd60e51b8152600401620001f1919062000595565b80516001600160a01b03811681146200045657600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b60005b838110156200048e57818101518382015260200162000474565b50506000910152565b600080600060608486031215620004ad57600080fd5b620004b8846200043e565b9250620004c8602085016200043e565b60408501519092506001600160401b0380821115620004e657600080fd5b818601915086601f830112620004fb57600080fd5b8151818111156200051057620005106200045b565b604051601f8201601f19908116603f011681019083821181831017156200053b576200053b6200045b565b816040528281528960208487010111156200055557600080fd5b6200056883602083016020880162000471565b80955050505050509250925092565b600082516200058b81846020870162000471565b9190910192915050565b6020815260008251806020840152620005b681604085016020870162000471565b601f01601f19169190910160400192915050565b61087580620005da6000396000f3fe60806040523661001357610011610017565b005b6100115b61001f6101a7565b6001600160a01b0316330361015f5760606001600160e01b0319600035166364d3180d60e11b810161005a576100536101da565b9150610157565b63587086bd60e11b6001600160e01b031982160161007a57610053610231565b63070d7c6960e41b6001600160e01b031982160161009a57610053610277565b621eb96f60e61b6001600160e01b03198216016100b9576100536102a8565b63a39f25e560e01b6001600160e01b03198216016100d9576100536102e8565b60405162461bcd60e51b815260206004820152604260248201527f5472616e73706172656e745570677261646561626c6550726f78793a2061646d60448201527f696e2063616e6e6f742066616c6c6261636b20746f2070726f78792074617267606482015261195d60f21b608482015260a4015b60405180910390fd5b815160208301f35b6101676102fc565b565b606061018e83836040518060600160405280602781526020016108426027913961030c565b9392505050565b90565b6001600160a01b03163b151590565b60007fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b546001600160a01b0316919050565b60606101e4610384565b60006101f33660048184610695565b81019061020091906106db565b905061021d8160405180602001604052806000815250600061038f565b505060408051602081019091526000815290565b60606000806102433660048184610695565b810190610250919061070c565b915091506102608282600161038f565b604051806020016040528060008152509250505090565b6060610281610384565b60006102903660048184610695565b81019061029d91906106db565b905061021d816103bb565b60606102b2610384565b60006102bc6101a7565b604080516001600160a01b03831660208201529192500160405160208183030381529060405291505090565b60606102f2610384565b60006102bc610412565b610167610307610412565b610421565b6060600080856001600160a01b03168560405161032991906107f2565b600060405180830381855af49150503d8060008114610364576040519150601f19603f3d011682016040523d82523d6000602084013e610369565b606091505b509150915061037a86838387610445565b9695505050505050565b341561016757600080fd5b610398836104c6565b6000825111806103a55750805b156103b6576103b48383610169565b505b505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f6103e46101a7565b604080516001600160a01b03928316815291841660208301520160405180910390a161040f81610506565b50565b600061041c6105af565b905090565b3660008037600080366000845af43d6000803e808015610440573d6000f35b3d6000fd5b606083156104b45782516000036104ad576001600160a01b0385163b6104ad5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015260640161014e565b50816104be565b6104be83836105d7565b949350505050565b6104cf81610601565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b6001600160a01b03811661056b5760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b606482015260840161014e565b807fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b80546001600160a01b0319166001600160a01b039290921691909117905550565b60007f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc6101cb565b8151156105e75781518083602001fd5b8060405162461bcd60e51b815260040161014e919061080e565b6001600160a01b0381163b61066e5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b606482015260840161014e565b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc61058e565b600080858511156106a557600080fd5b838611156106b257600080fd5b5050820193919092039150565b80356001600160a01b03811681146106d657600080fd5b919050565b6000602082840312156106ed57600080fd5b61018e826106bf565b634e487b7160e01b600052604160045260246000fd5b6000806040838503121561071f57600080fd5b610728836106bf565b9150602083013567ffffffffffffffff8082111561074557600080fd5b818501915085601f83011261075957600080fd5b81358181111561076b5761076b6106f6565b604051601f8201601f19908116603f01168101908382118183101715610793576107936106f6565b816040528281528860208487010111156107ac57600080fd5b8260208601602083013760006020848301015280955050505050509250929050565b60005b838110156107e95781810151838201526020016107d1565b50506000910152565b600082516108048184602087016107ce565b9190910192915050565b602081526000825180602084015261082d8160408501602087016107ce565b601f01601f1916919091016040019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a164736f6c6343000811000ab53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a164736f6c6343000811000a \ No newline at end of file +608060405260043610620003ff5760003560e01c806386d54506116200020f578063cbb04d9d1162000123578063e8f67c3b11620000ad578063f80a34021162000078578063f80a34021462000ca3578063fb50b31f1462000cc8578063fc0c5ff11462000ced578063ff69ab611462000d0557600080fd5b8063e8f67c3b1462000c1f578063e992aaf51462000c37578063efdbf0e11462000c4f578063f1f74d841462000c8b57600080fd5b8063d8ca511f11620000ee578063d8ca511f1462000ba3578063daacdb661462000bbb578063dbda7fb31462000bd3578063dd42a1dd1462000bf857600080fd5b8063cbb04d9d1462000aff578063d115a2061462000b40578063d6ca429d1462000b59578063d7c2dfc81462000b7e57600080fd5b8063b187bd2611620001a5578063bfff04751162000170578063bfff04751462000a9d578063c38fbec81462000ac2578063c473318f1462000ae7578063c8509d8114620008bb57600080fd5b8063b187bd261462000a0a578063baa7199e1462000a2a578063bdceadf31462000a4f578063bff02e201462000a6757600080fd5b8063982ef0a711620001e6578063982ef0a71462000975578063a43569b3146200098c578063aad3ec9614620009c0578063ac43175114620009e557600080fd5b806386d5450614620008f85780638a4d3fa814620009325780638cd22b22146200095057600080fd5b806349f41a421162000313578063663706d3116200029d57806376e7d6d6116200026857806376e7d6d6146200088b5780638129fc1c14620008a3578063831d65d114620008bb5780638456cb5914620008e057600080fd5b8063663706d314620007b85780636ec01b2714620007e95780636f8e2fa4146200084157806375cc7d89146200086657600080fd5b80635949187111620002de5780635949187114620007205780635e7cc1c9146200074557806363a036b5146200076a57806364028fbd14620007a157600080fd5b806349f41a4214620006995780634a49ac4c14620006be5780634d99dd1614620006e35780634e6fd6c4146200070857600080fd5b80631fa8882b1162000395578063417c73a71162000360578063417c73a714620005e5578063449ecfe6146200060a57806345211bfd146200062f5780634838d165146200065457600080fd5b80631fa8882b14620005555780632b727c86146200056e5780632e8e8c7114620005935780633840998814620005cd57600080fd5b8063092193ab11620003d6578063092193ab14620004a05780630e9fbf5114620004b75780631182b87514620004dc57806317b4f353146200051057600080fd5b8063046f7da2146200041f578063059ddd2214620004375780630661806e146200047957600080fd5b366200041a5760345460ff166001146200041857600080fd5b005b600080fd5b3480156200042c57600080fd5b506200041862000d1d565b3480156200044457600080fd5b506200045c6200045636600462008839565b62000daf565b6040516001600160a01b0390911681526020015b60405180910390f35b3480156200048657600080fd5b506200049160365481565b60405190815260200162000470565b62000418620004b136600462008839565b620011d7565b348015620004c457600080fd5b5062000418620004d63660046200889b565b62001828565b348015620004e957600080fd5b5062000501620004fb366004620088e0565b62001b54565b60405162000470919062008993565b3480156200051d57600080fd5b506200045c6200052f36600462008a65565b80516020818301810180516045825292820191909301209152546001600160a01b031681565b3480156200056257600080fd5b50620004916201518081565b3480156200057b57600080fd5b506200045c6200058d36600462008839565b62001bec565b348015620005a057600080fd5b506200045c620005b236600462008839565b604d602052600090815260409020546001600160a01b031681565b348015620005da57600080fd5b506200049160375481565b348015620005f257600080fd5b50620004186200060436600462008839565b62001c41565b3480156200061757600080fd5b50620004186200062936600462008839565b62001cc3565b3480156200063c57600080fd5b50620004186200064e36600462008839565b62001ea8565b3480156200066157600080fd5b50620006886200067336600462008839565b60016020526000908152604090205460ff1681565b604051901515815260200162000470565b348015620006a657600080fd5b5062000418620006b836600462008839565b62002081565b348015620006cb57600080fd5b5062000418620006dd36600462008839565b6200229d565b348015620006f057600080fd5b50620004186200070236600462008aba565b62002319565b3480156200071557600080fd5b506200045c61dead81565b3480156200072d57600080fd5b50620004186200073f36600462008af8565b62002949565b3480156200075257600080fd5b50620004186200076436600462008b62565b62003742565b3480156200077757600080fd5b506200078f6200078936600462008b89565b6200396c565b60405162000470949392919062008bf2565b62000418620007b236600462008cae565b62004011565b348015620007c557600080fd5b5062000491620007d736600462008839565b60446020526000908152604090205481565b348015620007f657600080fd5b506200080e6200080836600462008839565b62004660565b6040805182516001600160401b039081168252602080850151821690830152928201519092169082015260600162000470565b3480156200084e57600080fd5b50620005016200086036600462008839565b62004705565b3480156200087357600080fd5b50620004186200088536600462008839565b62004b31565b3480156200089857600080fd5b5062000491603d5481565b348015620008b057600080fd5b506200041862004d03565b348015620008c857600080fd5b5062000418620008da366004620088e0565b62004ece565b348015620008ed57600080fd5b506200041862004f2c565b3480156200090557600080fd5b506200045c6200091736600462008839565b6043602052600090815260409020546001600160a01b031681565b3480156200093f57600080fd5b5062000491670de0b6b3a764000081565b3480156200095d57600080fd5b50620004916200096f36600462008aba565b62004fc4565b620004186200098636600462008d84565b6200507d565b3480156200099957600080fd5b50620009b1620009ab36600462008839565b6200572b565b60405162000470919062008dbc565b348015620009cd57600080fd5b5062000418620009df36600462008aba565b62005a18565b348015620009f257600080fd5b506200041862000a0436600462008e39565b62005a85565b34801562000a1757600080fd5b5060005462010000900460ff1662000688565b34801562000a3757600080fd5b506200041862000a4936600462008ef2565b62006924565b34801562000a5c57600080fd5b5062000491603c5481565b34801562000a7457600080fd5b5062000a8c62000a8636600462008b89565b62006af1565b604051620004709392919062008f4b565b34801562000aaa57600080fd5b506200049162000abc36600462008839565b62006ccd565b34801562000acf57600080fd5b506200041862000ae136600462008839565b62006d1b565b34801562000af457600080fd5b506200049160385481565b34801562000b0c57600080fd5b5062000b2462000b1e36600462008839565b62006fdd565b6040805193845291151560208401529082015260600162000470565b34801562000b4d57600080fd5b5062000491620186a081565b34801562000b6657600080fd5b506200041862000b7836600462008fa8565b62007420565b34801562000b8b57600080fd5b506200041862000b9d36600462009091565b62007646565b34801562000bb057600080fd5b5062000491603b5481565b34801562000bc857600080fd5b506200049160495481565b34801562000be057600080fd5b506200045c62000bf236600462008839565b6200773c565b34801562000c0557600080fd5b50600054630100000090046001600160a01b03166200045c565b34801562000c2c57600080fd5b506200049160355481565b34801562000c4457600080fd5b5062000491603a5481565b34801562000c5c57600080fd5b506200049162000c6e36600462008a65565b805160208183018101805160468252928201919093012091525481565b34801562000c9857600080fd5b5062000491603e5481565b34801562000cb057600080fd5b506200049162000cc236600462008aba565b62007b66565b34801562000cd557600080fd5b506200041862000ce736600462008e39565b62007bd7565b34801562000cfa57600080fd5b506200049160395481565b34801562000d1257600080fd5b5062000491604a5481565b600054630100000090046001600160a01b0316331462000d50576040516306fbb1e360e01b815260040160405180910390fd5b60005462010000900460ff1662000d7a57604051636cd6020160e01b815260040160405180910390fd5b6000805462ff0000191681556040517f62451d457bc659158be6e6247f56ec1df424a5c7597f71c20c2bc44e0965c8f99190a1565b6001600160a01b038082166000908152604160209081526040808320815161018081018352815486168152600182015486169381019390935260028101549094169082015260038301546060820152600483018054929384939091608084019162000e1a90620090f7565b80601f016020809104026020016040519081016040528092919081815260200182805462000e4890620090f7565b801562000e995780601f1062000e6d5761010080835404028352916020019162000e99565b820191906000526020600020905b81548152906001019060200180831162000e7b57829003601f168201915b505050505081526020016005820160405180608001604052908160008201805462000ec490620090f7565b80601f016020809104026020016040519081016040528092919081815260200182805462000ef290620090f7565b801562000f435780601f1062000f175761010080835404028352916020019162000f43565b820191906000526020600020905b81548152906001019060200180831162000f2557829003601f168201915b5050505050815260200160018201805462000f5e90620090f7565b80601f016020809104026020016040519081016040528092919081815260200182805462000f8c90620090f7565b801562000fdd5780601f1062000fb15761010080835404028352916020019162000fdd565b820191906000526020600020905b81548152906001019060200180831162000fbf57829003601f168201915b5050505050815260200160028201805462000ff890620090f7565b80601f01602080910402602001604051908101604052809291908181526020018280546200102690620090f7565b8015620010775780601f106200104b5761010080835404028352916020019162001077565b820191906000526020600020905b8154815290600101906020018083116200105957829003601f168201915b505050505081526020016003820180546200109290620090f7565b80601f0160208091040260200160405190810160405280929190818152602001828054620010c090620090f7565b8015620011115780601f10620010e55761010080835404028352916020019162001111565b820191906000526020600020905b815481529060010190602001808311620010f357829003601f168201915b505050919092525050508152604080516060808201835260098501546001600160401b038082168452600160401b82048116602080860191909152600160801b9092041683850152840191909152600a84015460ff16151582840152600b84015490830152600c8301546080830152600d8301546001600160a01b031660a0830152805161026081019182905260c09092019190600e84019060139082845b815481526020019060010190808311620011b0575050509190925250509051949350505050565b33611000146200120357604051630f22c43960e41b815261100060048201526024015b60405180910390fd5b6001600160a01b038082166000908152604360209081526040808320548416808452604183528184208251610180810184528154871681526001820154871694810194909452600281015490951691830191909152600384015460608301526004840180549194916080840191906200127c90620090f7565b80601f0160208091040260200160405190810160405280929190818152602001828054620012aa90620090f7565b8015620012fb5780601f10620012cf57610100808354040283529160200191620012fb565b820191906000526020600020905b815481529060010190602001808311620012dd57829003601f168201915b50505050508152602001600582016040518060800160405290816000820180546200132690620090f7565b80601f01602080910402602001604051908101604052809291908181526020018280546200135490620090f7565b8015620013a55780601f106200137957610100808354040283529160200191620013a5565b820191906000526020600020905b8154815290600101906020018083116200138757829003601f168201915b50505050508152602001600182018054620013c090620090f7565b80601f0160208091040260200160405190810160405280929190818152602001828054620013ee90620090f7565b80156200143f5780601f1062001413576101008083540402835291602001916200143f565b820191906000526020600020905b8154815290600101906020018083116200142157829003601f168201915b505050505081526020016002820180546200145a90620090f7565b80601f01602080910402602001604051908101604052809291908181526020018280546200148890620090f7565b8015620014d95780601f10620014ad57610100808354040283529160200191620014d9565b820191906000526020600020905b815481529060010190602001808311620014bb57829003601f168201915b50505050508152602001600382018054620014f490620090f7565b80601f01602080910402602001604051908101604052809291908181526020018280546200152290620090f7565b8015620015735780601f10620015475761010080835404028352916020019162001573565b820191906000526020600020905b8154815290600101906020018083116200155557829003601f168201915b505050919092525050508152604080516060808201835260098501546001600160401b038082168452600160401b82048116602080860191909152600160801b9092041683850152840191909152600a84015460ff16151582840152600b84015490830152600c8301546080830152600d8301546001600160a01b031660a0830152805161026081019182905260c09092019190600e84019060139082845b81548152602001906001019080831162001612575050509190925250505060408101519091506001600160a01b031615806200164f57508060e001515b156200170c57604051611002903490600081818185875af1925050503d806000811462001699576040519150601f19603f3d011682016040523d82523d6000602084013e6200169e565b606091505b505050816001600160a01b03167ffc8bff675087dd2da069cc3fb517b9ed001e19750c0865241a5542dba1ba170d604051620016ff9060208082526011908201527024a72b20a624a22fab20a624a220aa27a960791b604082015260600190565b60405180910390a2505050565b60408181015160c0830151519151632f303ebb60e11b81526001600160401b0390921660048301526001600160a01b031690635e607d769034906024016000604051808303818588803b1580156200176357600080fd5b505af115801562001778573d6000803e3d6000fd5b5050505050816001600160a01b03167fe34918ff1c7084970068b53fd71ad6d8b04e9f15d3886cbf006443e6cdc52ea634604051620017b991815260200190565b60405180910390a26040808201519051633041949b60e01b815261200591633041949b91620017ee919086906004016200912d565b600060405180830381600087803b1580156200180957600080fd5b505af11580156200181e573d6000803e3d6000fd5b5050505050505b50565b33611001146200185057604051630f22c43960e41b81526110016004820152602401620011fa565b60005462010000900460ff16156200187b57604051631785c68160e01b815260040160405180910390fd5b6000604583836040516200189192919062009147565b908152604051908190036020019020546001600160a01b03169050620018b9603f8262007e10565b620018d75760405163056e881160e01b815260040160405180910390fd5b6001600160a01b038116600090815260416020526040812090620018ff62015180426200916d565b604a546000828152604b602052604090205491925011620019335760405163bd52fcdb60e01b815260040160405180910390fd5b6000818152604b602052604081208054600192906200195490849062009190565b90915550506040516046906200196e908790879062009147565b908152602001604051809103902054600014158015620019bf5750426201518060468787604051620019a292919062009147565b908152602001604051809103902054620019bd919062009190565b105b15620019de57604051631898eb6b60e01b815260040160405180910390fd5b600080620019ee85600262007e33565b915091508162001a1157604051631b919bb160e11b815260040160405180910390fd5b6002840154603c5460405163045bc4d160e41b815260048101919091526000916001600160a01b0316906345bc4d10906024016020604051808303816000875af115801562001a64573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001a8a9190620091a6565b905062001a98858362007ebd565b856001600160a01b03167f6e9a2ee7aee95665e3a774a212eb11441b217e3e4656ab9563793094689aabb28383600260405162001ad893929190620091c0565b60405180910390a26002850154604051633041949b60e01b815261200591633041949b9162001b16916001600160a01b0316908a906004016200912d565b600060405180830381600087803b15801562001b3157600080fd5b505af115801562001b46573d6000803e3d6000fd5b505050505050505050505050565b6060336120001462001b7e57604051630f22c43960e41b81526120006004820152602401620011fa565b60005462010000900460ff161562001ba957604051631785c68160e01b815260040160405180910390fd5b6034805460ff1916600117905560405162461bcd60e51b815260206004820152600a60248201526919195c1c9958d85d195960b21b6044820152606401620011fa565b60008162001bfc603f8262007e10565b62001c1a5760405163056e881160e01b815260040160405180910390fd5b6001600160a01b038084166000908152604160205260409020600d01541691505b50919050565b600054630100000090046001600160a01b0316331462001c74576040516306fbb1e360e01b815260040160405180910390fd5b6001600160a01b0381166000818152600160208190526040808320805460ff1916909217909155517f7fd26be6fc92aff63f1f4409b2b2ddeb272a888031d7f55ec830485ec61941869190a250565b60005462010000900460ff161562001cee57604051631785c68160e01b815260040160405180910390fd5b3360009081526001602052604090205460ff161562001d205760405163b1d02c3d60e01b815260040160405180910390fd5b8062001d2e603f8262007e10565b62001d4c5760405163056e881160e01b815260040160405180910390fd5b6001600160a01b0382166000908152604160205260409020600a81015460ff1662001d8a57604051634b6b857d60e01b815260040160405180910390fd5b6036546002820154604051630913db4760e01b81526001600160a01b03868116600483015290911690630913db4790602401602060405180830381865afa15801562001dda573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001e009190620091a6565b101562001e20576040516317b204bf60e11b815260040160405180910390fd5b4281600b0154111562001e465760405163170cb76760e21b815260040160405180910390fd5b600a8101805460ff19169055604980546001919060009062001e6a908490620091fb565b90915550506040516001600160a01b038416907f9390b453426557da5ebdc31f19a37753ca04addf656d32f35232211bb2af3f1990600090a2505050565b60005462010000900460ff161562001ed357604051631785c68160e01b815260040160405180910390fd5b3360009081526001602052604090205460ff161562001f055760405163b1d02c3d60e01b815260040160405180910390fd5b62001f0f62007fb2565b62001f1c603f8262007e10565b62001f3a5760405163056e881160e01b815260040160405180910390fd5b6001600160a01b03821662001f6257604051636520611b60e11b815260040160405180910390fd5b6001600160a01b03828116600090815260436020526040902054161562001f9c57604051631e6f587560e11b815260040160405180910390fd5b600062001fa862007fb2565b6001600160a01b0381166000908152604160205260409020600c81015491925090429062001fdb90620151809062009190565b111562001ffb57604051631f92cdbd60e11b815260040160405180910390fd5b80546001600160a01b039081166000908152604460209081526040808320429081905585548986166001600160a01b031991821681178855600c88019290925581855260439093528184208054958816959093168517909255519092917f6e4e747ca35203f16401c69805c7dd52fff67ef60b0ebc5c7fe16890530f223591a350505050565b336200208f603f8262007e10565b620020ad5760405163056e881160e01b815260040160405180910390fd5b60005462010000900460ff1615620020d857604051631785c68160e01b815260040160405180910390fd5b3360009081526001602052604090205460ff16156200210a5760405163b1d02c3d60e01b815260040160405180910390fd5b6001600160a01b038281166000908152604d60205260409020541615620021445760405163bebdc75760e01b815260040160405180910390fd5b62002151603f8362007e10565b15620021705760405163bebdc75760e01b815260040160405180910390fd5b336000818152604160205260409020600d01546001600160a01b039081169084168103620021b15760405163bebdc75760e01b815260040160405180910390fd5b6001600160a01b03811615620021e8576001600160a01b0381166000908152604d6020526040902080546001600160a01b03191690555b6001600160a01b038281166000908152604160205260409020600d0180546001600160a01b0319169186169182179055156200224d576001600160a01b038481166000908152604d6020526040902080546001600160a01b0319169184169190911790555b836001600160a01b0316816001600160a01b0316836001600160a01b03167fcbb728765de145e99c00e8ae32a325231e850359b7b8a6da3b84d672ab3f1d0a60405160405180910390a450505050565b600054630100000090046001600160a01b03163314620022d0576040516306fbb1e360e01b815260040160405180910390fd5b6001600160a01b038116600081815260016020526040808220805460ff19169055517fe0db3499b7fdc3da4cddff5f45d694549c19835e7f719fb5606d3ad1a5de40119190a250565b60005462010000900460ff16156200234457604051631785c68160e01b815260040160405180910390fd5b3360009081526001602052604090205460ff1615620023765760405163b1d02c3d60e01b815260040160405180910390fd5b8162002384603f8262007e10565b620023a25760405163056e881160e01b815260040160405180910390fd5b81600003620023c457604051639811e0c760e01b815260040160405180910390fd5b6001600160a01b03808416600090815260416020908152604080832081516101808101835281548616815260018201548616938101939093526002810154909416908201526003830154606082015260048301805433949160808401916200242c90620090f7565b80601f01602080910402602001604051908101604052809291908181526020018280546200245a90620090f7565b8015620024ab5780601f106200247f57610100808354040283529160200191620024ab565b820191906000526020600020905b8154815290600101906020018083116200248d57829003601f168201915b5050505050815260200160058201604051806080016040529081600082018054620024d690620090f7565b80601f01602080910402602001604051908101604052809291908181526020018280546200250490620090f7565b8015620025555780601f10620025295761010080835404028352916020019162002555565b820191906000526020600020905b8154815290600101906020018083116200253757829003601f168201915b505050505081526020016001820180546200257090620090f7565b80601f01602080910402602001604051908101604052809291908181526020018280546200259e90620090f7565b8015620025ef5780601f10620025c357610100808354040283529160200191620025ef565b820191906000526020600020905b815481529060010190602001808311620025d157829003601f168201915b505050505081526020016002820180546200260a90620090f7565b80601f01602080910402602001604051908101604052809291908181526020018280546200263890620090f7565b8015620026895780601f106200265d5761010080835404028352916020019162002689565b820191906000526020600020905b8154815290600101906020018083116200266b57829003601f168201915b50505050508152602001600382018054620026a490620090f7565b80601f0160208091040260200160405190810160405280929190818152602001828054620026d290620090f7565b8015620027235780601f10620026f75761010080835404028352916020019162002723565b820191906000526020600020905b8154815290600101906020018083116200270557829003601f168201915b505050919092525050508152604080516060808201835260098501546001600160401b038082168452600160401b82048116602080860191909152600160801b9092041683850152840191909152600a84015460ff16151582840152600b84015490830152600c8301546080830152600d8301546001600160a01b031660a0830152805161026081019182905260c09092019190600e84019060139082845b815481526020019060010190808311620027c2575050509190925250505060408082015190516326ccee8b60e11b81526001600160a01b0385811660048301526024820188905292935060009290911690634d99dd16906044016020604051808303816000875af11580156200283c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620028629190620091a6565b9050826001600160a01b0316866001600160a01b03167f3aace7340547de7b9156593a7652dc07ee900cea3fd8f82cb6c9d38b408298028784604051620028b3929190918252602082015260400190565b60405180910390a3856001600160a01b0316836001600160a01b031603620028e057620028e08662007ff3565b6040808301519051633041949b60e01b815261200591633041949b916200290d919087906004016200912d565b600060405180830381600087803b1580156200292857600080fd5b505af11580156200293d573d6000803e3d6000fd5b50505050505050505050565b60005462010000900460ff16156200297457604051631785c68160e01b815260040160405180910390fd5b3360009081526001602052604090205460ff1615620029a65760405163b1d02c3d60e01b815260040160405180910390fd5b83620029b4603f8262007e10565b620029d25760405163056e881160e01b815260040160405180910390fd5b83620029e0603f8262007e10565b620029fe5760405163056e881160e01b815260040160405180910390fd5b6034805460ff19166001179055600084900362002a2e57604051639811e0c760e01b815260040160405180910390fd5b846001600160a01b0316866001600160a01b03160362002a615760405163f0e3e62960e01b815260040160405180910390fd5b6001600160a01b038087166000908152604160209081526040808320815161018081018352815486168152600182015486169381019390935260028101549094169082015260038301546060820152600483018054339491608084019162002ac990620090f7565b80601f016020809104026020016040519081016040528092919081815260200182805462002af790620090f7565b801562002b485780601f1062002b1c5761010080835404028352916020019162002b48565b820191906000526020600020905b81548152906001019060200180831162002b2a57829003601f168201915b505050505081526020016005820160405180608001604052908160008201805462002b7390620090f7565b80601f016020809104026020016040519081016040528092919081815260200182805462002ba190620090f7565b801562002bf25780601f1062002bc65761010080835404028352916020019162002bf2565b820191906000526020600020905b81548152906001019060200180831162002bd457829003601f168201915b5050505050815260200160018201805462002c0d90620090f7565b80601f016020809104026020016040519081016040528092919081815260200182805462002c3b90620090f7565b801562002c8c5780601f1062002c605761010080835404028352916020019162002c8c565b820191906000526020600020905b81548152906001019060200180831162002c6e57829003601f168201915b5050505050815260200160028201805462002ca790620090f7565b80601f016020809104026020016040519081016040528092919081815260200182805462002cd590620090f7565b801562002d265780601f1062002cfa5761010080835404028352916020019162002d26565b820191906000526020600020905b81548152906001019060200180831162002d0857829003601f168201915b5050505050815260200160038201805462002d4190620090f7565b80601f016020809104026020016040519081016040528092919081815260200182805462002d6f90620090f7565b801562002dc05780601f1062002d945761010080835404028352916020019162002dc0565b820191906000526020600020905b81548152906001019060200180831162002da257829003601f168201915b505050919092525050508152604080516060808201835260098501546001600160401b038082168452600160401b82048116602080860191909152600160801b9092041683850152840191909152600a84015460ff16151582840152600b84015490830152600c8301546080830152600d8301546001600160a01b031660a0830152805161026081019182905260c09092019190600e84019060139082845b81548152602001906001019080831162002e5f57505050919092525050506001600160a01b0380891660009081526041602090815260408083208151610180810183528154861681526001820154861693810193909352600281015490941690820152600383015460608201526004830180549495509193909291608084019162002eea90620090f7565b80601f016020809104026020016040519081016040528092919081815260200182805462002f1890620090f7565b801562002f695780601f1062002f3d5761010080835404028352916020019162002f69565b820191906000526020600020905b81548152906001019060200180831162002f4b57829003601f168201915b505050505081526020016005820160405180608001604052908160008201805462002f9490620090f7565b80601f016020809104026020016040519081016040528092919081815260200182805462002fc290620090f7565b8015620030135780601f1062002fe75761010080835404028352916020019162003013565b820191906000526020600020905b81548152906001019060200180831162002ff557829003601f168201915b505050505081526020016001820180546200302e90620090f7565b80601f01602080910402602001604051908101604052809291908181526020018280546200305c90620090f7565b8015620030ad5780601f106200308157610100808354040283529160200191620030ad565b820191906000526020600020905b8154815290600101906020018083116200308f57829003601f168201915b50505050508152602001600282018054620030c890620090f7565b80601f0160208091040260200160405190810160405280929190818152602001828054620030f690620090f7565b8015620031475780601f106200311b5761010080835404028352916020019162003147565b820191906000526020600020905b8154815290600101906020018083116200312957829003601f168201915b505050505081526020016003820180546200316290620090f7565b80601f01602080910402602001604051908101604052809291908181526020018280546200319090620090f7565b8015620031e15780601f10620031b557610100808354040283529160200191620031e1565b820191906000526020600020905b815481529060010190602001808311620031c357829003601f168201915b505050919092525050508152604080516060808201835260098501546001600160401b038082168452600160401b82048116602080860191909152600160801b9092041683850152840191909152600a84015460ff16151582840152600b84015490830152600c8301546080830152600d8301546001600160a01b031660a0830152805161026081019182905260c09092019190600e84019060139082845b815481526020019060010190808311620032805750505050508152505090508060e001518015620032c35750876001600160a01b0316836001600160a01b031614155b15620032e257604051636468920360e01b815260040160405180910390fd5b60408083015190516352e82ce560e11b81526001600160a01b038581166004830152602482018a9052600092169063a5d059ca906044016020604051808303816000875af115801562003339573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200335f9190620091a6565b9050603754811015620033855760405163dc6f0bdd60e01b815260040160405180910390fd5b896001600160a01b0316846001600160a01b03161480156200341a57506036546040808501519051630913db4760e01b81526001600160a01b038d8116600483015290911690630913db4790602401602060405180830381865afa158015620033f2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620034189190620091a6565b105b1562003439576040516317b204bf60e11b815260040160405180910390fd5b6000620186a0603a54836200344f919062009211565b6200345b91906200916d565b9050600083604001516001600160a01b03168260405160006040518083038185875af1925050503d8060008114620034b0576040519150601f19603f3d011682016040523d82523d6000602084013e620034b5565b606091505b5050905080620034d8576040516312171d8360e31b815260040160405180910390fd5b620034e48284620091fb565b60408086015190516317066a5760e21b81526001600160a01b03898116600483015292955060009290911690635c19a95c90869060240160206040518083038185885af11580156200353a573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190620035619190620091a6565b9050866001600160a01b03168c6001600160a01b03168e6001600160a01b03167ffdac6e81913996d95abcc289e90f2d8bd235487ce6fe6f821e7d21002a1915b48e8589604051620035c6939291909283526020830191909152604082015260600190565b60405180910390a46040805160028082526060820183526000926020830190803683370190505090508660400151816000815181106200360a576200360a6200922b565b60200260200101906001600160a01b031690816001600160a01b0316815250508560400151816001815181106200364557620036456200922b565b6001600160a01b0390921660209283029190910190910152604051634484077560e01b815261200590634484077590620036869084908c9060040162009241565b600060405180830381600087803b158015620036a157600080fd5b505af1158015620036b6573d6000803e3d6000fd5b505050508a1562003728576120056001600160a01b031663e5ed5b1e898f6040518363ffffffff1660e01b8152600401620036f39291906200912d565b600060405180830381600087803b1580156200370e57600080fd5b505af115801562003723573d6000803e3d6000fd5b505050505b50506034805460ff19169055505050505050505050505050565b60005462010000900460ff16156200376d57604051631785c68160e01b815260040160405180910390fd5b3360009081526001602052604090205460ff16156200379f5760405163b1d02c3d60e01b815260040160405180910390fd5b620037a962007fb2565b620037b6603f8262007e10565b620037d45760405163056e881160e01b815260040160405180910390fd5b6000620037e062007fb2565b6001600160a01b0381166000908152604160205260409020600c8101549192509042906200381390620151809062009190565b11156200383357604051631f92cdbd60e11b815260040160405180910390fd5b60098101546001600160401b03600160401b909104811690851611156200386d5760405163dc81db8560e01b815260040160405180910390fd5b60098101546000906001600160401b039081169086161015620038ab576009820154620038a59086906001600160401b03166200926d565b620038c5565b6009820154620038c5906001600160401b0316866200926d565b60098301546001600160401b039182169250600160801b900416811115620039005760405163dc81db8560e01b815260040160405180910390fd5b60098201805467ffffffffffffffff19166001600160401b03871690811790915542600c8401556040519081526001600160a01b038416907f78cdd96edf59e09cfd4d26ef6ef6c92d166effe6a40970c54821206d541932cb9060200160405180910390a25050505050565b606080606060006200397f603f62008119565b905080861015620040085784156200399857846200399a565b805b9450600085620039ab8884620091fb565b11620039c357620039bd8783620091fb565b620039c5565b855b9050806001600160401b03811115620039e257620039e2620089a8565b60405190808252806020026020018201604052801562003a0c578160200160208202803683370190505b509450806001600160401b0381111562003a2a5762003a2a620089a8565b60405190808252806020026020018201604052801562003a54578160200160208202803683370190505b509350806001600160401b0381111562003a725762003a72620089a8565b60405190808252806020026020018201604052801562003aa757816020015b606081526020019060019003908162003a915790505b50925060005b818110156200400557600062003ad162003ac8838b62009190565b603f9062008124565b6001600160a01b0380821660009081526041602090815260408083208151610180810183528154861681526001820154861693810193909352600281015490941690820152600383015460608201526004830180549495509193909291608084019162003b3e90620090f7565b80601f016020809104026020016040519081016040528092919081815260200182805462003b6c90620090f7565b801562003bbd5780601f1062003b915761010080835404028352916020019162003bbd565b820191906000526020600020905b81548152906001019060200180831162003b9f57829003601f168201915b505050505081526020016005820160405180608001604052908160008201805462003be890620090f7565b80601f016020809104026020016040519081016040528092919081815260200182805462003c1690620090f7565b801562003c675780601f1062003c3b5761010080835404028352916020019162003c67565b820191906000526020600020905b81548152906001019060200180831162003c4957829003601f168201915b5050505050815260200160018201805462003c8290620090f7565b80601f016020809104026020016040519081016040528092919081815260200182805462003cb090620090f7565b801562003d015780601f1062003cd55761010080835404028352916020019162003d01565b820191906000526020600020905b81548152906001019060200180831162003ce357829003601f168201915b5050505050815260200160028201805462003d1c90620090f7565b80601f016020809104026020016040519081016040528092919081815260200182805462003d4a90620090f7565b801562003d9b5780601f1062003d6f5761010080835404028352916020019162003d9b565b820191906000526020600020905b81548152906001019060200180831162003d7d57829003601f168201915b5050505050815260200160038201805462003db690620090f7565b80601f016020809104026020016040519081016040528092919081815260200182805462003de490620090f7565b801562003e355780601f1062003e095761010080835404028352916020019162003e35565b820191906000526020600020905b81548152906001019060200180831162003e1757829003601f168201915b505050919092525050508152604080516060808201835260098501546001600160401b038082168452600160401b82048116602080860191909152600160801b9092041683850152840191909152600a84015460ff16151582840152600b84015490830152600c8301546080830152600d8301546001600160a01b031660a0830152805161026081019182905260c09092019190600e84019060139082845b81548152602001906001019080831162003ed4575050505050815250509050806000015188848151811062003f0d5762003f0d6200922b565b60200260200101906001600160a01b031690816001600160a01b0316815250508060e0015162003fa65780604001516001600160a01b03166315d1f8986040518163ffffffff1660e01b8152600401602060405180830381865afa15801562003f7a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062003fa09190620091a6565b62003fa9565b60005b87848151811062003fbe5762003fbe6200922b565b602002602001018181525050806080015186848151811062003fe45762003fe46200922b565b602002602001018190525050508062003ffd9062009297565b905062003aad565b50505b92959194509250565b60005462010000900460ff16156200403c57604051631785c68160e01b815260040160405180910390fd5b3360009081526001602052604090205460ff16156200406e5760405163b1d02c3d60e01b815260040160405180910390fd5b336200407c603f8262007e10565b156200409b57604051635f28f62b60e01b815260040160405180910390fd5b6001600160a01b038181166000908152604d60205260409020541615620040d557604051631a0a9b9f60e21b815260040160405180910390fd5b6001600160a01b0388811660009081526043602052604090205416156200410f57604051631e6f587560e11b815260040160405180910390fd5b60006001600160a01b0316604588886040516200412e92919062009147565b908152604051908190036020019020546001600160a01b03161462004166576040516311fdb94760e01b815260040160405180910390fd5b6000620041748380620092b3565b6040516020016200418792919062009147565b60408051601f1981840301815291815281516020928301206000818152604290935291205490915060ff1615620041d15760405163c0bf414360e01b815260040160405180910390fd5b6000620041e7670de0b6b3a764000034620091fb565b90506036548110156200420d576040516317b204bf60e11b815260040160405180910390fd5b6001600160a01b038a166200423557604051636520611b60e11b815260040160405180910390fd5b6113886200424a604087016020880162008b62565b6001600160401b031611806200429057506200426d604086016020870162008b62565b6001600160401b031662004285602087018762008b62565b6001600160401b0316115b80620042cf5750620042a9604086016020870162008b62565b6001600160401b0316620042c4606087016040880162008b62565b6001600160401b0316115b15620042ee5760405163dc81db8560e01b815260040160405180910390fd5b62004339620042fe8580620092b3565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506200813292505050565b6200435757604051635dba5ad760e01b815260040160405180910390fd5b62004366838a8a8a8a620082d4565b6200438457604051631647e3cb60e11b815260040160405180910390fd5b6000620043d284620043978780620092b3565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506200840492505050565b9050620043e1603f8562008505565b506000838152604260209081526040808320805460ff191660019081179091556001600160a01b0380891680865260419094529190932080548f83166001600160a01b031991821617825593810180548516909317909255600282018054918516919093161790915542600382015560048101620044618b8d836200935b565b50856005820162004473828262009423565b50879050600982016200448782826200955c565b505042600c8201556001600160a01b038c81166000908152604360205260409081902080546001600160a01b03191692881692909217909155518590604590620044d5908e908e9062009147565b908152602001604051809103902060006101000a8154816001600160a01b0302191690836001600160a01b03160217905550816001600160a01b0316856001600160a01b03168d6001600160a01b03167faecd9fb95e79c75a3a1de93362c6be5fe6ab65770d8614be583884161cd8228d8e8e604051620045589291906200962c565b60405180910390a460408051848152602081018590526001600160a01b0387169182917f24d7bda8602b916d64417f0dbfe2e2e88ec9b1157bd9f596dfdb91ba26624e04910160405180910390a360408051670de0b6b3a7640000808252602082015261dead916001600160a01b038816917f24d7bda8602b916d64417f0dbfe2e2e88ec9b1157bd9f596dfdb91ba26624e04910160405180910390a3604051633041949b60e01b815261200590633041949b906200461e90859089906004016200912d565b600060405180830381600087803b1580156200463957600080fd5b505af11580156200464e573d6000803e3d6000fd5b50505050505050505050505050505050565b6040805160608101825260008082526020820181905291810191909152816200468b603f8262007e10565b620046a95760405163056e881160e01b815260040160405180910390fd5b50506001600160a01b031660009081526041602090815260409182902082516060810184526009909101546001600160401b038082168352600160401b8204811693830193909352600160801b90049091169181019190915290565b6001600160a01b038082166000908152604160209081526040808320815161018081018352815486168152600182015486169381019390935260028101549094169082015260038301546060828101919091526004840180549194916080840191906200477290620090f7565b80601f0160208091040260200160405190810160405280929190818152602001828054620047a090620090f7565b8015620047f15780601f10620047c557610100808354040283529160200191620047f1565b820191906000526020600020905b815481529060010190602001808311620047d357829003601f168201915b50505050508152602001600582016040518060800160405290816000820180546200481c90620090f7565b80601f01602080910402602001604051908101604052809291908181526020018280546200484a90620090f7565b80156200489b5780601f106200486f576101008083540402835291602001916200489b565b820191906000526020600020905b8154815290600101906020018083116200487d57829003601f168201915b50505050508152602001600182018054620048b690620090f7565b80601f0160208091040260200160405190810160405280929190818152602001828054620048e490620090f7565b8015620049355780601f10620049095761010080835404028352916020019162004935565b820191906000526020600020905b8154815290600101906020018083116200491757829003601f168201915b505050505081526020016002820180546200495090620090f7565b80601f01602080910402602001604051908101604052809291908181526020018280546200497e90620090f7565b8015620049cf5780601f10620049a357610100808354040283529160200191620049cf565b820191906000526020600020905b815481529060010190602001808311620049b157829003601f168201915b50505050508152602001600382018054620049ea90620090f7565b80601f016020809104026020016040519081016040528092919081815260200182805462004a1890620090f7565b801562004a695780601f1062004a3d5761010080835404028352916020019162004a69565b820191906000526020600020905b81548152906001019060200180831162004a4b57829003601f168201915b505050919092525050508152604080516060808201835260098501546001600160401b038082168452600160401b82048116602080860191909152600160801b9092041683850152840191909152600a84015460ff16151582840152600b84015490830152600c8301546080830152600d8301546001600160a01b031660a0830152805161026081019182905260c09092019190600e84019060139082845b81548152602001906001019080831162004b085750505091909252505050608001519392505050565b336110011462004b5957604051630f22c43960e41b81526110016004820152602401620011fa565b6001600160a01b038082166000908152604360205260409020541662004b81603f8262007e10565b62004b9f5760405163056e881160e01b815260040160405180910390fd5b6001600160a01b038181166000908152604160205260408082206002810154603b54925163045bc4d160e41b81526004810193909352909316906345bc4d10906024016020604051808303816000875af115801562004c02573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062004c289190620091a6565b90506000603d544262004c3c919062009190565b905062004c4a838262007ebd565b836001600160a01b03167f6e9a2ee7aee95665e3a774a212eb11441b217e3e4656ab9563793094689aabb28284600160405162004c8a93929190620091c0565b60405180910390a26002830154604051633041949b60e01b815261200591633041949b9162004cc8916001600160a01b03169088906004016200912d565b600060405180830381600087803b15801562004ce357600080fd5b505af115801562004cf8573d6000803e3d6000fd5b505050505050505050565b600054610100900460ff161580801562004d245750600054600160ff909116105b8062004d405750303b15801562004d40575060005460ff166001145b62004da55760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608401620011fa565b6000805460ff19166001179055801562004dc9576000805461ff0019166101001790555b33411462004dea5760405163022d8c9560e31b815260040160405180910390fd5b3a1562004e0a576040516383f1b1d360e01b815260040160405180910390fd5b611388603555686c6b935b8bbd400000603655670de0b6b3a7640000603755600960385562093a806039556002603a819055678ac7230489e80000603b55680ad78ebc5ac6200000603c556202a300603d5562069780603e55604a5562004e857330151da466ec8ab345bef3d6983023e050fb06736200851c565b801562001825576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a150565b336120001462004ef657604051630f22c43960e41b81526120006004820152602401620011fa565b60405162461bcd60e51b815260206004820152600a60248201526919195c1c9958d85d195960b21b6044820152606401620011fa565b600054630100000090046001600160a01b0316331462004f5f576040516306fbb1e360e01b815260040160405180910390fd5b60005462010000900460ff161562004f8a57604051631785c68160e01b815260040160405180910390fd5b6000805462ff00001916620100001781556040517f9e87fac88ff661f02d44f95383c817fece4bce600a3dab7a54406878b965e7529190a1565b600062004fd3603f8462007e10565b62004ff15760405163056e881160e01b815260040160405180910390fd5b6001600160a01b0383811660009081526041602052604090819020600201549051636bbf224960e01b815260048101859052911690636bbf2249906024015b602060405180830381865afa1580156200504e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620050749190620091a6565b90505b92915050565b60005462010000900460ff1615620050a857604051631785c68160e01b815260040160405180910390fd5b3360009081526001602052604090205460ff1615620050da5760405163b1d02c3d60e01b815260040160405180910390fd5b81620050e8603f8262007e10565b620051065760405163056e881160e01b815260040160405180910390fd5b60375434908110156200512c5760405163dc6f0bdd60e01b815260040160405180910390fd5b6001600160a01b03808516600090815260416020908152604080832081516101808101835281548616815260018201548616938101939093526002810154909416908201526003830154606082015260048301805433949160808401916200519490620090f7565b80601f0160208091040260200160405190810160405280929190818152602001828054620051c290620090f7565b8015620052135780601f10620051e75761010080835404028352916020019162005213565b820191906000526020600020905b815481529060010190602001808311620051f557829003601f168201915b50505050508152602001600582016040518060800160405290816000820180546200523e90620090f7565b80601f01602080910402602001604051908101604052809291908181526020018280546200526c90620090f7565b8015620052bd5780601f106200529157610100808354040283529160200191620052bd565b820191906000526020600020905b8154815290600101906020018083116200529f57829003601f168201915b50505050508152602001600182018054620052d890620090f7565b80601f01602080910402602001604051908101604052809291908181526020018280546200530690620090f7565b8015620053575780601f106200532b5761010080835404028352916020019162005357565b820191906000526020600020905b8154815290600101906020018083116200533957829003601f168201915b505050505081526020016002820180546200537290620090f7565b80601f0160208091040260200160405190810160405280929190818152602001828054620053a090620090f7565b8015620053f15780601f10620053c557610100808354040283529160200191620053f1565b820191906000526020600020905b815481529060010190602001808311620053d357829003601f168201915b505050505081526020016003820180546200540c90620090f7565b80601f01602080910402602001604051908101604052809291908181526020018280546200543a90620090f7565b80156200548b5780601f106200545f576101008083540402835291602001916200548b565b820191906000526020600020905b8154815290600101906020018083116200546d57829003601f168201915b505050919092525050508152604080516060808201835260098501546001600160401b038082168452600160401b82048116602080860191909152600160801b9092041683850152840191909152600a84015460ff16151582840152600b84015490830152600c8301546080830152600d8301546001600160a01b031660a0830152805161026081019182905260c09092019190600e84019060139082845b8154815260200190600101908083116200552a5750505050508152505090508060e0015180156200556d5750856001600160a01b0316826001600160a01b031614155b156200558c57604051636468920360e01b815260040160405180910390fd5b60408082015190516317066a5760e21b81526001600160a01b0384811660048301526000921690635c19a95c90869060240160206040518083038185885af1158015620055dd573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190620056049190620091a6565b9050826001600160a01b0316876001600160a01b03167f24d7bda8602b916d64417f0dbfe2e2e88ec9b1157bd9f596dfdb91ba26624e04838760405162005655929190918252602082015260400190565b60405180910390a36040808301519051633041949b60e01b815261200591633041949b916200568a919087906004016200912d565b600060405180830381600087803b158015620056a557600080fd5b505af1158015620056ba573d6000803e3d6000fd5b5050505085156200181e576040516372f6ad8f60e11b81526120059063e5ed5b1e90620056ee9086908b906004016200912d565b600060405180830381600087803b1580156200570957600080fd5b505af11580156200571e573d6000803e3d6000fd5b5050505050505050505050565b620057576040518060800160405280606081526020016060815260200160608152602001606081525090565b8162005765603f8262007e10565b620057835760405163056e881160e01b815260040160405180910390fd5b6001600160a01b03831660009081526041602052604090819020815160808101909252600501805482908290620057ba90620090f7565b80601f0160208091040260200160405190810160405280929190818152602001828054620057e890620090f7565b8015620058395780601f106200580d5761010080835404028352916020019162005839565b820191906000526020600020905b8154815290600101906020018083116200581b57829003601f168201915b505050505081526020016001820180546200585490620090f7565b80601f01602080910402602001604051908101604052809291908181526020018280546200588290620090f7565b8015620058d35780601f10620058a757610100808354040283529160200191620058d3565b820191906000526020600020905b815481529060010190602001808311620058b557829003601f168201915b50505050508152602001600282018054620058ee90620090f7565b80601f01602080910402602001604051908101604052809291908181526020018280546200591c90620090f7565b80156200596d5780601f1062005941576101008083540402835291602001916200596d565b820191906000526020600020905b8154815290600101906020018083116200594f57829003601f168201915b505050505081526020016003820180546200598890620090f7565b80601f0160208091040260200160405190810160405280929190818152602001828054620059b690620090f7565b801562005a075780601f10620059db5761010080835404028352916020019162005a07565b820191906000526020600020905b815481529060010190602001808311620059e957829003601f168201915b505050505081525050915050919050565b60005462010000900460ff161562005a4357604051631785c68160e01b815260040160405180910390fd5b3360009081526001602052604090205460ff161562005a755760405163b1d02c3d60e01b815260040160405180910390fd5b62005a818282620085b5565b5050565b336110071462005aad57604051630f22c43960e41b81526110076004820152602401620011fa565b62005b1a6040518060400160405280601081526020016f1d1c985b9cd9995c91d85cd31a5b5a5d60821b81525085858080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509293925050620086c19050565b1562005bd5576020811462005b4c5783838383604051630a5a604160e01b8152600401620011fa949392919062009642565b604080516020601f840181900481028201810190925282815260009162005b8f9185858083850183828082843760009201919091525092939250506200871e9050565b90506108fc81108062005ba3575061271081115b1562005bcc5784848484604051630a5a604160e01b8152600401620011fa949392919062009642565b603555620068df565b62005c466040518060400160405280601481526020017336b4b729b2b6332232b632b3b0ba34b7b721272160611b81525085858080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509293925050620086c19050565b1562005d10576020811462005c785783838383604051630a5a604160e01b8152600401620011fa949392919062009642565b604080516020601f840181900481028201810190925282815260009162005cbb9185858083850183828082843760009201919091525092939250506200871e9050565b9050683635c9adc5dea0000081108062005cde575069152d02c7e14af680000081115b1562005d075784848484604051630a5a604160e01b8152600401620011fa949392919062009642565b603655620068df565b62005d83604051806040016040528060168152602001756d696e44656c65676174696f6e424e424368616e676560501b81525085858080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509293925050620086c19050565b1562005e4a576020811462005db55783838383604051630a5a604160e01b8152600401620011fa949392919062009642565b604080516020601f840181900481028201810190925282815260009162005df89185858083850183828082843760009201919091525092939250506200871e9050565b905067016345785d8a000081108062005e185750678ac7230489e8000081115b1562005e415784848484604051630a5a604160e01b8152600401620011fa949392919062009642565b603755620068df565b62005ebb604051806040016040528060148152602001736d6178456c656374656456616c696461746f727360601b81525085858080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509293925050620086c19050565b1562005f73576020811462005eed5783838383604051630a5a604160e01b8152600401620011fa949392919062009642565b604080516020601f840181900481028201810190925282815260009162005f309185858083850183828082843760009201919091525092939250506200871e9050565b905080158062005f4157506101f481115b1562005f6a5784848484604051630a5a604160e01b8152600401620011fa949392919062009642565b603855620068df565b62005fdc6040518060400160405280600c81526020016b1d5b989bdb9914195c9a5bd960a21b81525085858080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509293925050620086c19050565b156200609957602081146200600e5783838383604051630a5a604160e01b8152600401620011fa949392919062009642565b604080516020601f8401819004810282018101909252828152600091620060519185858083850183828082843760009201919091525092939250506200871e9050565b90506203f48081108062006067575062278d0081115b15620060905784848484604051630a5a604160e01b8152600401620011fa949392919062009642565b603955620068df565b6200610760405180604001604052806011815260200170726564656c65676174654665655261746560781b81525085858080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509293925050620086c19050565b15620061b45760208114620061395783838383604051630a5a604160e01b8152600401620011fa949392919062009642565b604080516020601f84018190048102820181019092528281526000916200617c9185858083850183828082843760009201919091525092939250506200871e9050565b90506064811115620061ab5784848484604051630a5a604160e01b8152600401620011fa949392919062009642565b603a55620068df565b6200622460405180604001604052806013815260200172191bdddb9d1a5b5954db185cda105b5bdd5b9d606a1b81525085858080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509293925050620086c19050565b15620062e55760208114620062565783838383604051630a5a604160e01b8152600401620011fa949392919062009642565b604080516020601f8401819004810282018101909252828152600091620062999185858083850183828082843760009201919091525092939250506200871e9050565b9050674563918244f40000811080620062b35750603c5481115b15620062dc5784848484604051630a5a604160e01b8152600401620011fa949392919062009642565b603b55620068df565b620063536040518060400160405280601181526020017019995b1bdb9e54db185cda105b5bdd5b9d607a1b81525085858080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509293925050620086c19050565b15620064165760208114620063855783838383604051630a5a604160e01b8152600401620011fa949392919062009642565b604080516020601f8401819004810282018101909252828152600091620063c89185858083850183828082843760009201919091525092939250506200871e9050565b905068056bc75e2d63100000811080620063e45750603b548111155b156200640d5784848484604051630a5a604160e01b8152600401620011fa949392919062009642565b603c55620068df565b620064836040518060400160405280601081526020016f646f776e74696d654a61696c54696d6560801b81525085858080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509293925050620086c19050565b15620065405760208114620064b55783838383604051630a5a604160e01b8152600401620011fa949392919062009642565b604080516020601f8401819004810282018101909252828152600091620064f89185858083850183828082843760009201919091525092939250506200871e9050565b90506202a3008110806200650e5750603e548110155b15620065375784848484604051630a5a604160e01b8152600401620011fa949392919062009642565b603d55620068df565b620065ab6040518060400160405280600e81526020016d66656c6f6e794a61696c54696d6560901b81525085858080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509293925050620086c19050565b15620066685760208114620065dd5783838383604051630a5a604160e01b8152600401620011fa949392919062009642565b604080516020601f8401819004810282018101909252828152600091620066209185858083850183828082843760009201919091525092939250506200871e9050565b9050620d2f00811080620066365750603d548111155b156200665f5784848484604051630a5a604160e01b8152600401620011fa949392919062009642565b603e55620068df565b620066e26040518060400160405280601c81526020017f6d617846656c6f6e794265747765656e42726561746865426c6f636b0000000081525085858080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509293925050620086c19050565b156200678e5760208114620067145783838383604051630a5a604160e01b8152600401620011fa949392919062009642565b604080516020601f8401819004810282018101909252828152600091620067579185858083850183828082843760009201919091525092939250506200871e9050565b905080600003620067855784848484604051630a5a604160e01b8152600401620011fa949392919062009642565b604a55620068df565b620067fc6040518060400160405280601181526020017039ba30b5b2a43ab1283937ba32b1ba37b960791b81525085858080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509293925050620086c19050565b15620068bc57601481146200682e5783838383604051630a5a604160e01b8152600401620011fa949392919062009642565b600062006876601484848080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092939250506200871e9050565b90506001600160a01b038116620068aa5784848484604051630a5a604160e01b8152600401620011fa949392919062009642565b620068b58162008723565b50620068df565b838383836040516325ee20d560e21b8152600401620011fa949392919062009642565b7ff1ce9b2cbf50eeb05769a29e2543fd350cab46894a7dd9978a12d534bb20e6338484848460405162006916949392919062009642565b60405180910390a150505050565b60005462010000900460ff16156200694f57604051631785c68160e01b815260040160405180910390fd5b3360009081526001602052604090205460ff1615620069815760405163b1d02c3d60e01b815260040160405180910390fd5b816000816001600160401b038111156200699f576200699f620089a8565b604051908082528060200260200182016040528015620069c9578160200160208202803683370190505b5090506000805b8381101562006ac75762006a12878783818110620069f257620069f26200922b565b905060200201602081019062006a09919062008839565b603f9062007e10565b62006a305760405163056e881160e01b815260040160405180910390fd5b6041600088888481811062006a495762006a496200922b565b905060200201602081019062006a60919062008839565b6001600160a01b039081168252602082019290925260400160002060020154845191169250829084908390811062006a9c5762006a9c6200922b565b6001600160a01b039092166020928302919091019091015262006abf8162009297565b9050620069d0565b50604051634484077560e01b8152612005906344840775906200290d908590889060040162009241565b606080600062006b02603f62008119565b90508085101562006cc657831562006b1b578362006b1d565b805b935060008462006b2e8784620091fb565b1162006b465762006b408683620091fb565b62006b48565b845b9050806001600160401b0381111562006b655762006b65620089a8565b60405190808252806020026020018201604052801562006b8f578160200160208202803683370190505b509350806001600160401b0381111562006bad5762006bad620089a8565b60405190808252806020026020018201604052801562006bd7578160200160208202803683370190505b50925060005b8181101562006cc35762006bf662003ac8828962009190565b85828151811062006c0b5762006c0b6200922b565b60200260200101906001600160a01b031690816001600160a01b0316815250506041600086838151811062006c445762006c446200922b565b60200260200101516001600160a01b03166001600160a01b0316815260200190815260200160002060020160009054906101000a90046001600160a01b031684828151811062006c985762006c986200922b565b6001600160a01b039092166020928302919091019091015262006cbb8162009297565b905062006bdd565b50505b9250925092565b60008162006cdd603f8262007e10565b62006cfb5760405163056e881160e01b815260040160405180910390fd5b50506001600160a01b03166000908152604160205260409020600c015490565b336110011462006d4357604051630f22c43960e41b81526110016004820152602401620011fa565b60005462010000900460ff161562006d6e57604051631785c68160e01b815260040160405180910390fd5b6001600160a01b038082166000908152604360205260409020541662006d96603f8262007e10565b62006db45760405163056e881160e01b815260040160405180910390fd5b6001600160a01b03811660009081526041602052604081209062006ddc62015180426200916d565b604a546000828152604b60205260409020549192501162006e105760405163bd52fcdb60e01b815260040160405180910390fd5b6000818152604b6020526040812080546001929062006e3190849062009190565b90915550506001600160a01b0384166000908152604460205260409020541580159062006e8657506001600160a01b038416600090815260446020526040902054429062006e8490620151809062009190565b105b1562006ea5576040516330abb81d60e21b815260040160405180910390fd5b60008062006eb585600062007e33565b915091508162006ed857604051631b919bb160e11b815260040160405180910390fd5b6002840154603c5460405163045bc4d160e41b815260048101919091526000916001600160a01b0316906345bc4d10906024016020604051808303816000875af115801562006f2b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062006f519190620091a6565b905062006f5f858362007ebd565b856001600160a01b03167f6e9a2ee7aee95665e3a774a212eb11441b217e3e4656ab9563793094689aabb28383600060405162006f9f93929190620091c0565b60405180910390a26002850154604051633041949b60e01b815261200591633041949b91620056ee916001600160a01b0316908a906004016200912d565b6001600160a01b03808216600090815260416020908152604080832081516101808101835281548616815260018201548616938101939093526002810154909416908201526003830154606082015260048301805492938493849384939092916080840191906200704e90620090f7565b80601f01602080910402602001604051908101604052809291908181526020018280546200707c90620090f7565b8015620070cd5780601f10620070a157610100808354040283529160200191620070cd565b820191906000526020600020905b815481529060010190602001808311620070af57829003601f168201915b5050505050815260200160058201604051806080016040529081600082018054620070f890620090f7565b80601f01602080910402602001604051908101604052809291908181526020018280546200712690620090f7565b8015620071775780601f106200714b5761010080835404028352916020019162007177565b820191906000526020600020905b8154815290600101906020018083116200715957829003601f168201915b505050505081526020016001820180546200719290620090f7565b80601f0160208091040260200160405190810160405280929190818152602001828054620071c090620090f7565b8015620072115780601f10620071e55761010080835404028352916020019162007211565b820191906000526020600020905b815481529060010190602001808311620071f357829003601f168201915b505050505081526020016002820180546200722c90620090f7565b80601f01602080910402602001604051908101604052809291908181526020018280546200725a90620090f7565b8015620072ab5780601f106200727f57610100808354040283529160200191620072ab565b820191906000526020600020905b8154815290600101906020018083116200728d57829003601f168201915b50505050508152602001600382018054620072c690620090f7565b80601f0160208091040260200160405190810160405280929190818152602001828054620072f490620090f7565b8015620073455780601f10620073195761010080835404028352916020019162007345565b820191906000526020600020905b8154815290600101906020018083116200732757829003601f168201915b505050919092525050508152604080516060808201835260098501546001600160401b038082168452600160401b82048116602080860191909152600160801b9092041683850152840191909152600a84015460ff16151582840152600b84015490830152600c8301546080830152600d8301546001600160a01b031660a0830152805161026081019182905260c09092019190600e84019060139082845b815481526020019060010190808311620073e45750505091909252505050606081015160e0820151610100909201519097919650945092505050565b60005462010000900460ff16156200744b57604051631785c68160e01b815260040160405180910390fd5b3360009081526001602052604090205460ff16156200747d5760405163b1d02c3d60e01b815260040160405180910390fd5b6200748762007fb2565b62007494603f8262007e10565b620074b25760405163056e881160e01b815260040160405180910390fd5b6000620074be62007fb2565b6001600160a01b0381166000908152604160205260409020600c810154919250904290620074f190620151809062009190565b11156200751157604051631f92cdbd60e11b815260040160405180910390fd5b6005810180546200752290620090f7565b80601f01602080910402602001604051908101604052809291908181526020018280546200755090620090f7565b8015620075a15780601f106200757557610100808354040283529160200191620075a1565b820191906000526020600020905b8154815290600101906020018083116200758357829003601f168201915b5050508287525085916005840191508190620075be908262009678565b5060208201516001820190620075d5908262009678565b5060408201516002820190620075ec908262009678565b506060820151600382019062007603908262009678565b505042600c830155506040516001600160a01b038316907f85d6366b336ade7f106987ec7a8eac1e8799e508aeab045a39d2f63e0dc969d990600090a250505050565b60005462010000900460ff16156200767157604051631785c68160e01b815260040160405180910390fd5b3360009081526001602052604090205460ff1615620076a35760405163b1d02c3d60e01b815260040160405180910390fd5b828114620076c4576040516341abc80160e01b815260040160405180910390fd5b60005b83811015620077355762007722858583818110620076e957620076e96200922b565b905060200201602081019062007700919062008839565b8484848181106200771557620077156200922b565b90506020020135620085b5565b6200772d8162009297565b9050620076c7565b5050505050565b6001600160a01b0380821660009081526041602090815260408083208151610180810183528154861681526001820154861693810193909352600281015490941690820152600383015460608201526004830180549293849390916080840191620077a790620090f7565b80601f0160208091040260200160405190810160405280929190818152602001828054620077d590620090f7565b8015620078265780601f10620077fa5761010080835404028352916020019162007826565b820191906000526020600020905b8154815290600101906020018083116200780857829003601f168201915b50505050508152602001600582016040518060800160405290816000820180546200785190620090f7565b80601f01602080910402602001604051908101604052809291908181526020018280546200787f90620090f7565b8015620078d05780601f10620078a457610100808354040283529160200191620078d0565b820191906000526020600020905b815481529060010190602001808311620078b257829003601f168201915b50505050508152602001600182018054620078eb90620090f7565b80601f01602080910402602001604051908101604052809291908181526020018280546200791990620090f7565b80156200796a5780601f106200793e576101008083540402835291602001916200796a565b820191906000526020600020905b8154815290600101906020018083116200794c57829003601f168201915b505050505081526020016002820180546200798590620090f7565b80601f0160208091040260200160405190810160405280929190818152602001828054620079b390620090f7565b801562007a045780601f10620079d85761010080835404028352916020019162007a04565b820191906000526020600020905b815481529060010190602001808311620079e657829003601f168201915b5050505050815260200160038201805462007a1f90620090f7565b80601f016020809104026020016040519081016040528092919081815260200182805462007a4d90620090f7565b801562007a9e5780601f1062007a725761010080835404028352916020019162007a9e565b820191906000526020600020905b81548152906001019060200180831162007a8057829003601f168201915b505050919092525050508152604080516060808201835260098501546001600160401b038082168452600160401b82048116602080860191909152600160801b9092041683850152840191909152600a84015460ff16151582840152600b84015490830152600c8301546080830152600d8301546001600160a01b031660a0830152805161026081019182905260c09092019190600e84019060139082845b81548152602001906001019080831162007b3d5750505091909252505050604001519392505050565b600062007b75603f8462007e10565b62007b935760405163056e881160e01b815260040160405180910390fd5b6001600160a01b038381166000908152604160205260409081902060020154905163aa1966cd60e01b81526004810185905291169063aa1966cd9060240162005030565b60005462010000900460ff161562007c0257604051631785c68160e01b815260040160405180910390fd5b3360009081526001602052604090205460ff161562007c345760405163b1d02c3d60e01b815260040160405180910390fd5b62007c3e62007fb2565b62007c4b603f8262007e10565b62007c695760405163056e881160e01b815260040160405180910390fd5b600062007c7562007fb2565b905062007c868187878787620082d4565b62007ca457604051631647e3cb60e11b815260040160405180910390fd5b60006001600160a01b03166045878760405162007cc392919062009147565b908152604051908190036020019020546001600160a01b03161462007cfb576040516311fdb94760e01b815260040160405180910390fd5b6001600160a01b0381166000908152604160205260409020600c810154429062007d2a90620151809062009190565b111562007d4a57604051631f92cdbd60e11b815260040160405180910390fd5b4260468260040160405162007d60919062009740565b908152604051908190036020019020556004810162007d818789836200935b565b5042600c820155604051829060459062007d9f908a908a9062009147565b90815260405190819003602001812080546001600160a01b039384166001600160a01b0319909116179055908316907f783156582145bd0ff7924fae6953ba054cf1233eb60739a200ddb10de068ff0d9062007dff908a908a906200962c565b60405180910390a250505050505050565b6001600160a01b0381166000908152600183016020526040812054151562005074565b6000806000848460405160200162007e4d929190620097be565b60408051601f1981840301815291815281516020928301206000818152604c9093529120549091504281111562007e8d5760008093509350505062007eb6565b603e5462007e9c904262009190565b6000928352604c6020526040909220829055506001925090505b9250929050565b6000600162007ecd603f62008119565b62007ed99190620091fb565b604954108015915062007f255760018301546040516001600160a01b03909116907f2afdc18061ac21cff7d9f11527ab9c8dec6fabd4edf6f894ed634bebd6a20d4590600090a2505050565b82600b015482111562007f3a57600b83018290555b600a83015460ff1662007fad57600a8301805460ff191660019081179091556049805460009062007f6d90849062009190565b909155505060018301546040516001600160a01b03909116907f4905ac32602da3fb8b4b7b00c285e5fc4c6c2308cc908b4a1e4e9625a29c90a390600090a25b505050565b336000908152604d60205260408120546001600160a01b03161562007fee5750336000908152604d60205260409020546001600160a01b031690565b503390565b6001600160a01b0381166000908152604160205260409020600a81015460ff16156200801d575050565b6036546002820154604051630913db4760e01b81526001600160a01b03858116600483015290911690630913db4790602401602060405180830381865afa1580156200806d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620080939190620091a6565b101562005a8157620080b581603d5442620080af919062009190565b62007ebd565b80546040516335409f7f60e01b81526001600160a01b039091166004820152611000906335409f7f90602401600060405180830381600087803b158015620080fc57600080fd5b505af115801562008111573d6000803e3d6000fd5b505050505050565b600062005077825490565b60006200507483836200878f565b6000808290506003815110806200814a575060098151115b15620081595750600092915050565b6041816000815181106200817157620081716200922b565b016020015160f81c1080620081a35750605a816000815181106200819957620081996200922b565b016020015160f81c115b15620081b25750600092915050565b60015b8151811015620082ca576030828281518110620081d657620081d66200922b565b016020015160f81c10806200820757506039828281518110620081fd57620081fd6200922b565b016020015160f81c115b801562008257575060418282815181106200822657620082266200922b565b016020015160f81c1080620082575750605a8282815181106200824d576200824d6200922b565b016020015160f81c115b8015620082a7575060618282815181106200827657620082766200922b565b016020015160f81c1080620082a75750607a8282815181106200829d576200829d6200922b565b016020015160f81c115b15620082b7575060009392505050565b620082c28162009297565b9050620081b5565b5060019392505050565b6000603084141580620082e8575060608214155b15620082f757506000620083fb565b60008686864660405160200162008312949392919062009808565b60408051808303601f1901815282825280516020918201208184528383019092529092506000919060208201818036833701905050905081602082015260008186868a8a6040516020016200836c95949392919062009835565b60408051808303601f190181526001808452838301909252925060009190602082018180368337019050509050815160016020830182602086016066600019fa620083b657600080fd5b50600081600081518110620083cf57620083cf6200922b565b016020015160f81c905060018114620083f157600095505050505050620083fb565b6001955050505050505b95945050505050565b60008061200361dead6040516200841b906200880e565b6001600160a01b03928316815291166020820152606060408201819052600090820152608001604051809103906000f0801580156200845e573d6000803e3d6000fd5b509050806001600160a01b031663f399e22e3486866040518463ffffffff1660e01b8152600401620084929291906200986d565b6000604051808303818588803b158015620084ac57600080fd5b505af1158015620084c1573d6000803e3d6000fd5b50506040516001600160a01b038086169450881692507fd481492e4e93bb36b4c12a5af93f03be3bf04b454dfbc35dd2663fa26f44d5b09150600090a39392505050565b600062005074836001600160a01b038416620087bc565b600054610100900460ff16620085895760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b6064820152608401620011fa565b600080546001600160a01b039092166301000000026301000000600160b81b0319909216919091179055565b81620085c3603f8262007e10565b620085e15760405163056e881160e01b815260040160405180910390fd5b6001600160a01b03838116600090815260416020526040808220600201549051635569f64b60e11b8152336004820152602481018690529192169063aad3ec96906044016020604051808303816000875af115801562008645573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200866b9190620091a6565b9050336001600160a01b0316846001600160a01b03167ff7a40077ff7a04c7e61f6f26fb13774259ddf1b6bce9ecf26a8276cdd399268383604051620086b391815260200190565b60405180910390a350505050565b600081604051602001620086d6919062009893565b6040516020818303038152906040528051906020012083604051602001620086ff919062009893565b6040516020818303038152906040528051906020012014905092915050565b015190565b600080546040516001600160a01b0380851693630100000090930416917f44fc1b38a4abaa91ebd1b628a5b259a698f86238c8217d68f516e87769c60c0b91a3600080546001600160a01b039092166301000000026301000000600160b81b0319909216919091179055565b6000826000018281548110620087a957620087a96200922b565b9060005260206000200154905092915050565b6000818152600183016020526040812054620088055750815460018181018455600084815260208082209093018490558454848252828601909352604090209190915562005077565b50600062005077565b610e9680620098b283390190565b80356001600160a01b03811681146200883457600080fd5b919050565b6000602082840312156200884c57600080fd5b62005074826200881c565b60008083601f8401126200886a57600080fd5b5081356001600160401b038111156200888257600080fd5b60208301915083602082850101111562007eb657600080fd5b60008060208385031215620088af57600080fd5b82356001600160401b03811115620088c657600080fd5b620088d48582860162008857565b90969095509350505050565b600080600060408486031215620088f657600080fd5b833560ff811681146200890857600080fd5b925060208401356001600160401b038111156200892457600080fd5b620089328682870162008857565b9497909650939450505050565b60005b838110156200895c57818101518382015260200162008942565b50506000910152565b600081518084526200897f8160208601602086016200893f565b601f01601f19169290920160200192915050565b60208152600062005074602083018462008965565b634e487b7160e01b600052604160045260246000fd5b604051608081016001600160401b0381118282101715620089e357620089e3620089a8565b60405290565b60006001600160401b038084111562008a065762008a06620089a8565b604051601f8501601f19908116603f0116810190828211818310171562008a315762008a31620089a8565b8160405280935085815286868601111562008a4b57600080fd5b858560208301376000602087830101525050509392505050565b60006020828403121562008a7857600080fd5b81356001600160401b0381111562008a8f57600080fd5b8201601f8101841362008aa157600080fd5b62008ab284823560208401620089e9565b949350505050565b6000806040838503121562008ace57600080fd5b62008ad9836200881c565b946020939093013593505050565b803580151581146200883457600080fd5b6000806000806080858703121562008b0f57600080fd5b62008b1a856200881c565b935062008b2a602086016200881c565b92506040850135915062008b416060860162008ae7565b905092959194509250565b6001600160401b03811681146200182557600080fd5b60006020828403121562008b7557600080fd5b813562008b828162008b4c565b9392505050565b6000806040838503121562008b9d57600080fd5b50508035926020909101359150565b600081518084526020808501945080840160005b8381101562008be75781516001600160a01b03168752958201959082019060010162008bc0565b509495945050505050565b60808152600062008c07608083018762008bac565b82810360208481019190915286518083528782019282019060005b8181101562008c405784518352938301939183019160010162008c22565b5050848103604086015286518082528282019350600581901b8201830183890160005b8381101562008c9557601f1985840301875262008c8283835162008965565b9686019692509085019060010162008c63565b5050809550505050505082606083015295945050505050565b600080600080600080600087890360e081121562008ccb57600080fd5b62008cd6896200881c565b975060208901356001600160401b038082111562008cf357600080fd5b62008d018c838d0162008857565b909950975060408b013591508082111562008d1b57600080fd5b62008d298c838d0162008857565b90975095508591506060605f198401121562008d4457600080fd5b60608b01945060c08b013592508083111562008d5f57600080fd5b505088016080818b03121562008d7457600080fd5b8091505092959891949750929550565b6000806040838503121562008d9857600080fd5b62008da3836200881c565b915062008db36020840162008ae7565b90509250929050565b60208152600082516080602084015262008dda60a084018262008965565b90506020840151601f198085840301604086015262008dfa838362008965565b9250604086015191508085840301606086015262008e19838362008965565b9250606086015191508085840301608086015250620083fb828262008965565b6000806000806040858703121562008e5057600080fd5b84356001600160401b038082111562008e6857600080fd5b62008e768883890162008857565b9096509450602087013591508082111562008e9057600080fd5b5062008e9f8782880162008857565b95989497509550505050565b60008083601f84011262008ebe57600080fd5b5081356001600160401b0381111562008ed657600080fd5b6020830191508360208260051b850101111562007eb657600080fd5b60008060006040848603121562008f0857600080fd5b83356001600160401b0381111562008f1f57600080fd5b62008f2d8682870162008eab565b909450925062008f429050602085016200881c565b90509250925092565b60608152600062008f60606083018662008bac565b828103602084015262008f74818662008bac565b915050826040830152949350505050565b600082601f83011262008f9757600080fd5b6200507483833560208501620089e9565b60006020828403121562008fbb57600080fd5b81356001600160401b038082111562008fd357600080fd5b908301906080828603121562008fe857600080fd5b62008ff2620089be565b8235828111156200900257600080fd5b620090108782860162008f85565b8252506020830135828111156200902657600080fd5b620090348782860162008f85565b6020830152506040830135828111156200904d57600080fd5b6200905b8782860162008f85565b6040830152506060830135828111156200907457600080fd5b620090828782860162008f85565b60608301525095945050505050565b60008060008060408587031215620090a857600080fd5b84356001600160401b0380821115620090c057600080fd5b620090ce8883890162008eab565b90965094506020870135915080821115620090e857600080fd5b5062008e9f8782880162008eab565b600181811c908216806200910c57607f821691505b60208210810362001c3b57634e487b7160e01b600052602260045260246000fd5b6001600160a01b0392831681529116602082015260400190565b8183823760009101908152919050565b634e487b7160e01b600052601160045260246000fd5b6000826200918b57634e487b7160e01b600052601260045260246000fd5b500490565b8082018082111562005077576200507762009157565b600060208284031215620091b957600080fd5b5051919050565b838152602081018390526060810160038310620091ed57634e487b7160e01b600052602160045260246000fd5b826040830152949350505050565b8181038181111562005077576200507762009157565b808202811582820484141762005077576200507762009157565b634e487b7160e01b600052603260045260246000fd5b60408152600062009256604083018562008bac565b905060018060a01b03831660208301529392505050565b6001600160401b0382811682821603908082111562009290576200929062009157565b5092915050565b600060018201620092ac57620092ac62009157565b5060010190565b6000808335601e19843603018112620092cb57600080fd5b8301803591506001600160401b03821115620092e657600080fd5b60200191503681900382131562007eb657600080fd5b601f82111562007fad57600081815260208120601f850160051c81016020861015620093255750805b601f850160051c820191505b81811015620081115782815560010162009331565b600019600383901b1c191660019190911b1790565b6001600160401b03831115620093755762009375620089a8565b6200938d83620093868354620090f7565b83620092fc565b6000601f841160018114620093c05760008515620093ab5750838201355b620093b7868262009346565b84555062007735565b600083815260209020601f19861690835b82811015620093f35786850135825560209485019460019092019101620093d1565b5086821015620094115760001960f88860031b161c19848701351681555b505060018560011b0183555050505050565b6200942f8283620092b3565b6001600160401b03811115620094495762009449620089a8565b62009461816200945a8554620090f7565b85620092fc565b6000601f8211600181146200949457600083156200947f5750838201355b6200948b848262009346565b865550620094f1565b600085815260209020601f19841690835b82811015620094c75786850135825560209485019460019092019101620094a5565b5084821015620094e55760001960f88660031b161c19848701351681555b505060018360011b0185555b50505050620095046020830183620092b3565b620095148183600186016200935b565b5050620095256040830183620092b3565b620095358183600286016200935b565b5050620095466060830183620092b3565b620095568183600386016200935b565b50505050565b8135620095698162008b4c565b6001600160401b03811690508154816001600160401b031982161783556020840135620095968162008b4c565b6fffffffffffffffff0000000000000000604091821b166fffffffffffffffffffffffffffffffff19831684178117855590850135620095d68162008b4c565b6001600160c01b0319929092169092179190911760809190911b67ffffffffffffffff60801b1617905550565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b60208152600062008ab260208301848662009603565b6040815260006200965860408301868862009603565b82810360208401526200966d81858762009603565b979650505050505050565b81516001600160401b03811115620096945762009694620089a8565b620096ac81620096a58454620090f7565b84620092fc565b602080601f831160018114620096e05760008415620096cb5750858301515b620096d7858262009346565b86555062008111565b600085815260208120601f198616915b828110156200971157888601518255948401946001909101908401620096f0565b5085821015620097305787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b60008083546200975081620090f7565b600182811680156200976b57600181146200978157620097b2565b60ff1984168752821515830287019450620097b2565b8760005260208060002060005b85811015620097a95781548a8201529084019082016200978e565b50505082870194505b50929695505050505050565b6bffffffffffffffffffffffff198360601b168152600060038310620097f457634e487b7160e01b600052602160045260246000fd5b5060f89190911b6014820152601501919050565b6bffffffffffffffffffffffff198560601b16815282846014830137601492019182015260340192915050565b6000865162009849818460208b016200893f565b82018587823760009086019081528385823760009301928352509095945050505050565b6001600160a01b038316815260406020820181905260009062008ab29083018462008965565b60008251620098a78184602087016200893f565b919091019291505056fe608060405260405162000e9638038062000e96833981016040819052620000269162000497565b828162000036828260006200004d565b50620000449050826200008a565b505050620005ca565b6200005883620000e5565b600082511180620000665750805b1562000085576200008383836200012760201b620001691760201c565b505b505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f620000b562000156565b604080516001600160a01b03928316815291841660208301520160405180910390a1620000e2816200018f565b50565b620000f08162000244565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b60606200014f838360405180606001604052806027815260200162000e6f60279139620002f8565b9392505050565b60006200018060008051602062000e4f83398151915260001b6200037760201b620001951760201c565b546001600160a01b0316919050565b6001600160a01b038116620001fa5760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b60648201526084015b60405180910390fd5b806200022360008051602062000e4f83398151915260001b6200037760201b620001951760201c565b80546001600160a01b0319166001600160a01b039290921691909117905550565b6200025a816200037a60201b620001981760201c565b620002be5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b6064820152608401620001f1565b80620002237f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc60001b6200037760201b620001951760201c565b6060600080856001600160a01b03168560405162000317919062000577565b600060405180830381855af49150503d806000811462000354576040519150601f19603f3d011682016040523d82523d6000602084013e62000359565b606091505b5090925090506200036d8683838762000389565b9695505050505050565b90565b6001600160a01b03163b151590565b60608315620003fd578251600003620003f5576001600160a01b0385163b620003f55760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401620001f1565b508162000409565b62000409838362000411565b949350505050565b815115620004225781518083602001fd5b8060405162461bcd60e51b8152600401620001f1919062000595565b80516001600160a01b03811681146200045657600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b60005b838110156200048e57818101518382015260200162000474565b50506000910152565b600080600060608486031215620004ad57600080fd5b620004b8846200043e565b9250620004c8602085016200043e565b60408501519092506001600160401b0380821115620004e657600080fd5b818601915086601f830112620004fb57600080fd5b8151818111156200051057620005106200045b565b604051601f8201601f19908116603f011681019083821181831017156200053b576200053b6200045b565b816040528281528960208487010111156200055557600080fd5b6200056883602083016020880162000471565b80955050505050509250925092565b600082516200058b81846020870162000471565b9190910192915050565b6020815260008251806020840152620005b681604085016020870162000471565b601f01601f19169190910160400192915050565b61087580620005da6000396000f3fe60806040523661001357610011610017565b005b6100115b61001f6101a7565b6001600160a01b0316330361015f5760606001600160e01b0319600035166364d3180d60e11b810161005a576100536101da565b9150610157565b63587086bd60e11b6001600160e01b031982160161007a57610053610231565b63070d7c6960e41b6001600160e01b031982160161009a57610053610277565b621eb96f60e61b6001600160e01b03198216016100b9576100536102a8565b63a39f25e560e01b6001600160e01b03198216016100d9576100536102e8565b60405162461bcd60e51b815260206004820152604260248201527f5472616e73706172656e745570677261646561626c6550726f78793a2061646d60448201527f696e2063616e6e6f742066616c6c6261636b20746f2070726f78792074617267606482015261195d60f21b608482015260a4015b60405180910390fd5b815160208301f35b6101676102fc565b565b606061018e83836040518060600160405280602781526020016108426027913961030c565b9392505050565b90565b6001600160a01b03163b151590565b60007fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b546001600160a01b0316919050565b60606101e4610384565b60006101f33660048184610695565b81019061020091906106db565b905061021d8160405180602001604052806000815250600061038f565b505060408051602081019091526000815290565b60606000806102433660048184610695565b810190610250919061070c565b915091506102608282600161038f565b604051806020016040528060008152509250505090565b6060610281610384565b60006102903660048184610695565b81019061029d91906106db565b905061021d816103bb565b60606102b2610384565b60006102bc6101a7565b604080516001600160a01b03831660208201529192500160405160208183030381529060405291505090565b60606102f2610384565b60006102bc610412565b610167610307610412565b610421565b6060600080856001600160a01b03168560405161032991906107f2565b600060405180830381855af49150503d8060008114610364576040519150601f19603f3d011682016040523d82523d6000602084013e610369565b606091505b509150915061037a86838387610445565b9695505050505050565b341561016757600080fd5b610398836104c6565b6000825111806103a55750805b156103b6576103b48383610169565b505b505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f6103e46101a7565b604080516001600160a01b03928316815291841660208301520160405180910390a161040f81610506565b50565b600061041c6105af565b905090565b3660008037600080366000845af43d6000803e808015610440573d6000f35b3d6000fd5b606083156104b45782516000036104ad576001600160a01b0385163b6104ad5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015260640161014e565b50816104be565b6104be83836105d7565b949350505050565b6104cf81610601565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b6001600160a01b03811661056b5760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b606482015260840161014e565b807fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b80546001600160a01b0319166001600160a01b039290921691909117905550565b60007f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc6101cb565b8151156105e75781518083602001fd5b8060405162461bcd60e51b815260040161014e919061080e565b6001600160a01b0381163b61066e5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b606482015260840161014e565b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc61058e565b600080858511156106a557600080fd5b838611156106b257600080fd5b5050820193919092039150565b80356001600160a01b03811681146106d657600080fd5b919050565b6000602082840312156106ed57600080fd5b61018e826106bf565b634e487b7160e01b600052604160045260246000fd5b6000806040838503121561071f57600080fd5b610728836106bf565b9150602083013567ffffffffffffffff8082111561074557600080fd5b818501915085601f83011261075957600080fd5b81358181111561076b5761076b6106f6565b604051601f8201601f19908116603f01168101908382118183101715610793576107936106f6565b816040528281528860208487010111156107ac57600080fd5b8260208601602083013760006020848301015280955050505050509250929050565b60005b838110156107e95781810151838201526020016107d1565b50506000910152565b600082516108048184602087016107ce565b9190910192915050565b602081526000825180602084015261082d8160408501602087016107ce565b601f01601f1916919091016040019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a164736f6c6343000811000ab53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a164736f6c6343000811000a \ No newline at end of file diff --git a/core/systemcontracts/pascal/chapel/TokenHubContract b/core/systemcontracts/pascal/chapel/TokenHubContract index 172526db0c..f8ae4da3d4 100644 --- a/core/systemcontracts/pascal/chapel/TokenHubContract +++ b/core/systemcontracts/pascal/chapel/TokenHubContract @@ -1 +1 @@ -6080604052600436106103395760003560e01c806393ab703f116101ab578063b9fd21e3116100f7578063df8079e911610095578063e8f35cea1161006f578063e8f35cea14610dd9578063f9a2bbc714610e0c578063fc1a598f14610e21578063fd6a687914610e5457610381565b8063df8079e914610d85578063e04c83a714610d9a578063e1c7392a14610dc457610381565b8063c81b1662116100d1578063c81b166214610d20578063c8509d811461092a578063cf41984414610d35578063dc927faf14610d7057610381565b8063b9fd21e314610ca5578063bbface1f14610cba578063bd46646114610ced57610381565b8063a78abc1611610164578063aad560631161013e578063aad5606314610b5e578063ab51bb9614610b73578063ac43175114610ba1578063b99328c514610c6c57610381565b8063a78abc1614610aed578063aa7415f514610b02578063aa82dce114610b4957610381565b806393ab703f14610a275780639509b98014610a3c5780639a854bbd14610a755780639a99b4f014610a8a5780639dc0926214610ac3578063a1a11bf514610ad857610381565b806351e8067211610285578063727be1f8116102235780637e434d54116101fd5780637e434d5414610915578063831d65d11461092a5780638525db03146109af5780638eff336c146109e857610381565b8063727be1f81461089757806375d47a0a146108c1578063799758b9146108d657610381565b8063613684751161025f57806361368475146107165780636e056520146107415780636e47b4821461086d57806371d308631461088257610381565b806351e80672146106c257806359b92789146106d75780635d499b1b1461070157610381565b80633d713223116102f257806343a368b9116102cc57806343a368b914610657578063493279b11461066c57806350432d321461069857806351b4dce3146106ad57610381565b80633d7132231461057c5780633fd8b02f1461062d57806343756e5c1461064257610381565b80630e2374a5146103865780631182b875146103b757806312234582146104b1578063149d14d9146104ec57806328087028146105135780632ae454831461052857610381565b3661038157341561037f576040805133815234602082015281517f6c98249d85d88c3753a04a22230f595e4dc8d3dc86c34af35deeeedc861b89db929181900390910190a15b005b600080fd5b34801561039257600080fd5b5061039b610e69565b604080516001600160a01b039092168252519081900360200190f35b3480156103c357600080fd5b5061043c600480360360408110156103da57600080fd5b60ff8235169190810190604081016020820135600160201b8111156103fe57600080fd5b82018360208201111561041057600080fd5b803590602001918460018302840111600160201b8311171561043157600080fd5b509092509050610e6f565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561047657818101518382015260200161045e565b50505050905090810190601f1680156104a35780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3480156104bd57600080fd5b5061037f600480360360408110156104d457600080fd5b506001600160a01b0381358116916020013516610eb7565b3480156104f857600080fd5b50610501610f31565b60408051918252519081900360200190f35b34801561051f57600080fd5b5061039b610f37565b34801561053457600080fd5b506105636004803603604081101561054b57600080fd5b506001600160a01b0381358116916020013516610f3d565b6040805192835260208301919091528051918290030190f35b34801561058857600080fd5b5061039b6004803603602081101561059f57600080fd5b810190602081018135600160201b8111156105b957600080fd5b8201836020820111156105cb57600080fd5b803590602001918460018302840111600160201b831117156105ec57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550610f61945050505050565b34801561063957600080fd5b50610501610f82565b34801561064e57600080fd5b5061039b610f88565b34801561066357600080fd5b50610501610f8e565b34801561067857600080fd5b50610681610f9a565b6040805161ffff9092168252519081900360200190f35b3480156106a457600080fd5b50610501610f9f565b3480156106b957600080fd5b5061039b610faa565b3480156106ce57600080fd5b5061039b610fb0565b3480156106e357600080fd5b5061039b600480360360208110156106fa57600080fd5b5035610fb6565b34801561070d57600080fd5b50610501610fd1565b34801561072257600080fd5b5061072b610fda565b6040805160ff9092168252519081900360200190f35b6108596004803603608081101561075757600080fd5b810190602081018135600160201b81111561077157600080fd5b82018360208201111561078357600080fd5b803590602001918460208302840111600160201b831117156107a457600080fd5b919390929091602081019035600160201b8111156107c157600080fd5b8201836020820111156107d357600080fd5b803590602001918460208302840111600160201b831117156107f457600080fd5b919390929091602081019035600160201b81111561081157600080fd5b82018360208201111561082357600080fd5b803590602001918460208302840111600160201b8311171561084457600080fd5b91935091503567ffffffffffffffff16610fdf565b604080519115158252519081900360200190f35b34801561087957600080fd5b5061039b611025565b34801561088e57600080fd5b5061050161102b565b3480156108a357600080fd5b50610859600480360360208110156108ba57600080fd5b5035611031565b3480156108cd57600080fd5b5061039b61106d565b3480156108e257600080fd5b5061037f600480360360608110156108f957600080fd5b508035906001600160a01b036020820135169060400135611073565b34801561092157600080fd5b5061039b611323565b34801561093657600080fd5b5061037f6004803603604081101561094d57600080fd5b60ff8235169190810190604081016020820135600160201b81111561097157600080fd5b82018360208201111561098357600080fd5b803590602001918460018302840111600160201b831117156109a457600080fd5b509092509050611329565b3480156109bb57600080fd5b5061037f600480360360408110156109d257600080fd5b50803590602001356001600160a01b031661136e565b3480156109f457600080fd5b5061037f60048036036060811015610a0b57600080fd5b508035906001600160a01b0360208201351690604001356114d7565b348015610a3357600080fd5b50610501611517565b348015610a4857600080fd5b5061037f60048036036040811015610a5f57600080fd5b506001600160a01b03813516906020013561151e565b348015610a8157600080fd5b506105016115e0565b348015610a9657600080fd5b5061050160048036036040811015610aad57600080fd5b506001600160a01b0381351690602001356115ec565b348015610acf57600080fd5b5061039b611672565b348015610ae457600080fd5b5061039b611678565b348015610af957600080fd5b5061085961167e565b61085960048036036080811015610b1857600080fd5b5080356001600160a01b03908116916020810135909116906040810135906060013567ffffffffffffffff16610fdf565b348015610b5557600080fd5b5061039b611687565b348015610b6a57600080fd5b5061039b61168d565b348015610b7f57600080fd5b50610b88611693565b6040805163ffffffff9092168252519081900360200190f35b348015610bad57600080fd5b5061037f60048036036040811015610bc457600080fd5b810190602081018135600160201b811115610bde57600080fd5b820183602082011115610bf057600080fd5b803590602001918460018302840111600160201b83111715610c1157600080fd5b919390929091602081019035600160201b811115610c2e57600080fd5b820183602082011115610c4057600080fd5b803590602001918460018302840111600160201b83111715610c6157600080fd5b509092509050611698565b348015610c7857600080fd5b5061037f60048036036040811015610c8f57600080fd5b50803590602001356001600160a01b03166114d7565b348015610cb157600080fd5b506105016116d8565b348015610cc657600080fd5b5061050160048036036020811015610cdd57600080fd5b50356001600160a01b03166116e2565b348015610cf957600080fd5b5061050160048036036020811015610d1057600080fd5b50356001600160a01b03166116f4565b348015610d2c57600080fd5b5061039b61170f565b348015610d4157600080fd5b5061037f60048036036040811015610d5857600080fd5b506001600160a01b0381358116916020013516611715565b348015610d7c57600080fd5b5061039b6117a8565b348015610d9157600080fd5b5061039b6117ae565b348015610da657600080fd5b5061085960048036036020811015610dbd57600080fd5b50356117b4565b348015610dd057600080fd5b5061037f61180c565b348015610de557600080fd5b5061050160048036036020811015610dfc57600080fd5b50356001600160a01b03166118ac565b348015610e1857600080fd5b5061039b6118be565b348015610e2d57600080fd5b5061043c60048036036020811015610e4457600080fd5b50356001600160a01b03166118c4565b348015610e6057600080fd5b5061039b6119eb565b61200181565b60005460609060ff16610eb7576040805162461bcd60e51b81526020600482015260196024820152600080516020611d9c833981519152604482015290519081900360640190fd5b3361200014610ef75760405162461bcd60e51b815260040180806020018281038252602f815260200180611d4a602f913960400191505060405180910390fd5b6040805162461bcd60e51b815260206004820152600a60248201526919195c1c9958d85d195960b21b604482015290519081900360640190fd5b60015490565b61200581565b60076020908152600092835260408084209091529082529020805460019091015482565b6020908101516000908152600490915260409020546001600160a01b031690565b60055481565b61100181565b670de0b6b3a764000081565b606181565b66071afd498d000081565b61200681565b61200081565b6000908152600460205260409020546001600160a01b031690565b6402540be40081565b600881565b6000805460ff16610ef7576040805162461bcd60e51b81526020600482015260196024820152600080516020611d9c833981519152604482015290519081900360640190fd5b61100581565b60015481565b6040805162461bcd60e51b815260206004820152600a60248201526919195c1c9958d85d195960b21b6044820152905160009181900360640190fd5b61100881565b60005460ff166110b8576040805162461bcd60e51b81526020600482015260196024820152600080516020611d9c833981519152604482015290519081900360640190fd5b33613000146110f85760405162461bcd60e51b815260040180806020018281038252602b815260200180611cd0602b913960400191505060405180910390fd5b677ce66c50e284000081111561113f5760405162461bcd60e51b8152600401808060200182810382526035815260200180611c9b6035913960400191505060405180910390fd5b60006221272160e91b84146112a9576000848152600460205260409020546001600160a01b0316806111b2576040805184815290516001600160a01b0386169187917fc16ee9013bf67c846d37735983debb0acc5b2d1419cb5931c9843ad4689505499181900360200190a3505061131e565b6001600160a01b0381166000908152600260205260409020546111d584826119f1565b604080516370a0823160e01b8152306004820152905191945084916001600160a01b038516916370a08231916024808301926020929190829003018186803b15801561122057600080fd5b505afa158015611234573d6000803e3d6000fd5b505050506040513d602081101561124a57600080fd5b50511015611296576040805162461bcd60e51b8152602060048201526014602482015273696e73756666696369656e742062616c616e636560601b604482015290519081900360640190fd5b6112a286838588611a3a565b505061131c565b6112be826402540be40063ffffffff611ad416565b90508047101561130c576040805162461bcd60e51b8152602060048201526014602482015273696e73756666696369656e742062616c616e636560601b604482015290519081900360640190fd5b600061131a85828487611a3a565b505b505b505050565b61200381565b60005460ff16610eb7576040805162461bcd60e51b81526020600482015260196024820152600080516020611d9c833981519152604482015290519081900360640190fd5b33613000146113ae5760405162461bcd60e51b815260040180806020018281038252602b815260200180611cd0602b913960400191505060405180910390fd5b60006221272160e91b831461141957506000828152600460205260409020546001600160a01b031680611419576040805162461bcd60e51b815260206004820152600e60248201526d1a5b9d985b1a59081cde5b589bdb60921b604482015290519081900360640190fd5b6001600160a01b0380821660009081526007602090815260408083209386168352929052208054611484576040805162461bcd60e51b815260206004820152601060248201526f1b9bc81b1bd8dad95908185b5bdd5b9d60821b604482015290519081900360640190fd5b8054600082556040805182815290516001600160a01b03808716929086169188917f8041a9a8704332594e2884f5e0f942281cdd7611854c365b4d0aa70b2295d6b6919081900360200190a45050505050565b3361100814610ef75760405162461bcd60e51b8152600401808060200182810382526023815260200180611d796023913960400191505060405180910390fd5b6201518081565b81806001600160a01b031663893d20e86040518163ffffffff1660e01b815260040160206040518083038186803b15801561155857600080fd5b505afa15801561156c573d6000803e3d6000fd5b505050506040513d602081101561158257600080fd5b50516001600160a01b03163314610ef7576040805162461bcd60e51b815260206004820152601860248201527f6e6f74206f776e6572206f6620424550323020746f6b656e0000000000000000604482015290519081900360640190fd5b677ce66c50e284000081565b6000805460ff16611632576040805162461bcd60e51b81526020600482015260196024820152600080516020611d9c833981519152604482015290519081900360640190fd5b3361100514610ef75760405162461bcd60e51b815260040180806020018281038252602f815260200180611c6c602f913960400191505060405180910390fd5b61100781565b61100681565b60005460ff1681565b61200281565b61300081565b600081565b3361100714610ef75760405162461bcd60e51b815260040180806020018281038252602e815260200180611d1c602e913960400191505060405180910390fd5b6221272160e91b81565b60026020526000908152604090205481565b6001600160a01b031660009081526003602052604090205490565b61100281565b60085460ff1660021415611761576040805162461bcd60e51b815260206004820152600e60248201526d4e6f2072652d656e7472616e637960901b604482015290519081900360640190fd5b6008805460ff191660021790556040805162461bcd60e51b815260206004820152600a60248201526919195c1c9958d85d195960b21b604482015290519081900360640190fd5b61100381565b61200481565b60003361200214610ef7576040805162461bcd60e51b815260206004820152601f60248201527f746865206d73672073656e646572206d757374206265207374616b6548756200604482015290519081900360640190fd5b60005460ff1615611864576040805162461bcd60e51b815260206004820152601960248201527f74686520636f6e747261637420616c726561647920696e697400000000000000604482015290519081900360640190fd5b66071afd498d000060019081556000808052600260205260127fac33ff75c19e70fe83507db0d683fd3465c996598dc972688b7ace676c89077b55805460ff19169091179055565b60066020526000908152604090205481565b61100081565b6001600160a01b03811660009081526003602090815260409182902054825182815280840190935260609290918391906020820181803683375050506020810183905290506000805b60208160ff16101561195457828160ff168151811061192857fe5b01602001516001600160f81b031916156119475781600101915061194c565b611954565b60010161190d565b5060608160ff166040519080825280601f01601f191660200182016040528015611985576020820181803683370190505b50905060005b8260ff168160ff1610156119e157838160ff16815181106119a857fe5b602001015160f81c60f81b828260ff16815181106119c257fe5b60200101906001600160f81b031916908160001a90535060010161198b565b5095945050505050565b61100481565b60006008821115611a1a57611a13836007198401600a0a63ffffffff611ad416565b9050611a34565b611a31836008849003600a0a63ffffffff611b2d16565b90505b92915050565b6001600160a01b0380841660009081526007602090815260408083209385168352929052208054611a71908463ffffffff611b6f16565b81554262015180016001820181905560408051858152602081019290925280516001600160a01b03808616939088169289927f446d1aa056e7b903901f49880e9f252762c1b81dc4301cf28db6dae526497eaa9281900390910190a45050505050565b600082611ae357506000611a34565b82820282848281611af057fe5b0414611a315760405162461bcd60e51b8152600401808060200182810382526021815260200180611cfb6021913960400191505060405180910390fd5b6000611a3183836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250611bc9565b600082820183811015611a31576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b60008183611c555760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b83811015611c1a578181015183820152602001611c02565b50505050905090810190601f168015611c475780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b506000838581611c6157fe5b049594505050505056fe746865206d6573736167652073656e646572206d75737420626520696e63656e746976697a6520636f6e7472616374616d6f756e7420697320746f6f206c617267652c20657863656564206d6178696d756d206265703220746f6b656e20616d6f756e74746865206d73672073656e646572206d75737420626520746f6b656e207265636f76657220706f7274616c536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f77746865206d6573736167652073656e646572206d75737420626520676f7665726e616e636520636f6e7472616374746865206d6573736167652073656e646572206d7573742062652063726f737320636861696e20636f6e7472616374746865206d73672073656e646572206d75737420626520746f6b656e4d616e6167657274686520636f6e7472616374206e6f7420696e69742079657400000000000000a164736f6c6343000604000a \ No newline at end of file +60806040526004361061036f5760003560e01c80639509b980116101c6578063bbface1f116100f7578063e04c83a711610095578063f9a2bbc71161006f578063f9a2bbc714610e57578063fa9e915914610e6c578063fc1a598f14610e81578063fd6a687914610eb4576103b7565b8063e04c83a714610de5578063e1c7392a14610e0f578063e8f35cea14610e24576103b7565b8063c8509d81116100d1578063c8509d8114610960578063cf41984414610d80578063dc927faf14610dbb578063df8079e914610dd0576103b7565b8063bbface1f14610d05578063bd46646114610d38578063c81b166214610d6b576103b7565b8063aa82dce111610164578063ac4317511161013e578063ac43175114610bd7578063b99328c514610ca2578063b9fd21e314610cdb578063ba35ead614610cf0576103b7565b8063aa82dce114610b7f578063aad5606314610b94578063ab51bb9614610ba9576103b7565b80639dc09262116101a05780639dc0926214610af9578063a1a11bf514610b0e578063a78abc1614610b23578063aa7415f514610b38576103b7565b80639509b98014610a725780639a854bbd14610aab5780639a99b4f014610ac0576103b7565b806359b92789116102a057806375d47a0a1161023e578063831d65d111610218578063831d65d1146109605780638525db03146109e55780638eff336c14610a1e57806393ab703f14610a5d576103b7565b806375d47a0a146108f7578063799758b91461090c5780637e434d541461094b576103b7565b80636e0565201161027a5780636e056520146107775780636e47b482146108a357806371d30863146108b8578063727be1f8146108cd576103b7565b806359b927891461070d5780635d499b1b14610737578063613684751461074c576103b7565b80633fd8b02f1161030d578063493279b1116102e7578063493279b1146106a257806350432d32146106ce57806351b4dce3146106e357806351e80672146106f8576103b7565b80633fd8b02f1461066357806343756e5c1461067857806343a368b91461068d576103b7565b8063149d14d911610349578063149d14d91461052257806328087028146105495780632ae454831461055e5780633d713223146105b2576103b7565b80630e2374a5146103bc5780631182b875146103ed57806312234582146104e7576103b7565b366103b75734156103b5576040805133815234602082015281517f6c98249d85d88c3753a04a22230f595e4dc8d3dc86c34af35deeeedc861b89db929181900390910190a15b005b600080fd5b3480156103c857600080fd5b506103d1610ec9565b604080516001600160a01b039092168252519081900360200190f35b3480156103f957600080fd5b506104726004803603604081101561041057600080fd5b60ff8235169190810190604081016020820135600160201b81111561043457600080fd5b82018360208201111561044657600080fd5b803590602001918460018302840111600160201b8311171561046757600080fd5b509092509050610ecf565b6040805160208082528351818301528351919283929083019185019080838360005b838110156104ac578181015183820152602001610494565b50505050905090810190601f1680156104d95780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3480156104f357600080fd5b506103b56004803603604081101561050a57600080fd5b506001600160a01b0381358116916020013516610f17565b34801561052e57600080fd5b50610537610f91565b60408051918252519081900360200190f35b34801561055557600080fd5b506103d1610f97565b34801561056a57600080fd5b506105996004803603604081101561058157600080fd5b506001600160a01b0381358116916020013516610f9d565b6040805192835260208301919091528051918290030190f35b3480156105be57600080fd5b506103d1600480360360208110156105d557600080fd5b810190602081018135600160201b8111156105ef57600080fd5b82018360208201111561060157600080fd5b803590602001918460018302840111600160201b8311171561062257600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550610fc1945050505050565b34801561066f57600080fd5b50610537610fe2565b34801561068457600080fd5b506103d1610fe8565b34801561069957600080fd5b50610537610fee565b3480156106ae57600080fd5b506106b7610ffa565b6040805161ffff9092168252519081900360200190f35b3480156106da57600080fd5b50610537610fff565b3480156106ef57600080fd5b506103d161100a565b34801561070457600080fd5b506103d1611010565b34801561071957600080fd5b506103d16004803603602081101561073057600080fd5b5035611016565b34801561074357600080fd5b50610537611031565b34801561075857600080fd5b5061076161103a565b6040805160ff9092168252519081900360200190f35b61088f6004803603608081101561078d57600080fd5b810190602081018135600160201b8111156107a757600080fd5b8201836020820111156107b957600080fd5b803590602001918460208302840111600160201b831117156107da57600080fd5b919390929091602081019035600160201b8111156107f757600080fd5b82018360208201111561080957600080fd5b803590602001918460208302840111600160201b8311171561082a57600080fd5b919390929091602081019035600160201b81111561084757600080fd5b82018360208201111561085957600080fd5b803590602001918460208302840111600160201b8311171561087a57600080fd5b91935091503567ffffffffffffffff1661103f565b604080519115158252519081900360200190f35b3480156108af57600080fd5b506103d1611085565b3480156108c457600080fd5b5061053761108b565b3480156108d957600080fd5b5061088f600480360360208110156108f057600080fd5b5035611091565b34801561090357600080fd5b506103d16110cd565b34801561091857600080fd5b506103b56004803603606081101561092f57600080fd5b508035906001600160a01b0360208201351690604001356110d3565b34801561095757600080fd5b506103d1611383565b34801561096c57600080fd5b506103b56004803603604081101561098357600080fd5b60ff8235169190810190604081016020820135600160201b8111156109a757600080fd5b8201836020820111156109b957600080fd5b803590602001918460018302840111600160201b831117156109da57600080fd5b509092509050611389565b3480156109f157600080fd5b506103b560048036036040811015610a0857600080fd5b50803590602001356001600160a01b03166113ce565b348015610a2a57600080fd5b506103b560048036036060811015610a4157600080fd5b508035906001600160a01b036020820135169060400135611537565b348015610a6957600080fd5b50610537611577565b348015610a7e57600080fd5b506103b560048036036040811015610a9557600080fd5b506001600160a01b03813516906020013561157e565b348015610ab757600080fd5b50610537611640565b348015610acc57600080fd5b5061053760048036036040811015610ae357600080fd5b506001600160a01b03813516906020013561164c565b348015610b0557600080fd5b506103d16116d2565b348015610b1a57600080fd5b506103d16116d8565b348015610b2f57600080fd5b5061088f6116de565b61088f60048036036080811015610b4e57600080fd5b5080356001600160a01b03908116916020810135909116906040810135906060013567ffffffffffffffff1661103f565b348015610b8b57600080fd5b506103d16116e7565b348015610ba057600080fd5b506103d16116ed565b348015610bb557600080fd5b50610bbe6116f3565b6040805163ffffffff9092168252519081900360200190f35b348015610be357600080fd5b506103b560048036036040811015610bfa57600080fd5b810190602081018135600160201b811115610c1457600080fd5b820183602082011115610c2657600080fd5b803590602001918460018302840111600160201b83111715610c4757600080fd5b919390929091602081019035600160201b811115610c6457600080fd5b820183602082011115610c7657600080fd5b803590602001918460018302840111600160201b83111715610c9757600080fd5b5090925090506116f8565b348015610cae57600080fd5b506103b560048036036040811015610cc557600080fd5b50803590602001356001600160a01b0316611537565b348015610ce757600080fd5b50610537611738565b348015610cfc57600080fd5b50610537611742565b348015610d1157600080fd5b5061053760048036036020811015610d2857600080fd5b50356001600160a01b0316611748565b348015610d4457600080fd5b5061053760048036036020811015610d5b57600080fd5b50356001600160a01b031661175a565b348015610d7757600080fd5b506103d1611775565b348015610d8c57600080fd5b506103b560048036036040811015610da357600080fd5b506001600160a01b038135811691602001351661177b565b348015610dc757600080fd5b506103d1611a4f565b348015610ddc57600080fd5b506103d1611a55565b348015610df157600080fd5b5061088f60048036036020811015610e0857600080fd5b5035611a5b565b348015610e1b57600080fd5b506103b5611ab3565b348015610e3057600080fd5b5061053760048036036020811015610e4757600080fd5b50356001600160a01b0316611b53565b348015610e6357600080fd5b506103d1611b65565b348015610e7857600080fd5b50610537611b6b565b348015610e8d57600080fd5b5061047260048036036020811015610ea457600080fd5b50356001600160a01b0316611b71565b348015610ec057600080fd5b506103d1611c98565b61200181565b60005460609060ff16610f17576040805162461bcd60e51b81526020600482015260196024820152600080516020612049833981519152604482015290519081900360640190fd5b3361200014610f575760405162461bcd60e51b815260040180806020018281038252602f815260200180611ff7602f913960400191505060405180910390fd5b6040805162461bcd60e51b815260206004820152600a60248201526919195c1c9958d85d195960b21b604482015290519081900360640190fd5b60015490565b61200581565b60076020908152600092835260408084209091529082529020805460019091015482565b6020908101516000908152600490915260409020546001600160a01b031690565b60055481565b61100181565b670de0b6b3a764000081565b606181565b66071afd498d000081565b61200681565b61200081565b6000908152600460205260409020546001600160a01b031690565b6402540be40081565b600881565b6000805460ff16610f57576040805162461bcd60e51b81526020600482015260196024820152600080516020612049833981519152604482015290519081900360640190fd5b61100581565b60015481565b6040805162461bcd60e51b815260206004820152600a60248201526919195c1c9958d85d195960b21b6044820152905160009181900360640190fd5b61100881565b60005460ff16611118576040805162461bcd60e51b81526020600482015260196024820152600080516020612049833981519152604482015290519081900360640190fd5b33613000146111585760405162461bcd60e51b815260040180806020018281038252602b815260200180611f7d602b913960400191505060405180910390fd5b677ce66c50e284000081111561119f5760405162461bcd60e51b8152600401808060200182810382526035815260200180611f486035913960400191505060405180910390fd5b60006221272160e91b8414611309576000848152600460205260409020546001600160a01b031680611212576040805184815290516001600160a01b0386169187917fc16ee9013bf67c846d37735983debb0acc5b2d1419cb5931c9843ad4689505499181900360200190a3505061137e565b6001600160a01b0381166000908152600260205260409020546112358482611c9e565b604080516370a0823160e01b8152306004820152905191945084916001600160a01b038516916370a08231916024808301926020929190829003018186803b15801561128057600080fd5b505afa158015611294573d6000803e3d6000fd5b505050506040513d60208110156112aa57600080fd5b505110156112f6576040805162461bcd60e51b8152602060048201526014602482015273696e73756666696369656e742062616c616e636560601b604482015290519081900360640190fd5b61130286838588611ce7565b505061137c565b61131e826402540be40063ffffffff611d8116565b90508047101561136c576040805162461bcd60e51b8152602060048201526014602482015273696e73756666696369656e742062616c616e636560601b604482015290519081900360640190fd5b600061137a85828487611ce7565b505b505b505050565b61200381565b60005460ff16610f17576040805162461bcd60e51b81526020600482015260196024820152600080516020612049833981519152604482015290519081900360640190fd5b336130001461140e5760405162461bcd60e51b815260040180806020018281038252602b815260200180611f7d602b913960400191505060405180910390fd5b60006221272160e91b831461147957506000828152600460205260409020546001600160a01b031680611479576040805162461bcd60e51b815260206004820152600e60248201526d1a5b9d985b1a59081cde5b589bdb60921b604482015290519081900360640190fd5b6001600160a01b03808216600090815260076020908152604080832093861683529290522080546114e4576040805162461bcd60e51b815260206004820152601060248201526f1b9bc81b1bd8dad95908185b5bdd5b9d60821b604482015290519081900360640190fd5b8054600082556040805182815290516001600160a01b03808716929086169188917f8041a9a8704332594e2884f5e0f942281cdd7611854c365b4d0aa70b2295d6b6919081900360200190a45050505050565b3361100814610f575760405162461bcd60e51b81526004018080602001828103825260238152602001806120266023913960400191505060405180910390fd5b6201518081565b81806001600160a01b031663893d20e86040518163ffffffff1660e01b815260040160206040518083038186803b1580156115b857600080fd5b505afa1580156115cc573d6000803e3d6000fd5b505050506040513d60208110156115e257600080fd5b50516001600160a01b03163314610f57576040805162461bcd60e51b815260206004820152601860248201527f6e6f74206f776e6572206f6620424550323020746f6b656e0000000000000000604482015290519081900360640190fd5b677ce66c50e284000081565b6000805460ff16611692576040805162461bcd60e51b81526020600482015260196024820152600080516020612049833981519152604482015290519081900360640190fd5b3361100514610f575760405162461bcd60e51b815260040180806020018281038252602f815260200180611f19602f913960400191505060405180910390fd5b61100781565b61100681565b60005460ff1681565b61200281565b61300081565b600081565b3361100714610f575760405162461bcd60e51b815260040180806020018281038252602e815260200180611fc9602e913960400191505060405180910390fd5b6221272160e91b81565b61c35081565b60026020526000908152604090205481565b6001600160a01b031660009081526003602052604090205490565b61100281565b60085460ff16600214156117c7576040805162461bcd60e51b815260206004820152600e60248201526d4e6f2072652d656e7472616e637960901b604482015290519081900360640190fd5b6008805460ff191660021790556001600160a01b038083166000908152600760209081526040808320938516835292905220805461183f576040805162461bcd60e51b815260206004820152601060248201526f1b9bc81b1bd8dad95908185b5bdd5b9d60821b604482015290519081900360640190fd5b8060010154421015611898576040805162461bcd60e51b815260206004820152601760248201527f7374696c6c206f6e206c6f636b696e6720706572696f64000000000000000000604482015290519081900360640190fd5b805460008083556001600160a01b03851661190b576040516001600160a01b038516906127109084906000818181858888f193505050503d80600081146118fb576040519150601f19603f3d011682016040523d82523d6000602084013e611900565b606091505b50508091505061199e565b846001600160a01b031663a9059cbb61c35086856040518463ffffffff1660e01b815260040180836001600160a01b03166001600160a01b0316815260200182815260200192505050602060405180830381600088803b15801561196e57600080fd5b5087f1158015611982573d6000803e3d6000fd5b50505050506040513d602081101561199957600080fd5b505190505b806119f0576040805162461bcd60e51b815260206004820152601e60248201527f776974686472617720756e6c6f636b656420746f6b656e206661696c65640000604482015290519081900360640190fd5b836001600160a01b0316856001600160a01b03167f832fc3e25f2b3e6fb0eb59419a73cba405f2a249fce75f7e31ea5a457a0323f1846040518082815260200191505060405180910390a350506008805460ff19166001179055505050565b61100381565b61200481565b60003361200214610f57576040805162461bcd60e51b815260206004820152601f60248201527f746865206d73672073656e646572206d757374206265207374616b6548756200604482015290519081900360640190fd5b60005460ff1615611b0b576040805162461bcd60e51b815260206004820152601960248201527f74686520636f6e747261637420616c726561647920696e697400000000000000604482015290519081900360640190fd5b66071afd498d000060019081556000808052600260205260127fac33ff75c19e70fe83507db0d683fd3465c996598dc972688b7ace676c89077b55805460ff19169091179055565b60066020526000908152604090205481565b61100081565b61271081565b6001600160a01b03811660009081526003602090815260409182902054825182815280840190935260609290918391906020820181803683375050506020810183905290506000805b60208160ff161015611c0157828160ff1681518110611bd557fe5b01602001516001600160f81b03191615611bf457816001019150611bf9565b611c01565b600101611bba565b5060608160ff166040519080825280601f01601f191660200182016040528015611c32576020820181803683370190505b50905060005b8260ff168160ff161015611c8e57838160ff1681518110611c5557fe5b602001015160f81c60f81b828260ff1681518110611c6f57fe5b60200101906001600160f81b031916908160001a905350600101611c38565b5095945050505050565b61100481565b60006008821115611cc757611cc0836007198401600a0a63ffffffff611d8116565b9050611ce1565b611cde836008849003600a0a63ffffffff611dda16565b90505b92915050565b6001600160a01b0380841660009081526007602090815260408083209385168352929052208054611d1e908463ffffffff611e1c16565b81554262015180016001820181905560408051858152602081019290925280516001600160a01b03808616939088169289927f446d1aa056e7b903901f49880e9f252762c1b81dc4301cf28db6dae526497eaa9281900390910190a45050505050565b600082611d9057506000611ce1565b82820282848281611d9d57fe5b0414611cde5760405162461bcd60e51b8152600401808060200182810382526021815260200180611fa86021913960400191505060405180910390fd5b6000611cde83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250611e76565b600082820183811015611cde576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b60008183611f025760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b83811015611ec7578181015183820152602001611eaf565b50505050905090810190601f168015611ef45780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b506000838581611f0e57fe5b049594505050505056fe746865206d6573736167652073656e646572206d75737420626520696e63656e746976697a6520636f6e7472616374616d6f756e7420697320746f6f206c617267652c20657863656564206d6178696d756d206265703220746f6b656e20616d6f756e74746865206d73672073656e646572206d75737420626520746f6b656e207265636f76657220706f7274616c536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f77746865206d6573736167652073656e646572206d75737420626520676f7665726e616e636520636f6e7472616374746865206d6573736167652073656e646572206d7573742062652063726f737320636861696e20636f6e7472616374746865206d73672073656e646572206d75737420626520746f6b656e4d616e6167657274686520636f6e7472616374206e6f7420696e69742079657400000000000000a164736f6c6343000604000a \ No newline at end of file diff --git a/core/systemcontracts/pascal/chapel/TokenRecoverPortalContract b/core/systemcontracts/pascal/chapel/TokenRecoverPortalContract index 2dd2aa42ca..755d3c5966 100644 --- a/core/systemcontracts/pascal/chapel/TokenRecoverPortalContract +++ b/core/systemcontracts/pascal/chapel/TokenRecoverPortalContract @@ -1 +1 @@ -608060405234801561001057600080fd5b50600436106100f55760003560e01c80638129fc1c11610097578063b187bd2611610066578063b187bd26146101fc578063bfb5a6a114610207578063e33f8d321461021a578063e842426a1461023d57600080fd5b80638129fc1c146101cc5780638456cb59146101d45780639fcb5012146101dc578063ac431751146101e957600080fd5b80634838d165116100d35780634838d165146101335780634a49ac4c14610166578063572c99801461017957806374be21501461018c57600080fd5b8063046f7da2146100fa5780632eb4a7ab14610104578063417c73a714610120575b600080fd5b610102610268565b005b61010d60685481565b6040519081526020015b60405180910390f35b61010261012e366004611670565b6102f0565b610156610141366004611670565b60346020526000908152604090205460ff1681565b6040519015158152602001610117565b610102610174366004611670565b61036c565b61010261018736600461168b565b6103e5565b6101bf6040518060400160405280601481526020017342696e616e63652d436861696e2d47616e67657360601b81525081565b6040516101179190611707565b61010261047b565b6101026105ed565b6069546101569060ff1681565b6101026101f7366004611763565b610679565b60335460ff16610156565b610102610215366004611814565b610a98565b6101566102283660046118ee565b6000908152606a602052604090205460ff1690565b606754610250906001600160a01b031681565b6040516001600160a01b039091168152602001610117565b60335461010090046001600160a01b03163314610298576040516306fbb1e360e01b815260040160405180910390fd5b60335460ff166102bb57604051636cd6020160e01b815260040160405180910390fd5b6033805460ff191690556040517f62451d457bc659158be6e6247f56ec1df424a5c7597f71c20c2bc44e0965c8f990600090a1565b60335461010090046001600160a01b03163314610320576040516306fbb1e360e01b815260040160405180910390fd5b6001600160a01b038116600081815260346020526040808220805460ff19166001179055517f7fd26be6fc92aff63f1f4409b2b2ddeb272a888031d7f55ec830485ec61941869190a250565b60335461010090046001600160a01b0316331461039c576040516306fbb1e360e01b815260040160405180910390fd5b6001600160a01b038116600081815260346020526040808220805460ff19169055517fe0db3499b7fdc3da4cddff5f45d694549c19835e7f719fb5606d3ad1a5de40119190a250565b60335461010090046001600160a01b03163314610415576040516306fbb1e360e01b815260040160405180910390fd5b604051638525db0360e01b8152600481018390526001600160a01b038216602482015261100490638525db0390604401600060405180830381600087803b15801561045f57600080fd5b505af1158015610473573d6000803e3d6000fd5b505050505050565b600054610100900460ff161580801561049b5750600054600160ff909116105b806104b55750303b1580156104b5575060005460ff166001145b61051d5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084015b60405180910390fd5b6000805460ff191660011790558015610540576000805461ff0019166101001790555b3341146105605760405163022d8c9560e31b815260040160405180910390fd5b3a1561057f576040516383f1b1d360e01b815260040160405180910390fd5b610587610df8565b6105a47330151da466ec8ab345bef3d6983023e050fb0673610e25565b80156105ea576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b50565b60335461010090046001600160a01b0316331461061d576040516306fbb1e360e01b815260040160405180910390fd5b60335460ff161561064157604051631785c68160e01b815260040160405180910390fd5b6033805460ff191660011790556040517f9e87fac88ff661f02d44f95383c817fece4bce600a3dab7a54406878b965e75290600090a1565b336110071461069f57604051630f22c43960e41b81526110076004820152602401610514565b6107096040518060400160405280600f81526020016e617070726f76616c4164647265737360881b81525085858080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509293925050610e749050565b156107d357601481146107375783838383604051630a5a604160e01b81526004016105149493929190611930565b600061077d601484848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509293925050610ece9050565b90506001600160a01b0381166107ae5784848484604051630a5a604160e01b81526004016105149493929190611930565b606780546001600160a01b0319166001600160a01b0392909216919091179055610a55565b6108386040518060400160405280600a8152602001691b595c9adb19549bdbdd60b21b81525085858080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509293925050610e749050565b156109085760695460ff1615610861576040516379b3306f60e11b815260040160405180910390fd5b6020811461088a5783838383604051630a5a604160e01b81526004016105149493929190611930565b604080516020601f84018190048102820181019092528281526000916108cb918585808385018382808284376000920191909152509293925050610ece9050565b9050806108f35784848484604051630a5a604160e01b81526004016105149493929190611930565b6068556069805460ff19166001179055610a55565b6109806040518060400160405280601b81526020017f746f6b656e5265636f766572506f7274616c50726f746563746f72000000000081525085858080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509293925050610e749050565b15610a3457601481146109ae5783838383604051630a5a604160e01b81526004016105149493929190611930565b60006109f4601484848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509293925050610ece9050565b90506001600160a01b038116610a255784848484604051630a5a604160e01b81526004016105149493929190611930565b610a2e81610ed3565b50610a55565b838383836040516325ee20d560e21b81526004016105149493929190611930565b7ff1ce9b2cbf50eeb05769a29e2543fd350cab46894a7dd9978a12d534bb20e63384848484604051610a8a9493929190611930565b60405180910390a150505050565b60695460ff16610abb5760405163678f619760e11b815260040160405180910390fd5b606854610adb5760405163678f619760e11b815260040160405180910390fd5b6067546001600160a01b0316610b0457604051631a1b977b60e31b815260040160405180910390fd5b60335460ff1615610b2857604051631785c68160e01b815260040160405180910390fd5b610b30610f3a565b6000610bbe89898080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050604080516020601f8d018190048102820181019092528b815292508b91508a9081908401838280828437600081840152601f19601f82011690508083019250505050505050610bb98e8e33610f93565b6110b4565b90506000818c8c604051602001610bd793929190611962565b604051602081830303815290604052805190602001209050610c08816000908152606a602052604090205460ff1690565b15610c2557604051623e493160e81b815260040160405180910390fd5b610ccd3389898080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050604080516020601f8d018190048102820181019092528b815292508b91508a908190840183828082843760009201919091525050604080516020808c0282810182019093528b82528994509092508b918b9182919085019084908082843760009201919091525061118c92505050565b610d0e848480806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250506068549150849050611297565b610d2b576040516309bde33960e01b815260040160405180910390fd5b6000818152606a602052604090819020805460ff191660011790555163799758b960e01b8152600481018d9052336024820152604481018c90526110049063799758b990606401600060405180830381600087803b158015610d8c57600080fd5b505af1158015610da0573d6000803e3d6000fd5b505050507f39cc0b7297a0ef9102d75ebc4919ffec0347d50008c2b865eda4125d5812cb64828d338e604051610dd99493929190611989565b60405180910390a15050610dec60018055565b50505050505050505050565b600054610100900460ff16610e1f5760405162461bcd60e51b8152600401610514906119c1565b60018055565b600054610100900460ff16610e4c5760405162461bcd60e51b8152600401610514906119c1565b603380546001600160a01b0390921661010002610100600160a81b0319909216919091179055565b600081604051602001610e879190611a0c565b6040516020818303038152906040528051906020012083604051602001610eae9190611a0c565b604051602081830303815290604052805190602001201490505b92915050565b015190565b6033546040516001600160a01b0380841692610100900416907f44fc1b38a4abaa91ebd1b628a5b259a698f86238c8217d68f516e87769c60c0b90600090a3603380546001600160a01b0390921661010002610100600160a81b0319909216919091179055565b600260015403610f8c5760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610514565b6002600155565b600060026040518060400160405280601481526020017342696e616e63652d436861696e2d47616e67657360601b815250610ff085604051602001610fda91815260200190565b60405160208183030381529060405260006112ad565b6040516bffffffffffffffffffffffff19606087901b1660208201526110299060340160405160208183030381529060405260016112ad565b61103f88604051602001610fda91815260200190565b6040516020016110529493929190611a28565b60408051601f198184030181529082905261106c91611a0c565b602060405180830381855afa158015611089573d6000803e3d6000fd5b5050506040513d601f19601f820116820180604052508101906110ac9190611b57565b949350505050565b606083516021146110d857604051638152ea1b60e01b815260040160405180910390fd5b82516040146110fa57604051635e4bd79760e11b815260040160405180910390fd5b604080516020808252818301909252600091602082018180368337019050509050826020820152600085858360405160200161113893929190611b86565b60408051808303601f190181526014808452838301909252925060009190602082018180368337019050509050815160146020830182602086016069600019fa61118157600080fd5b509695505050505050565b606060005b82518110156111ea57818382815181106111ad576111ad611bc9565b60200260200101516040516020016111c6929190611bdf565b604051602081830303815290604052915080806111e290611c17565b915050611191565b5060006040518060400160405280601481526020017342696e616e63652d436861696e2d47616e67657360601b8152508787866068548660405160200161123696959493929190611c30565b60408051601f1981840301815291905280516020909101206067549091506001600160a01b0316611267868361147f565b6001600160a01b03161461128e576040516356b00a4f60e11b815260040160405180910390fd5b50505050505050565b6000826112a48584611519565b14949350505050565b60606000835160026112bf9190611ca1565b67ffffffffffffffff8111156112d7576112d7611b70565b6040519080825280601f01601f191660200182016040528015611301576020820181803683370190505b5060408051808201909152601081526f181899199a1a9b1b9c1cb0b131b232b360811b602082015290915060005b85518110156114475781825187838151811061134d5761134d611bc9565b016020015161135f919060f81c611cce565b8151811061136f5761136f611bc9565b01602001516001600160f81b0319168361138a836002611ca1565b8151811061139a5761139a611bc9565b60200101906001600160f81b031916908160001a9053508182518783815181106113c6576113c6611bc9565b01602001516113d8919060f81c611ce2565b815181106113e8576113e8611bc9565b01602001516001600160f81b03191683611403836002611ca1565b61140e906001611cf6565b8151811061141e5761141e611bc9565b60200101906001600160f81b031916908160001a9053508061143f81611c17565b91505061132f565b508315611477578160405160200161145f9190611d09565b60405160208183030381529060405292505050610ec8565b509392505050565b600082516041146114a3576040516356b00a4f60e11b815260040160405180910390fd5b60208301516040840151606085015160001a601b8110156114cc576114c9601b82611d33565b90505b601b8160ff1610806114e15750601c8160ff16115b156114ff576040516356b00a4f60e11b815260040160405180910390fd5b600061150d8683868661155e565b50979650505050505050565b600081815b84518110156114775761154a8286838151811061153d5761153d611bc9565b6020026020010151611622565b91508061155681611c17565b91505061151e565b6000807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a08311156115955750600090506003611619565b6040805160008082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa1580156115e9573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b03811661161257600060019250925050611619565b9150600090505b94509492505050565b600081831061163e57600082815260208490526040902061164d565b60008381526020839052604090205b9392505050565b80356001600160a01b038116811461166b57600080fd5b919050565b60006020828403121561168257600080fd5b61164d82611654565b6000806040838503121561169e57600080fd5b823591506116ae60208401611654565b90509250929050565b60005b838110156116d25781810151838201526020016116ba565b50506000910152565b600081518084526116f38160208601602086016116b7565b601f01601f19169290920160200192915050565b60208152600061164d60208301846116db565b60008083601f84011261172c57600080fd5b50813567ffffffffffffffff81111561174457600080fd5b60208301915083602082850101111561175c57600080fd5b9250929050565b6000806000806040858703121561177957600080fd5b843567ffffffffffffffff8082111561179157600080fd5b61179d8883890161171a565b909650945060208701359150808211156117b657600080fd5b506117c38782880161171a565b95989497509550505050565b60008083601f8401126117e157600080fd5b50813567ffffffffffffffff8111156117f957600080fd5b6020830191508360208260051b850101111561175c57600080fd5b60008060008060008060008060008060c08b8d03121561183357600080fd5b8a35995060208b0135985060408b013567ffffffffffffffff8082111561185957600080fd5b6118658e838f0161171a565b909a50985060608d013591508082111561187e57600080fd5b61188a8e838f0161171a565b909850965060808d01359150808211156118a357600080fd5b6118af8e838f0161171a565b909650945060a08d01359150808211156118c857600080fd5b506118d58d828e016117cf565b915080935050809150509295989b9194979a5092959850565b60006020828403121561190057600080fd5b5035919050565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b604081526000611944604083018688611907565b8281036020840152611957818587611907565b979650505050505050565b600084516119748184602089016116b7565b91909101928352506020820152604001919050565b60808152600061199c60808301876116db565b6020830195909552506001600160a01b03929092166040830152606090910152919050565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b60008251611a1e8184602087016116b7565b9190910192915050565b7f7b226163636f756e745f6e756d626572223a2230222c22636861696e5f6964228152611d1160f11b602082015260008551611a6b816022850160208a016116b7565b7f222c2264617461223a6e756c6c2c226d656d6f223a22222c226d736773223a5b6022918401918201526a3d9130b6b7bab73a111d1160a91b60428201528551611abc81604d840160208a016116b7565b6e1116113932b1b4b834b2b73a111d1160891b604d92909101918201528451611aec81605c8401602089016116b7565b711116113a37b5b2b72fb9bcb6b137b6111d1160711b605c92909101918201528351611b1f81606e8401602088016116b7565b7f227d5d2c2273657175656e6365223a2230222c22736f75726365223a2230227d606e9290910191820152608e019695505050505050565b600060208284031215611b6957600080fd5b5051919050565b634e487b7160e01b600052604160045260246000fd5b60008451611b988184602089016116b7565b845190830190611bac8183602089016116b7565b8451910190611bbf8183602088016116b7565b0195945050505050565b634e487b7160e01b600052603260045260246000fd5b60008351611bf18184602088016116b7565b9190910191825250602001919050565b634e487b7160e01b600052601160045260246000fd5b600060018201611c2957611c29611c01565b5060010190565b60008751611c42818460208c016116b7565b606088901b6bffffffffffffffffffffffff19169083019081528651611c6f816014840160208b016116b7565b0160148101869052603481018590528351611c918160548401602088016116b7565b0160540198975050505050505050565b8082028115828204841417610ec857610ec8611c01565b634e487b7160e01b600052601260045260246000fd5b600082611cdd57611cdd611cb8565b500490565b600082611cf157611cf1611cb8565b500690565b80820180821115610ec857610ec8611c01565b61060f60f31b815260008251611d268160028501602087016116b7565b9190910160020192915050565b60ff8181168382160190811115610ec857610ec8611c0156fea164736f6c6343000811000a \ No newline at end of file +608060405234801561001057600080fd5b50600436106101005760003560e01c80638456cb5911610097578063bfb5a6a111610066578063bfb5a6a114610212578063dd42a1dd14610225578063e33f8d321461024f578063e842426a1461027257600080fd5b80638456cb59146101df5780639fcb5012146101e7578063ac431751146101f4578063b187bd261461020757600080fd5b80634a49ac4c116100d35780634a49ac4c14610171578063572c99801461018457806374be2150146101975780638129fc1c146101d757600080fd5b8063046f7da2146101055780632eb4a7ab1461010f578063417c73a71461012b5780634838d1651461013e575b600080fd5b61010d610285565b005b61011860685481565b6040519081526020015b60405180910390f35b61010d61013936600461168d565b61030d565b61016161014c36600461168d565b60346020526000908152604090205460ff1681565b6040519015158152602001610122565b61010d61017f36600461168d565b610389565b61010d6101923660046116a8565b610402565b6101ca6040518060400160405280601481526020017342696e616e63652d436861696e2d47616e67657360601b81525081565b6040516101229190611724565b61010d610498565b61010d61060a565b6069546101619060ff1681565b61010d610202366004611780565b610696565b60335460ff16610161565b61010d610220366004611831565b610ab5565b60335461010090046001600160a01b03165b6040516001600160a01b039091168152602001610122565b61016161025d36600461190b565b6000908152606a602052604090205460ff1690565b606754610237906001600160a01b031681565b60335461010090046001600160a01b031633146102b5576040516306fbb1e360e01b815260040160405180910390fd5b60335460ff166102d857604051636cd6020160e01b815260040160405180910390fd5b6033805460ff191690556040517f62451d457bc659158be6e6247f56ec1df424a5c7597f71c20c2bc44e0965c8f990600090a1565b60335461010090046001600160a01b0316331461033d576040516306fbb1e360e01b815260040160405180910390fd5b6001600160a01b038116600081815260346020526040808220805460ff19166001179055517f7fd26be6fc92aff63f1f4409b2b2ddeb272a888031d7f55ec830485ec61941869190a250565b60335461010090046001600160a01b031633146103b9576040516306fbb1e360e01b815260040160405180910390fd5b6001600160a01b038116600081815260346020526040808220805460ff19169055517fe0db3499b7fdc3da4cddff5f45d694549c19835e7f719fb5606d3ad1a5de40119190a250565b60335461010090046001600160a01b03163314610432576040516306fbb1e360e01b815260040160405180910390fd5b604051638525db0360e01b8152600481018390526001600160a01b038216602482015261100490638525db0390604401600060405180830381600087803b15801561047c57600080fd5b505af1158015610490573d6000803e3d6000fd5b505050505050565b600054610100900460ff16158080156104b85750600054600160ff909116105b806104d25750303b1580156104d2575060005460ff166001145b61053a5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084015b60405180910390fd5b6000805460ff19166001179055801561055d576000805461ff0019166101001790555b33411461057d5760405163022d8c9560e31b815260040160405180910390fd5b3a1561059c576040516383f1b1d360e01b815260040160405180910390fd5b6105a4610e15565b6105c17330151da466ec8ab345bef3d6983023e050fb0673610e42565b8015610607576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b50565b60335461010090046001600160a01b0316331461063a576040516306fbb1e360e01b815260040160405180910390fd5b60335460ff161561065e57604051631785c68160e01b815260040160405180910390fd5b6033805460ff191660011790556040517f9e87fac88ff661f02d44f95383c817fece4bce600a3dab7a54406878b965e75290600090a1565b33611007146106bc57604051630f22c43960e41b81526110076004820152602401610531565b6107266040518060400160405280600f81526020016e617070726f76616c4164647265737360881b81525085858080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509293925050610e919050565b156107f057601481146107545783838383604051630a5a604160e01b8152600401610531949392919061194d565b600061079a601484848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509293925050610eeb9050565b90506001600160a01b0381166107cb5784848484604051630a5a604160e01b8152600401610531949392919061194d565b606780546001600160a01b0319166001600160a01b0392909216919091179055610a72565b6108556040518060400160405280600a8152602001691b595c9adb19549bdbdd60b21b81525085858080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509293925050610e919050565b156109255760695460ff161561087e576040516379b3306f60e11b815260040160405180910390fd5b602081146108a75783838383604051630a5a604160e01b8152600401610531949392919061194d565b604080516020601f84018190048102820181019092528281526000916108e8918585808385018382808284376000920191909152509293925050610eeb9050565b9050806109105784848484604051630a5a604160e01b8152600401610531949392919061194d565b6068556069805460ff19166001179055610a72565b61099d6040518060400160405280601b81526020017f746f6b656e5265636f766572506f7274616c50726f746563746f72000000000081525085858080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509293925050610e919050565b15610a5157601481146109cb5783838383604051630a5a604160e01b8152600401610531949392919061194d565b6000610a11601484848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509293925050610eeb9050565b90506001600160a01b038116610a425784848484604051630a5a604160e01b8152600401610531949392919061194d565b610a4b81610ef0565b50610a72565b838383836040516325ee20d560e21b8152600401610531949392919061194d565b7ff1ce9b2cbf50eeb05769a29e2543fd350cab46894a7dd9978a12d534bb20e63384848484604051610aa7949392919061194d565b60405180910390a150505050565b60695460ff16610ad85760405163678f619760e11b815260040160405180910390fd5b606854610af85760405163678f619760e11b815260040160405180910390fd5b6067546001600160a01b0316610b2157604051631a1b977b60e31b815260040160405180910390fd5b60335460ff1615610b4557604051631785c68160e01b815260040160405180910390fd5b610b4d610f57565b6000610bdb89898080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050604080516020601f8d018190048102820181019092528b815292508b91508a9081908401838280828437600081840152601f19601f82011690508083019250505050505050610bd68e8e33610fb0565b6110d1565b90506000818c8c604051602001610bf49392919061197f565b604051602081830303815290604052805190602001209050610c25816000908152606a602052604090205460ff1690565b15610c4257604051623e493160e81b815260040160405180910390fd5b610cea3389898080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050604080516020601f8d018190048102820181019092528b815292508b91508a908190840183828082843760009201919091525050604080516020808c0282810182019093528b82528994509092508b918b918291908501908490808284376000920191909152506111a992505050565b610d2b8484808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152505060685491508490506112b4565b610d48576040516309bde33960e01b815260040160405180910390fd5b6000818152606a602052604090819020805460ff191660011790555163799758b960e01b8152600481018d9052336024820152604481018c90526110049063799758b990606401600060405180830381600087803b158015610da957600080fd5b505af1158015610dbd573d6000803e3d6000fd5b505050507f39cc0b7297a0ef9102d75ebc4919ffec0347d50008c2b865eda4125d5812cb64828d338e604051610df694939291906119a6565b60405180910390a15050610e0960018055565b50505050505050505050565b600054610100900460ff16610e3c5760405162461bcd60e51b8152600401610531906119de565b60018055565b600054610100900460ff16610e695760405162461bcd60e51b8152600401610531906119de565b603380546001600160a01b0390921661010002610100600160a81b0319909216919091179055565b600081604051602001610ea49190611a29565b6040516020818303038152906040528051906020012083604051602001610ecb9190611a29565b604051602081830303815290604052805190602001201490505b92915050565b015190565b6033546040516001600160a01b0380841692610100900416907f44fc1b38a4abaa91ebd1b628a5b259a698f86238c8217d68f516e87769c60c0b90600090a3603380546001600160a01b0390921661010002610100600160a81b0319909216919091179055565b600260015403610fa95760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610531565b6002600155565b600060026040518060400160405280601481526020017342696e616e63652d436861696e2d47616e67657360601b81525061100d85604051602001610ff791815260200190565b60405160208183030381529060405260006112ca565b6040516bffffffffffffffffffffffff19606087901b1660208201526110469060340160405160208183030381529060405260016112ca565b61105c88604051602001610ff791815260200190565b60405160200161106f9493929190611a45565b60408051601f198184030181529082905261108991611a29565b602060405180830381855afa1580156110a6573d6000803e3d6000fd5b5050506040513d601f19601f820116820180604052508101906110c99190611b74565b949350505050565b606083516021146110f557604051638152ea1b60e01b815260040160405180910390fd5b825160401461111757604051635e4bd79760e11b815260040160405180910390fd5b604080516020808252818301909252600091602082018180368337019050509050826020820152600085858360405160200161115593929190611ba3565b60408051808303601f190181526014808452838301909252925060009190602082018180368337019050509050815160146020830182602086016069600019fa61119e57600080fd5b509695505050505050565b606060005b825181101561120757818382815181106111ca576111ca611be6565b60200260200101516040516020016111e3929190611bfc565b604051602081830303815290604052915080806111ff90611c34565b9150506111ae565b5060006040518060400160405280601481526020017342696e616e63652d436861696e2d47616e67657360601b8152508787866068548660405160200161125396959493929190611c4d565b60408051601f1981840301815291905280516020909101206067549091506001600160a01b0316611284868361149c565b6001600160a01b0316146112ab576040516356b00a4f60e11b815260040160405180910390fd5b50505050505050565b6000826112c18584611536565b14949350505050565b60606000835160026112dc9190611cbe565b67ffffffffffffffff8111156112f4576112f4611b8d565b6040519080825280601f01601f19166020018201604052801561131e576020820181803683370190505b5060408051808201909152601081526f181899199a1a9b1b9c1cb0b131b232b360811b602082015290915060005b85518110156114645781825187838151811061136a5761136a611be6565b016020015161137c919060f81c611ceb565b8151811061138c5761138c611be6565b01602001516001600160f81b031916836113a7836002611cbe565b815181106113b7576113b7611be6565b60200101906001600160f81b031916908160001a9053508182518783815181106113e3576113e3611be6565b01602001516113f5919060f81c611cff565b8151811061140557611405611be6565b01602001516001600160f81b03191683611420836002611cbe565b61142b906001611d13565b8151811061143b5761143b611be6565b60200101906001600160f81b031916908160001a9053508061145c81611c34565b91505061134c565b508315611494578160405160200161147c9190611d26565b60405160208183030381529060405292505050610ee5565b509392505050565b600082516041146114c0576040516356b00a4f60e11b815260040160405180910390fd5b60208301516040840151606085015160001a601b8110156114e9576114e6601b82611d50565b90505b601b8160ff1610806114fe5750601c8160ff16115b1561151c576040516356b00a4f60e11b815260040160405180910390fd5b600061152a8683868661157b565b50979650505050505050565b600081815b8451811015611494576115678286838151811061155a5761155a611be6565b602002602001015161163f565b91508061157381611c34565b91505061153b565b6000807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a08311156115b25750600090506003611636565b6040805160008082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa158015611606573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b03811661162f57600060019250925050611636565b9150600090505b94509492505050565b600081831061165b57600082815260208490526040902061166a565b60008381526020839052604090205b9392505050565b80356001600160a01b038116811461168857600080fd5b919050565b60006020828403121561169f57600080fd5b61166a82611671565b600080604083850312156116bb57600080fd5b823591506116cb60208401611671565b90509250929050565b60005b838110156116ef5781810151838201526020016116d7565b50506000910152565b600081518084526117108160208601602086016116d4565b601f01601f19169290920160200192915050565b60208152600061166a60208301846116f8565b60008083601f84011261174957600080fd5b50813567ffffffffffffffff81111561176157600080fd5b60208301915083602082850101111561177957600080fd5b9250929050565b6000806000806040858703121561179657600080fd5b843567ffffffffffffffff808211156117ae57600080fd5b6117ba88838901611737565b909650945060208701359150808211156117d357600080fd5b506117e087828801611737565b95989497509550505050565b60008083601f8401126117fe57600080fd5b50813567ffffffffffffffff81111561181657600080fd5b6020830191508360208260051b850101111561177957600080fd5b60008060008060008060008060008060c08b8d03121561185057600080fd5b8a35995060208b0135985060408b013567ffffffffffffffff8082111561187657600080fd5b6118828e838f01611737565b909a50985060608d013591508082111561189b57600080fd5b6118a78e838f01611737565b909850965060808d01359150808211156118c057600080fd5b6118cc8e838f01611737565b909650945060a08d01359150808211156118e557600080fd5b506118f28d828e016117ec565b915080935050809150509295989b9194979a5092959850565b60006020828403121561191d57600080fd5b5035919050565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b604081526000611961604083018688611924565b8281036020840152611974818587611924565b979650505050505050565b600084516119918184602089016116d4565b91909101928352506020820152604001919050565b6080815260006119b960808301876116f8565b6020830195909552506001600160a01b03929092166040830152606090910152919050565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b60008251611a3b8184602087016116d4565b9190910192915050565b7f7b226163636f756e745f6e756d626572223a2230222c22636861696e5f6964228152611d1160f11b602082015260008551611a88816022850160208a016116d4565b7f222c2264617461223a6e756c6c2c226d656d6f223a22222c226d736773223a5b6022918401918201526a3d9130b6b7bab73a111d1160a91b60428201528551611ad981604d840160208a016116d4565b6e1116113932b1b4b834b2b73a111d1160891b604d92909101918201528451611b0981605c8401602089016116d4565b711116113a37b5b2b72fb9bcb6b137b6111d1160711b605c92909101918201528351611b3c81606e8401602088016116d4565b7f227d5d2c2273657175656e6365223a2230222c22736f75726365223a2230227d606e9290910191820152608e019695505050505050565b600060208284031215611b8657600080fd5b5051919050565b634e487b7160e01b600052604160045260246000fd5b60008451611bb58184602089016116d4565b845190830190611bc98183602089016116d4565b8451910190611bdc8183602088016116d4565b0195945050505050565b634e487b7160e01b600052603260045260246000fd5b60008351611c0e8184602088016116d4565b9190910191825250602001919050565b634e487b7160e01b600052601160045260246000fd5b600060018201611c4657611c46611c1e565b5060010190565b60008751611c5f818460208c016116d4565b606088901b6bffffffffffffffffffffffff19169083019081528651611c8c816014840160208b016116d4565b0160148101869052603481018590528351611cae8160548401602088016116d4565b0160540198975050505050505050565b8082028115828204841417610ee557610ee5611c1e565b634e487b7160e01b600052601260045260246000fd5b600082611cfa57611cfa611cd5565b500490565b600082611d0e57611d0e611cd5565b500690565b80820180821115610ee557610ee5611c1e565b61060f60f31b815260008251611d438160028501602087016116d4565b9190910160020192915050565b60ff8181168382160190811115610ee557610ee5611c1e56fea164736f6c6343000811000a \ No newline at end of file diff --git a/core/systemcontracts/pascal/chapel/ValidatorContract b/core/systemcontracts/pascal/chapel/ValidatorContract index 683ccf1881..8468e0ab87 100644 --- a/core/systemcontracts/pascal/chapel/ValidatorContract +++ b/core/systemcontracts/pascal/chapel/ValidatorContract @@ -1 +1 @@ -6080604052600436106104565760003560e01c80638c5d749d1161023f578063c81b166211610139578063e1c7392a116100b6578063f92eb86b1161007a578063f92eb86b14610b7f578063f9a2bbc714610b94578063fccc281314610ba9578063fd4ad81f14610bbe578063fd6a687914610bed5761045d565b8063e1c7392a14610b02578063e40716a114610b17578063ea321e4914610b2c578063eb57e20214610b4c578063f340fa0114610b6c5761045d565b8063d68fb56a116100fd578063d68fb56a14610a99578063daacdb6614610aae578063dc927faf14610ac3578063df8079e914610ad8578063e086c7b114610aed5761045d565b8063c81b166214610a3a578063c8509d81146107fc578063cb75a59214610a4f578063ce910b0c14610a64578063d58918ae14610a845761045d565b8063aa82dce1116101c7578063aef198a91161018b578063aef198a9146109c4578063b7ab4db5146109d9578063b8cf4ef1146109fb578063c466689d14610a10578063c6d3394514610a255761045d565b8063aa82dce114610938578063aad560631461094d578063ab51bb9614610962578063ac43175114610984578063ad3c9da6146109a45761045d565b80639fe0f8161161020e5780639fe0f816146108cf578063a0dc2758146108e4578063a1a11bf5146108f9578063a5422d5c1461090e578063a78abc16146109235761045d565b80638c5d749d146108705780638d19a410146108855780639369d7de146108a55780639dc09262146108ba5761045d565b80635192c82c1161035057806375d47a0a116102d8578063831d65d11161029c578063831d65d1146107fc578063862498821461081c57806388b32f11146108315780638a7beb01146108465780638b5ad0c91461085b5761045d565b806375d47a0a1461079357806378dfed4a146107a85780637a84ca2a146107bd5780637e434d54146107d2578063820dcaa8146107e75761045d565b8063565c56b31161031f578063565c56b3146106f757806360eba4fe1461071757806362b72cf5146107375780636969a25c1461074c5780636e47b4821461077e5761045d565b80635192c82c1461069857806351b4dce3146106ad57806351e80672146106c257806355614fcc146106d75761045d565b80632a0ffb6e116103de5780633b071dcc116103a25780633b071dcc1461061457806343756e5c1461063757806345cf9daf1461064c578063493279b1146106615780634df6e0c3146106835761045d565b80632a0ffb6e14610574578063300c356714610594578063321d398a146105b45780633365af3a146105d457806335409f7f146105f45761045d565b8063152ad3b811610425578063152ad3b8146104f35780631bd14ed8146105155780631e4c15241461052a5780631ff180691461054a578063280870281461055f5761045d565b806304c4fec61461046257806307a56847146104795780630e2374a5146104a45780631182b875146104c65761045d565b3661045d57005b600080fd5b34801561046e57600080fd5b50610477610c02565b005b34801561048557600080fd5b5061048e610c76565b60405161049b9190616d4d565b60405180910390f35b3480156104b057600080fd5b506104b9610c7c565b60405161049b9190616103565b3480156104d257600080fd5b506104e66104e1366004615fe9565b610c82565b60405161049b9190616223565b3480156104ff57600080fd5b50610508610d9e565b60405161049b9190616218565b34801561052157600080fd5b5061048e610da7565b34801561053657600080fd5b50610477610545366004615e17565b610dad565b34801561055657600080fd5b5061048e6110e1565b34801561056b57600080fd5b506104b96110e7565b34801561058057600080fd5b5061047761058f366004615d77565b6110ed565b3480156105a057600080fd5b506104776105af366004615daf565b61110e565b3480156105c057600080fd5b506105086105cf366004615f96565b611457565b3480156105e057600080fd5b506105086105ef366004615f96565b611526565b34801561060057600080fd5b5061047761060f366004615d77565b6115d7565b34801561062057600080fd5b5061062961173c565b60405161049b9291906161a8565b34801561064357600080fd5b506104b9611a18565b34801561065857600080fd5b5061048e611a1e565b34801561066d57600080fd5b50610676611a24565b60405161049b9190616d3e565b34801561068f57600080fd5b50610629611a29565b3480156106a457600080fd5b5061048e611bb5565b3480156106b957600080fd5b506104b9611bbb565b3480156106ce57600080fd5b506104b9611bc1565b3480156106e357600080fd5b506105086106f2366004615d77565b611bc7565b34801561070357600080fd5b5061048e610712366004615d77565b611c03565b34801561072357600080fd5b506104e6610732366004615f96565b611c54565b34801561074357600080fd5b5061048e611cfa565b34801561075857600080fd5b5061076c610767366004615f96565b611d00565b60405161049b96959493929190616130565b34801561078a57600080fd5b506104b9611d64565b34801561079f57600080fd5b506104b9611d6a565b3480156107b457600080fd5b5061048e611d70565b3480156107c957600080fd5b5061048e611d76565b3480156107de57600080fd5b506104b9611d7c565b3480156107f357600080fd5b5061048e611d82565b34801561080857600080fd5b50610477610817366004615fe9565b611d88565b34801561082857600080fd5b5061048e611da9565b34801561083d57600080fd5b5061048e611daf565b34801561085257600080fd5b50610508611db5565b34801561086757600080fd5b5061048e611dbe565b34801561087c57600080fd5b5061048e611dc4565b34801561089157600080fd5b5061048e6108a0366004615d77565b611de1565b3480156108b157600080fd5b50610477611e21565b3480156108c657600080fd5b506104b9611f35565b3480156108db57600080fd5b5061048e611f3b565b3480156108f057600080fd5b5061048e611f40565b34801561090557600080fd5b506104b9611f45565b34801561091a57600080fd5b506104e6611f4b565b34801561092f57600080fd5b50610508611f6a565b34801561094457600080fd5b506104b9611f73565b34801561095957600080fd5b506104b9611f79565b34801561096e57600080fd5b50610977611f7f565b60405161049b9190616d80565b34801561099057600080fd5b5061047761099f366004615f3a565b611f84565b3480156109b057600080fd5b5061048e6109bf366004615d77565b612976565b3480156109d057600080fd5b5061048e612988565b3480156109e557600080fd5b506109ee612995565b60405161049b9190616195565b348015610a0757600080fd5b5061048e612a80565b348015610a1c57600080fd5b5061048e612a85565b348015610a3157600080fd5b5061048e612a8b565b348015610a4657600080fd5b506104b9612a90565b348015610a5b57600080fd5b5061048e612a96565b348015610a7057600080fd5b506104e6610a7f366004615f96565b612a9c565b348015610a9057600080fd5b5061048e612aa9565b348015610aa557600080fd5b5061048e612aaf565b348015610aba57600080fd5b5061048e612aee565b348015610acf57600080fd5b506104b9612af4565b348015610ae457600080fd5b506104b9612afa565b348015610af957600080fd5b5061048e612b00565b348015610b0e57600080fd5b50610477612b05565b348015610b2357600080fd5b5061048e612cae565b348015610b3857600080fd5b50610508610b47366004615efb565b612cb4565b348015610b5857600080fd5b50610477610b67366004615d77565b612e3a565b610477610b7a366004615d77565b612f42565b348015610b8b57600080fd5b5061048e6132f8565b348015610ba057600080fd5b506104b96132fe565b348015610bb557600080fd5b506104b9613304565b348015610bca57600080fd5b50610bde610bd9366004615f96565b61330a565b60405161049b93929190616d56565b348015610bf957600080fd5b506104b96133cc565b6000610c0d33611de1565b9050600b8181548110610c1c57fe5b600091825260209091206001601690920201015460ff16610c585760405162461bcd60e51b8152600401610c4f906169f5565b60405180910390fd5b6000610c62612aaf565b9050610c7133838360016133d2565b505050565b60095481565b61200181565b60005460609060ff16610ca75760405162461bcd60e51b8152600401610c4f906163ab565b3361200014610cc85760405162461bcd60e51b8152600401610c4f90616b56565b600b54610d8657610cd7615923565b60015460005b81811015610d8257600b80546001810182556000919091528351600080516020616fc383398151915260169092029182019081556020808601516000805160206170038339815191528401805460ff1916911515919091179055604086015180518794610d5e93600080516020616fe3833981519152909101920190615952565b506060820151610d7490600383019060136159cc565b505050806001019050610cdd565b5050505b60405162461bcd60e51b8152600401610c4f9061665a565b60075460ff1681565b600f5481565b334114610dcc5760405162461bcd60e51b8152600401610c4f90616ba5565b3a15610dea5760405162461bcd60e51b8152600401610c4f90616934565b8251604080518281526020808402820101909152606090828015610e2857816020015b610e156159f9565b815260200190600190039081610e0d5790505b50905060005b82811015610ed2576040518060c00160405280878381518110610e4d57fe5b60200260200101516001600160a01b0316815260200160006001600160a01b0316815260200160006001600160a01b03168152602001868381518110610e8f57fe5b60200260200101516001600160401b031681526020016000151581526020016000815250828281518110610ebf57fe5b6020908102919091010152600101610e2e565b50606080610ee083866135c4565b9150915060005b600154811015610fd657600060018281548110610f0057fe5b906000526020600020906004020160030154905080600014610fcd57600060018381548110610f2b57fe5b9060005260206000209060040201600301819055506120026001600160a01b031663092193ab8260018581548110610f5f57fe5b60009182526020909120600491820201546040516001600160e01b031960e086901b168152610f9a926001600160a01b039092169101616103565b6000604051808303818588803b158015610fb357600080fd5b505af1158015610fc7573d6000803e3d6000fd5b50505050505b50600101610ee7565b504715611044577f6ecc855f9440a9282c90913bbc91619fd44f5ec0b462af28d127b116f130aa4d4760405161100c9190616d4d565b60405180910390a1604051611002904780156108fc02916000818181858888f19350505050158015611042573d6000803e3d6000fd5b505b600060035581511561105a5761105a8282613aae565b6110016001600160a01b031663fc4333cd6040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561109757600080fd5b505af11580156110ab573d6000803e3d6000fd5b50506040517fedd8d7296956dd970ab4de3f2fc03be2b0ffc615d20cd4c72c6e44f928630ebf925060009150a150505050505050565b60035481565b61200581565b3361200214610d865760405162461bcd60e51b8152600401610c4f90616d07565b33411461112d5760405162461bcd60e51b8152600401610c4f90616ba5565b601054431161114e5760405162461bcd60e51b8152600401610c4f90616584565b3a1561116c5760405162461bcd60e51b8152600401610c4f90616934565b60005460ff1661118e5760405162461bcd60e51b8152600401610c4f906163ab565b60006110023168056bc75e2d631000008111156111c5576111be8168056bc75e2d6310000063ffffffff61429d16565b91506111cc565b505061144d565b6040516309a99b4f60e41b815261100290639a99b4f0906111f39030908690600401616117565b602060405180830381600087803b15801561120d57600080fd5b505af1158015611221573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112459190615fae565b91508161125357505061144d565b6000805b848110156112815785858281811061126b57fe5b9050602002013582019150806001019050611257565b508061128f5750505061144d565b6000806000805b8981101561144557848989838181106112ab57fe5b905060200201358802816112bb57fe5b0493508a8a828181106112ca57fe5b90506020020160208101906112df9190615d77565b6001600160a01b038116600090815260046020526040902054909350915081156113fb57600060018084038154811061131457fe5b9060005260206000209060040201905080600201601c9054906101000a900460ff161561138157836001600160a01b03167fb9c75cbbfde137c4281689580799ef5f52144e78858f776a5979b2b212137d85866040516113749190616d4d565b60405180910390a26113f5565b600354611394908663ffffffff6142df16565b60039081558101546113ac908663ffffffff6142df16565b60038201556040516001600160a01b038516907fcb0aad6cf9cd03bdf6137e359f541c42f38b39f007cae8e89e88aa7d8c6617b2906113ec908890616d4d565b60405180910390a25b5061143d565b826001600160a01b03167fb9c75cbbfde137c4281689580799ef5f52144e78858f776a5979b2b212137d85856040516114349190616d4d565b60405180910390a25b600101611296565b505050505050505b5050436010555050565b600154600090821061146b57506000611521565b60006001600160a01b03166001838154811061148357fe5b60009182526020909120600490910201546001600160a01b031614806114b3575060085415806114b35750600a54155b806114c2575060085460095410155b806114d357506114d182611526565b155b806114fc57506000600b83815481106114e857fe5b906000526020600020906016020160000154115b806115105750600161150c612995565b5111155b1561151d57506000611521565b5060015b919050565b600154600090821061153a57506000611521565b600b548210611577576001828154811061155057fe5b9060005260206000209060040201600201601c9054906101000a900460ff16159050611521565b6001828154811061158457fe5b9060005260206000209060040201600201601c9054906101000a900460ff161580156115d15750600b82815481106115b857fe5b600091825260209091206001601690920201015460ff16155b92915050565b600b54611695576115e6615923565b60015460005b8181101561169157600b80546001810182556000919091528351600080516020616fc383398151915260169092029182019081556020808601516000805160206170038339815191528401805460ff191691151591909117905560408601518051879461166d93600080516020616fe3833981519152909101920190615952565b50606082015161168390600383019060136159cc565b5050508060010190506115ec565b5050505b3361100114806116a6575033612002145b6116c25760405162461bcd60e51b8152600401610c4f906163e2565b6001600160a01b038116600090815260046020526040902054806116e65750611739565b6001810390506000600b82815481106116fb57fe5b600091825260209091206001601690920201015460ff16905061171e8383614304565b80156117275750805b15610c71576009805460001901905550505b50565b60015460609081906000805b8281101561178f576001818154811061175d57fe5b9060005260206000209060040201600201601c9054906101000a900460ff16611787576001909101905b600101611748565b506060816040519080825280602002602001820160405280156117bc578160200160208202803683370190505b5090506060826040519080825280602002602001820160405280156117f557816020015b60608152602001906001900390816117e05790505b50600b54600094509091508414156119705760005b8481101561196a576001818154811061181f57fe5b9060005260206000209060040201600201601c9054906101000a900460ff16611962576001818154811061184f57fe5b600091825260209091206004909102015483516001600160a01b039091169084908690811061187a57fe5b60200260200101906001600160a01b031690816001600160a01b031681525050600b81815481106118a757fe5b600091825260209182902060026016909202018101805460408051601f60001961010060018616150201909316949094049182018590048502840185019052808352919290919083018282801561193f5780601f106119145761010080835404028352916020019161193f565b820191906000526020600020905b81548152906001019060200180831161192257829003601f168201915b505050505082858151811061195057fe5b60209081029190910101526001909301925b60010161180a565b50611a0c565b60005b84811015611a0a576001818154811061198857fe5b9060005260206000209060040201600201601c9054906101000a900460ff16611a0257600181815481106119b857fe5b600091825260209091206004909102015483516001600160a01b03909116908490869081106119e357fe5b6001600160a01b03909216602092830291909101909101526001909301925b600101611973565b505b909450925050505b9091565b61100181565b60085481565b606181565b6060806000600e549050600080600c5411611a45576015611a49565b600c545b90506060611a55612995565b90506060611a62826146c7565b905082825111611a79579094509250611a14915050565b83838351031015611a8b578282510393505b8315611ac15760c84304611aa783838388880360008a8a614835565b611abf8383838888038989038a8b8b8b510301614835565b505b606083604051908082528060200260200182016040528015611aed578160200160208202803683370190505b509050606084604051908082528060200260200182016040528015611b2657816020015b6060815260200190600190039081611b115790505b50905060005b85811015611ba757848181518110611b4057fe5b6020026020010151838281518110611b5457fe5b60200260200101906001600160a01b031690816001600160a01b031681525050838181518110611b8057fe5b6020026020010151828281518110611b9457fe5b6020908102919091010152600101611b2c565b509096509450505050509091565b60065481565b61200681565b61200081565b6001600160a01b03811660009081526004602052604081205480611bef576000915050611521565b60001901611bfc81611526565b9392505050565b6001600160a01b03811660009081526004602052604081205480611c2b576000915050611521565b600180820381548110611c3a57fe5b906000526020600020906004020160030154915050919050565b60128181548110611c6157fe5b600091825260209182902001805460408051601f6002600019610100600187161502019094169390930492830185900485028101850190915281815293509091830182828015611cf25780601f10611cc757610100808354040283529160200191611cf2565b820191906000526020600020905b815481529060010190602001808311611cd557829003601f168201915b505050505081565b60105481565b60018181548110611d0d57fe5b600091825260209091206004909102018054600182015460028301546003909301546001600160a01b0392831694509082169291821691600160a01b81046001600160401b031691600160e01b90910460ff169086565b61100581565b61100881565b6103e881565b600c5481565b61200381565b61271081565b3361200014610d865760405162461bcd60e51b8152600401610c4f90616b56565b60025481565b60115481565b60145460ff1681565b600a5481565b600060175460001415611dd957506001611dde565b506017545b90565b6001600160a01b03811660009081526004602052604081205480611e175760405162461bcd60e51b8152600401610c4f90616ade565b6000190192915050565b600b54611edf57611e30615923565b60015460005b81811015611edb57600b80546001810182556000919091528351600080516020616fc383398151915260169092029182019081556020808601516000805160206170038339815191528401805460ff1916911515919091179055604086015180518794611eb793600080516020616fe3833981519152909101920190615952565b506060820151611ecd90600383019060136159cc565b505050806001019050611e36565b5050505b600854611eec5760036008555b600a54611ef9576002600a555b6000611f0433611de1565b9050611f0f81611457565b611f2b5760405162461bcd60e51b8152600401610c4f906168b0565b611739338261498c565b61100781565b600381565b60c881565b61100681565b604051806101e001604052806101ab8152602001616e186101ab913981565b60005460ff1681565b61200281565b61300081565b600081565b60005460ff16611fa65760405162461bcd60e51b8152600401610c4f906163ab565b3361100714611fc75760405162461bcd60e51b8152600401610c4f90616962565b61202784848080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250506040805180820190915260098152686275726e526174696f60b81b60208201529150614a249050565b156120dc576020811461204c5760405162461bcd60e51b8152600401610c4f90616268565b604080516020601f840181900481028201810190925282815260009161208a91858580838501838280828437600092019190915250614a7d92505050565b90506127106120b66018546120aa600f54856142df90919063ffffffff16565b9063ffffffff6142df16565b11156120d45760405162461bcd60e51b8152600401610c4f9061667e565b600655612933565b61214684848080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250506040805180820190915260138152726d61784e756d4f664d61696e7461696e696e6760681b60208201529150614a249050565b156121e0576020811461216b5760405162461bcd60e51b8152600401610c4f9061629f565b604080516020601f84018190048102820181019092528281526000916121a991858580838501838280828437600092019190915250614a7d92505050565b600c54909150806121b8575060155b8082106121d75760405162461bcd60e51b8152600401610c4f906165c6565b50600855612933565b61224984848080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250506040805180820190915260128152716d61696e7461696e536c6173685363616c6560701b60208201529150614a249050565b156122e2576020811461226e5760405162461bcd60e51b8152600401610c4f90616331565b604080516020601f84018190048102820181019092528281526000916122ac91858580838501838280828437600092019190915250614a7d92505050565b90506000811180156122be5750600a81105b6122da5760405162461bcd60e51b8152600401610c4f90616c3a565b600a55612933565b61235684848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505060408051808201909152601981527f6d61784e756d4f66576f726b696e6743616e646964617465730000000000000060208201529150614a249050565b156123e5576020811461237b5760405162461bcd60e51b8152600401610c4f906162e5565b604080516020601f84018190048102820181019092528281526000916123b991858580838501838280828437600092019190915250614a7d92505050565b9050600d548111156123dd5760405162461bcd60e51b8152600401610c4f90616787565b600e55612933565b61244e84848080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250506040805180820190915260128152716d61784e756d4f6643616e6469646174657360701b60208201529150614a249050565b156124d057602081146124735760405162461bcd60e51b8152600401610c4f906169b0565b604080516020601f84018190048102820181019092528281526000916124b191858580838501838280828437600092019190915250614a7d92505050565b600d819055600e549091508110156124ca57600d54600e555b50612933565b61253484848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505060408051808201909152600d81526c6e756d4f66436162696e65747360981b60208201529150614a249050565b156125e257602081146125595760405162461bcd60e51b8152600401610c4f90616376565b604080516020601f840181900481028201810190925282815260009161259791858580838501838280828437600092019190915250614a7d92505050565b9050600081116125b95760405162461bcd60e51b8152600401610c4f906164df565b60648111156125da5760405162461bcd60e51b8152600401610c4f90616527565b600c55612933565b61264e84848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505060408051808201909152601581527473797374656d52657761726442617365526174696f60581b60208201529150614a249050565b156126f757602081146126735760405162461bcd60e51b8152600401610c4f90616bf2565b604080516020601f84018190048102820181019092528281526000916126b191858580838501838280828437600092019190915250614a7d92505050565b90506127106126d16018546120aa600654856142df90919063ffffffff16565b11156126ef5760405162461bcd60e51b8152600401610c4f90616450565b600f55612933565b61276b84848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505060408051808201909152601881527f73797374656d526577617264416e74694d4556526174696f000000000000000060208201529150614a249050565b1561281457602081146127905760405162461bcd60e51b8152600401610c4f9061670d565b604080516020601f84018190048102820181019092528281526000916127ce91858580838501838280828437600092019190915250614a7d92505050565b90506127106127ee600f546120aa600654856142df90919063ffffffff16565b111561280c5760405162461bcd60e51b8152600401610c4f90616821565b601855612933565b61287584848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505060408051808201909152600a8152690e8eae4dc98cadccee8d60b31b60208201529150614a249050565b1561291b576020811461289a5760405162461bcd60e51b8152600401610c4f90616623565b604080516020601f84018190048102820181019092528281526000916128d891858580838501838280828437600092019190915250614a7d92505050565b9050600381101580156128ec575060098111155b806128f75750806001145b6129135760405162461bcd60e51b8152600401610c4f90616a58565b601755612933565b60405162461bcd60e51b8152600401610c4f90616c97565b7f6cdb0ac70ab7f2e2d035cca5be60d89906f2dede7648ddbd7402189c1eeed17a848484846040516129689493929190616236565b60405180910390a150505050565b60046020526000908152604090205481565b68056bc75e2d6310000081565b6001546060906000805b828110156129c4576129b081611526565b156129bc578160010191505b60010161299f565b506060816040519080825280602002602001820160405280156129f1578160200160208202803683370190505b5090506000915060005b83811015612a7857612a0c81611526565b15612a705760018181548110612a1e57fe5b600091825260209091206004909102015482516001600160a01b0390911690839085908110612a4957fe5b60200260200101906001600160a01b031690816001600160a01b0316815250508260010192505b6001016129fb565b509250505090565b601581565b61027181565b600281565b61100281565b60175481565b60138181548110611c6157fe5b60185481565b6000612ab9612995565b519050600080600c5411612ace576015612ad2565b600c545b905080821115612ae0578091505b81612aea57600191505b5090565b60055481565b61100381565b61200481565b606481565b60005460ff1615612b285760405162461bcd60e51b8152600401610c4f90616a21565b612b30615a2e565b6000612b56604051806101e001604052806101ab8152602001616e186101ab9139614a82565b9150915080612b775760405162461bcd60e51b8152600401610c4f90616b15565b60005b826020015151811015612c9c57600183602001518281518110612b9957fe5b60209081029190910181015182546001818101855560009485528385208351600493840290910180546001600160a01b039283166001600160a01b03199182161782558587015182850180549185169183169190911790556040860151600283018054606089015160808a01511515600160e01b0260ff60e01b196001600160401b03909216600160a01b0267ffffffffffffffff60a01b199590981692909516919091179290921694909417161790915560a090930151600390930192909255918601518051918501939185908110612c6f57fe5b602090810291909101810151516001600160a01b0316825281019190915260400160002055600101612b7a565b50506000805460ff1916600117905550565b600d5481565b601354600090815b81811015612dbd57612da585858080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050601380549092508591508110612d0d57fe5b600091825260209182902001805460408051601f6002600019610100600187161502019094169390930492830185900485028101850190915281815292830182828015612d9b5780601f10612d7057610100808354040283529160200191612d9b565b820191906000526020600020905b815481529060010190602001808311612d7e57829003601f168201915b5050505050614c3e565b15612db5576001925050506115d1565b600101612cbc565b5060125460005b81811015612e2e57612e1586868080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050601280549092508591508110612d0d57fe5b15612e2657600193505050506115d1565b600101612dc4565b50600095945050505050565b3361100114612e5b5760405162461bcd60e51b8152600401610c4f90616cbe565b600b54612f1957612e6a615923565b60015460005b81811015612f1557600b80546001810182556000919091528351600080516020616fc383398151915260169092029182019081556020808601516000805160206170038339815191528401805460ff1916911515919091179055604086015180518794612ef193600080516020616fe3833981519152909101920190615952565b506060820151612f0790600383019060136159cc565b505050806001019050612e70565b5050505b6000612f2482614ca2565b9050612f2f81611457565b15612f3e57612f3e828261498c565b5050565b334114612f615760405162461bcd60e51b8152600401610c4f90616ba5565b60005460ff16612f835760405162461bcd60e51b8152600401610c4f906163ab565b60003411612fa35760405162461bcd60e51b8152600401610c4f90616758565b3a15612fc15760405162461bcd60e51b8152600401610c4f90616934565b6001600160a01b03811660009081526004602052604090205460145434919060ff1661300157610271600f556103e86006556014805460ff191660011790555b600f54601754600110801561301857506000601854115b1561303d57600160175403601754438161302e57fe5b06601854028161303a57fe5b04015b60008311801561304d5750600081115b156130fa57600061307661271061306a348563ffffffff614e2516565b9063ffffffff614e5f16565b905080156130f8576040516110029082156108fc029083906000818181858888f193505050501580156130ad573d6000803e3d6000fd5b507f6ecc855f9440a9282c90913bbc91619fd44f5ec0b462af28d127b116f130aa4d816040516130dd9190616d4d565b60405180910390a16130f5848263ffffffff61429d16565b93505b505b60008311801561310c57506000600654115b156131b257600061312e61271061306a60065434614e2590919063ffffffff16565b905080156131b05760405161dead9082156108fc029083906000818181858888f19350505050158015613165573d6000803e3d6000fd5b507f627059660ea01c4733a328effb2294d2f86905bf806da763a89cee254de8bee5816040516131959190616d4d565b60405180910390a16131ad848263ffffffff61429d16565b93505b505b81156132b05760006001808403815481106131c957fe5b9060005260206000209060040201905080600201601c9054906101000a900460ff161561323657846001600160a01b03167ff177e5d6c5764d79c32883ed824111d9b13f5668cf6ab1cc12dd36791dd955b4856040516132299190616d4d565b60405180910390a26132aa565b600354613249908563ffffffff6142df16565b6003908155810154613261908563ffffffff6142df16565b60038201556040516001600160a01b038616907f93a090ecc682c002995fad3c85b30c5651d7fd29b0be5da9d784a3302aedc055906132a1908790616d4d565b60405180910390a25b506132f2565b836001600160a01b03167ff177e5d6c5764d79c32883ed824111d9b13f5668cf6ab1cc12dd36791dd955b4846040516132e99190616d4d565b60405180910390a25b50505050565b600e5481565b61100081565b61dead81565b600b818154811061331757fe5b6000918252602091829020601691909102018054600180830154600280850180546040805161010096831615969096026000190190911692909204601f810188900488028501880190925281845293965060ff909116949192918301828280156133c25780601f10613397576101008083540402835291602001916133c2565b820191906000526020600020905b8154815290600101906020018083116133a557829003601f168201915b5050505050905083565b61100481565b6000600a54600014806133e3575082155b806133ee5750600954155b156133fb575060006135bc565b60096000815460019003919050819055506000613446600a5461306a8661306a600b8a8154811061342857fe5b6000918252602090912060169091020154439063ffffffff61429d16565b90506000600b868154811061345757fe5b906000526020600020906016020160010160006101000a81548160ff0219169083151502179055506000806110016001600160a01b0316638256ace66040518163ffffffff1660e01b8152600401604080518083038186803b1580156134bc57600080fd5b505afa1580156134d0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906134f49190615fc6565b91509150600093508083106135725761350d8888614304565b506040516328aa02b160e01b8152611001906328aa02b190613537908b9087908a90600401616172565b600060405180830381600087803b15801561355157600080fd5b505af1158015613565573d6000803e3d6000fd5b5050505060019350613584565b8183106135845761358288614ca2565b505b6040516001600160a01b038916907fb9d38178dc641ff1817967a63c9078cbcd955a9f1fcd75e0e3636de615d44d3b90600090a25050505b949350505050565b6060806000808080806135d5612aaf565b6001549091505b801561380757600181039250600b83815481106135f557fe5b600091825260209091206001601690920201015460ff16613615576137fe565b6001838154811061362257fe5b600091825260208220600490910201546001600160a01b0316955061364c908690859085906133d2565b935083613658576137fe565b60405163436aa28360e11b81526000908190612002906386d5450690613682908a90600401616103565b60206040518083038186803b15801561369a57600080fd5b505afa1580156136ae573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906136d29190615d93565b90506001600160a01b0381161561375b576040516302ceee9160e11b81526120029063059ddd2290613708908490600401616103565b60206040518083038186803b15801561372057600080fd5b505afa158015613734573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906137589190615d93565b91505b60005b8c518110156137fa57876001600160a01b03168d828151811061377d57fe5b6020026020010151600001516001600160a01b031614806137c65750826001600160a01b03168d82815181106137af57fe5b6020026020010151600001516001600160a01b0316145b156137f25760018d82815181106137d957fe5b60209081029190910101519015156080909101526137fa565b60010161375e565b5050505b600019016135dc565b5060005b89518110156138745789818151811061382057fe5b60200260200101516080015180613860575060006001600160a01b03168a828151811061384957fe5b6020026020010151600001516001600160a01b0316145b1561386c578560010195505b60010161380b565b508851851061395c5760408051600180825281830190925290816020015b61389a6159f9565b815260200190600190039081613892575050604080516001808252818301909252919850602082015b60608152602001906001900390816138c3579050509550886000815181106138e757fe5b6020026020010151876000815181106138fc57fe5b60200260200101819052508760008151811061391457fe5b60200260200101518660008151811061392957fe5b602002602001018190525060008760008151811061394357fe5b6020908102919091010151901515608090910152613aa1565b8489510360405190808252806020026020018201604052801561399957816020015b6139866159f9565b81526020019060019003908161397e5790505b509650848951036040519080825280602002602001820160405280156139d357816020015b60608152602001906001900390816139be5790505b5095506000915060005b8951811015613a9f578981815181106139f257fe5b602002602001015160800151158015613a35575060006001600160a01b03168a8281518110613a1d57fe5b6020026020010151600001516001600160a01b031614155b15613a9757898181518110613a4657fe5b6020026020010151888481518110613a5a57fe5b6020026020010181905250888181518110613a7157fe5b6020026020010151878481518110613a8557fe5b60200260200101819052508260010192505b6001016139dd565b505b50505050505b9250929050565b600154825160005b82811015613bcb576001613ac86159f9565b60018381548110613ad557fe5b600091825260208083206040805160c08101825260049490940290910180546001600160a01b0390811685526001820154811693850193909352600281015492831691840191909152600160a01b82046001600160401b03166060840152600160e01b90910460ff16151560808301526003015460a082015291505b84811015613b9f57878181518110613b6557fe5b6020026020010151600001516001600160a01b031682600001516001600160a01b03161415613b975760009250613b9f565b600101613b51565b508115613bc15780516001600160a01b03166000908152600460205260408120555b5050600101613ab6565b5080821115613c8a57805b82811015613c88576001805480613be957fe5b60008281526020812060046000199093019283020180546001600160a01b0319908116825560018201805490911690556002810180546001600160e81b0319169055600301559055600b805480613c3c57fe5b60008281526020812060166000199093019283020181815560018101805460ff1916905590613c6e6002830182615a52565b613c7c600383016000615a96565b50509055600101613bd6565b505b6000818310613c995781613c9b565b825b905060005b8181101561403f57613d4d868281518110613cb757fe5b602002602001015160018381548110613ccc57fe5b60009182526020918290206040805160c08101825260049390930290910180546001600160a01b0390811684526001820154811694840194909452600281015493841691830191909152600160a01b83046001600160401b03166060830152600160e01b90920460ff161515608082015260039091015460a0820152614ea1565b613f01578060010160046000888481518110613d6557fe5b6020026020010151600001516001600160a01b03166001600160a01b0316815260200190815260200160002081905550858181518110613da157fe5b602002602001015160018281548110613db657fe5b6000918252602091829020835160049092020180546001600160a01b039283166001600160a01b0319918216178255928401516001820180549184169185169190911790556040840151600282018054606087015160808801511515600160e01b0260ff60e01b196001600160401b03909216600160a01b0267ffffffffffffffff60a01b1995909716929097169190911792909216939093171692909217905560a0909101516003909101558451859082908110613e7157fe5b6020026020010151600b8281548110613e8657fe5b90600052602060002090601602016002019080519060200190613eaa929190615952565b506000600b8281548110613eba57fe5b60009182526020822060169190910201600101805460ff191692151592909217909155600b805483908110613eeb57fe5b6000918252602090912060169091020155614037565b858181518110613f0d57fe5b60200260200101516060015160018281548110613f2657fe5b906000526020600020906004020160020160146101000a8154816001600160401b0302191690836001600160401b03160217905550613fec858281518110613f6a57fe5b6020026020010151600b8381548110613f7f57fe5b600091825260209182902060026016909202018101805460408051601f600019610100600186161502019093169490940491820185900485028401850190528083529192909190830182828015612d9b5780601f10612d7057610100808354040283529160200191612d9b565b61403757848181518110613ffc57fe5b6020026020010151600b828154811061401157fe5b90600052602060002090601602016002019080519060200190614035929190615952565b505b600101613ca0565b508282111561421757614050615923565b835b838110156142145785818151811061406657fe5b60200260200101518260400181905250600187828151811061408457fe5b6020908102919091018101518254600181810185556000948552838520835160049093020180546001600160a01b039384166001600160a01b0319918216178255848601518284018054918616918316919091179055604080860151600284018054606089015160808a01511515600160e01b0260ff60e01b196001600160401b03909216600160a01b0267ffffffffffffffff60a01b1995909a1692909616919091179290921696909617169190911790935560a090930151600390930192909255600b8054928301815590935284516016909102600080516020616fc38339815191528101918255858301516000805160206170038339815191528201805491151560ff19909216919091179055928501518051869492936141ba93600080516020616fe383398151915201920190615952565b5060608201516141d090600383019060136159cc565b50505080600101600460008984815181106141e757fe5b602090810291909101810151516001600160a01b0316825281019190915260400160002055600101614052565b50505b61421f614efd565b6142276150df565b6000600981905560015493505b83811015614295576000600b828154811061424b57fe5b60009182526020822060169190910201600101805460ff191692151592909217909155600b80548390811061427c57fe5b6000918252602090912060169091020155600101614234565b505050505050565b6000611bfc83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506152cd565b600082820183811015611bfc5760405162461bcd60e51b8152600401610c4f90616419565b6000806001838154811061431457fe5b9060005260206000209060040201600301549050600060018080549050039050600161433e612995565b51116143735760006001858154811061435357fe5b9060005260206000209060040201600301819055506000925050506115d1565b846001600160a01b03167f3b6f9ef90462b512a1293ecec018670bf7b7f1876fb727590a8a6d7643130a70836040516143ac9190616d4d565b60405180910390a26001600160a01b038516600090815260046020526040812055835b6001546000190181101561459957600181600101815481106143ed57fe5b90600052602060002090600402016001828154811061440857fe5b60009182526020909120825460049092020180546001600160a01b03199081166001600160a01b0393841617825560018085015481840180548416918616919091179055600280860180549185018054909416919095161780835584546001600160401b03600160a01b91829004160267ffffffffffffffff60a01b1990911617808355935460ff600160e01b918290041615150260ff60e01b19909416939093179055600392830154920191909155600b8054909183019081106144c957fe5b9060005260206000209060160201600b82815481106144e457fe5b600091825260209091208254601690920201908155600180830154818301805460ff909216151560ff199092169190911790556002808401805461453b938386019390821615610100026000190190911604615aa5565b5061454e60038281019084016013615b1a565b5090505080600101600460006001848154811061456757fe5b600091825260208083206004909202909101546001600160a01b031683528201929092526040019020556001016143cf565b5060018054806145a557fe5b60008281526020812060046000199093019283020180546001600160a01b0319908116825560018201805490911690556002810180546001600160e81b0319169055600301559055600b8054806145f857fe5b60008281526020812060166000199093019283020181815560018101805460ff191690559061462a6002830182615a52565b614638600383016000615a96565b50509055600081838161464757fe5b04905080156146bb5760015460005b818110156146b85761468f836001838154811061466f57fe5b9060005260206000209060040201600301546142df90919063ffffffff16565b6001828154811061469c57fe5b6000918252602090912060036004909202010155600101614656565b50505b50600195945050505050565b60015481516040805182815260208084028201019091526060929190839082801561470657816020015b60608152602001906001900390816146f15790505b50600b54909150831461471d579250611521915050565b60005b8281101561482c57600b60016004600089858151811061473c57fe5b60200260200101516001600160a01b03166001600160a01b0316815260200190815260200160002054038154811061477057fe5b600091825260209182902060026016909202018101805460408051601f6000196101006001861615020190931694909404918201859004850284018501905280835291929091908301828280156148085780601f106147dd57610100808354040283529160200191614808565b820191906000526020600020905b8154815290600101906020018083116147eb57829003601f168201915b505050505082828151811061481957fe5b6020908102919091010152600101614720565b50949350505050565b60005b8281101561498257600082878388016040516020016148589291906160f5565b6040516020818303038152906040528051906020012060001c8161487857fe5b06905080850182870114614979576000898388018151811061489657fe5b60200260200101519050606089848901815181106148b057fe5b602002602001015190508a838801815181106148c857fe5b60200260200101518b858a01815181106148de57fe5b60200260200101906001600160a01b031690816001600160a01b031681525050818b8489018151811061490d57fe5b60200260200101906001600160a01b031690816001600160a01b031681525050898388018151811061493b57fe5b60200260200101518a858a018151811061495157fe5b6020026020010181905250808a8489018151811061496b57fe5b602002602001018190525050505b50600101614838565b5050505050505050565b600980546001908101909155600b8054839081106149a657fe5b906000526020600020906016020160010160006101000a81548160ff02191690831515021790555043600b82815481106149dc57fe5b600091825260208220601690910201919091556040516001600160a01b038416917ff62981a567ec3cec866c6fa93c55bcdf841d6292d18b8d522ececa769375d82d91a25050565b600081604051602001614a3791906160d9565b6040516020818303038152906040528051906020012083604051602001614a5e91906160d9565b6040516020818303038152906040528051906020012014905092915050565b015190565b614a8a615a2e565b6000614a94615a2e565b614a9c615b44565b614aad614aa8866152f9565b61531e565b90506000805b614abc83615368565b15614c305780614ae157614ad7614ad284615389565b6153d7565b60ff168452614c28565b8060011415614c23576060614afd614af885615389565b615457565b90508051604051908082528060200260200182016040528015614b3a57816020015b614b276159f9565b815260200190600190039081614b1f5790505b5085602001819052508051604051908082528060200260200182016040528015614b7857816020015b6060815260200190600190039081614b635790505b50604086015260005b8151811015614c1857614b926159f9565b60606000614bb2858581518110614ba557fe5b6020026020010151615528565b92509250925080614bd2578860009a509a50505050505050505050614c39565b8289602001518581518110614be357fe5b60200260200101819052508189604001518581518110614bff57fe5b6020026020010181905250505050806001019050614b81565b506001925050614c28565b614c30565b600101614ab3565b50919350909150505b915091565b815181516000916001918114808314614c5a5760009250614c98565b600160208701838101602088015b600284838510011415614c93578051835114614c875760009650600093505b60209283019201614c68565b505050505b5090949350505050565b6001600160a01b03811660009081526004602052604081205480614ccb57506000199050611521565b600181039050600060018281548110614ce057fe5b9060005260206000209060040201600301549050600060018381548110614d0357fe5b6000918252602090912060036004909202010155600154604051600019909101906001600160a01b038616907f8cd4e147d8af98a9e3b6724021b8bf6aed2e5dac71c38f2dce8161b82585b25d90614d5c908590616d4d565b60405180910390a280614d7457829350505050611521565b6000818381614d7f57fe5b0490508015614e1b5760005b84811015614dcd57614da4826001838154811061466f57fe5b60018281548110614db157fe5b6000918252602090912060036004909202010155600101614d8b565b50600180549085015b81811015614e1857614def836001838154811061466f57fe5b60018281548110614dfc57fe5b6000918252602090912060036004909202010155600101614dd6565b50505b5091949350505050565b600082614e34575060006115d1565b82820282848281614e4157fe5b0414611bfc5760405162461bcd60e51b8152600401610c4f906168f3565b6000611bfc83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250615642565b805182516000916001600160a01b039182169116148015614edb575081602001516001600160a01b031683602001516001600160a01b0316145b8015611bfc5750506040908101519101516001600160a01b0390811691161490565b60125460135480821115614f4857805b82811015614f46576012805480614f2057fe5b600190038181906000526020600020016000614f3c9190615a52565b9055600101614f0d565b505b6000818310614f575781614f59565b825b905060005b818110156150715761501660128281548110614f7657fe5b600091825260209182902001805460408051601f60026000196101006001871615020190941693909304928301859004850281018501909152818152928301828280156150045780601f10614fd957610100808354040283529160200191615004565b820191906000526020600020905b815481529060010190602001808311614fe757829003601f168201915b505050505060138381548110612d0d57fe5b615069576013818154811061502757fe5b906000526020600020016012828154811061503e57fe5b906000526020600020019080546001816001161561010002031660029004615067929190615aa5565b505b600101614f5e565b5082821115610c7157825b828110156132f25760126013828154811061509357fe5b60009182526020808320845460018181018755958552919093209290910180546150d6949390920192909160026101009282161592909202600019011604615aa5565b5060010161507c565b601354600b548082111561512a57805b8281101561512857601380548061510257fe5b60019003818190600052602060002001600061511e9190615a52565b90556001016150ef565b505b6000818310615139578161513b565b825b905060005b8181101561525a576151f86013828154811061515857fe5b600091825260209182902001805460408051601f60026000196101006001871615020190941693909304928301859004850281018501909152818152928301828280156151e65780601f106151bb576101008083540402835291602001916151e6565b820191906000526020600020905b8154815290600101906020018083116151c957829003601f168201915b5050505050600b8381548110613f7f57fe5b61525257600b818154811061520957fe5b90600052602060002090601602016002016013828154811061522757fe5b906000526020600020019080546001816001161561010002031660029004615250929190615aa5565b505b600101615140565b5082821115610c7157825b828110156132f2576013600b828154811061527c57fe5b6000918252602080832084546001808201875595855291909320601692909202909201600290810180546152c495939094019390926000199082161561010002011604615aa5565b50600101615265565b600081848411156152f15760405162461bcd60e51b8152600401610c4f9190616223565b505050900390565b615301615b64565b506040805180820190915281518152602082810190820152919050565b615326615b44565b61532f82615679565b61533857600080fd5b600061534783602001516156b3565b60208085015160408051808201909152868152920190820152915050919050565b6000615372615b64565b505080518051602091820151919092015191011190565b615391615b64565b61539a82615368565b6153a357600080fd5b602082015160006153b382615716565b80830160209586015260408051808201909152908152938401919091525090919050565b8051600090158015906153ec57508151602110155b6153f557600080fd5b600061540483602001516156b3565b9050808360000151101561542a5760405162461bcd60e51b8152600401610c4f90616aa7565b82516020808501518301805192849003929183101561482c57506020919091036101000a90049392505050565b606061546282615679565b61546b57600080fd5b6000615476836157f7565b90506060816040519080825280602002602001820160405280156154b457816020015b6154a1615b64565b8152602001906001900390816154995790505b50905060006154c685602001516156b3565b60208601510190506000805b8481101561551d576154e383615716565b915060405180604001604052808381526020018481525084828151811061550657fe5b6020908102919091010152918101916001016154d2565b509195945050505050565b6155306159f9565b6060600061553c6159f9565b6060615546615b44565b61554f8761531e565b90506000805b61555e83615368565b1561563357806155895761557961557484615389565b615853565b6001600160a01b0316855261562b565b80600114156155b15761559e61557484615389565b6001600160a01b0316602086015261562b565b80600214156155d9576155c661557484615389565b6001600160a01b0316604086015261562b565b8060031415615605576155ee614ad284615389565b6001600160401b031660608601526001915061562b565b80600414156156265761561f61561a84615389565b61586d565b935061562b565b615633565b600101615555565b50929791965091945092505050565b600081836156635760405162461bcd60e51b8152600401610c4f9190616223565b50600083858161566f57fe5b0495945050505050565b805160009061568a57506000611521565b6020820151805160001a9060c08210156156a957600092505050611521565b5060019392505050565b8051600090811a60808110156156cd576000915050611521565b60b88110806156e8575060c081108015906156e8575060f881105b156156f7576001915050611521565b60c081101561570b5760b519019050611521565b60f519019050611521565b80516000908190811a608081101561573157600191506157f0565b60b881101561574657607e19810191506157f0565b60c081101561579757600060b78203600186019550806020036101000a8651049150600181018201935050808310156157915760405162461bcd60e51b8152600401610c4f906167f6565b506157f0565b60f88110156157ac5760be19810191506157f0565b600060f78203600186019550806020036101000a8651049150600181018201935050808310156157ee5760405162461bcd60e51b8152600401610c4f906167f6565b505b5092915050565b805160009061580857506000611521565b6000809050600061581c84602001516156b3565b602085015185519181019250015b8082101561584a5761583b82615716565b8201915082600101925061582a565b50909392505050565b805160009060151461586457600080fd5b6115d1826153d7565b805160609061587b57600080fd5b600061588a83602001516156b3565b83516040805191839003808352601f19601f82011683016020019091529192506060908280156158c1576020820181803683370190505b509050600081602001905061482c848760200151018285806158e257610c71565b5b60208110615902578251825260209283019290910190601f19016158e3565b915181516020939093036101000a6000190180199091169216919091179052565b6040518060800160405280600081526020016000151581526020016060815260200161594d615b7e565b905290565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f1061599357805160ff19168380011785556159c0565b828001600101855582156159c0579182015b828111156159c05782518255916020019190600101906159a5565b50612aea929150615b9d565b82601381019282156159c057916020028201828111156159c05782518255916020019190600101906159a5565b6040805160c081018252600080825260208201819052918101829052606081018290526080810182905260a081019190915290565b6040518060600160405280600060ff16815260200160608152602001606081525090565b50805460018160011615610100020316600290046000825580601f10615a785750611739565b601f0160209004906000526020600020908101906117399190615b9d565b50611739906013810190615b9d565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10615ade57805485556159c0565b828001600101855582156159c057600052602060002091601f016020900482015b828111156159c0578254825591600101919060010190615aff565b82601381019282156159c057918201828111156159c0578254825591600101919060010190615aff565b6040518060400160405280615b57615b64565b8152602001600081525090565b604051806040016040528060008152602001600081525090565b6040518061026001604052806013906020820280368337509192915050565b611dde91905b80821115612aea5760008155600101615ba3565b80356115d181616e02565b60008083601f840112615bd3578182fd5b5081356001600160401b03811115615be9578182fd5b6020830191508360208083028501011115613aa757600080fd5b6000601f8381840112615c14578182fd5b8235615c27615c2282616db7565b616d91565b818152925060208084019085810160005b84811015615cb9578135880189603f820112615c5357600080fd5b838101356001600160401b03811115615c6b57600080fd5b615c7c818901601f19168601616d91565b81815260408c81848601011115615c9257600080fd5b82818501888401375060009181018601919091528552509282019290820190600101615c38565b50505050505092915050565b600082601f830112615cd5578081fd5b8135615ce3615c2282616db7565b818152915060208083019084810181840286018201871015615d0457600080fd5b6000805b85811015615cb95782356001600160401b0381168114615d26578283fd5b85529383019391830191600101615d08565b60008083601f840112615d49578182fd5b5081356001600160401b03811115615d5f578182fd5b602083019150836020828501011115613aa757600080fd5b600060208284031215615d88578081fd5b8135611bfc81616e02565b600060208284031215615da4578081fd5b8151611bfc81616e02565b60008060008060408587031215615dc4578283fd5b84356001600160401b0380821115615dda578485fd5b615de688838901615bc2565b90965094506020870135915080821115615dfe578384fd5b50615e0b87828801615bc2565b95989497509550505050565b600080600060608486031215615e2b578283fd5b83356001600160401b0380821115615e41578485fd5b81860187601f820112615e52578586fd5b80359250615e62615c2284616db7565b80848252602080830192508084018b828389028701011115615e8257898afd5b8994505b86851015615eac57615e988c82615bb7565b845260019490940193928101928101615e86565b509097508801359350505080821115615ec3578384fd5b615ecf87838801615cc5565b93506040860135915080821115615ee4578283fd5b50615ef186828701615c03565b9150509250925092565b60008060208385031215615f0d578182fd5b82356001600160401b03811115615f22578283fd5b615f2e85828601615d38565b90969095509350505050565b60008060008060408587031215615f4f578384fd5b84356001600160401b0380821115615f65578586fd5b615f7188838901615d38565b90965094506020870135915080821115615f89578384fd5b50615e0b87828801615d38565b600060208284031215615fa7578081fd5b5035919050565b600060208284031215615fbf578081fd5b5051919050565b60008060408385031215615fd8578182fd5b505080516020909101519092909150565b600080600060408486031215615ffd578081fd5b833560ff8116811461600d578182fd5b925060208401356001600160401b03811115616027578182fd5b61603386828701615d38565b9497909650939450505050565b6000815180845260208085019450808401835b838110156160785781516001600160a01b031687529582019590820190600101616053565b509495945050505050565b60008284528282602086013780602084860101526020601f19601f85011685010190509392505050565b600081518084526160c5816020860160208601616dd6565b601f01601f19169290920160200192915050565b600082516160eb818460208701616dd6565b9190910192915050565b918252602082015260400190565b6001600160a01b0391909116815260200190565b6001600160a01b03929092168252602082015260400190565b6001600160a01b03968716815294861660208601529290941660408401526001600160401b03166060830152911515608082015260a081019190915260c00190565b6001600160a01b0393909316835260208301919091521515604082015260600190565b600060208252611bfc6020830184616040565b6000604082526161bb6040830185616040565b602083820381850152818551808452828401915082838202850101838801865b8381101561620957601f198784030185526161f78383516160ad565b948601949250908501906001016161db565b50909998505050505050505050565b901515815260200190565b600060208252611bfc60208301846160ad565b60006040825261624a604083018688616083565b828103602084015261625d818587616083565b979650505050505050565b6020808252601c908201527f6c656e677468206f66206275726e526174696f206d69736d6174636800000000604082015260600190565b60208082526026908201527f6c656e677468206f66206d61784e756d4f664d61696e7461696e696e67206d696040820152650e6dac2e8c6d60d31b606082015260800190565b6020808252602c908201527f6c656e677468206f66206d61784e756d4f66576f726b696e6743616e6469646160408201526b0e8cae640dad2e6dac2e8c6d60a31b606082015260800190565b60208082526025908201527f6c656e677468206f66206d61696e7461696e536c6173685363616c65206d69736040820152640dac2e8c6d60db1b606082015260800190565b6020808252818101527f6c656e677468206f66206e756d4f66436162696e657473206d69736d61746368604082015260600190565b60208082526019908201527f74686520636f6e7472616374206e6f7420696e69742079657400000000000000604082015260600190565b6020808252601f908201527f6f6e6c7920736c617368206f72207374616b6548756220636f6e747261637400604082015260600190565b6020808252601b908201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604082015260600190565b60208082526063908201527f7468652073797374656d52657761726442617365526174696f20706c7573206260408201527f75726e526174696f20616e642073797374656d526577617264416e74694d455660608201527f526174696f206d757374206265206e6f2067726561746572207468616e20313060808201526203030360ec1b60a082015260c00190565b60208082526028908201527f746865206e756d4f66436162696e657473206d75737420626520677265617465604082015267072207468616e20360c41b606082015260800190565b60208082526039908201527f746865206e756d4f66436162696e657473206d757374206265206c657373207460408201527f68616e204d41585f4e554d5f4f465f56414c494441544f525300000000000000606082015260800190565b60208082526022908201527f63616e206e6f7420646f207468697320747769636520696e206f6e6520626c6f604082015261636b60f01b606082015260800190565b60208082526037908201527f746865206d61784e756d4f664d61696e7461696e696e67206d7573742062652060408201527f6c657373207468616e206e756d4f66436162696e657473000000000000000000606082015260800190565b6020808252601d908201527f6c656e677468206f66207475726e4c656e677468206d69736d61746368000000604082015260600190565b6020808252600a908201526919195c1c9958d85d195960b21b604082015260600190565b60208082526063908201527f746865206275726e526174696f20706c75732073797374656d5265776172644260408201527f617365526174696f20616e642073797374656d526577617264416e74694d455660608201527f526174696f206d757374206265206e6f2067726561746572207468616e20313060808201526203030360ec1b60a082015260c00190565b6020808252602b908201527f6c656e677468206f662073797374656d526577617264416e74694d455652617460408201526a0d2de40dad2e6dac2e8c6d60ab1b606082015260800190565b6020808252601590820152746465706f7369742076616c7565206973207a65726f60581b604082015260600190565b60208082526049908201527f746865206d61784e756d4f66576f726b696e6743616e64696461746573206d7560408201527f7374206265206e6f742067726561746572207468616e206d61784e756d4f6643606082015268616e6469646174657360b81b608082015260a00190565b6020808252601190820152706164646974696f6e206f766572666c6f7760781b604082015260600190565b60208082526063908201527f7468652073797374656d526577617264416e74694d4556526174696f20706c7560408201527f73206275726e526174696f20616e642073797374656d5265776172644261736560608201527f526174696f206d757374206265206e6f2067726561746572207468616e20313060808201526203030360ec1b60a082015260c00190565b60208082526023908201527f63616e206e6f7420656e7465722054656d706f72617279204d61696e74656e616040820152626e636560e81b606082015260800190565b60208082526021908201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6040820152607760f81b606082015260800190565b6020808252601490820152736761737072696365206973206e6f74207a65726f60601b604082015260600190565b6020808252602e908201527f746865206d6573736167652073656e646572206d75737420626520676f76657260408201526d1b985b98d94818dbdb9d1c9858dd60921b606082015260800190565b60208082526025908201527f6c656e677468206f66206d61784e756d4f6643616e64696461746573206d69736040820152640dac2e8c6d60db1b606082015260800190565b6020808252601290820152716e6f7420696e206d61696e74656e616e636560701b604082015260600190565b60208082526019908201527f74686520636f6e747261637420616c726561647920696e697400000000000000604082015260600190565b6020808252602f908201527f746865207475726e4c656e6774682073686f756c6420626520696e205b332c3960408201526e5d206f7220657175616c20746f203160881b606082015260800190565b6020808252601a908201527f6c656e677468206973206c657373207468616e206f6666736574000000000000604082015260600190565b60208082526017908201527f6f6e6c792063757272656e742076616c696461746f7273000000000000000000604082015260600190565b60208082526021908201527f6661696c656420746f20706172736520696e69742076616c696461746f7253656040820152601d60fa1b606082015260800190565b6020808252602f908201527f746865206d6573736167652073656e646572206d7573742062652063726f737360408201526e0818da185a5b8818dbdb9d1c9858dd608a1b606082015260800190565b6020808252602d908201527f746865206d6573736167652073656e646572206d75737420626520746865206260408201526c3637b1b590383937b23ab1b2b960991b606082015260800190565b60208082526028908201527f6c656e677468206f662073797374656d52657761726442617365526174696f206040820152670dad2e6dac2e8c6d60c31b606082015260800190565b6020808252603e908201527f746865206d61696e7461696e536c6173685363616c65206d757374206265206760408201527f726561746572207468616e203020616e64206c657373207468616e2031300000606082015260800190565b6020808252600d908201526c756e6b6e6f776e20706172616d60981b604082015260600190565b60208082526029908201527f746865206d6573736167652073656e646572206d75737420626520736c6173686040820152680818dbdb9d1c9858dd60ba1b606082015260800190565b6020808252601f908201527f746865206d73672073656e646572206d757374206265207374616b6548756200604082015260600190565b61ffff91909116815260200190565b90815260200190565b6000848252831515602083015260606040830152616d7760608301846160ad565b95945050505050565b63ffffffff91909116815260200190565b6040518181016001600160401b0381118282101715616daf57600080fd5b604052919050565b60006001600160401b03821115616dcc578081fd5b5060209081020190565b60005b83811015616df1578181015183820152602001616dd9565b838111156132f25750506000910152565b6001600160a01b038116811461173957600080fdfef901a880f901a4f844941284214b9b9c85549ab3d2b972df0deef66ac2c9946ddf42a51534fc98d0c0a3b42c963cace8441ddf946ddf42a51534fc98d0c0a3b42c963cace8441ddf8410000000f84494a2959d3f95eae5dc7d70144ce1b73b403b7eb6e0948081ef03f1d9e0bb4a5bf38f16285c879299f07f948081ef03f1d9e0bb4a5bf38f16285c879299f07f8410000000f8449435552c16704d214347f29fa77f77da6d75d7c75294dc4973e838e3949c77aced16ac2315dc2d7ab11194dc4973e838e3949c77aced16ac2315dc2d7ab1118410000000f84494980a75ecd1309ea12fa2ed87a8744fbfc9b863d594cc6ac05c95a99c1f7b5f88de0e3486c82293b27094cc6ac05c95a99c1f7b5f88de0e3486c82293b2708410000000f84494f474cf03cceff28abc65c9cbae594f725c80e12d94e61a183325a18a173319dd8e19c8d069459e217594e61a183325a18a173319dd8e19c8d069459e21758410000000f84494b71b214cb885500844365e95cd9942c7276e7fd894d22ca3ba2141d23adab65ce4940eb7665ea2b6a794d22ca3ba2141d23adab65ce4940eb7665ea2b6a784100000000175b7a638427703f0dbe7bb9bbf987a2551717b34e79f33b5b1008d1fa01db90175b7a638427703f0dbe7bb9bbf987a2551717b34e79f33b5b1008d1fa01dbb0175b7a638427703f0dbe7bb9bbf987a2551717b34e79f33b5b1008d1fa01dbaa164736f6c6343000604000a \ No newline at end of file +60806040526004361061044b5760003560e01c80638c5d749d11610234578063c81b16621161012e578063e1c7392a116100b6578063f92eb86b1161007a578063f92eb86b14610b5f578063f9a2bbc714610b74578063fccc281314610b89578063fd4ad81f14610b9e578063fd6a687914610bcd57610452565b8063e1c7392a14610ae2578063e40716a114610af7578063ea321e4914610b0c578063eb57e20214610b2c578063f340fa0114610b4c57610452565b8063d58918ae116100fd578063d58918ae14610a79578063d68fb56a14610a8e578063daacdb6614610aa3578063dc927faf14610ab8578063df8079e914610acd57610452565b8063c81b166214610a2f578063c8509d81146107f1578063cb75a59214610a44578063ce910b0c14610a5957610452565b8063aa82dce1116101bc578063aef198a911610180578063aef198a9146109b9578063b7ab4db5146109ce578063b8cf4ef1146109f0578063c466689d14610a05578063c6d3394514610a1a57610452565b8063aa82dce11461092d578063aad5606314610942578063ab51bb9614610957578063ac43175114610979578063ad3c9da61461099957610452565b80639fe0f816116102035780639fe0f816146108c4578063a0dc2758146108d9578063a1a11bf5146108ee578063a5422d5c14610903578063a78abc161461091857610452565b80638c5d749d146108655780638d19a4101461087a5780639369d7de1461089a5780639dc09262146108af57610452565b80635192c82c1161034557806375d47a0a116102cd578063831d65d111610291578063831d65d1146107f1578063862498821461081157806388b32f11146108265780638a7beb011461083b5780638b5ad0c91461085057610452565b806375d47a0a1461078857806378dfed4a1461079d5780637a84ca2a146107b25780637e434d54146107c7578063820dcaa8146107dc57610452565b8063565c56b311610314578063565c56b3146106ec57806360eba4fe1461070c57806362b72cf51461072c5780636969a25c146107415780636e47b4821461077357610452565b80635192c82c1461068d57806351b4dce3146106a257806351e80672146106b757806355614fcc146106cc57610452565b80632a0ffb6e116103d35780633b071dcc116103975780633b071dcc1461060957806343756e5c1461062c57806345cf9daf14610641578063493279b1146106565780634df6e0c31461067857610452565b80632a0ffb6e14610569578063300c356714610589578063321d398a146105a95780633365af3a146105c957806335409f7f146105e957610452565b8063152ad3b81161041a578063152ad3b8146104e85780631bd14ed81461050a5780631e4c15241461051f5780631ff180691461053f578063280870281461055457610452565b806304c4fec61461045757806307a568471461046e5780630e2374a5146104995780631182b875146104bb57610452565b3661045257005b600080fd5b34801561046357600080fd5b5061046c610be2565b005b34801561047a57600080fd5b50610483610c56565b6040516104909190616d9f565b60405180910390f35b3480156104a557600080fd5b506104ae610c5c565b6040516104909190616155565b3480156104c757600080fd5b506104db6104d636600461603b565b610c62565b6040516104909190616275565b3480156104f457600080fd5b506104fd610d7e565b604051610490919061626a565b34801561051657600080fd5b50610483610d87565b34801561052b57600080fd5b5061046c61053a366004615e69565b610d8d565b34801561054b57600080fd5b506104836110c1565b34801561056057600080fd5b506104ae6110c7565b34801561057557600080fd5b5061046c610584366004615dc9565b6110cd565b34801561059557600080fd5b5061046c6105a4366004615e01565b6110ee565b3480156105b557600080fd5b506104fd6105c4366004615fe8565b611437565b3480156105d557600080fd5b506104fd6105e4366004615fe8565b611506565b3480156105f557600080fd5b5061046c610604366004615dc9565b6115b7565b34801561061557600080fd5b5061061e61171c565b6040516104909291906161fa565b34801561063857600080fd5b506104ae6119f8565b34801561064d57600080fd5b506104836119fe565b34801561066257600080fd5b5061066b611a04565b6040516104909190616d90565b34801561068457600080fd5b5061061e611a09565b34801561069957600080fd5b50610483611b95565b3480156106ae57600080fd5b506104ae611b9b565b3480156106c357600080fd5b506104ae611ba1565b3480156106d857600080fd5b506104fd6106e7366004615dc9565b611ba7565b3480156106f857600080fd5b50610483610707366004615dc9565b611be3565b34801561071857600080fd5b506104db610727366004615fe8565b611c34565b34801561073857600080fd5b50610483611cda565b34801561074d57600080fd5b5061076161075c366004615fe8565b611ce0565b60405161049096959493929190616182565b34801561077f57600080fd5b506104ae611d44565b34801561079457600080fd5b506104ae611d4a565b3480156107a957600080fd5b50610483611d50565b3480156107be57600080fd5b50610483611d56565b3480156107d357600080fd5b506104ae611d5c565b3480156107e857600080fd5b50610483611d62565b3480156107fd57600080fd5b5061046c61080c36600461603b565b611d68565b34801561081d57600080fd5b50610483611d89565b34801561083257600080fd5b50610483611d8f565b34801561084757600080fd5b506104fd611d95565b34801561085c57600080fd5b50610483611d9e565b34801561087157600080fd5b50610483611da4565b34801561088657600080fd5b50610483610895366004615dc9565b611dc1565b3480156108a657600080fd5b5061046c611e01565b3480156108bb57600080fd5b506104ae611f15565b3480156108d057600080fd5b50610483611f1b565b3480156108e557600080fd5b50610483611f20565b3480156108fa57600080fd5b506104ae611f25565b34801561090f57600080fd5b506104db611f2b565b34801561092457600080fd5b506104fd611f4a565b34801561093957600080fd5b506104ae611f53565b34801561094e57600080fd5b506104ae611f59565b34801561096357600080fd5b5061096c611f5f565b6040516104909190616dd2565b34801561098557600080fd5b5061046c610994366004615f8c565b611f64565b3480156109a557600080fd5b506104836109b4366004615dc9565b6129cd565b3480156109c557600080fd5b506104836129df565b3480156109da57600080fd5b506109e36129ec565b60405161049091906161e7565b3480156109fc57600080fd5b50610483612ad7565b348015610a1157600080fd5b50610483612adc565b348015610a2657600080fd5b50610483612ae2565b348015610a3b57600080fd5b506104ae612ae7565b348015610a5057600080fd5b50610483612aed565b348015610a6557600080fd5b506104db610a74366004615fe8565b612af3565b348015610a8557600080fd5b50610483612b00565b348015610a9a57600080fd5b50610483612b06565b348015610aaf57600080fd5b50610483612b45565b348015610ac457600080fd5b506104ae612b4b565b348015610ad957600080fd5b506104ae612b51565b348015610aee57600080fd5b5061046c612b57565b348015610b0357600080fd5b50610483612d00565b348015610b1857600080fd5b506104fd610b27366004615f4d565b612d06565b348015610b3857600080fd5b5061046c610b47366004615dc9565b612e8c565b61046c610b5a366004615dc9565b612f94565b348015610b6b57600080fd5b5061048361334a565b348015610b8057600080fd5b506104ae613350565b348015610b9557600080fd5b506104ae613356565b348015610baa57600080fd5b50610bbe610bb9366004615fe8565b61335c565b60405161049093929190616da8565b348015610bd957600080fd5b506104ae61341e565b6000610bed33611dc1565b9050600b8181548110610bfc57fe5b600091825260209091206001601690920201015460ff16610c385760405162461bcd60e51b8152600401610c2f90616a47565b60405180910390fd5b6000610c42612b06565b9050610c513383836001613424565b505050565b60095481565b61200181565b60005460609060ff16610c875760405162461bcd60e51b8152600401610c2f9061645a565b3361200014610ca85760405162461bcd60e51b8152600401610c2f90616ba8565b600b54610d6657610cb7615975565b60015460005b81811015610d6257600b8054600181018255600091909152835160008051602061701583398151915260169092029182019081556020808601516000805160206170558339815191528401805460ff1916911515919091179055604086015180518794610d3e936000805160206170358339815191529091019201906159a4565b506060820151610d549060038301906013615a1e565b505050806001019050610cbd565b5050505b60405162461bcd60e51b8152600401610c2f906166ac565b60075460ff1681565b600f5481565b334114610dac5760405162461bcd60e51b8152600401610c2f90616bf7565b3a15610dca5760405162461bcd60e51b8152600401610c2f90616986565b8251604080518281526020808402820101909152606090828015610e0857816020015b610df5615a4b565b815260200190600190039081610ded5790505b50905060005b82811015610eb2576040518060c00160405280878381518110610e2d57fe5b60200260200101516001600160a01b0316815260200160006001600160a01b0316815260200160006001600160a01b03168152602001868381518110610e6f57fe5b60200260200101516001600160401b031681526020016000151581526020016000815250828281518110610e9f57fe5b6020908102919091010152600101610e0e565b50606080610ec08386613616565b9150915060005b600154811015610fb657600060018281548110610ee057fe5b906000526020600020906004020160030154905080600014610fad57600060018381548110610f0b57fe5b9060005260206000209060040201600301819055506120026001600160a01b031663092193ab8260018581548110610f3f57fe5b60009182526020909120600491820201546040516001600160e01b031960e086901b168152610f7a926001600160a01b039092169101616155565b6000604051808303818588803b158015610f9357600080fd5b505af1158015610fa7573d6000803e3d6000fd5b50505050505b50600101610ec7565b504715611024577f6ecc855f9440a9282c90913bbc91619fd44f5ec0b462af28d127b116f130aa4d47604051610fec9190616d9f565b60405180910390a1604051611002904780156108fc02916000818181858888f19350505050158015611022573d6000803e3d6000fd5b505b600060035581511561103a5761103a8282613b00565b6110016001600160a01b031663fc4333cd6040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561107757600080fd5b505af115801561108b573d6000803e3d6000fd5b50506040517fedd8d7296956dd970ab4de3f2fc03be2b0ffc615d20cd4c72c6e44f928630ebf925060009150a150505050505050565b60035481565b61200581565b3361200214610d665760405162461bcd60e51b8152600401610c2f90616d59565b33411461110d5760405162461bcd60e51b8152600401610c2f90616bf7565b601054431161112e5760405162461bcd60e51b8152600401610c2f906165d6565b3a1561114c5760405162461bcd60e51b8152600401610c2f90616986565b60005460ff1661116e5760405162461bcd60e51b8152600401610c2f9061645a565b60006110023168056bc75e2d631000008111156111a55761119e8168056bc75e2d6310000063ffffffff6142ef16565b91506111ac565b505061142d565b6040516309a99b4f60e41b815261100290639a99b4f0906111d39030908690600401616169565b602060405180830381600087803b1580156111ed57600080fd5b505af1158015611201573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112259190616000565b91508161123357505061142d565b6000805b848110156112615785858281811061124b57fe5b9050602002013582019150806001019050611237565b508061126f5750505061142d565b6000806000805b89811015611425578489898381811061128b57fe5b9050602002013588028161129b57fe5b0493508a8a828181106112aa57fe5b90506020020160208101906112bf9190615dc9565b6001600160a01b038116600090815260046020526040902054909350915081156113db5760006001808403815481106112f457fe5b9060005260206000209060040201905080600201601c9054906101000a900460ff161561136157836001600160a01b03167fb9c75cbbfde137c4281689580799ef5f52144e78858f776a5979b2b212137d85866040516113549190616d9f565b60405180910390a26113d5565b600354611374908663ffffffff61433116565b600390815581015461138c908663ffffffff61433116565b60038201556040516001600160a01b038516907fcb0aad6cf9cd03bdf6137e359f541c42f38b39f007cae8e89e88aa7d8c6617b2906113cc908890616d9f565b60405180910390a25b5061141d565b826001600160a01b03167fb9c75cbbfde137c4281689580799ef5f52144e78858f776a5979b2b212137d85856040516114149190616d9f565b60405180910390a25b600101611276565b505050505050505b5050436010555050565b600154600090821061144b57506000611501565b60006001600160a01b03166001838154811061146357fe5b60009182526020909120600490910201546001600160a01b03161480611493575060085415806114935750600a54155b806114a2575060085460095410155b806114b357506114b182611506565b155b806114dc57506000600b83815481106114c857fe5b906000526020600020906016020160000154115b806114f0575060016114ec6129ec565b5111155b156114fd57506000611501565b5060015b919050565b600154600090821061151a57506000611501565b600b548210611557576001828154811061153057fe5b9060005260206000209060040201600201601c9054906101000a900460ff16159050611501565b6001828154811061156457fe5b9060005260206000209060040201600201601c9054906101000a900460ff161580156115b15750600b828154811061159857fe5b600091825260209091206001601690920201015460ff16155b92915050565b600b54611675576115c6615975565b60015460005b8181101561167157600b8054600181018255600091909152835160008051602061701583398151915260169092029182019081556020808601516000805160206170558339815191528401805460ff191691151591909117905560408601518051879461164d936000805160206170358339815191529091019201906159a4565b5060608201516116639060038301906013615a1e565b5050508060010190506115cc565b5050505b336110011480611686575033612002145b6116a25760405162461bcd60e51b8152600401610c2f90616491565b6001600160a01b038116600090815260046020526040902054806116c65750611719565b6001810390506000600b82815481106116db57fe5b600091825260209091206001601690920201015460ff1690506116fe8383614356565b80156117075750805b15610c51576009805460001901905550505b50565b60015460609081906000805b8281101561176f576001818154811061173d57fe5b9060005260206000209060040201600201601c9054906101000a900460ff16611767576001909101905b600101611728565b5060608160405190808252806020026020018201604052801561179c578160200160208202803683370190505b5090506060826040519080825280602002602001820160405280156117d557816020015b60608152602001906001900390816117c05790505b50600b54600094509091508414156119505760005b8481101561194a57600181815481106117ff57fe5b9060005260206000209060040201600201601c9054906101000a900460ff16611942576001818154811061182f57fe5b600091825260209091206004909102015483516001600160a01b039091169084908690811061185a57fe5b60200260200101906001600160a01b031690816001600160a01b031681525050600b818154811061188757fe5b600091825260209182902060026016909202018101805460408051601f60001961010060018616150201909316949094049182018590048502840185019052808352919290919083018282801561191f5780601f106118f45761010080835404028352916020019161191f565b820191906000526020600020905b81548152906001019060200180831161190257829003601f168201915b505050505082858151811061193057fe5b60209081029190910101526001909301925b6001016117ea565b506119ec565b60005b848110156119ea576001818154811061196857fe5b9060005260206000209060040201600201601c9054906101000a900460ff166119e2576001818154811061199857fe5b600091825260209091206004909102015483516001600160a01b03909116908490869081106119c357fe5b6001600160a01b03909216602092830291909101909101526001909301925b600101611953565b505b909450925050505b9091565b61100181565b60085481565b606181565b6060806000600e549050600080600c5411611a25576015611a29565b600c545b90506060611a356129ec565b90506060611a4282614719565b905082825111611a595790945092506119f4915050565b83838351031015611a6b578282510393505b8315611aa15760c84304611a8783838388880360008a8a614887565b611a9f8383838888038989038a8b8b8b510301614887565b505b606083604051908082528060200260200182016040528015611acd578160200160208202803683370190505b509050606084604051908082528060200260200182016040528015611b0657816020015b6060815260200190600190039081611af15790505b50905060005b85811015611b8757848181518110611b2057fe5b6020026020010151838281518110611b3457fe5b60200260200101906001600160a01b031690816001600160a01b031681525050838181518110611b6057fe5b6020026020010151828281518110611b7457fe5b6020908102919091010152600101611b0c565b509096509450505050509091565b60065481565b61200681565b61200081565b6001600160a01b03811660009081526004602052604081205480611bcf576000915050611501565b60001901611bdc81611506565b9392505050565b6001600160a01b03811660009081526004602052604081205480611c0b576000915050611501565b600180820381548110611c1a57fe5b906000526020600020906004020160030154915050919050565b60128181548110611c4157fe5b600091825260209182902001805460408051601f6002600019610100600187161502019094169390930492830185900485028101850190915281815293509091830182828015611cd25780601f10611ca757610100808354040283529160200191611cd2565b820191906000526020600020905b815481529060010190602001808311611cb557829003601f168201915b505050505081565b60105481565b60018181548110611ced57fe5b600091825260209091206004909102018054600182015460028301546003909301546001600160a01b0392831694509082169291821691600160a01b81046001600160401b031691600160e01b90910460ff169086565b61100581565b61100881565b6103e881565b600c5481565b61200381565b61271081565b3361200014610d665760405162461bcd60e51b8152600401610c2f90616ba8565b60025481565b60115481565b60145460ff1681565b600a5481565b600060175460001415611db957506001611dbe565b506017545b90565b6001600160a01b03811660009081526004602052604081205480611df75760405162461bcd60e51b8152600401610c2f90616b30565b6000190192915050565b600b54611ebf57611e10615975565b60015460005b81811015611ebb57600b8054600181018255600091909152835160008051602061701583398151915260169092029182019081556020808601516000805160206170558339815191528401805460ff1916911515919091179055604086015180518794611e97936000805160206170358339815191529091019201906159a4565b506060820151611ead9060038301906013615a1e565b505050806001019050611e16565b5050505b600854611ecc5760036008555b600a54611ed9576002600a555b6000611ee433611dc1565b9050611eef81611437565b611f0b5760405162461bcd60e51b8152600401610c2f90616902565b61171933826149de565b61100781565b600381565b60c881565b61100681565b604051806101e001604052806101ab8152602001616e6a6101ab913981565b60005460ff1681565b61200281565b61300081565b600081565b60005460ff16611f865760405162461bcd60e51b8152600401610c2f9061645a565b3361100714611fa75760405162461bcd60e51b8152600401610c2f906169b4565b61200784848080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250506040805180820190915260098152686275726e526174696f60b81b60208201529150614a769050565b156120bc576020811461202c5760405162461bcd60e51b8152600401610c2f906162ba565b604080516020601f840181900481028201810190925282815260009161206a91858580838501838280828437600092019190915250614acf92505050565b905061271061209660185461208a600f548561433190919063ffffffff16565b9063ffffffff61433116565b11156120b45760405162461bcd60e51b8152600401610c2f906166d0565b60065561298a565b61212684848080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250506040805180820190915260138152726d61784e756d4f664d61696e7461696e696e6760681b60208201529150614a769050565b156121c0576020811461214b5760405162461bcd60e51b8152600401610c2f906162f1565b604080516020601f840181900481028201810190925282815260009161218991858580838501838280828437600092019190915250614acf92505050565b600c5490915080612198575060155b8082106121b75760405162461bcd60e51b8152600401610c2f90616618565b5060085561298a565b61222984848080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250506040805180820190915260128152716d61696e7461696e536c6173685363616c6560701b60208201529150614a769050565b156122c2576020811461224e5760405162461bcd60e51b8152600401610c2f906163e0565b604080516020601f840181900481028201810190925282815260009161228c91858580838501838280828437600092019190915250614acf92505050565b905060008111801561229e5750600a81105b6122ba5760405162461bcd60e51b8152600401610c2f90616c8c565b600a5561298a565b61233684848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505060408051808201909152601981527f6d61784e756d4f66576f726b696e6743616e646964617465730000000000000060208201529150614a769050565b156123c5576020811461235b5760405162461bcd60e51b8152600401610c2f90616394565b604080516020601f840181900481028201810190925282815260009161239991858580838501838280828437600092019190915250614acf92505050565b9050600d548111156123bd5760405162461bcd60e51b8152600401610c2f906167d9565b600e5561298a565b61242e84848080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250506040805180820190915260128152716d61784e756d4f6643616e6469646174657360701b60208201529150614a769050565b156124b057602081146124535760405162461bcd60e51b8152600401610c2f90616a02565b604080516020601f840181900481028201810190925282815260009161249191858580838501838280828437600092019190915250614acf92505050565b600d819055600e549091508110156124aa57600d54600e555b5061298a565b61251484848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505060408051808201909152600d81526c6e756d4f66436162696e65747360981b60208201529150614a769050565b1561263957602081146125395760405162461bcd60e51b8152600401610c2f90616425565b604080516020601f840181900481028201810190925282815260009161257791858580838501838280828437600092019190915250614acf92505050565b9050600081116125995760405162461bcd60e51b8152600401610c2f9061658e565b60006120026001600160a01b031663c473318f6040518163ffffffff1660e01b815260040160206040518083038186803b1580156125d657600080fd5b505afa1580156125ea573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061260e9190616000565b9050808211156126305760405162461bcd60e51b8152600401610c2f90616337565b50600c5561298a565b6126a584848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505060408051808201909152601581527473797374656d52657761726442617365526174696f60581b60208201529150614a769050565b1561274e57602081146126ca5760405162461bcd60e51b8152600401610c2f90616c44565b604080516020601f840181900481028201810190925282815260009161270891858580838501838280828437600092019190915250614acf92505050565b905061271061272860185461208a6006548561433190919063ffffffff16565b11156127465760405162461bcd60e51b8152600401610c2f906164ff565b600f5561298a565b6127c284848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505060408051808201909152601881527f73797374656d526577617264416e74694d4556526174696f000000000000000060208201529150614a769050565b1561286b57602081146127e75760405162461bcd60e51b8152600401610c2f9061675f565b604080516020601f840181900481028201810190925282815260009161282591858580838501838280828437600092019190915250614acf92505050565b9050612710612845600f5461208a6006548561433190919063ffffffff16565b11156128635760405162461bcd60e51b8152600401610c2f90616873565b60185561298a565b6128cc84848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505060408051808201909152600a8152690e8eae4dc98cadccee8d60b31b60208201529150614a769050565b1561297257602081146128f15760405162461bcd60e51b8152600401610c2f90616675565b604080516020601f840181900481028201810190925282815260009161292f91858580838501838280828437600092019190915250614acf92505050565b905060038110158015612943575060098111155b8061294e5750806001145b61296a5760405162461bcd60e51b8152600401610c2f90616aaa565b60175561298a565b60405162461bcd60e51b8152600401610c2f90616ce9565b7f6cdb0ac70ab7f2e2d035cca5be60d89906f2dede7648ddbd7402189c1eeed17a848484846040516129bf9493929190616288565b60405180910390a150505050565b60046020526000908152604090205481565b68056bc75e2d6310000081565b6001546060906000805b82811015612a1b57612a0781611506565b15612a13578160010191505b6001016129f6565b50606081604051908082528060200260200182016040528015612a48578160200160208202803683370190505b5090506000915060005b83811015612acf57612a6381611506565b15612ac75760018181548110612a7557fe5b600091825260209091206004909102015482516001600160a01b0390911690839085908110612aa057fe5b60200260200101906001600160a01b031690816001600160a01b0316815250508260010192505b600101612a52565b509250505090565b601581565b61027181565b600281565b61100281565b60175481565b60138181548110611c4157fe5b60185481565b6000612b106129ec565b519050600080600c5411612b25576015612b29565b600c545b905080821115612b37578091505b81612b4157600191505b5090565b60055481565b61100381565b61200481565b60005460ff1615612b7a5760405162461bcd60e51b8152600401610c2f90616a73565b612b82615a80565b6000612ba8604051806101e001604052806101ab8152602001616e6a6101ab9139614ad4565b9150915080612bc95760405162461bcd60e51b8152600401610c2f90616b67565b60005b826020015151811015612cee57600183602001518281518110612beb57fe5b60209081029190910181015182546001818101855560009485528385208351600493840290910180546001600160a01b039283166001600160a01b03199182161782558587015182850180549185169183169190911790556040860151600283018054606089015160808a01511515600160e01b0260ff60e01b196001600160401b03909216600160a01b0267ffffffffffffffff60a01b199590981692909516919091179290921694909417161790915560a090930151600390930192909255918601518051918501939185908110612cc157fe5b602090810291909101810151516001600160a01b0316825281019190915260400160002055600101612bcc565b50506000805460ff1916600117905550565b600d5481565b601354600090815b81811015612e0f57612df785858080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050601380549092508591508110612d5f57fe5b600091825260209182902001805460408051601f6002600019610100600187161502019094169390930492830185900485028101850190915281815292830182828015612ded5780601f10612dc257610100808354040283529160200191612ded565b820191906000526020600020905b815481529060010190602001808311612dd057829003601f168201915b5050505050614c90565b15612e07576001925050506115b1565b600101612d0e565b5060125460005b81811015612e8057612e6786868080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050601280549092508591508110612d5f57fe5b15612e7857600193505050506115b1565b600101612e16565b50600095945050505050565b3361100114612ead5760405162461bcd60e51b8152600401610c2f90616d10565b600b54612f6b57612ebc615975565b60015460005b81811015612f6757600b8054600181018255600091909152835160008051602061701583398151915260169092029182019081556020808601516000805160206170558339815191528401805460ff1916911515919091179055604086015180518794612f43936000805160206170358339815191529091019201906159a4565b506060820151612f599060038301906013615a1e565b505050806001019050612ec2565b5050505b6000612f7682614cf4565b9050612f8181611437565b15612f9057612f9082826149de565b5050565b334114612fb35760405162461bcd60e51b8152600401610c2f90616bf7565b60005460ff16612fd55760405162461bcd60e51b8152600401610c2f9061645a565b60003411612ff55760405162461bcd60e51b8152600401610c2f906167aa565b3a156130135760405162461bcd60e51b8152600401610c2f90616986565b6001600160a01b03811660009081526004602052604090205460145434919060ff1661305357610271600f556103e86006556014805460ff191660011790555b600f54601754600110801561306a57506000601854115b1561308f57600160175403601754438161308057fe5b06601854028161308c57fe5b04015b60008311801561309f5750600081115b1561314c5760006130c86127106130bc348563ffffffff614e7716565b9063ffffffff614eb116565b9050801561314a576040516110029082156108fc029083906000818181858888f193505050501580156130ff573d6000803e3d6000fd5b507f6ecc855f9440a9282c90913bbc91619fd44f5ec0b462af28d127b116f130aa4d8160405161312f9190616d9f565b60405180910390a1613147848263ffffffff6142ef16565b93505b505b60008311801561315e57506000600654115b156132045760006131806127106130bc60065434614e7790919063ffffffff16565b905080156132025760405161dead9082156108fc029083906000818181858888f193505050501580156131b7573d6000803e3d6000fd5b507f627059660ea01c4733a328effb2294d2f86905bf806da763a89cee254de8bee5816040516131e79190616d9f565b60405180910390a16131ff848263ffffffff6142ef16565b93505b505b811561330257600060018084038154811061321b57fe5b9060005260206000209060040201905080600201601c9054906101000a900460ff161561328857846001600160a01b03167ff177e5d6c5764d79c32883ed824111d9b13f5668cf6ab1cc12dd36791dd955b48560405161327b9190616d9f565b60405180910390a26132fc565b60035461329b908563ffffffff61433116565b60039081558101546132b3908563ffffffff61433116565b60038201556040516001600160a01b038616907f93a090ecc682c002995fad3c85b30c5651d7fd29b0be5da9d784a3302aedc055906132f3908790616d9f565b60405180910390a25b50613344565b836001600160a01b03167ff177e5d6c5764d79c32883ed824111d9b13f5668cf6ab1cc12dd36791dd955b48460405161333b9190616d9f565b60405180910390a25b50505050565b600e5481565b61100081565b61dead81565b600b818154811061336957fe5b6000918252602091829020601691909102018054600180830154600280850180546040805161010096831615969096026000190190911692909204601f810188900488028501880190925281845293965060ff909116949192918301828280156134145780601f106133e957610100808354040283529160200191613414565b820191906000526020600020905b8154815290600101906020018083116133f757829003601f168201915b5050505050905083565b61100481565b6000600a5460001480613435575082155b806134405750600954155b1561344d5750600061360e565b60096000815460019003919050819055506000613498600a546130bc866130bc600b8a8154811061347a57fe5b6000918252602090912060169091020154439063ffffffff6142ef16565b90506000600b86815481106134a957fe5b906000526020600020906016020160010160006101000a81548160ff0219169083151502179055506000806110016001600160a01b0316638256ace66040518163ffffffff1660e01b8152600401604080518083038186803b15801561350e57600080fd5b505afa158015613522573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906135469190616018565b91509150600093508083106135c45761355f8888614356565b506040516328aa02b160e01b8152611001906328aa02b190613589908b9087908a906004016161c4565b600060405180830381600087803b1580156135a357600080fd5b505af11580156135b7573d6000803e3d6000fd5b50505050600193506135d6565b8183106135d6576135d488614cf4565b505b6040516001600160a01b038916907fb9d38178dc641ff1817967a63c9078cbcd955a9f1fcd75e0e3636de615d44d3b90600090a25050505b949350505050565b606080600080808080613627612b06565b6001549091505b801561385957600181039250600b838154811061364757fe5b600091825260209091206001601690920201015460ff1661366757613850565b6001838154811061367457fe5b600091825260208220600490910201546001600160a01b0316955061369e90869085908590613424565b9350836136aa57613850565b60405163436aa28360e11b81526000908190612002906386d54506906136d4908a90600401616155565b60206040518083038186803b1580156136ec57600080fd5b505afa158015613700573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906137249190615de5565b90506001600160a01b038116156137ad576040516302ceee9160e11b81526120029063059ddd229061375a908490600401616155565b60206040518083038186803b15801561377257600080fd5b505afa158015613786573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906137aa9190615de5565b91505b60005b8c5181101561384c57876001600160a01b03168d82815181106137cf57fe5b6020026020010151600001516001600160a01b031614806138185750826001600160a01b03168d828151811061380157fe5b6020026020010151600001516001600160a01b0316145b156138445760018d828151811061382b57fe5b602090810291909101015190151560809091015261384c565b6001016137b0565b5050505b6000190161362e565b5060005b89518110156138c65789818151811061387257fe5b602002602001015160800151806138b2575060006001600160a01b03168a828151811061389b57fe5b6020026020010151600001516001600160a01b0316145b156138be578560010195505b60010161385d565b50885185106139ae5760408051600180825281830190925290816020015b6138ec615a4b565b8152602001906001900390816138e4575050604080516001808252818301909252919850602082015b60608152602001906001900390816139155790505095508860008151811061393957fe5b60200260200101518760008151811061394e57fe5b60200260200101819052508760008151811061396657fe5b60200260200101518660008151811061397b57fe5b602002602001018190525060008760008151811061399557fe5b6020908102919091010151901515608090910152613af3565b848951036040519080825280602002602001820160405280156139eb57816020015b6139d8615a4b565b8152602001906001900390816139d05790505b50965084895103604051908082528060200260200182016040528015613a2557816020015b6060815260200190600190039081613a105790505b5095506000915060005b8951811015613af157898181518110613a4457fe5b602002602001015160800151158015613a87575060006001600160a01b03168a8281518110613a6f57fe5b6020026020010151600001516001600160a01b031614155b15613ae957898181518110613a9857fe5b6020026020010151888481518110613aac57fe5b6020026020010181905250888181518110613ac357fe5b6020026020010151878481518110613ad757fe5b60200260200101819052508260010192505b600101613a2f565b505b50505050505b9250929050565b600154825160005b82811015613c1d576001613b1a615a4b565b60018381548110613b2757fe5b600091825260208083206040805160c08101825260049490940290910180546001600160a01b0390811685526001820154811693850193909352600281015492831691840191909152600160a01b82046001600160401b03166060840152600160e01b90910460ff16151560808301526003015460a082015291505b84811015613bf157878181518110613bb757fe5b6020026020010151600001516001600160a01b031682600001516001600160a01b03161415613be95760009250613bf1565b600101613ba3565b508115613c135780516001600160a01b03166000908152600460205260408120555b5050600101613b08565b5080821115613cdc57805b82811015613cda576001805480613c3b57fe5b60008281526020812060046000199093019283020180546001600160a01b0319908116825560018201805490911690556002810180546001600160e81b0319169055600301559055600b805480613c8e57fe5b60008281526020812060166000199093019283020181815560018101805460ff1916905590613cc06002830182615aa4565b613cce600383016000615ae8565b50509055600101613c28565b505b6000818310613ceb5781613ced565b825b905060005b8181101561409157613d9f868281518110613d0957fe5b602002602001015160018381548110613d1e57fe5b60009182526020918290206040805160c08101825260049390930290910180546001600160a01b0390811684526001820154811694840194909452600281015493841691830191909152600160a01b83046001600160401b03166060830152600160e01b90920460ff161515608082015260039091015460a0820152614ef3565b613f53578060010160046000888481518110613db757fe5b6020026020010151600001516001600160a01b03166001600160a01b0316815260200190815260200160002081905550858181518110613df357fe5b602002602001015160018281548110613e0857fe5b6000918252602091829020835160049092020180546001600160a01b039283166001600160a01b0319918216178255928401516001820180549184169185169190911790556040840151600282018054606087015160808801511515600160e01b0260ff60e01b196001600160401b03909216600160a01b0267ffffffffffffffff60a01b1995909716929097169190911792909216939093171692909217905560a0909101516003909101558451859082908110613ec357fe5b6020026020010151600b8281548110613ed857fe5b90600052602060002090601602016002019080519060200190613efc9291906159a4565b506000600b8281548110613f0c57fe5b60009182526020822060169190910201600101805460ff191692151592909217909155600b805483908110613f3d57fe5b6000918252602090912060169091020155614089565b858181518110613f5f57fe5b60200260200101516060015160018281548110613f7857fe5b906000526020600020906004020160020160146101000a8154816001600160401b0302191690836001600160401b0316021790555061403e858281518110613fbc57fe5b6020026020010151600b8381548110613fd157fe5b600091825260209182902060026016909202018101805460408051601f600019610100600186161502019093169490940491820185900485028401850190528083529192909190830182828015612ded5780601f10612dc257610100808354040283529160200191612ded565b6140895784818151811061404e57fe5b6020026020010151600b828154811061406357fe5b906000526020600020906016020160020190805190602001906140879291906159a4565b505b600101613cf2565b5082821115614269576140a2615975565b835b83811015614266578581815181106140b857fe5b6020026020010151826040018190525060018782815181106140d657fe5b6020908102919091018101518254600181810185556000948552838520835160049093020180546001600160a01b039384166001600160a01b0319918216178255848601518284018054918616918316919091179055604080860151600284018054606089015160808a01511515600160e01b0260ff60e01b196001600160401b03909216600160a01b0267ffffffffffffffff60a01b1995909a1692909616919091179290921696909617169190911790935560a090930151600390930192909255600b80549283018155909352845160169091026000805160206170158339815191528101918255858301516000805160206170558339815191528201805491151560ff199092169190911790559285015180518694929361420c93600080516020617035833981519152019201906159a4565b5060608201516142229060038301906013615a1e565b505050806001016004600089848151811061423957fe5b602090810291909101810151516001600160a01b03168252810191909152604001600020556001016140a4565b50505b614271614f4f565b614279615131565b6000600981905560015493505b838110156142e7576000600b828154811061429d57fe5b60009182526020822060169190910201600101805460ff191692151592909217909155600b8054839081106142ce57fe5b6000918252602090912060169091020155600101614286565b505050505050565b6000611bdc83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525061531f565b600082820183811015611bdc5760405162461bcd60e51b8152600401610c2f906164c8565b6000806001838154811061436657fe5b906000526020600020906004020160030154905060006001808054905003905060016143906129ec565b51116143c5576000600185815481106143a557fe5b9060005260206000209060040201600301819055506000925050506115b1565b846001600160a01b03167f3b6f9ef90462b512a1293ecec018670bf7b7f1876fb727590a8a6d7643130a70836040516143fe9190616d9f565b60405180910390a26001600160a01b038516600090815260046020526040812055835b600154600019018110156145eb576001816001018154811061443f57fe5b90600052602060002090600402016001828154811061445a57fe5b60009182526020909120825460049092020180546001600160a01b03199081166001600160a01b0393841617825560018085015481840180548416918616919091179055600280860180549185018054909416919095161780835584546001600160401b03600160a01b91829004160267ffffffffffffffff60a01b1990911617808355935460ff600160e01b918290041615150260ff60e01b19909416939093179055600392830154920191909155600b80549091830190811061451b57fe5b9060005260206000209060160201600b828154811061453657fe5b600091825260209091208254601690920201908155600180830154818301805460ff909216151560ff199092169190911790556002808401805461458d938386019390821615610100026000190190911604615af7565b506145a060038281019084016013615b6c565b509050508060010160046000600184815481106145b957fe5b600091825260208083206004909202909101546001600160a01b03168352820192909252604001902055600101614421565b5060018054806145f757fe5b60008281526020812060046000199093019283020180546001600160a01b0319908116825560018201805490911690556002810180546001600160e81b0319169055600301559055600b80548061464a57fe5b60008281526020812060166000199093019283020181815560018101805460ff191690559061467c6002830182615aa4565b61468a600383016000615ae8565b50509055600081838161469957fe5b049050801561470d5760015460005b8181101561470a576146e183600183815481106146c157fe5b90600052602060002090600402016003015461433190919063ffffffff16565b600182815481106146ee57fe5b60009182526020909120600360049092020101556001016146a8565b50505b50600195945050505050565b60015481516040805182815260208084028201019091526060929190839082801561475857816020015b60608152602001906001900390816147435790505b50600b54909150831461476f579250611501915050565b60005b8281101561487e57600b60016004600089858151811061478e57fe5b60200260200101516001600160a01b03166001600160a01b031681526020019081526020016000205403815481106147c257fe5b600091825260209182902060026016909202018101805460408051601f60001961010060018616150201909316949094049182018590048502840185019052808352919290919083018282801561485a5780601f1061482f5761010080835404028352916020019161485a565b820191906000526020600020905b81548152906001019060200180831161483d57829003601f168201915b505050505082828151811061486b57fe5b6020908102919091010152600101614772565b50949350505050565b60005b828110156149d457600082878388016040516020016148aa929190616147565b6040516020818303038152906040528051906020012060001c816148ca57fe5b069050808501828701146149cb57600089838801815181106148e857fe5b602002602001015190506060898489018151811061490257fe5b602002602001015190508a8388018151811061491a57fe5b60200260200101518b858a018151811061493057fe5b60200260200101906001600160a01b031690816001600160a01b031681525050818b8489018151811061495f57fe5b60200260200101906001600160a01b031690816001600160a01b031681525050898388018151811061498d57fe5b60200260200101518a858a01815181106149a357fe5b6020026020010181905250808a848901815181106149bd57fe5b602002602001018190525050505b5060010161488a565b5050505050505050565b600980546001908101909155600b8054839081106149f857fe5b906000526020600020906016020160010160006101000a81548160ff02191690831515021790555043600b8281548110614a2e57fe5b600091825260208220601690910201919091556040516001600160a01b038416917ff62981a567ec3cec866c6fa93c55bcdf841d6292d18b8d522ececa769375d82d91a25050565b600081604051602001614a89919061612b565b6040516020818303038152906040528051906020012083604051602001614ab0919061612b565b6040516020818303038152906040528051906020012014905092915050565b015190565b614adc615a80565b6000614ae6615a80565b614aee615b96565b614aff614afa8661534b565b615370565b90506000805b614b0e836153ba565b15614c825780614b3357614b29614b24846153db565b615429565b60ff168452614c7a565b8060011415614c75576060614b4f614b4a856153db565b6154a9565b90508051604051908082528060200260200182016040528015614b8c57816020015b614b79615a4b565b815260200190600190039081614b715790505b5085602001819052508051604051908082528060200260200182016040528015614bca57816020015b6060815260200190600190039081614bb55790505b50604086015260005b8151811015614c6a57614be4615a4b565b60606000614c04858581518110614bf757fe5b602002602001015161557a565b92509250925080614c24578860009a509a50505050505050505050614c8b565b8289602001518581518110614c3557fe5b60200260200101819052508189604001518581518110614c5157fe5b6020026020010181905250505050806001019050614bd3565b506001925050614c7a565b614c82565b600101614b05565b50919350909150505b915091565b815181516000916001918114808314614cac5760009250614cea565b600160208701838101602088015b600284838510011415614ce5578051835114614cd95760009650600093505b60209283019201614cba565b505050505b5090949350505050565b6001600160a01b03811660009081526004602052604081205480614d1d57506000199050611501565b600181039050600060018281548110614d3257fe5b9060005260206000209060040201600301549050600060018381548110614d5557fe5b6000918252602090912060036004909202010155600154604051600019909101906001600160a01b038616907f8cd4e147d8af98a9e3b6724021b8bf6aed2e5dac71c38f2dce8161b82585b25d90614dae908590616d9f565b60405180910390a280614dc657829350505050611501565b6000818381614dd157fe5b0490508015614e6d5760005b84811015614e1f57614df682600183815481106146c157fe5b60018281548110614e0357fe5b6000918252602090912060036004909202010155600101614ddd565b50600180549085015b81811015614e6a57614e4183600183815481106146c157fe5b60018281548110614e4e57fe5b6000918252602090912060036004909202010155600101614e28565b50505b5091949350505050565b600082614e86575060006115b1565b82820282848281614e9357fe5b0414611bdc5760405162461bcd60e51b8152600401610c2f90616945565b6000611bdc83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250615694565b805182516000916001600160a01b039182169116148015614f2d575081602001516001600160a01b031683602001516001600160a01b0316145b8015611bdc5750506040908101519101516001600160a01b0390811691161490565b60125460135480821115614f9a57805b82811015614f98576012805480614f7257fe5b600190038181906000526020600020016000614f8e9190615aa4565b9055600101614f5f565b505b6000818310614fa95781614fab565b825b905060005b818110156150c35761506860128281548110614fc857fe5b600091825260209182902001805460408051601f60026000196101006001871615020190941693909304928301859004850281018501909152818152928301828280156150565780601f1061502b57610100808354040283529160200191615056565b820191906000526020600020905b81548152906001019060200180831161503957829003601f168201915b505050505060138381548110612d5f57fe5b6150bb576013818154811061507957fe5b906000526020600020016012828154811061509057fe5b9060005260206000200190805460018160011615610100020316600290046150b9929190615af7565b505b600101614fb0565b5082821115610c5157825b82811015613344576012601382815481106150e557fe5b6000918252602080832084546001818101875595855291909320929091018054615128949390920192909160026101009282161592909202600019011604615af7565b506001016150ce565b601354600b548082111561517c57805b8281101561517a57601380548061515457fe5b6001900381819060005260206000200160006151709190615aa4565b9055600101615141565b505b600081831061518b578161518d565b825b905060005b818110156152ac5761524a601382815481106151aa57fe5b600091825260209182902001805460408051601f60026000196101006001871615020190941693909304928301859004850281018501909152818152928301828280156152385780601f1061520d57610100808354040283529160200191615238565b820191906000526020600020905b81548152906001019060200180831161521b57829003601f168201915b5050505050600b8381548110613fd157fe5b6152a457600b818154811061525b57fe5b90600052602060002090601602016002016013828154811061527957fe5b9060005260206000200190805460018160011615610100020316600290046152a2929190615af7565b505b600101615192565b5082821115610c5157825b82811015613344576013600b82815481106152ce57fe5b60009182526020808320845460018082018755958552919093206016929092029092016002908101805461531695939094019390926000199082161561010002011604615af7565b506001016152b7565b600081848411156153435760405162461bcd60e51b8152600401610c2f9190616275565b505050900390565b615353615bb6565b506040805180820190915281518152602082810190820152919050565b615378615b96565b615381826156cb565b61538a57600080fd5b60006153998360200151615705565b60208085015160408051808201909152868152920190820152915050919050565b60006153c4615bb6565b505080518051602091820151919092015191011190565b6153e3615bb6565b6153ec826153ba565b6153f557600080fd5b6020820151600061540582615768565b80830160209586015260408051808201909152908152938401919091525090919050565b80516000901580159061543e57508151602110155b61544757600080fd5b60006154568360200151615705565b9050808360000151101561547c5760405162461bcd60e51b8152600401610c2f90616af9565b82516020808501518301805192849003929183101561487e57506020919091036101000a90049392505050565b60606154b4826156cb565b6154bd57600080fd5b60006154c883615849565b905060608160405190808252806020026020018201604052801561550657816020015b6154f3615bb6565b8152602001906001900390816154eb5790505b50905060006155188560200151615705565b60208601510190506000805b8481101561556f5761553583615768565b915060405180604001604052808381526020018481525084828151811061555857fe5b602090810291909101015291810191600101615524565b509195945050505050565b615582615a4b565b6060600061558e615a4b565b6060615598615b96565b6155a187615370565b90506000805b6155b0836153ba565b1561568557806155db576155cb6155c6846153db565b6158a5565b6001600160a01b0316855261567d565b8060011415615603576155f06155c6846153db565b6001600160a01b0316602086015261567d565b806002141561562b576156186155c6846153db565b6001600160a01b0316604086015261567d565b806003141561565757615640614b24846153db565b6001600160401b031660608601526001915061567d565b80600414156156785761567161566c846153db565b6158bf565b935061567d565b615685565b6001016155a7565b50929791965091945092505050565b600081836156b55760405162461bcd60e51b8152600401610c2f9190616275565b5060008385816156c157fe5b0495945050505050565b80516000906156dc57506000611501565b6020820151805160001a9060c08210156156fb57600092505050611501565b5060019392505050565b8051600090811a608081101561571f576000915050611501565b60b881108061573a575060c0811080159061573a575060f881105b15615749576001915050611501565b60c081101561575d5760b519019050611501565b60f519019050611501565b80516000908190811a60808110156157835760019150615842565b60b881101561579857607e1981019150615842565b60c08110156157e957600060b78203600186019550806020036101000a8651049150600181018201935050808310156157e35760405162461bcd60e51b8152600401610c2f90616848565b50615842565b60f88110156157fe5760be1981019150615842565b600060f78203600186019550806020036101000a8651049150600181018201935050808310156158405760405162461bcd60e51b8152600401610c2f90616848565b505b5092915050565b805160009061585a57506000611501565b6000809050600061586e8460200151615705565b602085015185519181019250015b8082101561589c5761588d82615768565b8201915082600101925061587c565b50909392505050565b80516000906015146158b657600080fd5b6115b182615429565b80516060906158cd57600080fd5b60006158dc8360200151615705565b83516040805191839003808352601f19601f8201168301602001909152919250606090828015615913576020820181803683370190505b509050600081602001905061487e8487602001510182858061593457610c51565b5b60208110615954578251825260209283019290910190601f1901615935565b915181516020939093036101000a6000190180199091169216919091179052565b6040518060800160405280600081526020016000151581526020016060815260200161599f615bd0565b905290565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106159e557805160ff1916838001178555615a12565b82800160010185558215615a12579182015b82811115615a125782518255916020019190600101906159f7565b50612b41929150615bef565b8260138101928215615a125791602002820182811115615a125782518255916020019190600101906159f7565b6040805160c081018252600080825260208201819052918101829052606081018290526080810182905260a081019190915290565b6040518060600160405280600060ff16815260200160608152602001606081525090565b50805460018160011615610100020316600290046000825580601f10615aca5750611719565b601f0160209004906000526020600020908101906117199190615bef565b50611719906013810190615bef565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10615b305780548555615a12565b82800160010185558215615a1257600052602060002091601f016020900482015b82811115615a12578254825591600101919060010190615b51565b8260138101928215615a125791820182811115615a12578254825591600101919060010190615b51565b6040518060400160405280615ba9615bb6565b8152602001600081525090565b604051806040016040528060008152602001600081525090565b6040518061026001604052806013906020820280368337509192915050565b611dbe91905b80821115612b415760008155600101615bf5565b80356115b181616e54565b60008083601f840112615c25578182fd5b5081356001600160401b03811115615c3b578182fd5b6020830191508360208083028501011115613af957600080fd5b6000601f8381840112615c66578182fd5b8235615c79615c7482616e09565b616de3565b818152925060208084019085810160005b84811015615d0b578135880189603f820112615ca557600080fd5b838101356001600160401b03811115615cbd57600080fd5b615cce818901601f19168601616de3565b81815260408c81848601011115615ce457600080fd5b82818501888401375060009181018601919091528552509282019290820190600101615c8a565b50505050505092915050565b600082601f830112615d27578081fd5b8135615d35615c7482616e09565b818152915060208083019084810181840286018201871015615d5657600080fd5b6000805b85811015615d0b5782356001600160401b0381168114615d78578283fd5b85529383019391830191600101615d5a565b60008083601f840112615d9b578182fd5b5081356001600160401b03811115615db1578182fd5b602083019150836020828501011115613af957600080fd5b600060208284031215615dda578081fd5b8135611bdc81616e54565b600060208284031215615df6578081fd5b8151611bdc81616e54565b60008060008060408587031215615e16578283fd5b84356001600160401b0380821115615e2c578485fd5b615e3888838901615c14565b90965094506020870135915080821115615e50578384fd5b50615e5d87828801615c14565b95989497509550505050565b600080600060608486031215615e7d578283fd5b83356001600160401b0380821115615e93578485fd5b81860187601f820112615ea4578586fd5b80359250615eb4615c7484616e09565b80848252602080830192508084018b828389028701011115615ed457898afd5b8994505b86851015615efe57615eea8c82615c09565b845260019490940193928101928101615ed8565b509097508801359350505080821115615f15578384fd5b615f2187838801615d17565b93506040860135915080821115615f36578283fd5b50615f4386828701615c55565b9150509250925092565b60008060208385031215615f5f578182fd5b82356001600160401b03811115615f74578283fd5b615f8085828601615d8a565b90969095509350505050565b60008060008060408587031215615fa1578384fd5b84356001600160401b0380821115615fb7578586fd5b615fc388838901615d8a565b90965094506020870135915080821115615fdb578384fd5b50615e5d87828801615d8a565b600060208284031215615ff9578081fd5b5035919050565b600060208284031215616011578081fd5b5051919050565b6000806040838503121561602a578182fd5b505080516020909101519092909150565b60008060006040848603121561604f578081fd5b833560ff8116811461605f578182fd5b925060208401356001600160401b03811115616079578182fd5b61608586828701615d8a565b9497909650939450505050565b6000815180845260208085019450808401835b838110156160ca5781516001600160a01b0316875295820195908201906001016160a5565b509495945050505050565b60008284528282602086013780602084860101526020601f19601f85011685010190509392505050565b60008151808452616117816020860160208601616e28565b601f01601f19169290920160200192915050565b6000825161613d818460208701616e28565b9190910192915050565b918252602082015260400190565b6001600160a01b0391909116815260200190565b6001600160a01b03929092168252602082015260400190565b6001600160a01b03968716815294861660208601529290941660408401526001600160401b03166060830152911515608082015260a081019190915260c00190565b6001600160a01b0393909316835260208301919091521515604082015260600190565b600060208252611bdc6020830184616092565b60006040825261620d6040830185616092565b602083820381850152818551808452828401915082838202850101838801865b8381101561625b57601f198784030185526162498383516160ff565b9486019492509085019060010161622d565b50909998505050505050505050565b901515815260200190565b600060208252611bdc60208301846160ff565b60006040825261629c6040830186886160d5565b82810360208401526162af8185876160d5565b979650505050505050565b6020808252601c908201527f6c656e677468206f66206275726e526174696f206d69736d6174636800000000604082015260600190565b60208082526026908201527f6c656e677468206f66206d61784e756d4f664d61696e7461696e696e67206d696040820152650e6dac2e8c6d60d31b606082015260800190565b60208082526038908201527f746865206e756d4f66436162696e657473206d757374206265206c657373207460408201527f68616e206d6178456c656374656456616c696461746f72730000000000000000606082015260800190565b6020808252602c908201527f6c656e677468206f66206d61784e756d4f66576f726b696e6743616e6469646160408201526b0e8cae640dad2e6dac2e8c6d60a31b606082015260800190565b60208082526025908201527f6c656e677468206f66206d61696e7461696e536c6173685363616c65206d69736040820152640dac2e8c6d60db1b606082015260800190565b6020808252818101527f6c656e677468206f66206e756d4f66436162696e657473206d69736d61746368604082015260600190565b60208082526019908201527f74686520636f6e7472616374206e6f7420696e69742079657400000000000000604082015260600190565b6020808252601f908201527f6f6e6c7920736c617368206f72207374616b6548756220636f6e747261637400604082015260600190565b6020808252601b908201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604082015260600190565b60208082526063908201527f7468652073797374656d52657761726442617365526174696f20706c7573206260408201527f75726e526174696f20616e642073797374656d526577617264416e74694d455660608201527f526174696f206d757374206265206e6f2067726561746572207468616e20313060808201526203030360ec1b60a082015260c00190565b60208082526028908201527f746865206e756d4f66436162696e657473206d75737420626520677265617465604082015267072207468616e20360c41b606082015260800190565b60208082526022908201527f63616e206e6f7420646f207468697320747769636520696e206f6e6520626c6f604082015261636b60f01b606082015260800190565b60208082526037908201527f746865206d61784e756d4f664d61696e7461696e696e67206d7573742062652060408201527f6c657373207468616e206e756d4f66436162696e657473000000000000000000606082015260800190565b6020808252601d908201527f6c656e677468206f66207475726e4c656e677468206d69736d61746368000000604082015260600190565b6020808252600a908201526919195c1c9958d85d195960b21b604082015260600190565b60208082526063908201527f746865206275726e526174696f20706c75732073797374656d5265776172644260408201527f617365526174696f20616e642073797374656d526577617264416e74694d455660608201527f526174696f206d757374206265206e6f2067726561746572207468616e20313060808201526203030360ec1b60a082015260c00190565b6020808252602b908201527f6c656e677468206f662073797374656d526577617264416e74694d455652617460408201526a0d2de40dad2e6dac2e8c6d60ab1b606082015260800190565b6020808252601590820152746465706f7369742076616c7565206973207a65726f60581b604082015260600190565b60208082526049908201527f746865206d61784e756d4f66576f726b696e6743616e64696461746573206d7560408201527f7374206265206e6f742067726561746572207468616e206d61784e756d4f6643606082015268616e6469646174657360b81b608082015260a00190565b6020808252601190820152706164646974696f6e206f766572666c6f7760781b604082015260600190565b60208082526063908201527f7468652073797374656d526577617264416e74694d4556526174696f20706c7560408201527f73206275726e526174696f20616e642073797374656d5265776172644261736560608201527f526174696f206d757374206265206e6f2067726561746572207468616e20313060808201526203030360ec1b60a082015260c00190565b60208082526023908201527f63616e206e6f7420656e7465722054656d706f72617279204d61696e74656e616040820152626e636560e81b606082015260800190565b60208082526021908201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6040820152607760f81b606082015260800190565b6020808252601490820152736761737072696365206973206e6f74207a65726f60601b604082015260600190565b6020808252602e908201527f746865206d6573736167652073656e646572206d75737420626520676f76657260408201526d1b985b98d94818dbdb9d1c9858dd60921b606082015260800190565b60208082526025908201527f6c656e677468206f66206d61784e756d4f6643616e64696461746573206d69736040820152640dac2e8c6d60db1b606082015260800190565b6020808252601290820152716e6f7420696e206d61696e74656e616e636560701b604082015260600190565b60208082526019908201527f74686520636f6e747261637420616c726561647920696e697400000000000000604082015260600190565b6020808252602f908201527f746865207475726e4c656e6774682073686f756c6420626520696e205b332c3960408201526e5d206f7220657175616c20746f203160881b606082015260800190565b6020808252601a908201527f6c656e677468206973206c657373207468616e206f6666736574000000000000604082015260600190565b60208082526017908201527f6f6e6c792063757272656e742076616c696461746f7273000000000000000000604082015260600190565b60208082526021908201527f6661696c656420746f20706172736520696e69742076616c696461746f7253656040820152601d60fa1b606082015260800190565b6020808252602f908201527f746865206d6573736167652073656e646572206d7573742062652063726f737360408201526e0818da185a5b8818dbdb9d1c9858dd608a1b606082015260800190565b6020808252602d908201527f746865206d6573736167652073656e646572206d75737420626520746865206260408201526c3637b1b590383937b23ab1b2b960991b606082015260800190565b60208082526028908201527f6c656e677468206f662073797374656d52657761726442617365526174696f206040820152670dad2e6dac2e8c6d60c31b606082015260800190565b6020808252603e908201527f746865206d61696e7461696e536c6173685363616c65206d757374206265206760408201527f726561746572207468616e203020616e64206c657373207468616e2031300000606082015260800190565b6020808252600d908201526c756e6b6e6f776e20706172616d60981b604082015260600190565b60208082526029908201527f746865206d6573736167652073656e646572206d75737420626520736c6173686040820152680818dbdb9d1c9858dd60ba1b606082015260800190565b6020808252601f908201527f746865206d73672073656e646572206d757374206265207374616b6548756200604082015260600190565b61ffff91909116815260200190565b90815260200190565b6000848252831515602083015260606040830152616dc960608301846160ff565b95945050505050565b63ffffffff91909116815260200190565b6040518181016001600160401b0381118282101715616e0157600080fd5b604052919050565b60006001600160401b03821115616e1e578081fd5b5060209081020190565b60005b83811015616e43578181015183820152602001616e2b565b838111156133445750506000910152565b6001600160a01b038116811461171957600080fdfef901a880f901a4f844941284214b9b9c85549ab3d2b972df0deef66ac2c9946ddf42a51534fc98d0c0a3b42c963cace8441ddf946ddf42a51534fc98d0c0a3b42c963cace8441ddf8410000000f84494a2959d3f95eae5dc7d70144ce1b73b403b7eb6e0948081ef03f1d9e0bb4a5bf38f16285c879299f07f948081ef03f1d9e0bb4a5bf38f16285c879299f07f8410000000f8449435552c16704d214347f29fa77f77da6d75d7c75294dc4973e838e3949c77aced16ac2315dc2d7ab11194dc4973e838e3949c77aced16ac2315dc2d7ab1118410000000f84494980a75ecd1309ea12fa2ed87a8744fbfc9b863d594cc6ac05c95a99c1f7b5f88de0e3486c82293b27094cc6ac05c95a99c1f7b5f88de0e3486c82293b2708410000000f84494f474cf03cceff28abc65c9cbae594f725c80e12d94e61a183325a18a173319dd8e19c8d069459e217594e61a183325a18a173319dd8e19c8d069459e21758410000000f84494b71b214cb885500844365e95cd9942c7276e7fd894d22ca3ba2141d23adab65ce4940eb7665ea2b6a794d22ca3ba2141d23adab65ce4940eb7665ea2b6a784100000000175b7a638427703f0dbe7bb9bbf987a2551717b34e79f33b5b1008d1fa01db90175b7a638427703f0dbe7bb9bbf987a2551717b34e79f33b5b1008d1fa01dbb0175b7a638427703f0dbe7bb9bbf987a2551717b34e79f33b5b1008d1fa01dbaa164736f6c6343000604000a \ No newline at end of file diff --git a/core/systemcontracts/pascal/mainnet/GovernorContract b/core/systemcontracts/pascal/mainnet/GovernorContract index 42a2ceae66..38dc110eb0 100644 --- a/core/systemcontracts/pascal/mainnet/GovernorContract +++ b/core/systemcontracts/pascal/mainnet/GovernorContract @@ -1 +1 @@ -6080604052600436106103dd5760003560e01c80637b3c71d3116101fd578063c170ec0b11610118578063deaaa7cc116100ab578063ece40cc11161007a578063ece40cc114610de9578063f23a6e6114610e09578063f8ce560a14610e35578063fc0c546a14610e55578063fe0d94c114610e7657600080fd5b8063deaaa7cc14610caa578063e23a9a5214610cde578063ea0217cf14610da9578063eb9019d414610dc957600080fd5b8063d33219b4116100e7578063d33219b414610c05578063da95691a14610c24578063dd4e2ba514610c44578063ddf0b00914610c8a57600080fd5b8063c170ec0b14610b97578063c28bc2fa14610bb2578063c59057e414610bc5578063d07f91e914610be557600080fd5b8063a7713a7011610190578063b187bd261161015f578063b187bd2614610b18578063b58131b014610b36578063bc197c8114610b4b578063c01f9e3714610b7757600080fd5b8063a7713a7014610aa3578063a890c91014610ab8578063ab58fb8e14610ad8578063ac43175114610af857600080fd5b806384b0196e116101cc57806384b0196e14610a1b57806391ddadf414610a4357806397c3d33414610a6f5780639a802a6d14610a8357600080fd5b80637b3c71d3146109b15780637d5e81e2146109d15780638129fc1c146109f15780638456cb5914610a0657600080fd5b806332b8113e116102f85780634838d1651161028b57806354fd4d501161025a57806354fd4d501461090757806356781388146109315780635f398a141461095157806360c4247f1461097157806370b0f6601461099157600080fd5b80634838d165146108715780634a49ac4c146108a15780634bf5d7e9146108c1578063533ddd14146108d657600080fd5b806340e58ee5116102c757806340e58ee5146107c6578063417c73a7146107e65780634385963214610806578063452115d61461085157600080fd5b806332b8113e1461073a5780633932abb1146107635780633bccf4fd146107795780633e4f49e61461079957600080fd5b8063150b7a02116103705780632656227d1161033f5780632656227d1461068c5780632d63f6931461069f5780632fe3e261146106d6578063328dd9821461070a57600080fd5b8063150b7a02146105e5578063160cbed71461062957806317977c611461064957806324bc1a641461067757600080fd5b8063046f7da2116103ac578063046f7da21461053857806306f3f9e61461054d57806306fdde031461056d578063143489d01461058f57600080fd5b8063013cf08b1461044d57806301ffc9a7146104c857806302a251a3146104f8578063034201811461051857600080fd5b3661044857306103eb610e89565b6001600160a01b0316146104465760405162461bcd60e51b815260206004820152601f60248201527f476f7665726e6f723a206d7573742073656e6420746f206578656375746f720060448201526064015b60405180910390fd5b005b600080fd5b34801561045957600080fd5b5061046d610468366004615c39565b610ea3565b604080519a8b526001600160a01b0390991660208b0152978901969096526060880194909452608087019290925260a086015260c085015260e084015215156101008301521515610120820152610140015b60405180910390f35b3480156104d457600080fd5b506104e86104e3366004615c52565b610f5e565b60405190151581526020016104bf565b34801561050457600080fd5b50610195545b6040519081526020016104bf565b34801561052457600080fd5b5061050a610533366004615d98565b610f6f565b34801561054457600080fd5b50610446611067565b34801561055957600080fd5b50610446610568366004615c39565b6110f7565b34801561057957600080fd5b50610582611182565b6040516104bf9190615e8e565b34801561059b57600080fd5b506105cd6105aa366004615c39565b60009081526101636020526040902054600160401b90046001600160a01b031690565b6040516001600160a01b0390911681526020016104bf565b3480156105f157600080fd5b50610610610600366004615eb6565b630a85bd0160e11b949350505050565b6040516001600160e01b031990911681526020016104bf565b34801561063557600080fd5b5061050a61064436600461608d565b611215565b34801561065557600080fd5b5061050a61066436600461611c565b6102c36020526000908152604090205481565b34801561068357600080fd5b5061050a611300565b61050a61069a36600461608d565b611326565b3480156106ab57600080fd5b5061050a6106ba366004615c39565b600090815261016360205260409020546001600160401b031690565b3480156106e257600080fd5b5061050a7fb3b3f3b703cd84ce352197dcff232b1b5d3cfb2025ce47cf04742d0651f1af8881565b34801561071657600080fd5b5061072a610725366004615c39565b611419565b6040516104bf9493929190616202565b34801561074657600080fd5b5061028f546040516001600160401b0390911681526020016104bf565b34801561076f57600080fd5b506101945461050a565b34801561078557600080fd5b5061050a61079436600461624f565b6116ab565b3480156107a557600080fd5b506107b96107b4366004615c39565b611721565b6040516104bf91906162b3565b3480156107d257600080fd5b506104466107e1366004615c39565b61172c565b3480156107f257600080fd5b5061044661080136600461611c565b611757565b34801561081257600080fd5b506104e86108213660046162db565b60008281526101c6602090815260408083206001600160a01b038516845260080190915290205460ff1692915050565b34801561085d57600080fd5b5061050a61086c36600461608d565b6117d8565b34801561087d57600080fd5b506104e861088c36600461611c565b60016020526000908152604090205460ff1681565b3480156108ad57600080fd5b506104466108bc36600461611c565b6117e6565b3480156108cd57600080fd5b50610582611861565b3480156108e257600080fd5b506104e86108f136600461611c565b6102c16020526000908152604090205460ff1681565b34801561091357600080fd5b506040805180820190915260018152603160f81b6020820152610582565b34801561093d57600080fd5b5061050a61094c36600461630b565b61190e565b34801561095d57600080fd5b5061050a61096c366004616337565b611937565b34801561097d57600080fd5b5061050a61098c366004615c39565b611981565b34801561099d57600080fd5b506104466109ac366004615c39565b611a36565b3480156109bd57600080fd5b5061050a6109cc3660046163ba565b611abe565b3480156109dd57600080fd5b5061050a6109ec366004616413565b611b10565b3480156109fd57600080fd5b50610446611c2b565b348015610a1257600080fd5b50610446611e5d565b348015610a2757600080fd5b50610a30611ef3565b6040516104bf97969594939291906164b3565b348015610a4f57600080fd5b50610a58611f91565b60405165ffffffffffff90911681526020016104bf565b348015610a7b57600080fd5b50606461050a565b348015610a8f57600080fd5b5061050a610a9e366004616515565b612005565b348015610aaf57600080fd5b5061050a61201c565b348015610ac457600080fd5b50610446610ad336600461611c565b612049565b348015610ae457600080fd5b5061050a610af3366004615c39565b6120d1565b348015610b0457600080fd5b50610446610b1336600461656d565b61216d565b348015610b2457600080fd5b5060005462010000900460ff166104e8565b348015610b4257600080fd5b5061050a6128b2565b348015610b5757600080fd5b50610610610b663660046165cc565b63bc197c8160e01b95945050505050565b348015610b8357600080fd5b5061050a610b92366004615c39565b6128be565b348015610ba357600080fd5b506102c2546104e89060ff1681565b610446610bc036600461665f565b6128c9565b348015610bd157600080fd5b5061050a610be036600461608d565b6129d9565b348015610bf157600080fd5b50610446610c003660046166a2565b612a13565b348015610c1157600080fd5b5061022b546001600160a01b03166105cd565b348015610c3057600080fd5b5061050a610c3f3660046166cb565b612a9b565b348015610c5057600080fd5b5060408051808201909152601a81527f737570706f72743d627261766f2671756f72756d3d627261766f0000000000006020820152610582565b348015610c9657600080fd5b50610446610ca5366004615c39565b612b22565b348015610cb657600080fd5b5061050a7f150214d74d59b7d1e90c73fc22ef3d991dd0a76b046543d4d80ab92d2a50328f81565b348015610cea57600080fd5b50610d79610cf93660046162db565b60408051606081018252600080825260208201819052918101919091525060009182526101c6602090815260408084206001600160a01b0393909316845260089092018152918190208151606081018352905460ff8082161515835261010082041693820193909352620100009092046001600160601b03169082015290565b6040805182511515815260208084015160ff1690820152918101516001600160601b0316908201526060016104bf565b348015610db557600080fd5b50610446610dc4366004615c39565b612b45565b348015610dd557600080fd5b5061050a610de436600461676c565b612bcd565b348015610df557600080fd5b50610446610e04366004615c39565b612bee565b348015610e1557600080fd5b50610610610e24366004616798565b63f23a6e6160e01b95945050505050565b348015610e4157600080fd5b5061050a610e50366004615c39565b612c76565b348015610e6157600080fd5b506101f8546105cd906001600160a01b031681565b610446610e84366004615c39565b612d05565b6000610e9e61022b546001600160a01b031690565b905090565b8060008080808080808080610eb78a6120d1565b60008c815261016360205260409020549098506001600160401b03169650610ede8b6128be565b60008c81526101c66020526040812080546005820154600683015460078401546001600160a01b039093169e50949a509850929650919450610f1f8d611721565b90506002816007811115610f3557610f3561629d565b1493506007816007811115610f4c57610f4c61629d565b14925050509193959799509193959799565b6000610f6982612d28565b92915050565b60008061101361100b7fb3b3f3b703cd84ce352197dcff232b1b5d3cfb2025ce47cf04742d0651f1af888c8c8c8c604051610fab929190616800565b60405180910390208b80519060200120604051602001610ff0959493929190948552602085019390935260ff9190911660408401526060830152608082015260a00190565b60405160208183030381529060405280519060200120612d4d565b868686612d7a565b90506110598a828b8b8b8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152508d9250612d98915050565b9a9950505050505050505050565b600054630100000090046001600160a01b03163314611099576040516306fbb1e360e01b815260040160405180910390fd5b60005462010000900460ff166110c257604051636cd6020160e01b815260040160405180910390fd5b6000805462ff0000191681556040517f62451d457bc659158be6e6247f56ec1df424a5c7597f71c20c2bc44e0965c8f99190a1565b6110ff610e89565b6001600160a01b0316336001600160a01b03161461112f5760405162461bcd60e51b815260040161043d90616810565b30611138610e89565b6001600160a01b0316146111765760008036604051611158929190616800565b604051809103902090505b8061116f610164612e01565b0361116357505b61117f81612e80565b50565b6060610162805461119290616847565b80601f01602080910402602001604051908101604052809291908181526020018280546111be90616847565b801561120b5780601f106111e05761010080835404028352916020019161120b565b820191906000526020600020905b8154815290600101906020018083116111ee57829003601f168201915b5050505050905090565b6000805462010000900460ff161561124057604051631785c68160e01b815260040160405180910390fd5b3360009081526001602052604090205460ff16156112715760405163b1d02c3d60e01b815260040160405180910390fd5b60005b85518110156112ea576102c1600087838151811061129457611294616881565b6020908102919091018101516001600160a01b031682528101919091526040016000205460ff166112d857604051630b094f2760e31b815260040160405180910390fd5b806112e2816168ad565b915050611274565b506112f785858585612ff1565b95945050505050565b6000610e9e600161130f611f91565b61131991906168c6565b65ffffffffffff16612c76565b600080611335868686866129d9565b9050600061134282611721565b905060048160078111156113585761135861629d565b1480611375575060058160078111156113735761137361629d565b145b6113915760405162461bcd60e51b815260040161043d906168ec565b6000828152610163602052604090819020600201805460ff19166001179055517f712ae1383f79ac853f8d882153778e0260ef8f03b504e2866e0593e04d2b291f906113e09084815260200190565b60405180910390a16113f582888888886131f6565b6114028288888888613297565b61140f8288888888613379565b5095945050505050565b60608060608060006101c660008781526020019081526020016000209050806001018160020182600301836004018380548060200260200160405190810160405280929190818152602001828054801561149c57602002820191906000526020600020905b81546001600160a01b0316815260019091019060200180831161147e575b50505050509350828054806020026020016040519081016040528092919081815260200182805480156114ee57602002820191906000526020600020905b8154815260200190600101908083116114da575b5050505050925081805480602002602001604051908101604052809291908181526020016000905b828210156115c257838290600052602060002001805461153590616847565b80601f016020809104026020016040519081016040528092919081815260200182805461156190616847565b80156115ae5780601f10611583576101008083540402835291602001916115ae565b820191906000526020600020905b81548152906001019060200180831161159157829003601f168201915b505050505081526020019060010190611516565b50505050915080805480602002602001604051908101604052809291908181526020016000905b8282101561169557838290600052602060002001805461160890616847565b80601f016020809104026020016040519081016040528092919081815260200182805461163490616847565b80156116815780601f1061165657610100808354040283529160200191611681565b820191906000526020600020905b81548152906001019060200180831161166457829003601f168201915b5050505050815260200190600101906115e9565b5050505090509450945094509450509193509193565b604080517f150214d74d59b7d1e90c73fc22ef3d991dd0a76b046543d4d80ab92d2a50328f602082015290810186905260ff8516606082015260009081906116f99061100b90608001610ff0565b9050611716878288604051806020016040528060008152506133b4565b979650505050505050565b6000610f69826133d7565b60008060008061173b85613524565b935093509350935061174f848484846117d8565b505050505050565b600054630100000090046001600160a01b03163314611789576040516306fbb1e360e01b815260040160405180910390fd5b6001600160a01b0381166000818152600160208190526040808320805460ff1916909217909155517f7fd26be6fc92aff63f1f4409b2b2ddeb272a888031d7f55ec830485ec61941869190a250565b60006112f7858585856137b5565b600054630100000090046001600160a01b03163314611818576040516306fbb1e360e01b815260040160405180910390fd5b6001600160a01b038116600081815260016020526040808220805460ff19169055517fe0db3499b7fdc3da4cddff5f45d694549c19835e7f719fb5606d3ad1a5de40119190a250565b6101f85460408051634bf5d7e960e01b815290516060926001600160a01b031691634bf5d7e99160048083019260009291908290030181865afa9250505080156118cd57506040513d6000823e601f3d908101601f191682016040526118ca919081019061692d565b60015b611909575060408051808201909152601d81527f6d6f64653d626c6f636b6e756d6265722666726f6d3d64656661756c74000000602082015290565b919050565b60008033905061192f848285604051806020016040528060008152506133b4565b949350505050565b60008033905061171687828888888080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152508a9250612d98915050565b61025e5460009080820361199a57505061025d54919050565b600061025e6119aa60018461699a565b815481106119ba576119ba616881565b60009182526020918290206040805180820190915291015463ffffffff8116808352600160201b9091046001600160e01b03169282019290925291508410611a1057602001516001600160e01b03169392505050565b611a25611a1c85613880565b61025e906138e9565b6001600160e01b0316949350505050565b611a3e610e89565b6001600160a01b0316336001600160a01b031614611a6e5760405162461bcd60e51b815260040161043d90616810565b30611a77610e89565b6001600160a01b031614611ab55760008036604051611a97929190616800565b604051809103902090505b80611aae610164612e01565b03611aa257505b61117f8161399c565b600080339050611b0686828787878080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506133b492505050565b9695505050505050565b6000805462010000900460ff1615611b3b57604051631785c68160e01b815260040160405180910390fd5b3360009081526001602052604090205460ff1615611b6c5760405163b1d02c3d60e01b815260040160405180910390fd5b611b746139df565b3360009081526102c360205260409020548015611be9576000611b9682611721565b90506001816007811115611bac57611bac61629d565b1480611bc957506000816007811115611bc757611bc761629d565b145b15611be75760405163867f3ee560e01b815260040160405180910390fd5b505b825160208401206000611bfe888888856129d9565b3360009081526102c3602052604090208190559050611c1f88888888613a8a565b98975050505050505050565b600054610100900460ff1615808015611c4b5750600054600160ff909116105b80611c655750303b158015611c65575060005460ff166001145b611cc85760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b606482015260840161043d565b6000805460ff191660011790558015611ceb576000805461ff0019166101001790555b334114611d0b5760405163022d8c9560e31b815260040160405180910390fd5b3a15611d2a576040516383f1b1d360e01b815260040160405180910390fd5b611d566040518060400160405280600b81526020016a2129a1a3b7bb32b93737b960a91b815250613af2565b611d82611d65600360006169c3565b611d73600362093a806169c3565b680ad78ebc5ac6200000613b49565b611d8a613b80565b611d95612005613ba7565b611da0612006613bd7565b611daa600a613c07565b611dc0611dbb6003620151806169c3565b613c37565b6110076000526102c16020527f2f832952f0ef896b8c8edd6d16a2e4f2591a90375e33021e3b9ff197f3793fc0805460ff19166001179055611e157308e68ec70fa3b629784fdb28887e206ce8561e08613c67565b801561117f576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a150565b600054630100000090046001600160a01b03163314611e8f576040516306fbb1e360e01b815260040160405180910390fd5b60005462010000900460ff1615611eb957604051631785c68160e01b815260040160405180910390fd5b6000805462ff00001916620100001781556040517f9e87fac88ff661f02d44f95383c817fece4bce600a3dab7a54406878b965e7529190a1565b6000606080600080600060606098546000801b148015611f135750609954155b611f575760405162461bcd60e51b81526020600482015260156024820152741152540dcc4c8e88155b9a5b9a5d1a585b1a5e9959605a1b604482015260640161043d565b611f5f613cba565b611f67613cc9565b60408051600080825260208201909252600f60f81b9b939a50919850469750309650945092509050565b6101f854604080516324776b7d60e21b815290516000926001600160a01b0316916391ddadf49160048083019260209291908290030181865afa925050508015611ff8575060408051601f3d908101601f19168201909252611ff5918101906169e5565b60015b61190957610e9e43613cd8565b6000612012848484613d3f565b90505b9392505050565b61025e54600090156120415761203361025e613db6565b6001600160e01b0316905090565b5061025d5490565b612051610e89565b6001600160a01b0316336001600160a01b0316146120815760405162461bcd60e51b815260040161043d90616810565b3061208a610e89565b6001600160a01b0316146120c857600080366040516120aa929190616800565b604051809103902090505b806120c1610164612e01565b036120b557505b61117f81613de6565b61022b54600082815261022c602052604080822054905163d45c443560e01b81526004810191909152909182916001600160a01b039091169063d45c443590602401602060405180830381865afa158015612130573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121549190616a0d565b9050806001146121645780612015565b60009392505050565b336110071461219357604051630f22c43960e41b8152611007600482015260240161043d565b6121f96040518060400160405280600b81526020016a766f74696e6744656c617960a81b81525085858080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509293925050613e519050565b156122ae57602081146122275783838383604051630a5a604160e01b815260040161043d9493929190616a4f565b604080516020601f8401819004810282018101909252828152600091612268918585808385018382808284376000920191909152509293925050613eaa9050565b905080158061227957506201518081115b1561229f5784848484604051630a5a604160e01b815260040161043d9493929190616a4f565b6122a88161399c565b5061286f565b6123156040518060400160405280600c81526020016b1d9bdd1a5b99d4195c9a5bd960a21b81525085858080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509293925050613e519050565b156123c457602081146123435783838383604051630a5a604160e01b815260040161043d9493929190616a4f565b604080516020601f8401819004810282018101909252828152600091612384918585808385018382808284376000920191909152509293925050613eaa9050565b9050801580612395575062278d0081115b156123bb5784848484604051630a5a604160e01b815260040161043d9493929190616a4f565b6122a881613eaf565b612430604051806040016040528060118152602001701c1c9bdc1bdcd85b151a1c995cda1bdb19607a1b81525085858080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509293925050613e519050565b156124e6576020811461245e5783838383604051630a5a604160e01b815260040161043d9493929190616a4f565b604080516020601f840181900481028201810190925282815260009161249f918585808385018382808284376000920191909152509293925050613eaa9050565b90508015806124b7575069021e19e0c9bab240000081115b156124dd5784848484604051630a5a604160e01b815260040161043d9493929190616a4f565b6122a881613f52565b6125506040518060400160405280600f81526020016e38bab7b93ab6a73ab6b2b930ba37b960891b81525085858080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509293925050613e519050565b156125ff576020811461257e5783838383604051630a5a604160e01b815260040161043d9493929190616a4f565b604080516020601f84018190048102820181019092528281526000916125bf918585808385018382808284376000920191909152509293925050613eaa9050565b905060058110806125d05750601481115b156125f65784848484604051630a5a604160e01b815260040161043d9493929190616a4f565b6122a881612e80565b61266e604051806040016040528060148152602001736d696e506572696f64416674657251756f72756d60601b81525085858080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509293925050613e519050565b15612734576008811461269c5783838383604051630a5a604160e01b815260040161043d9493929190616a4f565b60006126e2600884848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509293925050613eaa9050565b90506001600160401b038116158061270557506202a300816001600160401b0316115b1561272b5784848484604051630a5a604160e01b815260040161043d9493929190616a4f565b6122a881613f95565b6127a06040518060400160405280601181526020017033b7bb32b93737b9283937ba32b1ba37b960791b81525085858080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509293925050613e519050565b1561284e57601481146127ce5783838383604051630a5a604160e01b815260040161043d9493929190616a4f565b6000612814601484848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509293925050613eaa9050565b90506001600160a01b0381166128455784848484604051630a5a604160e01b815260040161043d9493929190616a4f565b6122a881614001565b838383836040516325ee20d560e21b815260040161043d9493929190616a4f565b7ff1ce9b2cbf50eeb05769a29e2543fd350cab46894a7dd9978a12d534bb20e633848484846040516128a49493929190616a4f565b60405180910390a150505050565b6000610e9e6101965490565b6000610f698261406d565b6128d1610e89565b6001600160a01b0316336001600160a01b0316146129015760405162461bcd60e51b815260040161043d90616810565b3061290a610e89565b6001600160a01b031614612948576000803660405161292a929190616800565b604051809103902090505b80612941610164612e01565b0361293557505b600080856001600160a01b0316858585604051612966929190616800565b60006040518083038185875af1925050503d80600081146129a3576040519150601f19603f3d011682016040523d82523d6000602084013e6129a8565b606091505b50915091506129d08282604051806060016040528060288152602001616eac602891396140ab565b50505050505050565b6000848484846040516020016129f29493929190616a76565b60408051601f19818403018152919052805160209091012095945050505050565b612a1b610e89565b6001600160a01b0316336001600160a01b031614612a4b5760405162461bcd60e51b815260040161043d90616810565b30612a54610e89565b6001600160a01b031614612a925760008036604051612a74929190616800565b604051809103902090505b80612a8b610164612e01565b03612a7f57505b61117f81613f95565b60008251845114612aff5760405162461bcd60e51b815260206004820152602860248201527f476f7665726e6f72427261766f3a20696e76616c6964207369676e61747572656044820152670e640d8cadccee8d60c31b606482015260840161043d565b612b0d3387878787876140c4565b611b068686612b1c8787614182565b85611b10565b600080600080612b3185613524565b935093509350935061174f84848484611215565b612b4d610e89565b6001600160a01b0316336001600160a01b031614612b7d5760405162461bcd60e51b815260040161043d90616810565b30612b86610e89565b6001600160a01b031614612bc45760008036604051612ba6929190616800565b604051809103902090505b80612bbd610164612e01565b03612bb157505b61117f81613eaf565b60006120158383612be960408051602081019091526000815290565b613d3f565b612bf6610e89565b6001600160a01b0316336001600160a01b031614612c265760405162461bcd60e51b815260040161043d90616810565b30612c2f610e89565b6001600160a01b031614612c6d5760008036604051612c4f929190616800565b604051809103902090505b80612c66610164612e01565b03612c5a57505b61117f81613f52565b60006064612c8383611981565b6101f854604051632394e7a360e21b8152600481018690526001600160a01b0390911690638e539e8c90602401602060405180830381865afa158015612ccd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612cf19190616a0d565b612cfb9190616ac1565b610f6991906169c3565b600080600080612d1485613524565b935093509350935061174f84848484611326565b60006001600160e01b03198216636e665ced60e01b1480610f695750610f69826142b4565b6000610f69612d5a614350565b8360405161190160f01b8152600281019290925260228201526042902090565b6000806000612d8b8787878761435a565b9150915061140f8161441e565b6000805462010000900460ff1615612dc357604051631785c68160e01b815260040160405180910390fd5b3360009081526001602052604090205460ff1615612df45760405163b1d02c3d60e01b815260040160405180910390fd5b611b068686868686614568565b6000612e1c8254600f81810b600160801b909204900b131590565b15612e3a57604051631ed9509560e11b815260040160405180910390fd5b508054600f0b6000818152600180840160205260408220805492905583546fffffffffffffffffffffffffffffffff191692016001600160801b03169190911790915590565b6064811115612f035760405162461bcd60e51b815260206004820152604360248201527f476f7665726e6f72566f74657351756f72756d4672616374696f6e3a2071756f60448201527f72756d4e756d657261746f72206f7665722071756f72756d44656e6f6d696e616064820152623a37b960e91b608482015260a40161043d565b6000612f0d61201c565b90508015801590612f1f575061025e54155b15612f8457604080518082019091526000815261025e9060208101612f438461466b565b6001600160e01b039081169091528254600181018455600093845260209384902083519490930151909116600160201b0263ffffffff909316929092179101555b612fb2612f9f612f92611f91565b65ffffffffffff16613880565b612fa88461466b565b61025e91906146d4565b505060408051828152602081018490527f0553476bf02ef2726e8ce5ced78d63e26e602e4a2257b1f559418e24b4633997910160405180910390a15050565b600080613000868686866129d9565b9050600461300d82611721565b600781111561301e5761301e61629d565b1461303b5760405162461bcd60e51b815260040161043d906168ec565b61022b546040805163793d064960e11b815290516000926001600160a01b03169163f27a0c929160048083019260209291908290030181865afa158015613086573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906130aa9190616a0d565b61022b5460405163b1c5f42760e01b81529192506001600160a01b03169063b1c5f427906130e5908a908a908a906000908b90600401616ad8565b602060405180830381865afa158015613102573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906131269190616a0d565b600083815261022c60205260408082209290925561022b5491516308f2a0bb60e41b81526001600160a01b0390921691638f2a0bb091613173918b918b918b91908b908990600401616b26565b600060405180830381600087803b15801561318d57600080fd5b505af11580156131a1573d6000803e3d6000fd5b505050507f9a2e42fd6722813d69113e7d0079d3d940171428df7373df9c7f7617cfda28928282426131d39190616b7e565b604080519283526020830191909152015b60405180910390a15095945050505050565b306131ff610e89565b6001600160a01b0316146132905760005b845181101561174f57306001600160a01b031685828151811061323557613235616881565b60200260200101516001600160a01b0316036132805761328083828151811061326057613260616881565b6020026020010151805190602001206101646146ef90919063ffffffff16565b613289816168ad565b9050613210565b5050505050565b60005462010000900460ff16156132c157604051631785c68160e01b815260040160405180910390fd5b3360009081526001602052604090205460ff16156132f25760405163b1d02c3d60e01b815260040160405180910390fd5b60005b845181101561336b576102c1600086838151811061331557613315616881565b6020908102919091018101516001600160a01b031682528101919091526040016000205460ff1661335957604051630b094f2760e31b815260040160405180910390fd5b80613363816168ad565b9150506132f5565b50613290858585858561472b565b30613382610e89565b6001600160a01b0316146132905761016454600f81810b600160801b909204900b131561329057600061016455613290565b60006112f7858585856133d260408051602081019091526000815290565b612d98565b6000806133e3836147a0565b905060048160078111156133f9576133f961629d565b146134045792915050565b600083815261022c602052604090205480613420575092915050565b61022b54604051632ab0f52960e01b8152600481018390526001600160a01b0390911690632ab0f52990602401602060405180830381865afa15801561346a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061348e9190616b91565b1561349d575060079392505050565b61022b54604051632c258a9f60e11b8152600481018390526001600160a01b039091169063584b153e90602401602060405180830381865afa1580156134e7573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061350b9190616b91565b1561351a575060059392505050565b5060029392505050565b60608060606000806101c66000878152602001908152602001600020905080600101816002016136f683600301805480602002602001604051908101604052809291908181526020016000905b8282101561361d57838290600052602060002001805461359090616847565b80601f01602080910402602001604051908101604052809291908181526020018280546135bc90616847565b80156136095780601f106135de57610100808354040283529160200191613609565b820191906000526020600020905b8154815290600101906020018083116135ec57829003601f168201915b505050505081526020019060010190613571565b50505060048601805460408051602080840282018101909252828152935060009084015b828210156136ed57838290600052602060002001805461366090616847565b80601f016020809104026020016040519081016040528092919081815260200182805461368c90616847565b80156136d95780601f106136ae576101008083540402835291602001916136d9565b820191906000526020600020905b8154815290600101906020018083116136bc57829003601f168201915b505050505081526020019060010190613641565b50505050614182565b600984015483546040805160208084028201810190925282815291869183018282801561374c57602002820191906000526020600020905b81546001600160a01b0316815260019091019060200180831161372e575b505050505093508280548060200260200160405190810160405280929190818152602001828054801561379e57602002820191906000526020600020905b81548152602001906001019080831161378a575b505050505092509450945094509450509193509193565b6000806137c4868686866129d9565b60008181526101c660205260409020549091506001600160a01b03163381148061381857506137f16128b2565b6138168260016137ff611f91565b61380991906168c6565b65ffffffffffff16612bcd565b105b6138745760405162461bcd60e51b815260206004820152602760248201527f476f7665726e6f72427261766f3a2070726f706f7365722061626f76652074686044820152661c995cda1bdb1960ca1b606482015260840161043d565b611716878787876148d8565b600063ffffffff8211156138e55760405162461bcd60e51b815260206004820152602660248201527f53616665436173743a2076616c756520646f65736e27742066697420696e203360448201526532206269747360d01b606482015260840161043d565b5090565b815460009081816005811115613946576000613904846148e6565b61390e908561699a565b60008881526020902090915081015463ffffffff908116908716101561393657809150613944565b613941816001616b7e565b92505b505b6000613954878785856149ce565b9050801561398f576139798761396b60018461699a565b600091825260209091200190565b54600160201b90046001600160e01b0316611716565b6000979650505050505050565b6101945460408051918252602082018390527fc565b045403dc03c2eea82b81a0465edad9e2e7fc4d97e11421c209da93d7a93910160405180910390a161019455565b6102c25460ff16613a88576a084595161401484a0000006120056001600160a01b03166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015613a36573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613a5a9190616a0d565b1015613a79576040516311b6707f60e01b815260040160405180910390fd5b6102c2805460ff191660011790555b565b6000613ae633868686516001600160401b03811115613aab57613aab615cd5565b604051908082528060200260200182016040528015613ade57816020015b6060815260200190600190039081613ac95790505b5087876140c4565b6112f785858585614a24565b600054610100900460ff16613b195760405162461bcd60e51b815260040161043d90616bb3565b613b4081613b3b6040805180820190915260018152603160f81b602082015290565b614e03565b61117f81614e52565b600054610100900460ff16613b705760405162461bcd60e51b815260040161043d90616bb3565b613b7b838383614e8a565b505050565b600054610100900460ff16613a885760405162461bcd60e51b815260040161043d90616bb3565b600054610100900460ff16613bce5760405162461bcd60e51b815260040161043d90616bb3565b61117f81614ecc565b600054610100900460ff16613bfe5760405162461bcd60e51b815260040161043d90616bb3565b61117f81614f16565b600054610100900460ff16613c2e5760405162461bcd60e51b815260040161043d90616bb3565b61117f81614f3d565b600054610100900460ff16613c5e5760405162461bcd60e51b815260040161043d90616bb3565b61117f81614f64565b600054610100900460ff16613c8e5760405162461bcd60e51b815260040161043d90616bb3565b600080546001600160a01b039092166301000000026301000000600160b81b0319909216919091179055565b6060609a805461119290616847565b6060609b805461119290616847565b600065ffffffffffff8211156138e55760405162461bcd60e51b815260206004820152602660248201527f53616665436173743a2076616c756520646f65736e27742066697420696e203460448201526538206269747360d01b606482015260840161043d565b6101f854604051630748d63560e31b81526001600160a01b038581166004830152602482018590526000921690633a46b1a890604401602060405180830381865afa158015613d92573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120129190616a0d565b8054600090801561216457613dd08361396b60018461699a565b54600160201b90046001600160e01b0316612015565b61022b54604080516001600160a01b03928316815291831660208301527f08f74ea46ef7894f65eabfb5e6e695de773a000b47c529ab559178069b226401910160405180910390a161022b80546001600160a01b0319166001600160a01b0392909216919091179055565b600081604051602001613e649190616bfe565b6040516020818303038152906040528051906020012083604051602001613e8b9190616bfe565b6040516020818303038152906040528051906020012014905092915050565b015190565b60008111613f0f5760405162461bcd60e51b815260206004820152602760248201527f476f7665726e6f7253657474696e67733a20766f74696e6720706572696f6420604482015266746f6f206c6f7760c81b606482015260840161043d565b6101955460408051918252602082018390527f7e3f7f0708a84de9203036abaa450dccc85ad5ff52f78c170f3edb55cf5e8828910160405180910390a161019555565b6101965460408051918252602082018390527fccb45da8d5717e6c4544694297c4ba5cf151d455c9bb0ed4fc7a38411bc05461910160405180910390a161019655565b61028f54604080516001600160401b03928316815291831660208301527f7ca4ac117ed3cdce75c1161d8207c440389b1a15d69d096831664657c07dafc2910160405180910390a161028f805467ffffffffffffffff19166001600160401b0392909216919091179055565b600080546040516001600160a01b0380851693630100000090930416917f44fc1b38a4abaa91ebd1b628a5b259a698f86238c8217d68f516e87769c60c0b91a3600080546001600160a01b039092166301000000026301000000600160b81b0319909216919091179055565b60008181526101636020526040812060010154610f69906001600160401b0316600084815261029060205260409020546001600160401b0316614f8b565b606083156140ba575081612015565b6120158383614fa1565b8051602082012060006140e287876140dc8888614182565b856129d9565b60008181526101c6602052604090206009810154919250906141775780546001600160a01b0319166001600160a01b038a16178155875161412c90600183019060208b0190615a70565b50865161414290600283019060208a0190615ad1565b5085516141589060038301906020890190615b0c565b50845161416e9060048301906020880190615b5e565b50600981018390555b505050505050505050565b6060600082516001600160401b0381111561419f5761419f615cd5565b6040519080825280602002602001820160405280156141d257816020015b60608152602001906001900390816141bd5790505b50905060005b81518110156142ac578481815181106141f3576141f3616881565b6020026020010151516000146142635784818151811061421557614215616881565b60200260200101518051906020012084828151811061423657614236616881565b602002602001015160405160200161424f929190616c1a565b60405160208183030381529060405261427e565b83818151811061427557614275616881565b60200260200101515b82828151811061429057614290616881565b6020026020010181905250806142a5906168ad565b90506141d8565b509392505050565b600063288ace0360e11b6318df743f60e31b63bf26d89760e01b6379dd796f60e01b6001600160e01b031986168214806142fa57506001600160e01b0319868116908216145b8061431157506001600160e01b0319868116908516145b8061432c57506001600160e01b03198616630271189760e51b145b80611b0657506301ffc9a760e01b6001600160e01b03198716149695505050505050565b6000610e9e614fcb565b6000807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a08311156143915750600090506003614415565b6040805160008082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa1580156143e5573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b03811661440e57600060019250925050614415565b9150600090505b94509492505050565b60008160048111156144325761443261629d565b0361443a5750565b600181600481111561444e5761444e61629d565b0361449b5760405162461bcd60e51b815260206004820152601860248201527f45434453413a20696e76616c6964207369676e61747572650000000000000000604482015260640161043d565b60028160048111156144af576144af61629d565b036144fc5760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e67746800604482015260640161043d565b60038160048111156145105761451061629d565b0361117f5760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b606482015260840161043d565b600080614578878787878761503f565b600088815261029060205260409020549091506001600160401b03161580156145a557506145a587615195565b15611b065760006145bf61028f546001600160401b031690565b6145c7611f91565b65ffffffffffff166145d99190616c4b565b90506145e4886128be565b816001600160401b03161115614633576040516001600160401b038216815288907f541f725fb9f7c98a30cc9c0ff32fbb14358cd7159c847a3aa20a2bdc442ba5119060200160405180910390a25b600088815261029060205260409020805467ffffffffffffffff19166001600160401b03929092169190911790559695505050505050565b60006001600160e01b038211156138e55760405162461bcd60e51b815260206004820152602760248201527f53616665436173743a2076616c756520646f65736e27742066697420696e20326044820152663234206269747360c81b606482015260840161043d565b6000806146e28585856151d5565b915091505b935093915050565b8154600160801b90819004600f0b6000818152600180860160205260409091209390935583546001600160801b03908116939091011602179055565b61022b5460405163e38335e560e01b81526001600160a01b039091169063e38335e5903490614767908890889088906000908990600401616ad8565b6000604051808303818588803b15801561478057600080fd5b505af1158015614794573d6000803e3d6000fd5b50505050505050505050565b600081815261016360205260408120600281015460ff16156147c55750600792915050565b6002810154610100900460ff16156147e05750600292915050565b600083815261016360205260408120546001600160401b0316908190036148495760405162461bcd60e51b815260206004820152601d60248201527f476f7665726e6f723a20756e6b6e6f776e2070726f706f73616c206964000000604482015260640161043d565b6000614853611f91565b65ffffffffffff16905080821061486f57506000949350505050565b600061487a866128be565b905081811061488f5750600195945050505050565b61489886615195565b80156148bb575060008681526101c6602052604090206006810154600590910154115b156148cc5750600495945050505050565b50600395945050505050565b60006112f785858585615374565b6000816000036148f857506000919050565b600060016149058461542a565b901c6001901b9050600181848161491e5761491e6169ad565b048201901c90506001818481614936576149366169ad565b048201901c9050600181848161494e5761494e6169ad565b048201901c90506001818481614966576149666169ad565b048201901c9050600181848161497e5761497e6169ad565b048201901c90506001818481614996576149966169ad565b048201901c905060018184816149ae576149ae6169ad565b048201901c9050612015818285816149c8576149c86169ad565b046154be565b60005b818310156142ac5760006149e584846154cd565b60008781526020902090915063ffffffff86169082015463ffffffff161115614a1057809250614a1e565b614a1b816001616b7e565b93505b506149d1565b600033614a3181846154e8565b614a7d5760405162461bcd60e51b815260206004820152601d60248201527f476f7665726e6f723a2070726f706f7365722072657374726963746564000000604482015260640161043d565b6000614a87611f91565b65ffffffffffff169050614a996128b2565b614aa883610de460018561699a565b1015614b105760405162461bcd60e51b815260206004820152603160248201527f476f7665726e6f723a2070726f706f73657220766f7465732062656c6f7720706044820152701c9bdc1bdcd85b081d1a1c995cda1bdb19607a1b606482015260840161043d565b6000614b2588888888805190602001206129d9565b90508651885114614b485760405162461bcd60e51b815260040161043d90616c6b565b8551885114614b695760405162461bcd60e51b815260040161043d90616c6b565b6000885111614bba5760405162461bcd60e51b815260206004820152601860248201527f476f7665726e6f723a20656d7074792070726f706f73616c0000000000000000604482015260640161043d565b600081815261016360205260409020546001600160401b031615614c2a5760405162461bcd60e51b815260206004820152602160248201527f476f7665726e6f723a2070726f706f73616c20616c72656164792065786973746044820152607360f81b606482015260840161043d565b6000614c366101945490565b614c409084616b7e565b90506000614c4e6101955490565b614c589083616b7e565b90506040518060e00160405280614c6e846155d9565b6001600160401b031681526001600160a01b038716602082015260006040820152606001614c9b836155d9565b6001600160401b03908116825260006020808401829052604080850183905260609485018390528883526101638252918290208551815492870151878501519186166001600160e01b031990941693909317600160401b6001600160a01b039094168402176001600160e01b0316600160e01b60e09290921c91909102178155938501516080860151908416921c0217600183015560a08301516002909201805460c09094015161ffff1990941692151561ff00191692909217610100931515939093029290921790558a517f7d84a6263ae0d98d3329bd7b46bb4e8d6f98cd35a7adb45c274c8b7fd5ebd5e091859188918e918e91811115614da057614da0615cd5565b604051908082528060200260200182016040528015614dd357816020015b6060815260200190600190039081614dbe5790505b508d88888f604051614ded99989796959493929190616cac565b60405180910390a1509098975050505050505050565b600054610100900460ff16614e2a5760405162461bcd60e51b815260040161043d90616bb3565b609a614e368382616d8a565b50609b614e438282616d8a565b50506000609881905560995550565b600054610100900460ff16614e795760405162461bcd60e51b815260040161043d90616bb3565b610162614e868282616d8a565b5050565b600054610100900460ff16614eb15760405162461bcd60e51b815260040161043d90616bb3565b614eba8361399c565b614ec382613eaf565b613b7b81613f52565b600054610100900460ff16614ef35760405162461bcd60e51b815260040161043d90616bb3565b6101f880546001600160a01b0319166001600160a01b0392909216919091179055565b600054610100900460ff166120c85760405162461bcd60e51b815260040161043d90616bb3565b600054610100900460ff166111765760405162461bcd60e51b815260040161043d90616bb3565b600054610100900460ff16612a925760405162461bcd60e51b815260040161043d90616bb3565b6000818311614f9a5781612015565b5090919050565b815115614fb15781518083602001fd5b8060405162461bcd60e51b815260040161043d9190615e8e565b60007f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f614ff6615641565b614ffe61569a565b60408051602081019490945283019190915260608201524660808201523060a082015260c00160405160208183030381529060405280519060200120905090565b600085815261016360205260408120600161505988611721565b600781111561506a5761506a61629d565b146150c35760405162461bcd60e51b815260206004820152602360248201527f476f7665726e6f723a20766f7465206e6f742063757272656e746c792061637460448201526269766560e81b606482015260840161043d565b80546000906150dd9088906001600160401b031686613d3f565b90506150ec88888884886156cb565b835160000361514157866001600160a01b03167fb8e138887d0aa13bab447e82de9d5c1777041ecd21ca36ba824ff1e6c07ddda4898884896040516151349493929190616e49565b60405180910390a2611716565b866001600160a01b03167fe2babfbac5889a709b63bb7f598b324e08bc5a4fb9ec647fb3cbc9ec07eb87128988848989604051615182959493929190616e71565b60405180910390a2979650505050505050565b60008181526101c66020526040812060058101546151cc610e5085600090815261016360205260409020546001600160401b031690565b11159392505050565b82546000908190801561531b5760006151f38761396b60018561699a565b60408051808201909152905463ffffffff808216808452600160201b9092046001600160e01b0316602084015291925090871610156152745760405162461bcd60e51b815260206004820152601b60248201527f436865636b706f696e743a2064656372656173696e67206b6579730000000000604482015260640161043d565b805163ffffffff8088169116036152bc57846152958861396b60018661699a565b80546001600160e01b0392909216600160201b0263ffffffff90921691909117905561530b565b6040805180820190915263ffffffff80881682526001600160e01b0380881660208085019182528b54600181018d5560008d81529190912094519151909216600160201b029216919091179101555b6020015192508391506146e79050565b50506040805180820190915263ffffffff80851682526001600160e01b0380851660208085019182528854600181018a5560008a815291822095519251909316600160201b0291909316179201919091559050816146e7565b60008061538386868686615869565b600081815261022c6020526040902054909150156112f75761022b54600082815261022c60205260409081902054905163c4d252f560e01b81526001600160a01b039092169163c4d252f5916153df9160040190815260200190565b600060405180830381600087803b1580156153f957600080fd5b505af115801561540d573d6000803e3d6000fd5b505050600082815261022c60205260408120555095945050505050565b600080608083901c1561543f57608092831c92015b604083901c1561545157604092831c92015b602083901c1561546357602092831c92015b601083901c1561547557601092831c92015b600883901c1561548757600892831c92015b600483901c1561549957600492831c92015b600283901c156154ab57600292831c92015b600183901c15610f695760010192915050565b6000818310614f9a5781612015565b60006154dc60028484186169c3565b61201590848416616b7e565b80516000906034811015615500576001915050610f69565b82810160131901516001600160a01b031981166b046e0e4dee0dee6cae47a60f60a31b1461553357600192505050610f69565b60008061554160288561699a565b90505b838110156155b85760008061557888848151811061556457615564616881565b01602001516001600160f81b031916615976565b91509150816155905760019650505050505050610f69565b8060ff166004856001600160a01b0316901b1793505050806155b1906168ad565b9050615544565b50856001600160a01b0316816001600160a01b031614935050505092915050565b60006001600160401b038211156138e55760405162461bcd60e51b815260206004820152602660248201527f53616665436173743a2076616c756520646f65736e27742066697420696e203660448201526534206269747360d01b606482015260840161043d565b60008061564c613cba565b805190915015615663578051602090910120919050565b60985480156156725792915050565b7fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a4709250505090565b6000806156a5613cc9565b8051909150156156bc578051602090910120919050565b60995480156156725792915050565b60008581526101c6602090815260408083206001600160a01b038816845260088101909252909120805460ff161561575b5760405162461bcd60e51b815260206004820152602d60248201527f476f7665726e6f72436f6d7061746962696c697479427261766f3a20766f746560448201526c08185b1c9958591e4818d85cdd609a1b606482015260840161043d565b805460ff86166101000261ffff1990911617600117815561577b84615a08565b81546001600160601b039190911662010000026dffffffffffffffffffffffff00001990911617815560ff85166157cb57838260060160008282546157c09190616b7e565b909155506129d09050565b60001960ff8616016157eb57838260050160008282546157c09190616b7e565b60011960ff86160161580b57838260070160008282546157c09190616b7e565b60405162461bcd60e51b815260206004820152602d60248201527f476f7665726e6f72436f6d7061746962696c697479427261766f3a20696e766160448201526c6c696420766f7465207479706560981b606482015260840161043d565b600080615878868686866129d9565b9050600061588582611721565b9050600281600781111561589b5761589b61629d565b141580156158bb575060068160078111156158b8576158b861629d565b14155b80156158d9575060078160078111156158d6576158d661629d565b14155b6159255760405162461bcd60e51b815260206004820152601d60248201527f476f7665726e6f723a2070726f706f73616c206e6f7420616374697665000000604482015260640161043d565b6000828152610163602052604090819020600201805461ff001916610100179055517f789cf55be980739dad1d0699b93b58e806b51c9d96619bfa8fe0a28abaa7b30c906131e49084815260200190565b60008060f883901c602f811180156159915750603a8160ff16105b156159a657600194602f199091019350915050565b8060ff1660401080156159bc575060478160ff16105b156159d1576001946036199091019350915050565b8060ff1660601080156159e7575060678160ff16105b156159fc576001946056199091019350915050565b50600093849350915050565b60006001600160601b038211156138e55760405162461bcd60e51b815260206004820152602660248201527f53616665436173743a2076616c756520646f65736e27742066697420696e203960448201526536206269747360d01b606482015260840161043d565b828054828255906000526020600020908101928215615ac5579160200282015b82811115615ac557825182546001600160a01b0319166001600160a01b03909116178255602090920191600190910190615a90565b506138e5929150615bb0565b828054828255906000526020600020908101928215615ac5579160200282015b82811115615ac5578251825591602001919060010190615af1565b828054828255906000526020600020908101928215615b52579160200282015b82811115615b525782518290615b429082616d8a565b5091602001919060010190615b2c565b506138e5929150615bc5565b828054828255906000526020600020908101928215615ba4579160200282015b82811115615ba45782518290615b949082616d8a565b5091602001919060010190615b7e565b506138e5929150615be2565b5b808211156138e55760008155600101615bb1565b808211156138e5576000615bd98282615bff565b50600101615bc5565b808211156138e5576000615bf68282615bff565b50600101615be2565b508054615c0b90616847565b6000825580601f10615c1b575050565b601f01602090049060005260206000209081019061117f9190615bb0565b600060208284031215615c4b57600080fd5b5035919050565b600060208284031215615c6457600080fd5b81356001600160e01b03198116811461201557600080fd5b803560ff8116811461190957600080fd5b60008083601f840112615c9f57600080fd5b5081356001600160401b03811115615cb657600080fd5b602083019150836020828501011115615cce57600080fd5b9250929050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b0381118282101715615d1357615d13615cd5565b604052919050565b60006001600160401b03821115615d3457615d34615cd5565b50601f01601f191660200190565b600082601f830112615d5357600080fd5b8135615d66615d6182615d1b565b615ceb565b818152846020838601011115615d7b57600080fd5b816020850160208301376000918101602001919091529392505050565b60008060008060008060008060e0898b031215615db457600080fd5b88359750615dc460208a01615c7c565b965060408901356001600160401b0380821115615de057600080fd5b615dec8c838d01615c8d565b909850965060608b0135915080821115615e0557600080fd5b50615e128b828c01615d42565b945050615e2160808a01615c7c565b925060a0890135915060c089013590509295985092959890939650565b60005b83811015615e59578181015183820152602001615e41565b50506000910152565b60008151808452615e7a816020860160208601615e3e565b601f01601f19169290920160200192915050565b6020815260006120156020830184615e62565b6001600160a01b038116811461117f57600080fd5b60008060008060808587031215615ecc57600080fd5b8435615ed781615ea1565b93506020850135615ee781615ea1565b92506040850135915060608501356001600160401b03811115615f0957600080fd5b615f1587828801615d42565b91505092959194509250565b60006001600160401b03821115615f3a57615f3a615cd5565b5060051b60200190565b600082601f830112615f5557600080fd5b81356020615f65615d6183615f21565b82815260059290921b84018101918181019086841115615f8457600080fd5b8286015b84811015615fa8578035615f9b81615ea1565b8352918301918301615f88565b509695505050505050565b600082601f830112615fc457600080fd5b81356020615fd4615d6183615f21565b82815260059290921b84018101918181019086841115615ff357600080fd5b8286015b84811015615fa85780358352918301918301615ff7565b600082601f83011261601f57600080fd5b8135602061602f615d6183615f21565b82815260059290921b8401810191818101908684111561604e57600080fd5b8286015b84811015615fa85780356001600160401b038111156160715760008081fd5b61607f8986838b0101615d42565b845250918301918301616052565b600080600080608085870312156160a357600080fd5b84356001600160401b03808211156160ba57600080fd5b6160c688838901615f44565b955060208701359150808211156160dc57600080fd5b6160e888838901615fb3565b945060408701359150808211156160fe57600080fd5b5061610b8782880161600e565b949793965093946060013593505050565b60006020828403121561612e57600080fd5b813561201581615ea1565b600081518084526020808501945080840160005b838110156161725781516001600160a01b03168752958201959082019060010161614d565b509495945050505050565b600081518084526020808501945080840160005b8381101561617257815187529582019590820190600101616191565b600081518084526020808501808196508360051b8101915082860160005b858110156161f55782840389526161e3848351615e62565b988501989350908401906001016161cb565b5091979650505050505050565b6080815260006162156080830187616139565b8281036020840152616227818761617d565b9050828103604084015261623b81866161ad565b9050828103606084015261171681856161ad565b600080600080600060a0868803121561626757600080fd5b8535945061627760208701615c7c565b935061628560408701615c7c565b94979396509394606081013594506080013592915050565b634e487b7160e01b600052602160045260246000fd5b60208101600883106162d557634e487b7160e01b600052602160045260246000fd5b91905290565b600080604083850312156162ee57600080fd5b82359150602083013561630081615ea1565b809150509250929050565b6000806040838503121561631e57600080fd5b8235915061632e60208401615c7c565b90509250929050565b60008060008060006080868803121561634f57600080fd5b8535945061635f60208701615c7c565b935060408601356001600160401b038082111561637b57600080fd5b61638789838a01615c8d565b909550935060608801359150808211156163a057600080fd5b506163ad88828901615d42565b9150509295509295909350565b600080600080606085870312156163d057600080fd5b843593506163e060208601615c7c565b925060408501356001600160401b038111156163fb57600080fd5b61640787828801615c8d565b95989497509550505050565b6000806000806080858703121561642957600080fd5b84356001600160401b038082111561644057600080fd5b61644c88838901615f44565b9550602087013591508082111561646257600080fd5b61646e88838901615fb3565b9450604087013591508082111561648457600080fd5b6164908883890161600e565b935060608701359150808211156164a657600080fd5b50615f1587828801615d42565b60ff60f81b8816815260e0602082015260006164d260e0830189615e62565b82810360408401526164e48189615e62565b606084018890526001600160a01b038716608085015260a0840186905283810360c08501529050611059818561617d565b60008060006060848603121561652a57600080fd5b833561653581615ea1565b92506020840135915060408401356001600160401b0381111561655757600080fd5b61656386828701615d42565b9150509250925092565b6000806000806040858703121561658357600080fd5b84356001600160401b038082111561659a57600080fd5b6165a688838901615c8d565b909650945060208701359150808211156165bf57600080fd5b5061640787828801615c8d565b600080600080600060a086880312156165e457600080fd5b85356165ef81615ea1565b945060208601356165ff81615ea1565b935060408601356001600160401b038082111561661b57600080fd5b61662789838a01615fb3565b9450606088013591508082111561663d57600080fd5b61664989838a01615fb3565b935060808801359150808211156163a057600080fd5b6000806000806060858703121561667557600080fd5b843561668081615ea1565b93506020850135925060408501356001600160401b038111156163fb57600080fd5b6000602082840312156166b457600080fd5b81356001600160401b038116811461201557600080fd5b600080600080600060a086880312156166e357600080fd5b85356001600160401b03808211156166fa57600080fd5b61670689838a01615f44565b9650602088013591508082111561671c57600080fd5b61672889838a01615fb3565b9550604088013591508082111561673e57600080fd5b61674a89838a0161600e565b9450606088013591508082111561676057600080fd5b61664989838a0161600e565b6000806040838503121561677f57600080fd5b823561678a81615ea1565b946020939093013593505050565b600080600080600060a086880312156167b057600080fd5b85356167bb81615ea1565b945060208601356167cb81615ea1565b9350604086013592506060860135915060808601356001600160401b038111156167f457600080fd5b6163ad88828901615d42565b8183823760009101908152919050565b60208082526018908201527f476f7665726e6f723a206f6e6c79476f7665726e616e63650000000000000000604082015260600190565b600181811c9082168061685b57607f821691505b60208210810361687b57634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b6000600182016168bf576168bf616897565b5060010190565b65ffffffffffff8281168282160390808211156168e5576168e5616897565b5092915050565b60208082526021908201527f476f7665726e6f723a2070726f706f73616c206e6f74207375636365737366756040820152601b60fa1b606082015260800190565b60006020828403121561693f57600080fd5b81516001600160401b0381111561695557600080fd5b8201601f8101841361696657600080fd5b8051616974615d6182615d1b565b81815285602083850101111561698957600080fd5b6112f7826020830160208601615e3e565b81810381811115610f6957610f69616897565b634e487b7160e01b600052601260045260246000fd5b6000826169e057634e487b7160e01b600052601260045260246000fd5b500490565b6000602082840312156169f757600080fd5b815165ffffffffffff8116811461201557600080fd5b600060208284031215616a1f57600080fd5b5051919050565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b604081526000616a63604083018688616a26565b8281036020840152611716818587616a26565b608081526000616a896080830187616139565b8281036020840152616a9b818761617d565b90508281036040840152616aaf81866161ad565b91505082606083015295945050505050565b8082028115828204841417610f6957610f69616897565b60a081526000616aeb60a0830188616139565b8281036020840152616afd818861617d565b90508281036040840152616b1181876161ad565b60608401959095525050608001529392505050565b60c081526000616b3960c0830189616139565b8281036020840152616b4b818961617d565b90508281036040840152616b5f81886161ad565b60608401969096525050608081019290925260a0909101529392505050565b80820180821115610f6957610f69616897565b600060208284031215616ba357600080fd5b8151801515811461201557600080fd5b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b60008251616c10818460208701615e3e565b9190910192915050565b6001600160e01b0319831681528151600090616c3d816004850160208701615e3e565b919091016004019392505050565b6001600160401b038181168382160190808211156168e5576168e5616897565b60208082526021908201527f476f7665726e6f723a20696e76616c69642070726f706f73616c206c656e67746040820152600d60fb1b606082015260800190565b8981526001600160a01b038916602082015261012060408201819052600090616cd78382018b616139565b90508281036060840152616ceb818a61617d565b90508281036080840152616cff81896161ad565b905082810360a0840152616d1381886161ad565b90508560c08401528460e0840152828103610100840152616d348185615e62565b9c9b505050505050505050505050565b601f821115613b7b57600081815260208120601f850160051c81016020861015616d6b5750805b601f850160051c820191505b8181101561174f57828155600101616d77565b81516001600160401b03811115616da357616da3615cd5565b616db781616db18454616847565b84616d44565b602080601f831160018114616dec5760008415616dd45750858301515b600019600386901b1c1916600185901b17855561174f565b600085815260208120601f198616915b82811015616e1b57888601518255948401946001909101908401616dfc565b5085821015616e395787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b84815260ff84166020820152826040820152608060608201526000611b066080830184615e62565b85815260ff8516602082015283604082015260a060608201526000616e9960a0830185615e62565b8281036080840152611c1f8185615e6256fe476f7665726e6f723a2072656c617920726576657274656420776974686f7574206d657373616765a164736f6c6343000811000a \ No newline at end of file +6080604052600436106103e85760003560e01c80637b3c71d311610208578063c28bc2fa11610118578063deaaa7cc116100ab578063ece40cc11161007a578063ece40cc114610e19578063f23a6e6114610e39578063f8ce560a14610e65578063fc0c546a14610e85578063fe0d94c114610ea657600080fd5b8063deaaa7cc14610cda578063e23a9a5214610d0e578063ea0217cf14610dd9578063eb9019d414610df957600080fd5b8063da95691a116100e7578063da95691a14610c2f578063dd42a1dd14610c4f578063dd4e2ba514610c74578063ddf0b00914610cba57600080fd5b8063c28bc2fa14610bbd578063c59057e414610bd0578063d07f91e914610bf0578063d33219b414610c1057600080fd5b8063a7713a701161019b578063b187bd261161016a578063b187bd2614610b23578063b58131b014610b41578063bc197c8114610b56578063c01f9e3714610b82578063c170ec0b14610ba257600080fd5b8063a7713a7014610aae578063a890c91014610ac3578063ab58fb8e14610ae3578063ac43175114610b0357600080fd5b806384b0196e116101d757806384b0196e14610a2657806391ddadf414610a4e57806397c3d33414610a7a5780639a802a6d14610a8e57600080fd5b80637b3c71d3146109bc5780637d5e81e2146109dc5780638129fc1c146109fc5780638456cb5914610a1157600080fd5b806332b8113e116103035780634838d1651161029657806354fd4d501161026557806354fd4d5014610912578063567813881461093c5780635f398a141461095c57806360c4247f1461097c57806370b0f6601461099c57600080fd5b80634838d1651461087c5780634a49ac4c146108ac5780634bf5d7e9146108cc578063533ddd14146108e157600080fd5b806340e58ee5116102d257806340e58ee5146107d1578063417c73a7146107f15780634385963214610811578063452115d61461085c57600080fd5b806332b8113e146107455780633932abb11461076e5780633bccf4fd146107845780633e4f49e6146107a457600080fd5b8063150b7a021161037b5780632656227d1161034a5780632656227d146106975780632d63f693146106aa5780632fe3e261146106e1578063328dd9821461071557600080fd5b8063150b7a02146105f0578063160cbed71461063457806317977c611461065457806324bc1a641461068257600080fd5b8063046f7da2116103b7578063046f7da21461054357806306f3f9e61461055857806306fdde0314610578578063143489d01461059a57600080fd5b8063013cf08b1461045857806301ffc9a7146104d357806302a251a314610503578063034201811461052357600080fd5b3661045357306103f6610eb9565b6001600160a01b0316146104515760405162461bcd60e51b815260206004820152601f60248201527f476f7665726e6f723a206d7573742073656e6420746f206578656375746f720060448201526064015b60405180910390fd5b005b600080fd5b34801561046457600080fd5b50610478610473366004615c69565b610ed3565b604080519a8b526001600160a01b0390991660208b0152978901969096526060880194909452608087019290925260a086015260c085015260e084015215156101008301521515610120820152610140015b60405180910390f35b3480156104df57600080fd5b506104f36104ee366004615c82565b610f8e565b60405190151581526020016104ca565b34801561050f57600080fd5b50610195545b6040519081526020016104ca565b34801561052f57600080fd5b5061051561053e366004615dc8565b610f9f565b34801561054f57600080fd5b50610451611097565b34801561056457600080fd5b50610451610573366004615c69565b611127565b34801561058457600080fd5b5061058d6111b2565b6040516104ca9190615ebe565b3480156105a657600080fd5b506105d86105b5366004615c69565b60009081526101636020526040902054600160401b90046001600160a01b031690565b6040516001600160a01b0390911681526020016104ca565b3480156105fc57600080fd5b5061061b61060b366004615ee6565b630a85bd0160e11b949350505050565b6040516001600160e01b031990911681526020016104ca565b34801561064057600080fd5b5061051561064f3660046160bd565b611245565b34801561066057600080fd5b5061051561066f36600461614c565b6102c36020526000908152604090205481565b34801561068e57600080fd5b50610515611330565b6105156106a53660046160bd565b611356565b3480156106b657600080fd5b506105156106c5366004615c69565b600090815261016360205260409020546001600160401b031690565b3480156106ed57600080fd5b506105157fb3b3f3b703cd84ce352197dcff232b1b5d3cfb2025ce47cf04742d0651f1af8881565b34801561072157600080fd5b50610735610730366004615c69565b611449565b6040516104ca9493929190616232565b34801561075157600080fd5b5061028f546040516001600160401b0390911681526020016104ca565b34801561077a57600080fd5b5061019454610515565b34801561079057600080fd5b5061051561079f36600461627f565b6116db565b3480156107b057600080fd5b506107c46107bf366004615c69565b611751565b6040516104ca91906162e3565b3480156107dd57600080fd5b506104516107ec366004615c69565b61175c565b3480156107fd57600080fd5b5061045161080c36600461614c565b611787565b34801561081d57600080fd5b506104f361082c36600461630b565b60008281526101c6602090815260408083206001600160a01b038516845260080190915290205460ff1692915050565b34801561086857600080fd5b506105156108773660046160bd565b611808565b34801561088857600080fd5b506104f361089736600461614c565b60016020526000908152604090205460ff1681565b3480156108b857600080fd5b506104516108c736600461614c565b611816565b3480156108d857600080fd5b5061058d611891565b3480156108ed57600080fd5b506104f36108fc36600461614c565b6102c16020526000908152604090205460ff1681565b34801561091e57600080fd5b506040805180820190915260018152603160f81b602082015261058d565b34801561094857600080fd5b5061051561095736600461633b565b61193e565b34801561096857600080fd5b50610515610977366004616367565b611967565b34801561098857600080fd5b50610515610997366004615c69565b6119b1565b3480156109a857600080fd5b506104516109b7366004615c69565b611a66565b3480156109c857600080fd5b506105156109d73660046163ea565b611aee565b3480156109e857600080fd5b506105156109f7366004616443565b611b40565b348015610a0857600080fd5b50610451611c5b565b348015610a1d57600080fd5b50610451611e8d565b348015610a3257600080fd5b50610a3b611f23565b6040516104ca97969594939291906164e3565b348015610a5a57600080fd5b50610a63611fc1565b60405165ffffffffffff90911681526020016104ca565b348015610a8657600080fd5b506064610515565b348015610a9a57600080fd5b50610515610aa9366004616545565b612035565b348015610aba57600080fd5b5061051561204c565b348015610acf57600080fd5b50610451610ade36600461614c565b612079565b348015610aef57600080fd5b50610515610afe366004615c69565b612101565b348015610b0f57600080fd5b50610451610b1e36600461659d565b61219d565b348015610b2f57600080fd5b5060005462010000900460ff166104f3565b348015610b4d57600080fd5b506105156128e2565b348015610b6257600080fd5b5061061b610b713660046165fc565b63bc197c8160e01b95945050505050565b348015610b8e57600080fd5b50610515610b9d366004615c69565b6128ee565b348015610bae57600080fd5b506102c2546104f39060ff1681565b610451610bcb36600461668f565b6128f9565b348015610bdc57600080fd5b50610515610beb3660046160bd565b612a09565b348015610bfc57600080fd5b50610451610c0b3660046166d2565b612a43565b348015610c1c57600080fd5b5061022b546001600160a01b03166105d8565b348015610c3b57600080fd5b50610515610c4a3660046166fb565b612acb565b348015610c5b57600080fd5b50600054630100000090046001600160a01b03166105d8565b348015610c8057600080fd5b5060408051808201909152601a81527f737570706f72743d627261766f2671756f72756d3d627261766f000000000000602082015261058d565b348015610cc657600080fd5b50610451610cd5366004615c69565b612b52565b348015610ce657600080fd5b506105157f150214d74d59b7d1e90c73fc22ef3d991dd0a76b046543d4d80ab92d2a50328f81565b348015610d1a57600080fd5b50610da9610d2936600461630b565b60408051606081018252600080825260208201819052918101919091525060009182526101c6602090815260408084206001600160a01b0393909316845260089092018152918190208151606081018352905460ff8082161515835261010082041693820193909352620100009092046001600160601b03169082015290565b6040805182511515815260208084015160ff1690820152918101516001600160601b0316908201526060016104ca565b348015610de557600080fd5b50610451610df4366004615c69565b612b75565b348015610e0557600080fd5b50610515610e1436600461679c565b612bfd565b348015610e2557600080fd5b50610451610e34366004615c69565b612c1e565b348015610e4557600080fd5b5061061b610e543660046167c8565b63f23a6e6160e01b95945050505050565b348015610e7157600080fd5b50610515610e80366004615c69565b612ca6565b348015610e9157600080fd5b506101f8546105d8906001600160a01b031681565b610451610eb4366004615c69565b612d35565b6000610ece61022b546001600160a01b031690565b905090565b8060008080808080808080610ee78a612101565b60008c815261016360205260409020549098506001600160401b03169650610f0e8b6128ee565b60008c81526101c66020526040812080546005820154600683015460078401546001600160a01b039093169e50949a509850929650919450610f4f8d611751565b90506002816007811115610f6557610f656162cd565b1493506007816007811115610f7c57610f7c6162cd565b14925050509193959799509193959799565b6000610f9982612d58565b92915050565b60008061104361103b7fb3b3f3b703cd84ce352197dcff232b1b5d3cfb2025ce47cf04742d0651f1af888c8c8c8c604051610fdb929190616830565b60405180910390208b80519060200120604051602001611020959493929190948552602085019390935260ff9190911660408401526060830152608082015260a00190565b60405160208183030381529060405280519060200120612d7d565b868686612daa565b90506110898a828b8b8b8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152508d9250612dc8915050565b9a9950505050505050505050565b600054630100000090046001600160a01b031633146110c9576040516306fbb1e360e01b815260040160405180910390fd5b60005462010000900460ff166110f257604051636cd6020160e01b815260040160405180910390fd5b6000805462ff0000191681556040517f62451d457bc659158be6e6247f56ec1df424a5c7597f71c20c2bc44e0965c8f99190a1565b61112f610eb9565b6001600160a01b0316336001600160a01b03161461115f5760405162461bcd60e51b815260040161044890616840565b30611168610eb9565b6001600160a01b0316146111a65760008036604051611188929190616830565b604051809103902090505b8061119f610164612e31565b0361119357505b6111af81612eb0565b50565b606061016280546111c290616877565b80601f01602080910402602001604051908101604052809291908181526020018280546111ee90616877565b801561123b5780601f106112105761010080835404028352916020019161123b565b820191906000526020600020905b81548152906001019060200180831161121e57829003601f168201915b5050505050905090565b6000805462010000900460ff161561127057604051631785c68160e01b815260040160405180910390fd5b3360009081526001602052604090205460ff16156112a15760405163b1d02c3d60e01b815260040160405180910390fd5b60005b855181101561131a576102c160008783815181106112c4576112c46168b1565b6020908102919091018101516001600160a01b031682528101919091526040016000205460ff1661130857604051630b094f2760e31b815260040160405180910390fd5b80611312816168dd565b9150506112a4565b5061132785858585613021565b95945050505050565b6000610ece600161133f611fc1565b61134991906168f6565b65ffffffffffff16612ca6565b60008061136586868686612a09565b9050600061137282611751565b90506004816007811115611388576113886162cd565b14806113a5575060058160078111156113a3576113a36162cd565b145b6113c15760405162461bcd60e51b81526004016104489061691c565b6000828152610163602052604090819020600201805460ff19166001179055517f712ae1383f79ac853f8d882153778e0260ef8f03b504e2866e0593e04d2b291f906114109084815260200190565b60405180910390a16114258288888888613226565b61143282888888886132c7565b61143f82888888886133a9565b5095945050505050565b60608060608060006101c66000878152602001908152602001600020905080600101816002018260030183600401838054806020026020016040519081016040528092919081815260200182805480156114cc57602002820191906000526020600020905b81546001600160a01b031681526001909101906020018083116114ae575b505050505093508280548060200260200160405190810160405280929190818152602001828054801561151e57602002820191906000526020600020905b81548152602001906001019080831161150a575b5050505050925081805480602002602001604051908101604052809291908181526020016000905b828210156115f257838290600052602060002001805461156590616877565b80601f016020809104026020016040519081016040528092919081815260200182805461159190616877565b80156115de5780601f106115b3576101008083540402835291602001916115de565b820191906000526020600020905b8154815290600101906020018083116115c157829003601f168201915b505050505081526020019060010190611546565b50505050915080805480602002602001604051908101604052809291908181526020016000905b828210156116c557838290600052602060002001805461163890616877565b80601f016020809104026020016040519081016040528092919081815260200182805461166490616877565b80156116b15780601f10611686576101008083540402835291602001916116b1565b820191906000526020600020905b81548152906001019060200180831161169457829003601f168201915b505050505081526020019060010190611619565b5050505090509450945094509450509193509193565b604080517f150214d74d59b7d1e90c73fc22ef3d991dd0a76b046543d4d80ab92d2a50328f602082015290810186905260ff8516606082015260009081906117299061103b90608001611020565b9050611746878288604051806020016040528060008152506133e4565b979650505050505050565b6000610f9982613407565b60008060008061176b85613554565b935093509350935061177f84848484611808565b505050505050565b600054630100000090046001600160a01b031633146117b9576040516306fbb1e360e01b815260040160405180910390fd5b6001600160a01b0381166000818152600160208190526040808320805460ff1916909217909155517f7fd26be6fc92aff63f1f4409b2b2ddeb272a888031d7f55ec830485ec61941869190a250565b6000611327858585856137e5565b600054630100000090046001600160a01b03163314611848576040516306fbb1e360e01b815260040160405180910390fd5b6001600160a01b038116600081815260016020526040808220805460ff19169055517fe0db3499b7fdc3da4cddff5f45d694549c19835e7f719fb5606d3ad1a5de40119190a250565b6101f85460408051634bf5d7e960e01b815290516060926001600160a01b031691634bf5d7e99160048083019260009291908290030181865afa9250505080156118fd57506040513d6000823e601f3d908101601f191682016040526118fa919081019061695d565b60015b611939575060408051808201909152601d81527f6d6f64653d626c6f636b6e756d6265722666726f6d3d64656661756c74000000602082015290565b919050565b60008033905061195f848285604051806020016040528060008152506133e4565b949350505050565b60008033905061174687828888888080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152508a9250612dc8915050565b61025e546000908082036119ca57505061025d54919050565b600061025e6119da6001846169ca565b815481106119ea576119ea6168b1565b60009182526020918290206040805180820190915291015463ffffffff8116808352600160201b9091046001600160e01b03169282019290925291508410611a4057602001516001600160e01b03169392505050565b611a55611a4c856138b0565b61025e90613919565b6001600160e01b0316949350505050565b611a6e610eb9565b6001600160a01b0316336001600160a01b031614611a9e5760405162461bcd60e51b815260040161044890616840565b30611aa7610eb9565b6001600160a01b031614611ae55760008036604051611ac7929190616830565b604051809103902090505b80611ade610164612e31565b03611ad257505b6111af816139cc565b600080339050611b3686828787878080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506133e492505050565b9695505050505050565b6000805462010000900460ff1615611b6b57604051631785c68160e01b815260040160405180910390fd5b3360009081526001602052604090205460ff1615611b9c5760405163b1d02c3d60e01b815260040160405180910390fd5b611ba4613a0f565b3360009081526102c360205260409020548015611c19576000611bc682611751565b90506001816007811115611bdc57611bdc6162cd565b1480611bf957506000816007811115611bf757611bf76162cd565b145b15611c175760405163867f3ee560e01b815260040160405180910390fd5b505b825160208401206000611c2e88888885612a09565b3360009081526102c3602052604090208190559050611c4f88888888613aba565b98975050505050505050565b600054610100900460ff1615808015611c7b5750600054600160ff909116105b80611c955750303b158015611c95575060005460ff166001145b611cf85760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608401610448565b6000805460ff191660011790558015611d1b576000805461ff0019166101001790555b334114611d3b5760405163022d8c9560e31b815260040160405180910390fd5b3a15611d5a576040516383f1b1d360e01b815260040160405180910390fd5b611d866040518060400160405280600b81526020016a2129a1a3b7bb32b93737b960a91b815250613b22565b611db2611d95600360006169f3565b611da3600362093a806169f3565b680ad78ebc5ac6200000613b79565b611dba613bb0565b611dc5612005613bd7565b611dd0612006613c07565b611dda600a613c37565b611df0611deb6003620151806169f3565b613c67565b6110076000526102c16020527f2f832952f0ef896b8c8edd6d16a2e4f2591a90375e33021e3b9ff197f3793fc0805460ff19166001179055611e457308e68ec70fa3b629784fdb28887e206ce8561e08613c97565b80156111af576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a150565b600054630100000090046001600160a01b03163314611ebf576040516306fbb1e360e01b815260040160405180910390fd5b60005462010000900460ff1615611ee957604051631785c68160e01b815260040160405180910390fd5b6000805462ff00001916620100001781556040517f9e87fac88ff661f02d44f95383c817fece4bce600a3dab7a54406878b965e7529190a1565b6000606080600080600060606098546000801b148015611f435750609954155b611f875760405162461bcd60e51b81526020600482015260156024820152741152540dcc4c8e88155b9a5b9a5d1a585b1a5e9959605a1b6044820152606401610448565b611f8f613cea565b611f97613cf9565b60408051600080825260208201909252600f60f81b9b939a50919850469750309650945092509050565b6101f854604080516324776b7d60e21b815290516000926001600160a01b0316916391ddadf49160048083019260209291908290030181865afa925050508015612028575060408051601f3d908101601f1916820190925261202591810190616a15565b60015b61193957610ece43613d08565b6000612042848484613d6f565b90505b9392505050565b61025e54600090156120715761206361025e613de6565b6001600160e01b0316905090565b5061025d5490565b612081610eb9565b6001600160a01b0316336001600160a01b0316146120b15760405162461bcd60e51b815260040161044890616840565b306120ba610eb9565b6001600160a01b0316146120f857600080366040516120da929190616830565b604051809103902090505b806120f1610164612e31565b036120e557505b6111af81613e16565b61022b54600082815261022c602052604080822054905163d45c443560e01b81526004810191909152909182916001600160a01b039091169063d45c443590602401602060405180830381865afa158015612160573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121849190616a3d565b9050806001146121945780612045565b60009392505050565b33611007146121c357604051630f22c43960e41b81526110076004820152602401610448565b6122296040518060400160405280600b81526020016a766f74696e6744656c617960a81b81525085858080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509293925050613e819050565b156122de57602081146122575783838383604051630a5a604160e01b81526004016104489493929190616a7f565b604080516020601f8401819004810282018101909252828152600091612298918585808385018382808284376000920191909152509293925050613eda9050565b90508015806122a957506201518081115b156122cf5784848484604051630a5a604160e01b81526004016104489493929190616a7f565b6122d8816139cc565b5061289f565b6123456040518060400160405280600c81526020016b1d9bdd1a5b99d4195c9a5bd960a21b81525085858080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509293925050613e819050565b156123f457602081146123735783838383604051630a5a604160e01b81526004016104489493929190616a7f565b604080516020601f84018190048102820181019092528281526000916123b4918585808385018382808284376000920191909152509293925050613eda9050565b90508015806123c5575062278d0081115b156123eb5784848484604051630a5a604160e01b81526004016104489493929190616a7f565b6122d881613edf565b612460604051806040016040528060118152602001701c1c9bdc1bdcd85b151a1c995cda1bdb19607a1b81525085858080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509293925050613e819050565b15612516576020811461248e5783838383604051630a5a604160e01b81526004016104489493929190616a7f565b604080516020601f84018190048102820181019092528281526000916124cf918585808385018382808284376000920191909152509293925050613eda9050565b90508015806124e7575069021e19e0c9bab240000081115b1561250d5784848484604051630a5a604160e01b81526004016104489493929190616a7f565b6122d881613f82565b6125806040518060400160405280600f81526020016e38bab7b93ab6a73ab6b2b930ba37b960891b81525085858080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509293925050613e819050565b1561262f57602081146125ae5783838383604051630a5a604160e01b81526004016104489493929190616a7f565b604080516020601f84018190048102820181019092528281526000916125ef918585808385018382808284376000920191909152509293925050613eda9050565b905060058110806126005750601481115b156126265784848484604051630a5a604160e01b81526004016104489493929190616a7f565b6122d881612eb0565b61269e604051806040016040528060148152602001736d696e506572696f64416674657251756f72756d60601b81525085858080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509293925050613e819050565b1561276457600881146126cc5783838383604051630a5a604160e01b81526004016104489493929190616a7f565b6000612712600884848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509293925050613eda9050565b90506001600160401b038116158061273557506202a300816001600160401b0316115b1561275b5784848484604051630a5a604160e01b81526004016104489493929190616a7f565b6122d881613fc5565b6127d06040518060400160405280601181526020017033b7bb32b93737b9283937ba32b1ba37b960791b81525085858080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509293925050613e819050565b1561287e57601481146127fe5783838383604051630a5a604160e01b81526004016104489493929190616a7f565b6000612844601484848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509293925050613eda9050565b90506001600160a01b0381166128755784848484604051630a5a604160e01b81526004016104489493929190616a7f565b6122d881614031565b838383836040516325ee20d560e21b81526004016104489493929190616a7f565b7ff1ce9b2cbf50eeb05769a29e2543fd350cab46894a7dd9978a12d534bb20e633848484846040516128d49493929190616a7f565b60405180910390a150505050565b6000610ece6101965490565b6000610f998261409d565b612901610eb9565b6001600160a01b0316336001600160a01b0316146129315760405162461bcd60e51b815260040161044890616840565b3061293a610eb9565b6001600160a01b031614612978576000803660405161295a929190616830565b604051809103902090505b80612971610164612e31565b0361296557505b600080856001600160a01b0316858585604051612996929190616830565b60006040518083038185875af1925050503d80600081146129d3576040519150601f19603f3d011682016040523d82523d6000602084013e6129d8565b606091505b5091509150612a008282604051806060016040528060288152602001616edc602891396140db565b50505050505050565b600084848484604051602001612a229493929190616aa6565b60408051601f19818403018152919052805160209091012095945050505050565b612a4b610eb9565b6001600160a01b0316336001600160a01b031614612a7b5760405162461bcd60e51b815260040161044890616840565b30612a84610eb9565b6001600160a01b031614612ac25760008036604051612aa4929190616830565b604051809103902090505b80612abb610164612e31565b03612aaf57505b6111af81613fc5565b60008251845114612b2f5760405162461bcd60e51b815260206004820152602860248201527f476f7665726e6f72427261766f3a20696e76616c6964207369676e61747572656044820152670e640d8cadccee8d60c31b6064820152608401610448565b612b3d3387878787876140f4565b611b368686612b4c87876141b2565b85611b40565b600080600080612b6185613554565b935093509350935061177f84848484611245565b612b7d610eb9565b6001600160a01b0316336001600160a01b031614612bad5760405162461bcd60e51b815260040161044890616840565b30612bb6610eb9565b6001600160a01b031614612bf45760008036604051612bd6929190616830565b604051809103902090505b80612bed610164612e31565b03612be157505b6111af81613edf565b60006120458383612c1960408051602081019091526000815290565b613d6f565b612c26610eb9565b6001600160a01b0316336001600160a01b031614612c565760405162461bcd60e51b815260040161044890616840565b30612c5f610eb9565b6001600160a01b031614612c9d5760008036604051612c7f929190616830565b604051809103902090505b80612c96610164612e31565b03612c8a57505b6111af81613f82565b60006064612cb3836119b1565b6101f854604051632394e7a360e21b8152600481018690526001600160a01b0390911690638e539e8c90602401602060405180830381865afa158015612cfd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612d219190616a3d565b612d2b9190616af1565b610f9991906169f3565b600080600080612d4485613554565b935093509350935061177f84848484611356565b60006001600160e01b03198216636e665ced60e01b1480610f995750610f99826142e4565b6000610f99612d8a614380565b8360405161190160f01b8152600281019290925260228201526042902090565b6000806000612dbb8787878761438a565b9150915061143f8161444e565b6000805462010000900460ff1615612df357604051631785c68160e01b815260040160405180910390fd5b3360009081526001602052604090205460ff1615612e245760405163b1d02c3d60e01b815260040160405180910390fd5b611b368686868686614598565b6000612e4c8254600f81810b600160801b909204900b131590565b15612e6a57604051631ed9509560e11b815260040160405180910390fd5b508054600f0b6000818152600180840160205260408220805492905583546fffffffffffffffffffffffffffffffff191692016001600160801b03169190911790915590565b6064811115612f335760405162461bcd60e51b815260206004820152604360248201527f476f7665726e6f72566f74657351756f72756d4672616374696f6e3a2071756f60448201527f72756d4e756d657261746f72206f7665722071756f72756d44656e6f6d696e616064820152623a37b960e91b608482015260a401610448565b6000612f3d61204c565b90508015801590612f4f575061025e54155b15612fb457604080518082019091526000815261025e9060208101612f738461469b565b6001600160e01b039081169091528254600181018455600093845260209384902083519490930151909116600160201b0263ffffffff909316929092179101555b612fe2612fcf612fc2611fc1565b65ffffffffffff166138b0565b612fd88461469b565b61025e9190614704565b505060408051828152602081018490527f0553476bf02ef2726e8ce5ced78d63e26e602e4a2257b1f559418e24b4633997910160405180910390a15050565b60008061303086868686612a09565b9050600461303d82611751565b600781111561304e5761304e6162cd565b1461306b5760405162461bcd60e51b81526004016104489061691c565b61022b546040805163793d064960e11b815290516000926001600160a01b03169163f27a0c929160048083019260209291908290030181865afa1580156130b6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906130da9190616a3d565b61022b5460405163b1c5f42760e01b81529192506001600160a01b03169063b1c5f42790613115908a908a908a906000908b90600401616b08565b602060405180830381865afa158015613132573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906131569190616a3d565b600083815261022c60205260408082209290925561022b5491516308f2a0bb60e41b81526001600160a01b0390921691638f2a0bb0916131a3918b918b918b91908b908990600401616b56565b600060405180830381600087803b1580156131bd57600080fd5b505af11580156131d1573d6000803e3d6000fd5b505050507f9a2e42fd6722813d69113e7d0079d3d940171428df7373df9c7f7617cfda28928282426132039190616bae565b604080519283526020830191909152015b60405180910390a15095945050505050565b3061322f610eb9565b6001600160a01b0316146132c05760005b845181101561177f57306001600160a01b0316858281518110613265576132656168b1565b60200260200101516001600160a01b0316036132b0576132b0838281518110613290576132906168b1565b60200260200101518051906020012061016461471f90919063ffffffff16565b6132b9816168dd565b9050613240565b5050505050565b60005462010000900460ff16156132f157604051631785c68160e01b815260040160405180910390fd5b3360009081526001602052604090205460ff16156133225760405163b1d02c3d60e01b815260040160405180910390fd5b60005b845181101561339b576102c16000868381518110613345576133456168b1565b6020908102919091018101516001600160a01b031682528101919091526040016000205460ff1661338957604051630b094f2760e31b815260040160405180910390fd5b80613393816168dd565b915050613325565b506132c0858585858561475b565b306133b2610eb9565b6001600160a01b0316146132c05761016454600f81810b600160801b909204900b13156132c0576000610164556132c0565b60006113278585858561340260408051602081019091526000815290565b612dc8565b600080613413836147d0565b90506004816007811115613429576134296162cd565b146134345792915050565b600083815261022c602052604090205480613450575092915050565b61022b54604051632ab0f52960e01b8152600481018390526001600160a01b0390911690632ab0f52990602401602060405180830381865afa15801561349a573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906134be9190616bc1565b156134cd575060079392505050565b61022b54604051632c258a9f60e11b8152600481018390526001600160a01b039091169063584b153e90602401602060405180830381865afa158015613517573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061353b9190616bc1565b1561354a575060059392505050565b5060029392505050565b60608060606000806101c660008781526020019081526020016000209050806001018160020161372683600301805480602002602001604051908101604052809291908181526020016000905b8282101561364d5783829060005260206000200180546135c090616877565b80601f01602080910402602001604051908101604052809291908181526020018280546135ec90616877565b80156136395780601f1061360e57610100808354040283529160200191613639565b820191906000526020600020905b81548152906001019060200180831161361c57829003601f168201915b5050505050815260200190600101906135a1565b50505060048601805460408051602080840282018101909252828152935060009084015b8282101561371d57838290600052602060002001805461369090616877565b80601f01602080910402602001604051908101604052809291908181526020018280546136bc90616877565b80156137095780601f106136de57610100808354040283529160200191613709565b820191906000526020600020905b8154815290600101906020018083116136ec57829003601f168201915b505050505081526020019060010190613671565b505050506141b2565b600984015483546040805160208084028201810190925282815291869183018282801561377c57602002820191906000526020600020905b81546001600160a01b0316815260019091019060200180831161375e575b50505050509350828054806020026020016040519081016040528092919081815260200182805480156137ce57602002820191906000526020600020905b8154815260200190600101908083116137ba575b505050505092509450945094509450509193509193565b6000806137f486868686612a09565b60008181526101c660205260409020549091506001600160a01b03163381148061384857506138216128e2565b61384682600161382f611fc1565b61383991906168f6565b65ffffffffffff16612bfd565b105b6138a45760405162461bcd60e51b815260206004820152602760248201527f476f7665726e6f72427261766f3a2070726f706f7365722061626f76652074686044820152661c995cda1bdb1960ca1b6064820152608401610448565b61174687878787614908565b600063ffffffff8211156139155760405162461bcd60e51b815260206004820152602660248201527f53616665436173743a2076616c756520646f65736e27742066697420696e203360448201526532206269747360d01b6064820152608401610448565b5090565b81546000908181600581111561397657600061393484614916565b61393e90856169ca565b60008881526020902090915081015463ffffffff908116908716101561396657809150613974565b613971816001616bae565b92505b505b6000613984878785856149fe565b905080156139bf576139a98761399b6001846169ca565b600091825260209091200190565b54600160201b90046001600160e01b0316611746565b6000979650505050505050565b6101945460408051918252602082018390527fc565b045403dc03c2eea82b81a0465edad9e2e7fc4d97e11421c209da93d7a93910160405180910390a161019455565b6102c25460ff16613ab8576a084595161401484a0000006120056001600160a01b03166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015613a66573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613a8a9190616a3d565b1015613aa9576040516311b6707f60e01b815260040160405180910390fd5b6102c2805460ff191660011790555b565b6000613b1633868686516001600160401b03811115613adb57613adb615d05565b604051908082528060200260200182016040528015613b0e57816020015b6060815260200190600190039081613af95790505b5087876140f4565b61132785858585614a54565b600054610100900460ff16613b495760405162461bcd60e51b815260040161044890616be3565b613b7081613b6b6040805180820190915260018152603160f81b602082015290565b614e33565b6111af81614e82565b600054610100900460ff16613ba05760405162461bcd60e51b815260040161044890616be3565b613bab838383614eba565b505050565b600054610100900460ff16613ab85760405162461bcd60e51b815260040161044890616be3565b600054610100900460ff16613bfe5760405162461bcd60e51b815260040161044890616be3565b6111af81614efc565b600054610100900460ff16613c2e5760405162461bcd60e51b815260040161044890616be3565b6111af81614f46565b600054610100900460ff16613c5e5760405162461bcd60e51b815260040161044890616be3565b6111af81614f6d565b600054610100900460ff16613c8e5760405162461bcd60e51b815260040161044890616be3565b6111af81614f94565b600054610100900460ff16613cbe5760405162461bcd60e51b815260040161044890616be3565b600080546001600160a01b039092166301000000026301000000600160b81b0319909216919091179055565b6060609a80546111c290616877565b6060609b80546111c290616877565b600065ffffffffffff8211156139155760405162461bcd60e51b815260206004820152602660248201527f53616665436173743a2076616c756520646f65736e27742066697420696e203460448201526538206269747360d01b6064820152608401610448565b6101f854604051630748d63560e31b81526001600160a01b038581166004830152602482018590526000921690633a46b1a890604401602060405180830381865afa158015613dc2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120429190616a3d565b8054600090801561219457613e008361399b6001846169ca565b54600160201b90046001600160e01b0316612045565b61022b54604080516001600160a01b03928316815291831660208301527f08f74ea46ef7894f65eabfb5e6e695de773a000b47c529ab559178069b226401910160405180910390a161022b80546001600160a01b0319166001600160a01b0392909216919091179055565b600081604051602001613e949190616c2e565b6040516020818303038152906040528051906020012083604051602001613ebb9190616c2e565b6040516020818303038152906040528051906020012014905092915050565b015190565b60008111613f3f5760405162461bcd60e51b815260206004820152602760248201527f476f7665726e6f7253657474696e67733a20766f74696e6720706572696f6420604482015266746f6f206c6f7760c81b6064820152608401610448565b6101955460408051918252602082018390527f7e3f7f0708a84de9203036abaa450dccc85ad5ff52f78c170f3edb55cf5e8828910160405180910390a161019555565b6101965460408051918252602082018390527fccb45da8d5717e6c4544694297c4ba5cf151d455c9bb0ed4fc7a38411bc05461910160405180910390a161019655565b61028f54604080516001600160401b03928316815291831660208301527f7ca4ac117ed3cdce75c1161d8207c440389b1a15d69d096831664657c07dafc2910160405180910390a161028f805467ffffffffffffffff19166001600160401b0392909216919091179055565b600080546040516001600160a01b0380851693630100000090930416917f44fc1b38a4abaa91ebd1b628a5b259a698f86238c8217d68f516e87769c60c0b91a3600080546001600160a01b039092166301000000026301000000600160b81b0319909216919091179055565b60008181526101636020526040812060010154610f99906001600160401b0316600084815261029060205260409020546001600160401b0316614fbb565b606083156140ea575081612045565b6120458383614fd1565b805160208201206000614112878761410c88886141b2565b85612a09565b60008181526101c6602052604090206009810154919250906141a75780546001600160a01b0319166001600160a01b038a16178155875161415c90600183019060208b0190615aa0565b50865161417290600283019060208a0190615b01565b5085516141889060038301906020890190615b3c565b50845161419e9060048301906020880190615b8e565b50600981018390555b505050505050505050565b6060600082516001600160401b038111156141cf576141cf615d05565b60405190808252806020026020018201604052801561420257816020015b60608152602001906001900390816141ed5790505b50905060005b81518110156142dc57848181518110614223576142236168b1565b60200260200101515160001461429357848181518110614245576142456168b1565b602002602001015180519060200120848281518110614266576142666168b1565b602002602001015160405160200161427f929190616c4a565b6040516020818303038152906040526142ae565b8381815181106142a5576142a56168b1565b60200260200101515b8282815181106142c0576142c06168b1565b6020026020010181905250806142d5906168dd565b9050614208565b509392505050565b600063288ace0360e11b6318df743f60e31b63bf26d89760e01b6379dd796f60e01b6001600160e01b0319861682148061432a57506001600160e01b0319868116908216145b8061434157506001600160e01b0319868116908516145b8061435c57506001600160e01b03198616630271189760e51b145b80611b3657506301ffc9a760e01b6001600160e01b03198716149695505050505050565b6000610ece614ffb565b6000807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a08311156143c15750600090506003614445565b6040805160008082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa158015614415573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b03811661443e57600060019250925050614445565b9150600090505b94509492505050565b6000816004811115614462576144626162cd565b0361446a5750565b600181600481111561447e5761447e6162cd565b036144cb5760405162461bcd60e51b815260206004820152601860248201527f45434453413a20696e76616c6964207369676e617475726500000000000000006044820152606401610448565b60028160048111156144df576144df6162cd565b0361452c5760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e677468006044820152606401610448565b6003816004811115614540576145406162cd565b036111af5760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b6064820152608401610448565b6000806145a8878787878761506f565b600088815261029060205260409020549091506001600160401b03161580156145d557506145d5876151c5565b15611b365760006145ef61028f546001600160401b031690565b6145f7611fc1565b65ffffffffffff166146099190616c7b565b9050614614886128ee565b816001600160401b03161115614663576040516001600160401b038216815288907f541f725fb9f7c98a30cc9c0ff32fbb14358cd7159c847a3aa20a2bdc442ba5119060200160405180910390a25b600088815261029060205260409020805467ffffffffffffffff19166001600160401b03929092169190911790559695505050505050565b60006001600160e01b038211156139155760405162461bcd60e51b815260206004820152602760248201527f53616665436173743a2076616c756520646f65736e27742066697420696e20326044820152663234206269747360c81b6064820152608401610448565b600080614712858585615205565b915091505b935093915050565b8154600160801b90819004600f0b6000818152600180860160205260409091209390935583546001600160801b03908116939091011602179055565b61022b5460405163e38335e560e01b81526001600160a01b039091169063e38335e5903490614797908890889088906000908990600401616b08565b6000604051808303818588803b1580156147b057600080fd5b505af11580156147c4573d6000803e3d6000fd5b50505050505050505050565b600081815261016360205260408120600281015460ff16156147f55750600792915050565b6002810154610100900460ff16156148105750600292915050565b600083815261016360205260408120546001600160401b0316908190036148795760405162461bcd60e51b815260206004820152601d60248201527f476f7665726e6f723a20756e6b6e6f776e2070726f706f73616c2069640000006044820152606401610448565b6000614883611fc1565b65ffffffffffff16905080821061489f57506000949350505050565b60006148aa866128ee565b90508181106148bf5750600195945050505050565b6148c8866151c5565b80156148eb575060008681526101c6602052604090206006810154600590910154115b156148fc5750600495945050505050565b50600395945050505050565b6000611327858585856153a4565b60008160000361492857506000919050565b600060016149358461545a565b901c6001901b9050600181848161494e5761494e6169dd565b048201901c90506001818481614966576149666169dd565b048201901c9050600181848161497e5761497e6169dd565b048201901c90506001818481614996576149966169dd565b048201901c905060018184816149ae576149ae6169dd565b048201901c905060018184816149c6576149c66169dd565b048201901c905060018184816149de576149de6169dd565b048201901c9050612045818285816149f8576149f86169dd565b046154ee565b60005b818310156142dc576000614a1584846154fd565b60008781526020902090915063ffffffff86169082015463ffffffff161115614a4057809250614a4e565b614a4b816001616bae565b93505b50614a01565b600033614a618184615518565b614aad5760405162461bcd60e51b815260206004820152601d60248201527f476f7665726e6f723a2070726f706f73657220726573747269637465640000006044820152606401610448565b6000614ab7611fc1565b65ffffffffffff169050614ac96128e2565b614ad883610e146001856169ca565b1015614b405760405162461bcd60e51b815260206004820152603160248201527f476f7665726e6f723a2070726f706f73657220766f7465732062656c6f7720706044820152701c9bdc1bdcd85b081d1a1c995cda1bdb19607a1b6064820152608401610448565b6000614b558888888880519060200120612a09565b90508651885114614b785760405162461bcd60e51b815260040161044890616c9b565b8551885114614b995760405162461bcd60e51b815260040161044890616c9b565b6000885111614bea5760405162461bcd60e51b815260206004820152601860248201527f476f7665726e6f723a20656d7074792070726f706f73616c00000000000000006044820152606401610448565b600081815261016360205260409020546001600160401b031615614c5a5760405162461bcd60e51b815260206004820152602160248201527f476f7665726e6f723a2070726f706f73616c20616c72656164792065786973746044820152607360f81b6064820152608401610448565b6000614c666101945490565b614c709084616bae565b90506000614c7e6101955490565b614c889083616bae565b90506040518060e00160405280614c9e84615609565b6001600160401b031681526001600160a01b038716602082015260006040820152606001614ccb83615609565b6001600160401b03908116825260006020808401829052604080850183905260609485018390528883526101638252918290208551815492870151878501519186166001600160e01b031990941693909317600160401b6001600160a01b039094168402176001600160e01b0316600160e01b60e09290921c91909102178155938501516080860151908416921c0217600183015560a08301516002909201805460c09094015161ffff1990941692151561ff00191692909217610100931515939093029290921790558a517f7d84a6263ae0d98d3329bd7b46bb4e8d6f98cd35a7adb45c274c8b7fd5ebd5e091859188918e918e91811115614dd057614dd0615d05565b604051908082528060200260200182016040528015614e0357816020015b6060815260200190600190039081614dee5790505b508d88888f604051614e1d99989796959493929190616cdc565b60405180910390a1509098975050505050505050565b600054610100900460ff16614e5a5760405162461bcd60e51b815260040161044890616be3565b609a614e668382616dba565b50609b614e738282616dba565b50506000609881905560995550565b600054610100900460ff16614ea95760405162461bcd60e51b815260040161044890616be3565b610162614eb68282616dba565b5050565b600054610100900460ff16614ee15760405162461bcd60e51b815260040161044890616be3565b614eea836139cc565b614ef382613edf565b613bab81613f82565b600054610100900460ff16614f235760405162461bcd60e51b815260040161044890616be3565b6101f880546001600160a01b0319166001600160a01b0392909216919091179055565b600054610100900460ff166120f85760405162461bcd60e51b815260040161044890616be3565b600054610100900460ff166111a65760405162461bcd60e51b815260040161044890616be3565b600054610100900460ff16612ac25760405162461bcd60e51b815260040161044890616be3565b6000818311614fca5781612045565b5090919050565b815115614fe15781518083602001fd5b8060405162461bcd60e51b81526004016104489190615ebe565b60007f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f615026615671565b61502e6156ca565b60408051602081019490945283019190915260608201524660808201523060a082015260c00160405160208183030381529060405280519060200120905090565b600085815261016360205260408120600161508988611751565b600781111561509a5761509a6162cd565b146150f35760405162461bcd60e51b815260206004820152602360248201527f476f7665726e6f723a20766f7465206e6f742063757272656e746c792061637460448201526269766560e81b6064820152608401610448565b805460009061510d9088906001600160401b031686613d6f565b905061511c88888884886156fb565b835160000361517157866001600160a01b03167fb8e138887d0aa13bab447e82de9d5c1777041ecd21ca36ba824ff1e6c07ddda4898884896040516151649493929190616e79565b60405180910390a2611746565b866001600160a01b03167fe2babfbac5889a709b63bb7f598b324e08bc5a4fb9ec647fb3cbc9ec07eb871289888489896040516151b2959493929190616ea1565b60405180910390a2979650505050505050565b60008181526101c66020526040812060058101546151fc610e8085600090815261016360205260409020546001600160401b031690565b11159392505050565b82546000908190801561534b5760006152238761399b6001856169ca565b60408051808201909152905463ffffffff808216808452600160201b9092046001600160e01b0316602084015291925090871610156152a45760405162461bcd60e51b815260206004820152601b60248201527f436865636b706f696e743a2064656372656173696e67206b65797300000000006044820152606401610448565b805163ffffffff8088169116036152ec57846152c58861399b6001866169ca565b80546001600160e01b0392909216600160201b0263ffffffff90921691909117905561533b565b6040805180820190915263ffffffff80881682526001600160e01b0380881660208085019182528b54600181018d5560008d81529190912094519151909216600160201b029216919091179101555b6020015192508391506147179050565b50506040805180820190915263ffffffff80851682526001600160e01b0380851660208085019182528854600181018a5560008a815291822095519251909316600160201b029190931617920191909155905081614717565b6000806153b386868686615899565b600081815261022c6020526040902054909150156113275761022b54600082815261022c60205260409081902054905163c4d252f560e01b81526001600160a01b039092169163c4d252f59161540f9160040190815260200190565b600060405180830381600087803b15801561542957600080fd5b505af115801561543d573d6000803e3d6000fd5b505050600082815261022c60205260408120555095945050505050565b600080608083901c1561546f57608092831c92015b604083901c1561548157604092831c92015b602083901c1561549357602092831c92015b601083901c156154a557601092831c92015b600883901c156154b757600892831c92015b600483901c156154c957600492831c92015b600283901c156154db57600292831c92015b600183901c15610f995760010192915050565b6000818310614fca5781612045565b600061550c60028484186169f3565b61204590848416616bae565b80516000906034811015615530576001915050610f99565b82810160131901516001600160a01b031981166b046e0e4dee0dee6cae47a60f60a31b1461556357600192505050610f99565b6000806155716028856169ca565b90505b838110156155e8576000806155a8888481518110615594576155946168b1565b01602001516001600160f81b0319166159a6565b91509150816155c05760019650505050505050610f99565b8060ff166004856001600160a01b0316901b1793505050806155e1906168dd565b9050615574565b50856001600160a01b0316816001600160a01b031614935050505092915050565b60006001600160401b038211156139155760405162461bcd60e51b815260206004820152602660248201527f53616665436173743a2076616c756520646f65736e27742066697420696e203660448201526534206269747360d01b6064820152608401610448565b60008061567c613cea565b805190915015615693578051602090910120919050565b60985480156156a25792915050565b7fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a4709250505090565b6000806156d5613cf9565b8051909150156156ec578051602090910120919050565b60995480156156a25792915050565b60008581526101c6602090815260408083206001600160a01b038816845260088101909252909120805460ff161561578b5760405162461bcd60e51b815260206004820152602d60248201527f476f7665726e6f72436f6d7061746962696c697479427261766f3a20766f746560448201526c08185b1c9958591e4818d85cdd609a1b6064820152608401610448565b805460ff86166101000261ffff199091161760011781556157ab84615a38565b81546001600160601b039190911662010000026dffffffffffffffffffffffff00001990911617815560ff85166157fb57838260060160008282546157f09190616bae565b90915550612a009050565b60001960ff86160161581b57838260050160008282546157f09190616bae565b60011960ff86160161583b57838260070160008282546157f09190616bae565b60405162461bcd60e51b815260206004820152602d60248201527f476f7665726e6f72436f6d7061746962696c697479427261766f3a20696e766160448201526c6c696420766f7465207479706560981b6064820152608401610448565b6000806158a886868686612a09565b905060006158b582611751565b905060028160078111156158cb576158cb6162cd565b141580156158eb575060068160078111156158e8576158e86162cd565b14155b801561590957506007816007811115615906576159066162cd565b14155b6159555760405162461bcd60e51b815260206004820152601d60248201527f476f7665726e6f723a2070726f706f73616c206e6f74206163746976650000006044820152606401610448565b6000828152610163602052604090819020600201805461ff001916610100179055517f789cf55be980739dad1d0699b93b58e806b51c9d96619bfa8fe0a28abaa7b30c906132149084815260200190565b60008060f883901c602f811180156159c15750603a8160ff16105b156159d657600194602f199091019350915050565b8060ff1660401080156159ec575060478160ff16105b15615a01576001946036199091019350915050565b8060ff166060108015615a17575060678160ff16105b15615a2c576001946056199091019350915050565b50600093849350915050565b60006001600160601b038211156139155760405162461bcd60e51b815260206004820152602660248201527f53616665436173743a2076616c756520646f65736e27742066697420696e203960448201526536206269747360d01b6064820152608401610448565b828054828255906000526020600020908101928215615af5579160200282015b82811115615af557825182546001600160a01b0319166001600160a01b03909116178255602090920191600190910190615ac0565b50613915929150615be0565b828054828255906000526020600020908101928215615af5579160200282015b82811115615af5578251825591602001919060010190615b21565b828054828255906000526020600020908101928215615b82579160200282015b82811115615b825782518290615b729082616dba565b5091602001919060010190615b5c565b50613915929150615bf5565b828054828255906000526020600020908101928215615bd4579160200282015b82811115615bd45782518290615bc49082616dba565b5091602001919060010190615bae565b50613915929150615c12565b5b808211156139155760008155600101615be1565b80821115613915576000615c098282615c2f565b50600101615bf5565b80821115613915576000615c268282615c2f565b50600101615c12565b508054615c3b90616877565b6000825580601f10615c4b575050565b601f0160209004906000526020600020908101906111af9190615be0565b600060208284031215615c7b57600080fd5b5035919050565b600060208284031215615c9457600080fd5b81356001600160e01b03198116811461204557600080fd5b803560ff8116811461193957600080fd5b60008083601f840112615ccf57600080fd5b5081356001600160401b03811115615ce657600080fd5b602083019150836020828501011115615cfe57600080fd5b9250929050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b0381118282101715615d4357615d43615d05565b604052919050565b60006001600160401b03821115615d6457615d64615d05565b50601f01601f191660200190565b600082601f830112615d8357600080fd5b8135615d96615d9182615d4b565b615d1b565b818152846020838601011115615dab57600080fd5b816020850160208301376000918101602001919091529392505050565b60008060008060008060008060e0898b031215615de457600080fd5b88359750615df460208a01615cac565b965060408901356001600160401b0380821115615e1057600080fd5b615e1c8c838d01615cbd565b909850965060608b0135915080821115615e3557600080fd5b50615e428b828c01615d72565b945050615e5160808a01615cac565b925060a0890135915060c089013590509295985092959890939650565b60005b83811015615e89578181015183820152602001615e71565b50506000910152565b60008151808452615eaa816020860160208601615e6e565b601f01601f19169290920160200192915050565b6020815260006120456020830184615e92565b6001600160a01b03811681146111af57600080fd5b60008060008060808587031215615efc57600080fd5b8435615f0781615ed1565b93506020850135615f1781615ed1565b92506040850135915060608501356001600160401b03811115615f3957600080fd5b615f4587828801615d72565b91505092959194509250565b60006001600160401b03821115615f6a57615f6a615d05565b5060051b60200190565b600082601f830112615f8557600080fd5b81356020615f95615d9183615f51565b82815260059290921b84018101918181019086841115615fb457600080fd5b8286015b84811015615fd8578035615fcb81615ed1565b8352918301918301615fb8565b509695505050505050565b600082601f830112615ff457600080fd5b81356020616004615d9183615f51565b82815260059290921b8401810191818101908684111561602357600080fd5b8286015b84811015615fd85780358352918301918301616027565b600082601f83011261604f57600080fd5b8135602061605f615d9183615f51565b82815260059290921b8401810191818101908684111561607e57600080fd5b8286015b84811015615fd85780356001600160401b038111156160a15760008081fd5b6160af8986838b0101615d72565b845250918301918301616082565b600080600080608085870312156160d357600080fd5b84356001600160401b03808211156160ea57600080fd5b6160f688838901615f74565b9550602087013591508082111561610c57600080fd5b61611888838901615fe3565b9450604087013591508082111561612e57600080fd5b5061613b8782880161603e565b949793965093946060013593505050565b60006020828403121561615e57600080fd5b813561204581615ed1565b600081518084526020808501945080840160005b838110156161a25781516001600160a01b03168752958201959082019060010161617d565b509495945050505050565b600081518084526020808501945080840160005b838110156161a2578151875295820195908201906001016161c1565b600081518084526020808501808196508360051b8101915082860160005b85811015616225578284038952616213848351615e92565b988501989350908401906001016161fb565b5091979650505050505050565b6080815260006162456080830187616169565b828103602084015261625781876161ad565b9050828103604084015261626b81866161dd565b9050828103606084015261174681856161dd565b600080600080600060a0868803121561629757600080fd5b853594506162a760208701615cac565b93506162b560408701615cac565b94979396509394606081013594506080013592915050565b634e487b7160e01b600052602160045260246000fd5b602081016008831061630557634e487b7160e01b600052602160045260246000fd5b91905290565b6000806040838503121561631e57600080fd5b82359150602083013561633081615ed1565b809150509250929050565b6000806040838503121561634e57600080fd5b8235915061635e60208401615cac565b90509250929050565b60008060008060006080868803121561637f57600080fd5b8535945061638f60208701615cac565b935060408601356001600160401b03808211156163ab57600080fd5b6163b789838a01615cbd565b909550935060608801359150808211156163d057600080fd5b506163dd88828901615d72565b9150509295509295909350565b6000806000806060858703121561640057600080fd5b8435935061641060208601615cac565b925060408501356001600160401b0381111561642b57600080fd5b61643787828801615cbd565b95989497509550505050565b6000806000806080858703121561645957600080fd5b84356001600160401b038082111561647057600080fd5b61647c88838901615f74565b9550602087013591508082111561649257600080fd5b61649e88838901615fe3565b945060408701359150808211156164b457600080fd5b6164c08883890161603e565b935060608701359150808211156164d657600080fd5b50615f4587828801615d72565b60ff60f81b8816815260e06020820152600061650260e0830189615e92565b82810360408401526165148189615e92565b606084018890526001600160a01b038716608085015260a0840186905283810360c0850152905061108981856161ad565b60008060006060848603121561655a57600080fd5b833561656581615ed1565b92506020840135915060408401356001600160401b0381111561658757600080fd5b61659386828701615d72565b9150509250925092565b600080600080604085870312156165b357600080fd5b84356001600160401b03808211156165ca57600080fd5b6165d688838901615cbd565b909650945060208701359150808211156165ef57600080fd5b5061643787828801615cbd565b600080600080600060a0868803121561661457600080fd5b853561661f81615ed1565b9450602086013561662f81615ed1565b935060408601356001600160401b038082111561664b57600080fd5b61665789838a01615fe3565b9450606088013591508082111561666d57600080fd5b61667989838a01615fe3565b935060808801359150808211156163d057600080fd5b600080600080606085870312156166a557600080fd5b84356166b081615ed1565b93506020850135925060408501356001600160401b0381111561642b57600080fd5b6000602082840312156166e457600080fd5b81356001600160401b038116811461204557600080fd5b600080600080600060a0868803121561671357600080fd5b85356001600160401b038082111561672a57600080fd5b61673689838a01615f74565b9650602088013591508082111561674c57600080fd5b61675889838a01615fe3565b9550604088013591508082111561676e57600080fd5b61677a89838a0161603e565b9450606088013591508082111561679057600080fd5b61667989838a0161603e565b600080604083850312156167af57600080fd5b82356167ba81615ed1565b946020939093013593505050565b600080600080600060a086880312156167e057600080fd5b85356167eb81615ed1565b945060208601356167fb81615ed1565b9350604086013592506060860135915060808601356001600160401b0381111561682457600080fd5b6163dd88828901615d72565b8183823760009101908152919050565b60208082526018908201527f476f7665726e6f723a206f6e6c79476f7665726e616e63650000000000000000604082015260600190565b600181811c9082168061688b57607f821691505b6020821081036168ab57634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b6000600182016168ef576168ef6168c7565b5060010190565b65ffffffffffff828116828216039080821115616915576169156168c7565b5092915050565b60208082526021908201527f476f7665726e6f723a2070726f706f73616c206e6f74207375636365737366756040820152601b60fa1b606082015260800190565b60006020828403121561696f57600080fd5b81516001600160401b0381111561698557600080fd5b8201601f8101841361699657600080fd5b80516169a4615d9182615d4b565b8181528560208385010111156169b957600080fd5b611327826020830160208601615e6e565b81810381811115610f9957610f996168c7565b634e487b7160e01b600052601260045260246000fd5b600082616a1057634e487b7160e01b600052601260045260246000fd5b500490565b600060208284031215616a2757600080fd5b815165ffffffffffff8116811461204557600080fd5b600060208284031215616a4f57600080fd5b5051919050565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b604081526000616a93604083018688616a56565b8281036020840152611746818587616a56565b608081526000616ab96080830187616169565b8281036020840152616acb81876161ad565b90508281036040840152616adf81866161dd565b91505082606083015295945050505050565b8082028115828204841417610f9957610f996168c7565b60a081526000616b1b60a0830188616169565b8281036020840152616b2d81886161ad565b90508281036040840152616b4181876161dd565b60608401959095525050608001529392505050565b60c081526000616b6960c0830189616169565b8281036020840152616b7b81896161ad565b90508281036040840152616b8f81886161dd565b60608401969096525050608081019290925260a0909101529392505050565b80820180821115610f9957610f996168c7565b600060208284031215616bd357600080fd5b8151801515811461204557600080fd5b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b60008251616c40818460208701615e6e565b9190910192915050565b6001600160e01b0319831681528151600090616c6d816004850160208701615e6e565b919091016004019392505050565b6001600160401b03818116838216019080821115616915576169156168c7565b60208082526021908201527f476f7665726e6f723a20696e76616c69642070726f706f73616c206c656e67746040820152600d60fb1b606082015260800190565b8981526001600160a01b038916602082015261012060408201819052600090616d078382018b616169565b90508281036060840152616d1b818a6161ad565b90508281036080840152616d2f81896161dd565b905082810360a0840152616d4381886161dd565b90508560c08401528460e0840152828103610100840152616d648185615e92565b9c9b505050505050505050505050565b601f821115613bab57600081815260208120601f850160051c81016020861015616d9b5750805b601f850160051c820191505b8181101561177f57828155600101616da7565b81516001600160401b03811115616dd357616dd3615d05565b616de781616de18454616877565b84616d74565b602080601f831160018114616e1c5760008415616e045750858301515b600019600386901b1c1916600185901b17855561177f565b600085815260208120601f198616915b82811015616e4b57888601518255948401946001909101908401616e2c565b5085821015616e695787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b84815260ff84166020820152826040820152608060608201526000611b366080830184615e92565b85815260ff8516602082015283604082015260a060608201526000616ec960a0830185615e92565b8281036080840152611c4f8185615e9256fe476f7665726e6f723a2072656c617920726576657274656420776974686f7574206d657373616765a164736f6c6343000811000a \ No newline at end of file diff --git a/core/systemcontracts/pascal/mainnet/StakeHubContract b/core/systemcontracts/pascal/mainnet/StakeHubContract index 239fac931a..32a45a22f6 100644 --- a/core/systemcontracts/pascal/mainnet/StakeHubContract +++ b/core/systemcontracts/pascal/mainnet/StakeHubContract @@ -1 +1 @@ -608060405260043610620003e75760003560e01c80638456cb591162000203578063cbb04d9d1162000117578063e8f67c3b11620000ad578063f80a34021162000078578063f80a34021462000c3f578063fb50b31f1462000c64578063fc0c5ff11462000c89578063ff69ab611462000ca157600080fd5b8063e8f67c3b1462000bbb578063e992aaf51462000bd3578063efdbf0e11462000beb578063f1f74d841462000c2757600080fd5b8063d7c2dfc811620000ee578063d7c2dfc81462000b41578063d8ca511f1462000b66578063daacdb661462000b7e578063dbda7fb31462000b9657600080fd5b8063cbb04d9d1462000ac2578063d115a2061462000b03578063d6ca429d1462000b1c57600080fd5b8063ac4317511162000199578063bff02e201162000164578063bff02e201462000a4f578063c38fbec81462000a85578063c473318f1462000aaa578063c8509d8114620008a357600080fd5b8063ac43175114620009cd578063b187bd2614620009f2578063baa7199e1462000a12578063bdceadf31462000a3757600080fd5b80638cd22b2211620001da5780638cd22b221462000938578063982ef0a7146200095d578063a43569b31462000974578063aad3ec9614620009a857600080fd5b80638456cb5914620008c857806386d5450614620008e05780638a4d3fa8146200091a57600080fd5b806349f41a4211620002fb57806364028fbd116200029157806375cc7d89116200025c57806375cc7d89146200084e57806376e7d6d614620008735780638129fc1c146200088b578063831d65d114620008a357600080fd5b806364028fbd1462000789578063663706d314620007a05780636ec01b2714620007d15780636f8e2fa4146200082957600080fd5b80634e6fd6c411620002d25780634e6fd6c414620006f05780635949187114620007085780635e7cc1c9146200072d57806363a036b5146200075257600080fd5b806349f41a4214620006815780634a49ac4c14620006a65780634d99dd1614620006cb57600080fd5b80631fa8882b116200037d578063417c73a71162000348578063417c73a714620005cd578063449ecfe614620005f257806345211bfd14620006175780634838d165146200063c57600080fd5b80631fa8882b146200053d5780632b727c8614620005565780632e8e8c71146200057b5780633840998814620005b557600080fd5b8063092193ab11620003be578063092193ab14620004885780630e9fbf51146200049f5780631182b87514620004c457806317b4f35314620004f857600080fd5b8063046f7da21462000407578063059ddd22146200041f5780630661806e146200046157600080fd5b36620004025760345460ff166001146200040057600080fd5b005b600080fd5b3480156200041457600080fd5b506200040062000cb9565b3480156200042c57600080fd5b50620004446200043e36600462008787565b62000d4b565b6040516001600160a01b0390911681526020015b60405180910390f35b3480156200046e57600080fd5b506200047960365481565b60405190815260200162000458565b620004006200049936600462008787565b62001173565b348015620004ac57600080fd5b5062000400620004be366004620087e9565b620017c4565b348015620004d157600080fd5b50620004e9620004e33660046200882e565b62001af0565b604051620004589190620088e1565b3480156200050557600080fd5b506200044462000517366004620089b3565b80516020818301810180516045825292820191909301209152546001600160a01b031681565b3480156200054a57600080fd5b50620004796201518081565b3480156200056357600080fd5b50620004446200057536600462008787565b62001b88565b3480156200058857600080fd5b50620004446200059a36600462008787565b604d602052600090815260409020546001600160a01b031681565b348015620005c257600080fd5b506200047960375481565b348015620005da57600080fd5b5062000400620005ec36600462008787565b62001bdd565b348015620005ff57600080fd5b50620004006200061136600462008787565b62001c5f565b3480156200062457600080fd5b50620004006200063636600462008787565b62001e44565b3480156200064957600080fd5b50620006706200065b36600462008787565b60016020526000908152604090205460ff1681565b604051901515815260200162000458565b3480156200068e57600080fd5b5062000400620006a036600462008787565b6200201d565b348015620006b357600080fd5b5062000400620006c536600462008787565b62002239565b348015620006d857600080fd5b5062000400620006ea36600462008a08565b620022b5565b348015620006fd57600080fd5b506200044461dead81565b3480156200071557600080fd5b50620004006200072736600462008a46565b620028e5565b3480156200073a57600080fd5b50620004006200074c36600462008ab0565b620036de565b3480156200075f57600080fd5b50620007776200077136600462008ad7565b62003908565b60405162000458949392919062008b40565b620004006200079a36600462008bfc565b62003fad565b348015620007ad57600080fd5b5062000479620007bf36600462008787565b60446020526000908152604090205481565b348015620007de57600080fd5b50620007f6620007f036600462008787565b620045fc565b6040805182516001600160401b039081168252602080850151821690830152928201519092169082015260600162000458565b3480156200083657600080fd5b50620004e96200084836600462008787565b620046a1565b3480156200085b57600080fd5b50620004006200086d36600462008787565b62004acd565b3480156200088057600080fd5b5062000479603d5481565b3480156200089857600080fd5b506200040062004c9f565b348015620008b057600080fd5b5062000400620008c23660046200882e565b62004e6a565b348015620008d557600080fd5b506200040062004ec8565b348015620008ed57600080fd5b5062000444620008ff36600462008787565b6043602052600090815260409020546001600160a01b031681565b3480156200092757600080fd5b5062000479670de0b6b3a764000081565b3480156200094557600080fd5b50620004796200095736600462008a08565b62004f60565b620004006200096e36600462008cd2565b62005019565b3480156200098157600080fd5b50620009996200099336600462008787565b620056c7565b60405162000458919062008d0a565b348015620009b557600080fd5b5062000400620009c736600462008a08565b620059b4565b348015620009da57600080fd5b5062000400620009ec36600462008d87565b62005a21565b348015620009ff57600080fd5b5060005462010000900460ff1662000670565b34801562000a1f57600080fd5b506200040062000a3136600462008e40565b620068c0565b34801562000a4457600080fd5b5062000479603c5481565b34801562000a5c57600080fd5b5062000a7462000a6e36600462008ad7565b62006a8d565b604051620004589392919062008e99565b34801562000a9257600080fd5b506200040062000aa436600462008787565b62006c69565b34801562000ab757600080fd5b506200047960385481565b34801562000acf57600080fd5b5062000ae762000ae136600462008787565b62006f2b565b6040805193845291151560208401529082015260600162000458565b34801562000b1057600080fd5b5062000479620186a081565b34801562000b2957600080fd5b506200040062000b3b36600462008ef6565b6200736e565b34801562000b4e57600080fd5b506200040062000b6036600462008fdf565b62007594565b34801562000b7357600080fd5b5062000479603b5481565b34801562000b8b57600080fd5b506200047960495481565b34801562000ba357600080fd5b506200044462000bb536600462008787565b6200768a565b34801562000bc857600080fd5b506200047960355481565b34801562000be057600080fd5b5062000479603a5481565b34801562000bf857600080fd5b506200047962000c0a366004620089b3565b805160208183018101805160468252928201919093012091525481565b34801562000c3457600080fd5b5062000479603e5481565b34801562000c4c57600080fd5b506200047962000c5e36600462008a08565b62007ab4565b34801562000c7157600080fd5b506200040062000c8336600462008d87565b62007b25565b34801562000c9657600080fd5b506200047960395481565b34801562000cae57600080fd5b5062000479604a5481565b600054630100000090046001600160a01b0316331462000cec576040516306fbb1e360e01b815260040160405180910390fd5b60005462010000900460ff1662000d1657604051636cd6020160e01b815260040160405180910390fd5b6000805462ff0000191681556040517f62451d457bc659158be6e6247f56ec1df424a5c7597f71c20c2bc44e0965c8f99190a1565b6001600160a01b038082166000908152604160209081526040808320815161018081018352815486168152600182015486169381019390935260028101549094169082015260038301546060820152600483018054929384939091608084019162000db69062009045565b80601f016020809104026020016040519081016040528092919081815260200182805462000de49062009045565b801562000e355780601f1062000e095761010080835404028352916020019162000e35565b820191906000526020600020905b81548152906001019060200180831162000e1757829003601f168201915b505050505081526020016005820160405180608001604052908160008201805462000e609062009045565b80601f016020809104026020016040519081016040528092919081815260200182805462000e8e9062009045565b801562000edf5780601f1062000eb35761010080835404028352916020019162000edf565b820191906000526020600020905b81548152906001019060200180831162000ec157829003601f168201915b5050505050815260200160018201805462000efa9062009045565b80601f016020809104026020016040519081016040528092919081815260200182805462000f289062009045565b801562000f795780601f1062000f4d5761010080835404028352916020019162000f79565b820191906000526020600020905b81548152906001019060200180831162000f5b57829003601f168201915b5050505050815260200160028201805462000f949062009045565b80601f016020809104026020016040519081016040528092919081815260200182805462000fc29062009045565b8015620010135780601f1062000fe75761010080835404028352916020019162001013565b820191906000526020600020905b81548152906001019060200180831162000ff557829003601f168201915b505050505081526020016003820180546200102e9062009045565b80601f01602080910402602001604051908101604052809291908181526020018280546200105c9062009045565b8015620010ad5780601f106200108157610100808354040283529160200191620010ad565b820191906000526020600020905b8154815290600101906020018083116200108f57829003601f168201915b505050919092525050508152604080516060808201835260098501546001600160401b038082168452600160401b82048116602080860191909152600160801b9092041683850152840191909152600a84015460ff16151582840152600b84015490830152600c8301546080830152600d8301546001600160a01b031660a0830152805161026081019182905260c09092019190600e84019060139082845b8154815260200190600101908083116200114c575050509190925250509051949350505050565b33611000146200119f57604051630f22c43960e41b815261100060048201526024015b60405180910390fd5b6001600160a01b03808216600090815260436020908152604080832054841680845260418352818420825161018081018452815487168152600182015487169481019490945260028101549095169183019190915260038401546060830152600484018054919491608084019190620012189062009045565b80601f0160208091040260200160405190810160405280929190818152602001828054620012469062009045565b8015620012975780601f106200126b5761010080835404028352916020019162001297565b820191906000526020600020905b8154815290600101906020018083116200127957829003601f168201915b5050505050815260200160058201604051806080016040529081600082018054620012c29062009045565b80601f0160208091040260200160405190810160405280929190818152602001828054620012f09062009045565b8015620013415780601f10620013155761010080835404028352916020019162001341565b820191906000526020600020905b8154815290600101906020018083116200132357829003601f168201915b505050505081526020016001820180546200135c9062009045565b80601f01602080910402602001604051908101604052809291908181526020018280546200138a9062009045565b8015620013db5780601f10620013af57610100808354040283529160200191620013db565b820191906000526020600020905b815481529060010190602001808311620013bd57829003601f168201915b50505050508152602001600282018054620013f69062009045565b80601f0160208091040260200160405190810160405280929190818152602001828054620014249062009045565b8015620014755780601f10620014495761010080835404028352916020019162001475565b820191906000526020600020905b8154815290600101906020018083116200145757829003601f168201915b50505050508152602001600382018054620014909062009045565b80601f0160208091040260200160405190810160405280929190818152602001828054620014be9062009045565b80156200150f5780601f10620014e3576101008083540402835291602001916200150f565b820191906000526020600020905b815481529060010190602001808311620014f157829003601f168201915b505050919092525050508152604080516060808201835260098501546001600160401b038082168452600160401b82048116602080860191909152600160801b9092041683850152840191909152600a84015460ff16151582840152600b84015490830152600c8301546080830152600d8301546001600160a01b031660a0830152805161026081019182905260c09092019190600e84019060139082845b815481526020019060010190808311620015ae575050509190925250505060408101519091506001600160a01b03161580620015eb57508060e001515b15620016a857604051611002903490600081818185875af1925050503d806000811462001635576040519150601f19603f3d011682016040523d82523d6000602084013e6200163a565b606091505b505050816001600160a01b03167ffc8bff675087dd2da069cc3fb517b9ed001e19750c0865241a5542dba1ba170d6040516200169b9060208082526011908201527024a72b20a624a22fab20a624a220aa27a960791b604082015260600190565b60405180910390a2505050565b60408181015160c0830151519151632f303ebb60e11b81526001600160401b0390921660048301526001600160a01b031690635e607d769034906024016000604051808303818588803b158015620016ff57600080fd5b505af115801562001714573d6000803e3d6000fd5b5050505050816001600160a01b03167fe34918ff1c7084970068b53fd71ad6d8b04e9f15d3886cbf006443e6cdc52ea6346040516200175591815260200190565b60405180910390a26040808201519051633041949b60e01b815261200591633041949b916200178a919086906004016200907b565b600060405180830381600087803b158015620017a557600080fd5b505af1158015620017ba573d6000803e3d6000fd5b5050505050505b50565b3361100114620017ec57604051630f22c43960e41b8152611001600482015260240162001196565b60005462010000900460ff16156200181757604051631785c68160e01b815260040160405180910390fd5b6000604583836040516200182d92919062009095565b908152604051908190036020019020546001600160a01b0316905062001855603f8262007d5e565b620018735760405163056e881160e01b815260040160405180910390fd5b6001600160a01b0381166000908152604160205260408120906200189b6201518042620090bb565b604a546000828152604b602052604090205491925011620018cf5760405163bd52fcdb60e01b815260040160405180910390fd5b6000818152604b60205260408120805460019290620018f0908490620090de565b90915550506040516046906200190a908790879062009095565b9081526020016040518091039020546000141580156200195b57504262015180604687876040516200193e92919062009095565b908152602001604051809103902054620019599190620090de565b105b156200197a57604051631898eb6b60e01b815260040160405180910390fd5b6000806200198a85600262007d81565b9150915081620019ad57604051631b919bb160e11b815260040160405180910390fd5b6002840154603c5460405163045bc4d160e41b815260048101919091526000916001600160a01b0316906345bc4d10906024016020604051808303816000875af115801562001a00573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001a269190620090f4565b905062001a34858362007e0b565b856001600160a01b03167f6e9a2ee7aee95665e3a774a212eb11441b217e3e4656ab9563793094689aabb28383600260405162001a74939291906200910e565b60405180910390a26002850154604051633041949b60e01b815261200591633041949b9162001ab2916001600160a01b0316908a906004016200907b565b600060405180830381600087803b15801562001acd57600080fd5b505af115801562001ae2573d6000803e3d6000fd5b505050505050505050505050565b6060336120001462001b1a57604051630f22c43960e41b8152612000600482015260240162001196565b60005462010000900460ff161562001b4557604051631785c68160e01b815260040160405180910390fd5b6034805460ff1916600117905560405162461bcd60e51b815260206004820152600a60248201526919195c1c9958d85d195960b21b604482015260640162001196565b60008162001b98603f8262007d5e565b62001bb65760405163056e881160e01b815260040160405180910390fd5b6001600160a01b038084166000908152604160205260409020600d01541691505b50919050565b600054630100000090046001600160a01b0316331462001c10576040516306fbb1e360e01b815260040160405180910390fd5b6001600160a01b0381166000818152600160208190526040808320805460ff1916909217909155517f7fd26be6fc92aff63f1f4409b2b2ddeb272a888031d7f55ec830485ec61941869190a250565b60005462010000900460ff161562001c8a57604051631785c68160e01b815260040160405180910390fd5b3360009081526001602052604090205460ff161562001cbc5760405163b1d02c3d60e01b815260040160405180910390fd5b8062001cca603f8262007d5e565b62001ce85760405163056e881160e01b815260040160405180910390fd5b6001600160a01b0382166000908152604160205260409020600a81015460ff1662001d2657604051634b6b857d60e01b815260040160405180910390fd5b6036546002820154604051630913db4760e01b81526001600160a01b03868116600483015290911690630913db4790602401602060405180830381865afa15801562001d76573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001d9c9190620090f4565b101562001dbc576040516317b204bf60e11b815260040160405180910390fd5b4281600b0154111562001de25760405163170cb76760e21b815260040160405180910390fd5b600a8101805460ff19169055604980546001919060009062001e0690849062009149565b90915550506040516001600160a01b038416907f9390b453426557da5ebdc31f19a37753ca04addf656d32f35232211bb2af3f1990600090a2505050565b60005462010000900460ff161562001e6f57604051631785c68160e01b815260040160405180910390fd5b3360009081526001602052604090205460ff161562001ea15760405163b1d02c3d60e01b815260040160405180910390fd5b62001eab62007f00565b62001eb8603f8262007d5e565b62001ed65760405163056e881160e01b815260040160405180910390fd5b6001600160a01b03821662001efe57604051636520611b60e11b815260040160405180910390fd5b6001600160a01b03828116600090815260436020526040902054161562001f3857604051631e6f587560e11b815260040160405180910390fd5b600062001f4462007f00565b6001600160a01b0381166000908152604160205260409020600c81015491925090429062001f77906201518090620090de565b111562001f9757604051631f92cdbd60e11b815260040160405180910390fd5b80546001600160a01b039081166000908152604460209081526040808320429081905585548986166001600160a01b031991821681178855600c88019290925581855260439093528184208054958816959093168517909255519092917f6e4e747ca35203f16401c69805c7dd52fff67ef60b0ebc5c7fe16890530f223591a350505050565b336200202b603f8262007d5e565b620020495760405163056e881160e01b815260040160405180910390fd5b60005462010000900460ff16156200207457604051631785c68160e01b815260040160405180910390fd5b3360009081526001602052604090205460ff1615620020a65760405163b1d02c3d60e01b815260040160405180910390fd5b6001600160a01b038281166000908152604d60205260409020541615620020e05760405163bebdc75760e01b815260040160405180910390fd5b620020ed603f8362007d5e565b156200210c5760405163bebdc75760e01b815260040160405180910390fd5b336000818152604160205260409020600d01546001600160a01b0390811690841681036200214d5760405163bebdc75760e01b815260040160405180910390fd5b6001600160a01b0381161562002184576001600160a01b0381166000908152604d6020526040902080546001600160a01b03191690555b6001600160a01b038281166000908152604160205260409020600d0180546001600160a01b031916918616918217905515620021e9576001600160a01b038481166000908152604d6020526040902080546001600160a01b0319169184169190911790555b836001600160a01b0316816001600160a01b0316836001600160a01b03167fcbb728765de145e99c00e8ae32a325231e850359b7b8a6da3b84d672ab3f1d0a60405160405180910390a450505050565b600054630100000090046001600160a01b031633146200226c576040516306fbb1e360e01b815260040160405180910390fd5b6001600160a01b038116600081815260016020526040808220805460ff19169055517fe0db3499b7fdc3da4cddff5f45d694549c19835e7f719fb5606d3ad1a5de40119190a250565b60005462010000900460ff1615620022e057604051631785c68160e01b815260040160405180910390fd5b3360009081526001602052604090205460ff1615620023125760405163b1d02c3d60e01b815260040160405180910390fd5b8162002320603f8262007d5e565b6200233e5760405163056e881160e01b815260040160405180910390fd5b816000036200236057604051639811e0c760e01b815260040160405180910390fd5b6001600160a01b0380841660009081526041602090815260408083208151610180810183528154861681526001820154861693810193909352600281015490941690820152600383015460608201526004830180543394916080840191620023c89062009045565b80601f0160208091040260200160405190810160405280929190818152602001828054620023f69062009045565b8015620024475780601f106200241b5761010080835404028352916020019162002447565b820191906000526020600020905b8154815290600101906020018083116200242957829003601f168201915b5050505050815260200160058201604051806080016040529081600082018054620024729062009045565b80601f0160208091040260200160405190810160405280929190818152602001828054620024a09062009045565b8015620024f15780601f10620024c557610100808354040283529160200191620024f1565b820191906000526020600020905b815481529060010190602001808311620024d357829003601f168201915b505050505081526020016001820180546200250c9062009045565b80601f01602080910402602001604051908101604052809291908181526020018280546200253a9062009045565b80156200258b5780601f106200255f576101008083540402835291602001916200258b565b820191906000526020600020905b8154815290600101906020018083116200256d57829003601f168201915b50505050508152602001600282018054620025a69062009045565b80601f0160208091040260200160405190810160405280929190818152602001828054620025d49062009045565b8015620026255780601f10620025f95761010080835404028352916020019162002625565b820191906000526020600020905b8154815290600101906020018083116200260757829003601f168201915b50505050508152602001600382018054620026409062009045565b80601f01602080910402602001604051908101604052809291908181526020018280546200266e9062009045565b8015620026bf5780601f106200269357610100808354040283529160200191620026bf565b820191906000526020600020905b815481529060010190602001808311620026a157829003601f168201915b505050919092525050508152604080516060808201835260098501546001600160401b038082168452600160401b82048116602080860191909152600160801b9092041683850152840191909152600a84015460ff16151582840152600b84015490830152600c8301546080830152600d8301546001600160a01b031660a0830152805161026081019182905260c09092019190600e84019060139082845b8154815260200190600101908083116200275e575050509190925250505060408082015190516326ccee8b60e11b81526001600160a01b0385811660048301526024820188905292935060009290911690634d99dd16906044016020604051808303816000875af1158015620027d8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620027fe9190620090f4565b9050826001600160a01b0316866001600160a01b03167f3aace7340547de7b9156593a7652dc07ee900cea3fd8f82cb6c9d38b4082980287846040516200284f929190918252602082015260400190565b60405180910390a3856001600160a01b0316836001600160a01b0316036200287c576200287c8662007f41565b6040808301519051633041949b60e01b815261200591633041949b91620028a9919087906004016200907b565b600060405180830381600087803b158015620028c457600080fd5b505af1158015620028d9573d6000803e3d6000fd5b50505050505050505050565b60005462010000900460ff16156200291057604051631785c68160e01b815260040160405180910390fd5b3360009081526001602052604090205460ff1615620029425760405163b1d02c3d60e01b815260040160405180910390fd5b8362002950603f8262007d5e565b6200296e5760405163056e881160e01b815260040160405180910390fd5b836200297c603f8262007d5e565b6200299a5760405163056e881160e01b815260040160405180910390fd5b6034805460ff191660011790556000849003620029ca57604051639811e0c760e01b815260040160405180910390fd5b846001600160a01b0316866001600160a01b031603620029fd5760405163f0e3e62960e01b815260040160405180910390fd5b6001600160a01b038087166000908152604160209081526040808320815161018081018352815486168152600182015486169381019390935260028101549094169082015260038301546060820152600483018054339491608084019162002a659062009045565b80601f016020809104026020016040519081016040528092919081815260200182805462002a939062009045565b801562002ae45780601f1062002ab85761010080835404028352916020019162002ae4565b820191906000526020600020905b81548152906001019060200180831162002ac657829003601f168201915b505050505081526020016005820160405180608001604052908160008201805462002b0f9062009045565b80601f016020809104026020016040519081016040528092919081815260200182805462002b3d9062009045565b801562002b8e5780601f1062002b625761010080835404028352916020019162002b8e565b820191906000526020600020905b81548152906001019060200180831162002b7057829003601f168201915b5050505050815260200160018201805462002ba99062009045565b80601f016020809104026020016040519081016040528092919081815260200182805462002bd79062009045565b801562002c285780601f1062002bfc5761010080835404028352916020019162002c28565b820191906000526020600020905b81548152906001019060200180831162002c0a57829003601f168201915b5050505050815260200160028201805462002c439062009045565b80601f016020809104026020016040519081016040528092919081815260200182805462002c719062009045565b801562002cc25780601f1062002c965761010080835404028352916020019162002cc2565b820191906000526020600020905b81548152906001019060200180831162002ca457829003601f168201915b5050505050815260200160038201805462002cdd9062009045565b80601f016020809104026020016040519081016040528092919081815260200182805462002d0b9062009045565b801562002d5c5780601f1062002d305761010080835404028352916020019162002d5c565b820191906000526020600020905b81548152906001019060200180831162002d3e57829003601f168201915b505050919092525050508152604080516060808201835260098501546001600160401b038082168452600160401b82048116602080860191909152600160801b9092041683850152840191909152600a84015460ff16151582840152600b84015490830152600c8301546080830152600d8301546001600160a01b031660a0830152805161026081019182905260c09092019190600e84019060139082845b81548152602001906001019080831162002dfb57505050919092525050506001600160a01b0380891660009081526041602090815260408083208151610180810183528154861681526001820154861693810193909352600281015490941690820152600383015460608201526004830180549495509193909291608084019162002e869062009045565b80601f016020809104026020016040519081016040528092919081815260200182805462002eb49062009045565b801562002f055780601f1062002ed95761010080835404028352916020019162002f05565b820191906000526020600020905b81548152906001019060200180831162002ee757829003601f168201915b505050505081526020016005820160405180608001604052908160008201805462002f309062009045565b80601f016020809104026020016040519081016040528092919081815260200182805462002f5e9062009045565b801562002faf5780601f1062002f835761010080835404028352916020019162002faf565b820191906000526020600020905b81548152906001019060200180831162002f9157829003601f168201915b5050505050815260200160018201805462002fca9062009045565b80601f016020809104026020016040519081016040528092919081815260200182805462002ff89062009045565b8015620030495780601f106200301d5761010080835404028352916020019162003049565b820191906000526020600020905b8154815290600101906020018083116200302b57829003601f168201915b50505050508152602001600282018054620030649062009045565b80601f0160208091040260200160405190810160405280929190818152602001828054620030929062009045565b8015620030e35780601f10620030b757610100808354040283529160200191620030e3565b820191906000526020600020905b815481529060010190602001808311620030c557829003601f168201915b50505050508152602001600382018054620030fe9062009045565b80601f01602080910402602001604051908101604052809291908181526020018280546200312c9062009045565b80156200317d5780601f1062003151576101008083540402835291602001916200317d565b820191906000526020600020905b8154815290600101906020018083116200315f57829003601f168201915b505050919092525050508152604080516060808201835260098501546001600160401b038082168452600160401b82048116602080860191909152600160801b9092041683850152840191909152600a84015460ff16151582840152600b84015490830152600c8301546080830152600d8301546001600160a01b031660a0830152805161026081019182905260c09092019190600e84019060139082845b8154815260200190600101908083116200321c5750505050508152505090508060e0015180156200325f5750876001600160a01b0316836001600160a01b031614155b156200327e57604051636468920360e01b815260040160405180910390fd5b60408083015190516352e82ce560e11b81526001600160a01b038581166004830152602482018a9052600092169063a5d059ca906044016020604051808303816000875af1158015620032d5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620032fb9190620090f4565b9050603754811015620033215760405163dc6f0bdd60e01b815260040160405180910390fd5b896001600160a01b0316846001600160a01b0316148015620033b657506036546040808501519051630913db4760e01b81526001600160a01b038d8116600483015290911690630913db4790602401602060405180830381865afa1580156200338e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620033b49190620090f4565b105b15620033d5576040516317b204bf60e11b815260040160405180910390fd5b6000620186a0603a5483620033eb91906200915f565b620033f79190620090bb565b9050600083604001516001600160a01b03168260405160006040518083038185875af1925050503d80600081146200344c576040519150601f19603f3d011682016040523d82523d6000602084013e62003451565b606091505b505090508062003474576040516312171d8360e31b815260040160405180910390fd5b62003480828462009149565b60408086015190516317066a5760e21b81526001600160a01b03898116600483015292955060009290911690635c19a95c90869060240160206040518083038185885af1158015620034d6573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190620034fd9190620090f4565b9050866001600160a01b03168c6001600160a01b03168e6001600160a01b03167ffdac6e81913996d95abcc289e90f2d8bd235487ce6fe6f821e7d21002a1915b48e858960405162003562939291909283526020830191909152604082015260600190565b60405180910390a4604080516002808252606082018352600092602083019080368337019050509050866040015181600081518110620035a657620035a662009179565b60200260200101906001600160a01b031690816001600160a01b031681525050856040015181600181518110620035e157620035e162009179565b6001600160a01b0390921660209283029190910190910152604051634484077560e01b815261200590634484077590620036229084908c906004016200918f565b600060405180830381600087803b1580156200363d57600080fd5b505af115801562003652573d6000803e3d6000fd5b505050508a15620036c4576120056001600160a01b031663e5ed5b1e898f6040518363ffffffff1660e01b81526004016200368f9291906200907b565b600060405180830381600087803b158015620036aa57600080fd5b505af1158015620036bf573d6000803e3d6000fd5b505050505b50506034805460ff19169055505050505050505050505050565b60005462010000900460ff16156200370957604051631785c68160e01b815260040160405180910390fd5b3360009081526001602052604090205460ff16156200373b5760405163b1d02c3d60e01b815260040160405180910390fd5b6200374562007f00565b62003752603f8262007d5e565b620037705760405163056e881160e01b815260040160405180910390fd5b60006200377c62007f00565b6001600160a01b0381166000908152604160205260409020600c810154919250904290620037af906201518090620090de565b1115620037cf57604051631f92cdbd60e11b815260040160405180910390fd5b60098101546001600160401b03600160401b90910481169085161115620038095760405163dc81db8560e01b815260040160405180910390fd5b60098101546000906001600160401b03908116908616101562003847576009820154620038419086906001600160401b0316620091bb565b62003861565b600982015462003861906001600160401b031686620091bb565b60098301546001600160401b039182169250600160801b9004168111156200389c5760405163dc81db8560e01b815260040160405180910390fd5b60098201805467ffffffffffffffff19166001600160401b03871690811790915542600c8401556040519081526001600160a01b038416907f78cdd96edf59e09cfd4d26ef6ef6c92d166effe6a40970c54821206d541932cb9060200160405180910390a25050505050565b606080606060006200391b603f62008067565b90508086101562003fa457841562003934578462003936565b805b945060008562003947888462009149565b116200395f5762003959878362009149565b62003961565b855b9050806001600160401b038111156200397e576200397e620088f6565b604051908082528060200260200182016040528015620039a8578160200160208202803683370190505b509450806001600160401b03811115620039c657620039c6620088f6565b604051908082528060200260200182016040528015620039f0578160200160208202803683370190505b509350806001600160401b0381111562003a0e5762003a0e620088f6565b60405190808252806020026020018201604052801562003a4357816020015b606081526020019060019003908162003a2d5790505b50925060005b8181101562003fa157600062003a6d62003a64838b620090de565b603f9062008072565b6001600160a01b0380821660009081526041602090815260408083208151610180810183528154861681526001820154861693810193909352600281015490941690820152600383015460608201526004830180549495509193909291608084019162003ada9062009045565b80601f016020809104026020016040519081016040528092919081815260200182805462003b089062009045565b801562003b595780601f1062003b2d5761010080835404028352916020019162003b59565b820191906000526020600020905b81548152906001019060200180831162003b3b57829003601f168201915b505050505081526020016005820160405180608001604052908160008201805462003b849062009045565b80601f016020809104026020016040519081016040528092919081815260200182805462003bb29062009045565b801562003c035780601f1062003bd75761010080835404028352916020019162003c03565b820191906000526020600020905b81548152906001019060200180831162003be557829003601f168201915b5050505050815260200160018201805462003c1e9062009045565b80601f016020809104026020016040519081016040528092919081815260200182805462003c4c9062009045565b801562003c9d5780601f1062003c715761010080835404028352916020019162003c9d565b820191906000526020600020905b81548152906001019060200180831162003c7f57829003601f168201915b5050505050815260200160028201805462003cb89062009045565b80601f016020809104026020016040519081016040528092919081815260200182805462003ce69062009045565b801562003d375780601f1062003d0b5761010080835404028352916020019162003d37565b820191906000526020600020905b81548152906001019060200180831162003d1957829003601f168201915b5050505050815260200160038201805462003d529062009045565b80601f016020809104026020016040519081016040528092919081815260200182805462003d809062009045565b801562003dd15780601f1062003da55761010080835404028352916020019162003dd1565b820191906000526020600020905b81548152906001019060200180831162003db357829003601f168201915b505050919092525050508152604080516060808201835260098501546001600160401b038082168452600160401b82048116602080860191909152600160801b9092041683850152840191909152600a84015460ff16151582840152600b84015490830152600c8301546080830152600d8301546001600160a01b031660a0830152805161026081019182905260c09092019190600e84019060139082845b81548152602001906001019080831162003e70575050505050815250509050806000015188848151811062003ea95762003ea962009179565b60200260200101906001600160a01b031690816001600160a01b0316815250508060e0015162003f425780604001516001600160a01b03166315d1f8986040518163ffffffff1660e01b8152600401602060405180830381865afa15801562003f16573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062003f3c9190620090f4565b62003f45565b60005b87848151811062003f5a5762003f5a62009179565b602002602001018181525050806080015186848151811062003f805762003f8062009179565b602002602001018190525050508062003f9990620091e5565b905062003a49565b50505b92959194509250565b60005462010000900460ff161562003fd857604051631785c68160e01b815260040160405180910390fd5b3360009081526001602052604090205460ff16156200400a5760405163b1d02c3d60e01b815260040160405180910390fd5b3362004018603f8262007d5e565b156200403757604051635f28f62b60e01b815260040160405180910390fd5b6001600160a01b038181166000908152604d602052604090205416156200407157604051631a0a9b9f60e21b815260040160405180910390fd5b6001600160a01b038881166000908152604360205260409020541615620040ab57604051631e6f587560e11b815260040160405180910390fd5b60006001600160a01b031660458888604051620040ca92919062009095565b908152604051908190036020019020546001600160a01b03161462004102576040516311fdb94760e01b815260040160405180910390fd5b600062004110838062009201565b6040516020016200412392919062009095565b60408051601f1981840301815291815281516020928301206000818152604290935291205490915060ff16156200416d5760405163c0bf414360e01b815260040160405180910390fd5b600062004183670de0b6b3a76400003462009149565b9050603654811015620041a9576040516317b204bf60e11b815260040160405180910390fd5b6001600160a01b038a16620041d157604051636520611b60e11b815260040160405180910390fd5b611388620041e6604087016020880162008ab0565b6001600160401b031611806200422c575062004209604086016020870162008ab0565b6001600160401b031662004221602087018762008ab0565b6001600160401b0316115b806200426b575062004245604086016020870162008ab0565b6001600160401b031662004260606087016040880162008ab0565b6001600160401b0316115b156200428a5760405163dc81db8560e01b815260040160405180910390fd5b620042d56200429a858062009201565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506200808092505050565b620042f357604051635dba5ad760e01b815260040160405180910390fd5b62004302838a8a8a8a62008222565b6200432057604051631647e3cb60e11b815260040160405180910390fd5b60006200436e8462004333878062009201565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506200835292505050565b90506200437d603f8562008453565b506000838152604260209081526040808320805460ff191660019081179091556001600160a01b0380891680865260419094529190932080548f83166001600160a01b031991821617825593810180548516909317909255600282018054918516919093161790915542600382015560048101620043fd8b8d83620092a9565b5085600582016200440f828262009371565b5087905060098201620044238282620094aa565b505042600c8201556001600160a01b038c81166000908152604360205260409081902080546001600160a01b0319169288169290921790915551859060459062004471908e908e9062009095565b908152602001604051809103902060006101000a8154816001600160a01b0302191690836001600160a01b03160217905550816001600160a01b0316856001600160a01b03168d6001600160a01b03167faecd9fb95e79c75a3a1de93362c6be5fe6ab65770d8614be583884161cd8228d8e8e604051620044f49291906200957a565b60405180910390a460408051848152602081018590526001600160a01b0387169182917f24d7bda8602b916d64417f0dbfe2e2e88ec9b1157bd9f596dfdb91ba26624e04910160405180910390a360408051670de0b6b3a7640000808252602082015261dead916001600160a01b038816917f24d7bda8602b916d64417f0dbfe2e2e88ec9b1157bd9f596dfdb91ba26624e04910160405180910390a3604051633041949b60e01b815261200590633041949b90620045ba90859089906004016200907b565b600060405180830381600087803b158015620045d557600080fd5b505af1158015620045ea573d6000803e3d6000fd5b50505050505050505050505050505050565b60408051606081018252600080825260208201819052918101919091528162004627603f8262007d5e565b620046455760405163056e881160e01b815260040160405180910390fd5b50506001600160a01b031660009081526041602090815260409182902082516060810184526009909101546001600160401b038082168352600160401b8204811693830193909352600160801b90049091169181019190915290565b6001600160a01b038082166000908152604160209081526040808320815161018081018352815486168152600182015486169381019390935260028101549094169082015260038301546060828101919091526004840180549194916080840191906200470e9062009045565b80601f01602080910402602001604051908101604052809291908181526020018280546200473c9062009045565b80156200478d5780601f1062004761576101008083540402835291602001916200478d565b820191906000526020600020905b8154815290600101906020018083116200476f57829003601f168201915b5050505050815260200160058201604051806080016040529081600082018054620047b89062009045565b80601f0160208091040260200160405190810160405280929190818152602001828054620047e69062009045565b8015620048375780601f106200480b5761010080835404028352916020019162004837565b820191906000526020600020905b8154815290600101906020018083116200481957829003601f168201915b50505050508152602001600182018054620048529062009045565b80601f0160208091040260200160405190810160405280929190818152602001828054620048809062009045565b8015620048d15780601f10620048a557610100808354040283529160200191620048d1565b820191906000526020600020905b815481529060010190602001808311620048b357829003601f168201915b50505050508152602001600282018054620048ec9062009045565b80601f01602080910402602001604051908101604052809291908181526020018280546200491a9062009045565b80156200496b5780601f106200493f576101008083540402835291602001916200496b565b820191906000526020600020905b8154815290600101906020018083116200494d57829003601f168201915b50505050508152602001600382018054620049869062009045565b80601f0160208091040260200160405190810160405280929190818152602001828054620049b49062009045565b801562004a055780601f10620049d95761010080835404028352916020019162004a05565b820191906000526020600020905b815481529060010190602001808311620049e757829003601f168201915b505050919092525050508152604080516060808201835260098501546001600160401b038082168452600160401b82048116602080860191909152600160801b9092041683850152840191909152600a84015460ff16151582840152600b84015490830152600c8301546080830152600d8301546001600160a01b031660a0830152805161026081019182905260c09092019190600e84019060139082845b81548152602001906001019080831162004aa45750505091909252505050608001519392505050565b336110011462004af557604051630f22c43960e41b8152611001600482015260240162001196565b6001600160a01b038082166000908152604360205260409020541662004b1d603f8262007d5e565b62004b3b5760405163056e881160e01b815260040160405180910390fd5b6001600160a01b038181166000908152604160205260408082206002810154603b54925163045bc4d160e41b81526004810193909352909316906345bc4d10906024016020604051808303816000875af115801562004b9e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062004bc49190620090f4565b90506000603d544262004bd89190620090de565b905062004be6838262007e0b565b836001600160a01b03167f6e9a2ee7aee95665e3a774a212eb11441b217e3e4656ab9563793094689aabb28284600160405162004c26939291906200910e565b60405180910390a26002830154604051633041949b60e01b815261200591633041949b9162004c64916001600160a01b03169088906004016200907b565b600060405180830381600087803b15801562004c7f57600080fd5b505af115801562004c94573d6000803e3d6000fd5b505050505050505050565b600054610100900460ff161580801562004cc05750600054600160ff909116105b8062004cdc5750303b15801562004cdc575060005460ff166001145b62004d415760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b606482015260840162001196565b6000805460ff19166001179055801562004d65576000805461ff0019166101001790555b33411462004d865760405163022d8c9560e31b815260040160405180910390fd5b3a1562004da6576040516383f1b1d360e01b815260040160405180910390fd5b611388603555686c6b935b8bbd400000603655670de0b6b3a7640000603755602d60385562093a806039556002603a819055678ac7230489e80000603b55680ad78ebc5ac6200000603c556202a300603d5562278d00603e55604a5562004e217308e68ec70fa3b629784fdb28887e206ce8561e086200846a565b8015620017c1576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a150565b336120001462004e9257604051630f22c43960e41b8152612000600482015260240162001196565b60405162461bcd60e51b815260206004820152600a60248201526919195c1c9958d85d195960b21b604482015260640162001196565b600054630100000090046001600160a01b0316331462004efb576040516306fbb1e360e01b815260040160405180910390fd5b60005462010000900460ff161562004f2657604051631785c68160e01b815260040160405180910390fd5b6000805462ff00001916620100001781556040517f9e87fac88ff661f02d44f95383c817fece4bce600a3dab7a54406878b965e7529190a1565b600062004f6f603f8462007d5e565b62004f8d5760405163056e881160e01b815260040160405180910390fd5b6001600160a01b0383811660009081526041602052604090819020600201549051636bbf224960e01b815260048101859052911690636bbf2249906024015b602060405180830381865afa15801562004fea573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620050109190620090f4565b90505b92915050565b60005462010000900460ff16156200504457604051631785c68160e01b815260040160405180910390fd5b3360009081526001602052604090205460ff1615620050765760405163b1d02c3d60e01b815260040160405180910390fd5b8162005084603f8262007d5e565b620050a25760405163056e881160e01b815260040160405180910390fd5b6037543490811015620050c85760405163dc6f0bdd60e01b815260040160405180910390fd5b6001600160a01b0380851660009081526041602090815260408083208151610180810183528154861681526001820154861693810193909352600281015490941690820152600383015460608201526004830180543394916080840191620051309062009045565b80601f01602080910402602001604051908101604052809291908181526020018280546200515e9062009045565b8015620051af5780601f106200518357610100808354040283529160200191620051af565b820191906000526020600020905b8154815290600101906020018083116200519157829003601f168201915b5050505050815260200160058201604051806080016040529081600082018054620051da9062009045565b80601f0160208091040260200160405190810160405280929190818152602001828054620052089062009045565b8015620052595780601f106200522d5761010080835404028352916020019162005259565b820191906000526020600020905b8154815290600101906020018083116200523b57829003601f168201915b50505050508152602001600182018054620052749062009045565b80601f0160208091040260200160405190810160405280929190818152602001828054620052a29062009045565b8015620052f35780601f10620052c757610100808354040283529160200191620052f3565b820191906000526020600020905b815481529060010190602001808311620052d557829003601f168201915b505050505081526020016002820180546200530e9062009045565b80601f01602080910402602001604051908101604052809291908181526020018280546200533c9062009045565b80156200538d5780601f1062005361576101008083540402835291602001916200538d565b820191906000526020600020905b8154815290600101906020018083116200536f57829003601f168201915b50505050508152602001600382018054620053a89062009045565b80601f0160208091040260200160405190810160405280929190818152602001828054620053d69062009045565b8015620054275780601f10620053fb5761010080835404028352916020019162005427565b820191906000526020600020905b8154815290600101906020018083116200540957829003601f168201915b505050919092525050508152604080516060808201835260098501546001600160401b038082168452600160401b82048116602080860191909152600160801b9092041683850152840191909152600a84015460ff16151582840152600b84015490830152600c8301546080830152600d8301546001600160a01b031660a0830152805161026081019182905260c09092019190600e84019060139082845b815481526020019060010190808311620054c65750505050508152505090508060e001518015620055095750856001600160a01b0316826001600160a01b031614155b156200552857604051636468920360e01b815260040160405180910390fd5b60408082015190516317066a5760e21b81526001600160a01b0384811660048301526000921690635c19a95c90869060240160206040518083038185885af115801562005579573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190620055a09190620090f4565b9050826001600160a01b0316876001600160a01b03167f24d7bda8602b916d64417f0dbfe2e2e88ec9b1157bd9f596dfdb91ba26624e048387604051620055f1929190918252602082015260400190565b60405180910390a36040808301519051633041949b60e01b815261200591633041949b9162005626919087906004016200907b565b600060405180830381600087803b1580156200564157600080fd5b505af115801562005656573d6000803e3d6000fd5b505050508515620017ba576040516372f6ad8f60e11b81526120059063e5ed5b1e906200568a9086908b906004016200907b565b600060405180830381600087803b158015620056a557600080fd5b505af1158015620056ba573d6000803e3d6000fd5b5050505050505050505050565b620056f36040518060800160405280606081526020016060815260200160608152602001606081525090565b8162005701603f8262007d5e565b6200571f5760405163056e881160e01b815260040160405180910390fd5b6001600160a01b03831660009081526041602052604090819020815160808101909252600501805482908290620057569062009045565b80601f0160208091040260200160405190810160405280929190818152602001828054620057849062009045565b8015620057d55780601f10620057a957610100808354040283529160200191620057d5565b820191906000526020600020905b815481529060010190602001808311620057b757829003601f168201915b50505050508152602001600182018054620057f09062009045565b80601f01602080910402602001604051908101604052809291908181526020018280546200581e9062009045565b80156200586f5780601f1062005843576101008083540402835291602001916200586f565b820191906000526020600020905b8154815290600101906020018083116200585157829003601f168201915b505050505081526020016002820180546200588a9062009045565b80601f0160208091040260200160405190810160405280929190818152602001828054620058b89062009045565b8015620059095780601f10620058dd5761010080835404028352916020019162005909565b820191906000526020600020905b815481529060010190602001808311620058eb57829003601f168201915b50505050508152602001600382018054620059249062009045565b80601f0160208091040260200160405190810160405280929190818152602001828054620059529062009045565b8015620059a35780601f106200597757610100808354040283529160200191620059a3565b820191906000526020600020905b8154815290600101906020018083116200598557829003601f168201915b505050505081525050915050919050565b60005462010000900460ff1615620059df57604051631785c68160e01b815260040160405180910390fd5b3360009081526001602052604090205460ff161562005a115760405163b1d02c3d60e01b815260040160405180910390fd5b62005a1d828262008503565b5050565b336110071462005a4957604051630f22c43960e41b8152611007600482015260240162001196565b62005ab66040518060400160405280601081526020016f1d1c985b9cd9995c91d85cd31a5b5a5d60821b81525085858080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092939250506200860f9050565b1562005b71576020811462005ae85783838383604051630a5a604160e01b815260040162001196949392919062009590565b604080516020601f840181900481028201810190925282815260009162005b2b9185858083850183828082843760009201919091525092939250506200866c9050565b90506108fc81108062005b3f575061271081115b1562005b685784848484604051630a5a604160e01b815260040162001196949392919062009590565b6035556200687b565b62005be26040518060400160405280601481526020017336b4b729b2b6332232b632b3b0ba34b7b721272160611b81525085858080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092939250506200860f9050565b1562005cac576020811462005c145783838383604051630a5a604160e01b815260040162001196949392919062009590565b604080516020601f840181900481028201810190925282815260009162005c579185858083850183828082843760009201919091525092939250506200866c9050565b9050683635c9adc5dea0000081108062005c7a575069152d02c7e14af680000081115b1562005ca35784848484604051630a5a604160e01b815260040162001196949392919062009590565b6036556200687b565b62005d1f604051806040016040528060168152602001756d696e44656c65676174696f6e424e424368616e676560501b81525085858080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092939250506200860f9050565b1562005de6576020811462005d515783838383604051630a5a604160e01b815260040162001196949392919062009590565b604080516020601f840181900481028201810190925282815260009162005d949185858083850183828082843760009201919091525092939250506200866c9050565b905067016345785d8a000081108062005db45750678ac7230489e8000081115b1562005ddd5784848484604051630a5a604160e01b815260040162001196949392919062009590565b6037556200687b565b62005e57604051806040016040528060148152602001736d6178456c656374656456616c696461746f727360601b81525085858080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092939250506200860f9050565b1562005f0f576020811462005e895783838383604051630a5a604160e01b815260040162001196949392919062009590565b604080516020601f840181900481028201810190925282815260009162005ecc9185858083850183828082843760009201919091525092939250506200866c9050565b905080158062005edd57506101f481115b1562005f065784848484604051630a5a604160e01b815260040162001196949392919062009590565b6038556200687b565b62005f786040518060400160405280600c81526020016b1d5b989bdb9914195c9a5bd960a21b81525085858080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092939250506200860f9050565b1562006035576020811462005faa5783838383604051630a5a604160e01b815260040162001196949392919062009590565b604080516020601f840181900481028201810190925282815260009162005fed9185858083850183828082843760009201919091525092939250506200866c9050565b90506203f48081108062006003575062278d0081115b156200602c5784848484604051630a5a604160e01b815260040162001196949392919062009590565b6039556200687b565b620060a360405180604001604052806011815260200170726564656c65676174654665655261746560781b81525085858080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092939250506200860f9050565b15620061505760208114620060d55783838383604051630a5a604160e01b815260040162001196949392919062009590565b604080516020601f8401819004810282018101909252828152600091620061189185858083850183828082843760009201919091525092939250506200866c9050565b90506064811115620061475784848484604051630a5a604160e01b815260040162001196949392919062009590565b603a556200687b565b620061c060405180604001604052806013815260200172191bdddb9d1a5b5954db185cda105b5bdd5b9d606a1b81525085858080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092939250506200860f9050565b15620062815760208114620061f25783838383604051630a5a604160e01b815260040162001196949392919062009590565b604080516020601f8401819004810282018101909252828152600091620062359185858083850183828082843760009201919091525092939250506200866c9050565b9050674563918244f400008110806200624f5750603c5481115b15620062785784848484604051630a5a604160e01b815260040162001196949392919062009590565b603b556200687b565b620062ef6040518060400160405280601181526020017019995b1bdb9e54db185cda105b5bdd5b9d607a1b81525085858080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092939250506200860f9050565b15620063b25760208114620063215783838383604051630a5a604160e01b815260040162001196949392919062009590565b604080516020601f8401819004810282018101909252828152600091620063649185858083850183828082843760009201919091525092939250506200866c9050565b905068056bc75e2d63100000811080620063805750603b548111155b15620063a95784848484604051630a5a604160e01b815260040162001196949392919062009590565b603c556200687b565b6200641f6040518060400160405280601081526020016f646f776e74696d654a61696c54696d6560801b81525085858080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092939250506200860f9050565b15620064dc5760208114620064515783838383604051630a5a604160e01b815260040162001196949392919062009590565b604080516020601f8401819004810282018101909252828152600091620064949185858083850183828082843760009201919091525092939250506200866c9050565b90506202a300811080620064aa5750603e548110155b15620064d35784848484604051630a5a604160e01b815260040162001196949392919062009590565b603d556200687b565b620065476040518060400160405280600e81526020016d66656c6f6e794a61696c54696d6560901b81525085858080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092939250506200860f9050565b15620066045760208114620065795783838383604051630a5a604160e01b815260040162001196949392919062009590565b604080516020601f8401819004810282018101909252828152600091620065bc9185858083850183828082843760009201919091525092939250506200866c9050565b9050620d2f00811080620065d25750603d548111155b15620065fb5784848484604051630a5a604160e01b815260040162001196949392919062009590565b603e556200687b565b6200667e6040518060400160405280601c81526020017f6d617846656c6f6e794265747765656e42726561746865426c6f636b0000000081525085858080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092939250506200860f9050565b156200672a5760208114620066b05783838383604051630a5a604160e01b815260040162001196949392919062009590565b604080516020601f8401819004810282018101909252828152600091620066f39185858083850183828082843760009201919091525092939250506200866c9050565b905080600003620067215784848484604051630a5a604160e01b815260040162001196949392919062009590565b604a556200687b565b620067986040518060400160405280601181526020017039ba30b5b2a43ab1283937ba32b1ba37b960791b81525085858080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092939250506200860f9050565b15620068585760148114620067ca5783838383604051630a5a604160e01b815260040162001196949392919062009590565b600062006812601484848080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092939250506200866c9050565b90506001600160a01b038116620068465784848484604051630a5a604160e01b815260040162001196949392919062009590565b620068518162008671565b506200687b565b838383836040516325ee20d560e21b815260040162001196949392919062009590565b7ff1ce9b2cbf50eeb05769a29e2543fd350cab46894a7dd9978a12d534bb20e63384848484604051620068b2949392919062009590565b60405180910390a150505050565b60005462010000900460ff1615620068eb57604051631785c68160e01b815260040160405180910390fd5b3360009081526001602052604090205460ff16156200691d5760405163b1d02c3d60e01b815260040160405180910390fd5b816000816001600160401b038111156200693b576200693b620088f6565b60405190808252806020026020018201604052801562006965578160200160208202803683370190505b5090506000805b8381101562006a6357620069ae8787838181106200698e576200698e62009179565b9050602002016020810190620069a5919062008787565b603f9062007d5e565b620069cc5760405163056e881160e01b815260040160405180910390fd5b60416000888884818110620069e557620069e562009179565b9050602002016020810190620069fc919062008787565b6001600160a01b039081168252602082019290925260400160002060020154845191169250829084908390811062006a385762006a3862009179565b6001600160a01b039092166020928302919091019091015262006a5b81620091e5565b90506200696c565b50604051634484077560e01b815261200590634484077590620028a990859088906004016200918f565b606080600062006a9e603f62008067565b90508085101562006c6257831562006ab7578362006ab9565b805b935060008462006aca878462009149565b1162006ae25762006adc868362009149565b62006ae4565b845b9050806001600160401b0381111562006b015762006b01620088f6565b60405190808252806020026020018201604052801562006b2b578160200160208202803683370190505b509350806001600160401b0381111562006b495762006b49620088f6565b60405190808252806020026020018201604052801562006b73578160200160208202803683370190505b50925060005b8181101562006c5f5762006b9262003a648289620090de565b85828151811062006ba75762006ba762009179565b60200260200101906001600160a01b031690816001600160a01b0316815250506041600086838151811062006be05762006be062009179565b60200260200101516001600160a01b03166001600160a01b0316815260200190815260200160002060020160009054906101000a90046001600160a01b031684828151811062006c345762006c3462009179565b6001600160a01b039092166020928302919091019091015262006c5781620091e5565b905062006b79565b50505b9250925092565b336110011462006c9157604051630f22c43960e41b8152611001600482015260240162001196565b60005462010000900460ff161562006cbc57604051631785c68160e01b815260040160405180910390fd5b6001600160a01b038082166000908152604360205260409020541662006ce4603f8262007d5e565b62006d025760405163056e881160e01b815260040160405180910390fd5b6001600160a01b03811660009081526041602052604081209062006d2a6201518042620090bb565b604a546000828152604b60205260409020549192501162006d5e5760405163bd52fcdb60e01b815260040160405180910390fd5b6000818152604b6020526040812080546001929062006d7f908490620090de565b90915550506001600160a01b0384166000908152604460205260409020541580159062006dd457506001600160a01b038416600090815260446020526040902054429062006dd2906201518090620090de565b105b1562006df3576040516330abb81d60e21b815260040160405180910390fd5b60008062006e0385600062007d81565b915091508162006e2657604051631b919bb160e11b815260040160405180910390fd5b6002840154603c5460405163045bc4d160e41b815260048101919091526000916001600160a01b0316906345bc4d10906024016020604051808303816000875af115801562006e79573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062006e9f9190620090f4565b905062006ead858362007e0b565b856001600160a01b03167f6e9a2ee7aee95665e3a774a212eb11441b217e3e4656ab9563793094689aabb28383600060405162006eed939291906200910e565b60405180910390a26002850154604051633041949b60e01b815261200591633041949b916200568a916001600160a01b0316908a906004016200907b565b6001600160a01b038082166000908152604160209081526040808320815161018081018352815486168152600182015486169381019390935260028101549094169082015260038301546060820152600483018054929384938493849390929160808401919062006f9c9062009045565b80601f016020809104026020016040519081016040528092919081815260200182805462006fca9062009045565b80156200701b5780601f1062006fef576101008083540402835291602001916200701b565b820191906000526020600020905b81548152906001019060200180831162006ffd57829003601f168201915b5050505050815260200160058201604051806080016040529081600082018054620070469062009045565b80601f0160208091040260200160405190810160405280929190818152602001828054620070749062009045565b8015620070c55780601f106200709957610100808354040283529160200191620070c5565b820191906000526020600020905b815481529060010190602001808311620070a757829003601f168201915b50505050508152602001600182018054620070e09062009045565b80601f01602080910402602001604051908101604052809291908181526020018280546200710e9062009045565b80156200715f5780601f1062007133576101008083540402835291602001916200715f565b820191906000526020600020905b8154815290600101906020018083116200714157829003601f168201915b505050505081526020016002820180546200717a9062009045565b80601f0160208091040260200160405190810160405280929190818152602001828054620071a89062009045565b8015620071f95780601f10620071cd57610100808354040283529160200191620071f9565b820191906000526020600020905b815481529060010190602001808311620071db57829003601f168201915b50505050508152602001600382018054620072149062009045565b80601f0160208091040260200160405190810160405280929190818152602001828054620072429062009045565b8015620072935780601f10620072675761010080835404028352916020019162007293565b820191906000526020600020905b8154815290600101906020018083116200727557829003601f168201915b505050919092525050508152604080516060808201835260098501546001600160401b038082168452600160401b82048116602080860191909152600160801b9092041683850152840191909152600a84015460ff16151582840152600b84015490830152600c8301546080830152600d8301546001600160a01b031660a0830152805161026081019182905260c09092019190600e84019060139082845b815481526020019060010190808311620073325750505091909252505050606081015160e0820151610100909201519097919650945092505050565b60005462010000900460ff16156200739957604051631785c68160e01b815260040160405180910390fd5b3360009081526001602052604090205460ff1615620073cb5760405163b1d02c3d60e01b815260040160405180910390fd5b620073d562007f00565b620073e2603f8262007d5e565b620074005760405163056e881160e01b815260040160405180910390fd5b60006200740c62007f00565b6001600160a01b0381166000908152604160205260409020600c8101549192509042906200743f906201518090620090de565b11156200745f57604051631f92cdbd60e11b815260040160405180910390fd5b600581018054620074709062009045565b80601f01602080910402602001604051908101604052809291908181526020018280546200749e9062009045565b8015620074ef5780601f10620074c357610100808354040283529160200191620074ef565b820191906000526020600020905b815481529060010190602001808311620074d157829003601f168201915b50505082875250859160058401915081906200750c9082620095c6565b5060208201516001820190620075239082620095c6565b50604082015160028201906200753a9082620095c6565b5060608201516003820190620075519082620095c6565b505042600c830155506040516001600160a01b038316907f85d6366b336ade7f106987ec7a8eac1e8799e508aeab045a39d2f63e0dc969d990600090a250505050565b60005462010000900460ff1615620075bf57604051631785c68160e01b815260040160405180910390fd5b3360009081526001602052604090205460ff1615620075f15760405163b1d02c3d60e01b815260040160405180910390fd5b82811462007612576040516341abc80160e01b815260040160405180910390fd5b60005b8381101562007683576200767085858381811062007637576200763762009179565b90506020020160208101906200764e919062008787565b84848481811062007663576200766362009179565b9050602002013562008503565b6200767b81620091e5565b905062007615565b5050505050565b6001600160a01b0380821660009081526041602090815260408083208151610180810183528154861681526001820154861693810193909352600281015490941690820152600383015460608201526004830180549293849390916080840191620076f59062009045565b80601f0160208091040260200160405190810160405280929190818152602001828054620077239062009045565b8015620077745780601f10620077485761010080835404028352916020019162007774565b820191906000526020600020905b8154815290600101906020018083116200775657829003601f168201915b50505050508152602001600582016040518060800160405290816000820180546200779f9062009045565b80601f0160208091040260200160405190810160405280929190818152602001828054620077cd9062009045565b80156200781e5780601f10620077f2576101008083540402835291602001916200781e565b820191906000526020600020905b8154815290600101906020018083116200780057829003601f168201915b50505050508152602001600182018054620078399062009045565b80601f0160208091040260200160405190810160405280929190818152602001828054620078679062009045565b8015620078b85780601f106200788c57610100808354040283529160200191620078b8565b820191906000526020600020905b8154815290600101906020018083116200789a57829003601f168201915b50505050508152602001600282018054620078d39062009045565b80601f0160208091040260200160405190810160405280929190818152602001828054620079019062009045565b8015620079525780601f10620079265761010080835404028352916020019162007952565b820191906000526020600020905b8154815290600101906020018083116200793457829003601f168201915b505050505081526020016003820180546200796d9062009045565b80601f01602080910402602001604051908101604052809291908181526020018280546200799b9062009045565b8015620079ec5780601f10620079c057610100808354040283529160200191620079ec565b820191906000526020600020905b815481529060010190602001808311620079ce57829003601f168201915b505050919092525050508152604080516060808201835260098501546001600160401b038082168452600160401b82048116602080860191909152600160801b9092041683850152840191909152600a84015460ff16151582840152600b84015490830152600c8301546080830152600d8301546001600160a01b031660a0830152805161026081019182905260c09092019190600e84019060139082845b81548152602001906001019080831162007a8b5750505091909252505050604001519392505050565b600062007ac3603f8462007d5e565b62007ae15760405163056e881160e01b815260040160405180910390fd5b6001600160a01b038381166000908152604160205260409081902060020154905163aa1966cd60e01b81526004810185905291169063aa1966cd9060240162004fcc565b60005462010000900460ff161562007b5057604051631785c68160e01b815260040160405180910390fd5b3360009081526001602052604090205460ff161562007b825760405163b1d02c3d60e01b815260040160405180910390fd5b62007b8c62007f00565b62007b99603f8262007d5e565b62007bb75760405163056e881160e01b815260040160405180910390fd5b600062007bc362007f00565b905062007bd4818787878762008222565b62007bf257604051631647e3cb60e11b815260040160405180910390fd5b60006001600160a01b03166045878760405162007c1192919062009095565b908152604051908190036020019020546001600160a01b03161462007c49576040516311fdb94760e01b815260040160405180910390fd5b6001600160a01b0381166000908152604160205260409020600c810154429062007c78906201518090620090de565b111562007c9857604051631f92cdbd60e11b815260040160405180910390fd5b4260468260040160405162007cae91906200968e565b908152604051908190036020019020556004810162007ccf878983620092a9565b5042600c820155604051829060459062007ced908a908a9062009095565b90815260405190819003602001812080546001600160a01b039384166001600160a01b0319909116179055908316907f783156582145bd0ff7924fae6953ba054cf1233eb60739a200ddb10de068ff0d9062007d4d908a908a906200957a565b60405180910390a250505050505050565b6001600160a01b0381166000908152600183016020526040812054151562005010565b6000806000848460405160200162007d9b9291906200970c565b60408051601f1981840301815291815281516020928301206000818152604c9093529120549091504281111562007ddb5760008093509350505062007e04565b603e5462007dea9042620090de565b6000928352604c6020526040909220829055506001925090505b9250929050565b6000600162007e1b603f62008067565b62007e27919062009149565b604954108015915062007e735760018301546040516001600160a01b03909116907f2afdc18061ac21cff7d9f11527ab9c8dec6fabd4edf6f894ed634bebd6a20d4590600090a2505050565b82600b015482111562007e8857600b83018290555b600a83015460ff1662007efb57600a8301805460ff191660019081179091556049805460009062007ebb908490620090de565b909155505060018301546040516001600160a01b03909116907f4905ac32602da3fb8b4b7b00c285e5fc4c6c2308cc908b4a1e4e9625a29c90a390600090a25b505050565b336000908152604d60205260408120546001600160a01b03161562007f3c5750336000908152604d60205260409020546001600160a01b031690565b503390565b6001600160a01b0381166000908152604160205260409020600a81015460ff161562007f6b575050565b6036546002820154604051630913db4760e01b81526001600160a01b03858116600483015290911690630913db4790602401602060405180830381865afa15801562007fbb573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062007fe19190620090f4565b101562005a1d576200800381603d544262007ffd9190620090de565b62007e0b565b80546040516335409f7f60e01b81526001600160a01b039091166004820152611000906335409f7f90602401600060405180830381600087803b1580156200804a57600080fd5b505af11580156200805f573d6000803e3d6000fd5b505050505050565b600062005013825490565b6000620050108383620086dd565b60008082905060038151108062008098575060098151115b15620080a75750600092915050565b604181600081518110620080bf57620080bf62009179565b016020015160f81c1080620080f15750605a81600081518110620080e757620080e762009179565b016020015160f81c115b15620081005750600092915050565b60015b81518110156200821857603082828151811062008124576200812462009179565b016020015160f81c108062008155575060398282815181106200814b576200814b62009179565b016020015160f81c115b8015620081a55750604182828151811062008174576200817462009179565b016020015160f81c1080620081a55750605a8282815181106200819b576200819b62009179565b016020015160f81c115b8015620081f557506061828281518110620081c457620081c462009179565b016020015160f81c1080620081f55750607a828281518110620081eb57620081eb62009179565b016020015160f81c115b1562008205575060009392505050565b6200821081620091e5565b905062008103565b5060019392505050565b600060308414158062008236575060608214155b15620082455750600062008349565b60008686864660405160200162008260949392919062009756565b60408051808303601f1901815282825280516020918201208184528383019092529092506000919060208201818036833701905050905081602082015260008186868a8a604051602001620082ba95949392919062009783565b60408051808303601f190181526001808452838301909252925060009190602082018180368337019050509050815160016020830182602086016066600019fa6200830457600080fd5b506000816000815181106200831d576200831d62009179565b016020015160f81c9050600181146200833f5760009550505050505062008349565b6001955050505050505b95945050505050565b60008061200361dead60405162008369906200875c565b6001600160a01b03928316815291166020820152606060408201819052600090820152608001604051809103906000f080158015620083ac573d6000803e3d6000fd5b509050806001600160a01b031663f399e22e3486866040518463ffffffff1660e01b8152600401620083e0929190620097bb565b6000604051808303818588803b158015620083fa57600080fd5b505af11580156200840f573d6000803e3d6000fd5b50506040516001600160a01b038086169450881692507fd481492e4e93bb36b4c12a5af93f03be3bf04b454dfbc35dd2663fa26f44d5b09150600090a39392505050565b600062005010836001600160a01b0384166200870a565b600054610100900460ff16620084d75760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b606482015260840162001196565b600080546001600160a01b039092166301000000026301000000600160b81b0319909216919091179055565b8162008511603f8262007d5e565b6200852f5760405163056e881160e01b815260040160405180910390fd5b6001600160a01b03838116600090815260416020526040808220600201549051635569f64b60e11b8152336004820152602481018690529192169063aad3ec96906044016020604051808303816000875af115801562008593573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620085b99190620090f4565b9050336001600160a01b0316846001600160a01b03167ff7a40077ff7a04c7e61f6f26fb13774259ddf1b6bce9ecf26a8276cdd3992683836040516200860191815260200190565b60405180910390a350505050565b600081604051602001620086249190620097e1565b60405160208183030381529060405280519060200120836040516020016200864d9190620097e1565b6040516020818303038152906040528051906020012014905092915050565b015190565b600080546040516001600160a01b0380851693630100000090930416917f44fc1b38a4abaa91ebd1b628a5b259a698f86238c8217d68f516e87769c60c0b91a3600080546001600160a01b039092166301000000026301000000600160b81b0319909216919091179055565b6000826000018281548110620086f757620086f762009179565b9060005260206000200154905092915050565b6000818152600183016020526040812054620087535750815460018181018455600084815260208082209093018490558454848252828601909352604090209190915562005013565b50600062005013565b610e96806200980083390190565b80356001600160a01b03811681146200878257600080fd5b919050565b6000602082840312156200879a57600080fd5b62005010826200876a565b60008083601f840112620087b857600080fd5b5081356001600160401b03811115620087d057600080fd5b60208301915083602082850101111562007e0457600080fd5b60008060208385031215620087fd57600080fd5b82356001600160401b038111156200881457600080fd5b6200882285828601620087a5565b90969095509350505050565b6000806000604084860312156200884457600080fd5b833560ff811681146200885657600080fd5b925060208401356001600160401b038111156200887257600080fd5b6200888086828701620087a5565b9497909650939450505050565b60005b83811015620088aa57818101518382015260200162008890565b50506000910152565b60008151808452620088cd8160208601602086016200888d565b601f01601f19169290920160200192915050565b602081526000620050106020830184620088b3565b634e487b7160e01b600052604160045260246000fd5b604051608081016001600160401b0381118282101715620089315762008931620088f6565b60405290565b60006001600160401b0380841115620089545762008954620088f6565b604051601f8501601f19908116603f011681019082821181831017156200897f576200897f620088f6565b816040528093508581528686860111156200899957600080fd5b858560208301376000602087830101525050509392505050565b600060208284031215620089c657600080fd5b81356001600160401b03811115620089dd57600080fd5b8201601f81018413620089ef57600080fd5b62008a008482356020840162008937565b949350505050565b6000806040838503121562008a1c57600080fd5b62008a27836200876a565b946020939093013593505050565b803580151581146200878257600080fd5b6000806000806080858703121562008a5d57600080fd5b62008a68856200876a565b935062008a78602086016200876a565b92506040850135915062008a8f6060860162008a35565b905092959194509250565b6001600160401b0381168114620017c157600080fd5b60006020828403121562008ac357600080fd5b813562008ad08162008a9a565b9392505050565b6000806040838503121562008aeb57600080fd5b50508035926020909101359150565b600081518084526020808501945080840160005b8381101562008b355781516001600160a01b03168752958201959082019060010162008b0e565b509495945050505050565b60808152600062008b55608083018762008afa565b82810360208481019190915286518083528782019282019060005b8181101562008b8e5784518352938301939183019160010162008b70565b5050848103604086015286518082528282019350600581901b8201830183890160005b8381101562008be357601f1985840301875262008bd0838351620088b3565b9686019692509085019060010162008bb1565b5050809550505050505082606083015295945050505050565b600080600080600080600087890360e081121562008c1957600080fd5b62008c24896200876a565b975060208901356001600160401b038082111562008c4157600080fd5b62008c4f8c838d01620087a5565b909950975060408b013591508082111562008c6957600080fd5b62008c778c838d01620087a5565b90975095508591506060605f198401121562008c9257600080fd5b60608b01945060c08b013592508083111562008cad57600080fd5b505088016080818b03121562008cc257600080fd5b8091505092959891949750929550565b6000806040838503121562008ce657600080fd5b62008cf1836200876a565b915062008d016020840162008a35565b90509250929050565b60208152600082516080602084015262008d2860a0840182620088b3565b90506020840151601f198085840301604086015262008d488383620088b3565b9250604086015191508085840301606086015262008d678383620088b3565b9250606086015191508085840301608086015250620083498282620088b3565b6000806000806040858703121562008d9e57600080fd5b84356001600160401b038082111562008db657600080fd5b62008dc488838901620087a5565b9096509450602087013591508082111562008dde57600080fd5b5062008ded87828801620087a5565b95989497509550505050565b60008083601f84011262008e0c57600080fd5b5081356001600160401b0381111562008e2457600080fd5b6020830191508360208260051b850101111562007e0457600080fd5b60008060006040848603121562008e5657600080fd5b83356001600160401b0381111562008e6d57600080fd5b62008e7b8682870162008df9565b909450925062008e909050602085016200876a565b90509250925092565b60608152600062008eae606083018662008afa565b828103602084015262008ec2818662008afa565b915050826040830152949350505050565b600082601f83011262008ee557600080fd5b620050108383356020850162008937565b60006020828403121562008f0957600080fd5b81356001600160401b038082111562008f2157600080fd5b908301906080828603121562008f3657600080fd5b62008f406200890c565b82358281111562008f5057600080fd5b62008f5e8782860162008ed3565b82525060208301358281111562008f7457600080fd5b62008f828782860162008ed3565b60208301525060408301358281111562008f9b57600080fd5b62008fa98782860162008ed3565b60408301525060608301358281111562008fc257600080fd5b62008fd08782860162008ed3565b60608301525095945050505050565b6000806000806040858703121562008ff657600080fd5b84356001600160401b03808211156200900e57600080fd5b6200901c8883890162008df9565b909650945060208701359150808211156200903657600080fd5b5062008ded8782880162008df9565b600181811c908216806200905a57607f821691505b60208210810362001bd757634e487b7160e01b600052602260045260246000fd5b6001600160a01b0392831681529116602082015260400190565b8183823760009101908152919050565b634e487b7160e01b600052601160045260246000fd5b600082620090d957634e487b7160e01b600052601260045260246000fd5b500490565b80820180821115620050135762005013620090a5565b6000602082840312156200910757600080fd5b5051919050565b8381526020810183905260608101600383106200913b57634e487b7160e01b600052602160045260246000fd5b826040830152949350505050565b81810381811115620050135762005013620090a5565b8082028115828204841417620050135762005013620090a5565b634e487b7160e01b600052603260045260246000fd5b604081526000620091a4604083018562008afa565b905060018060a01b03831660208301529392505050565b6001600160401b03828116828216039080821115620091de57620091de620090a5565b5092915050565b600060018201620091fa57620091fa620090a5565b5060010190565b6000808335601e198436030181126200921957600080fd5b8301803591506001600160401b038211156200923457600080fd5b60200191503681900382131562007e0457600080fd5b601f82111562007efb57600081815260208120601f850160051c81016020861015620092735750805b601f850160051c820191505b818110156200805f578281556001016200927f565b600019600383901b1c191660019190911b1790565b6001600160401b03831115620092c357620092c3620088f6565b620092db83620092d4835462009045565b836200924a565b6000601f8411600181146200930e5760008515620092f95750838201355b62009305868262009294565b84555062007683565b600083815260209020601f19861690835b828110156200934157868501358255602094850194600190920191016200931f565b50868210156200935f5760001960f88860031b161c19848701351681555b505060018560011b0183555050505050565b6200937d828362009201565b6001600160401b03811115620093975762009397620088f6565b620093af81620093a8855462009045565b856200924a565b6000601f821160018114620093e25760008315620093cd5750838201355b620093d9848262009294565b8655506200943f565b600085815260209020601f19841690835b82811015620094155786850135825560209485019460019092019101620093f3565b5084821015620094335760001960f88660031b161c19848701351681555b505060018360011b0185555b5050505062009452602083018362009201565b62009462818360018601620092a9565b505062009473604083018362009201565b62009483818360028601620092a9565b505062009494606083018362009201565b620094a4818360038601620092a9565b50505050565b8135620094b78162008a9a565b6001600160401b03811690508154816001600160401b031982161783556020840135620094e48162008a9a565b6fffffffffffffffff0000000000000000604091821b166fffffffffffffffffffffffffffffffff19831684178117855590850135620095248162008a9a565b6001600160c01b0319929092169092179190911760809190911b67ffffffffffffffff60801b1617905550565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b60208152600062008a0060208301848662009551565b604081526000620095a660408301868862009551565b8281036020840152620095bb81858762009551565b979650505050505050565b81516001600160401b03811115620095e257620095e2620088f6565b620095fa81620095f3845462009045565b846200924a565b602080601f8311600181146200962e5760008415620096195750858301515b62009625858262009294565b8655506200805f565b600085815260208120601f198616915b828110156200965f578886015182559484019460019091019084016200963e565b50858210156200967e5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b60008083546200969e8162009045565b60018281168015620096b95760018114620096cf5762009700565b60ff198416875282151583028701945062009700565b8760005260208060002060005b85811015620096f75781548a820152908401908201620096dc565b50505082870194505b50929695505050505050565b6bffffffffffffffffffffffff198360601b1681526000600383106200974257634e487b7160e01b600052602160045260246000fd5b5060f89190911b6014820152601501919050565b6bffffffffffffffffffffffff198560601b16815282846014830137601492019182015260340192915050565b6000865162009797818460208b016200888d565b82018587823760009086019081528385823760009301928352509095945050505050565b6001600160a01b038316815260406020820181905260009062008a0090830184620088b3565b60008251620097f58184602087016200888d565b919091019291505056fe608060405260405162000e9638038062000e96833981016040819052620000269162000497565b828162000036828260006200004d565b50620000449050826200008a565b505050620005ca565b6200005883620000e5565b600082511180620000665750805b1562000085576200008383836200012760201b620001691760201c565b505b505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f620000b562000156565b604080516001600160a01b03928316815291841660208301520160405180910390a1620000e2816200018f565b50565b620000f08162000244565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b60606200014f838360405180606001604052806027815260200162000e6f60279139620002f8565b9392505050565b60006200018060008051602062000e4f83398151915260001b6200037760201b620001951760201c565b546001600160a01b0316919050565b6001600160a01b038116620001fa5760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b60648201526084015b60405180910390fd5b806200022360008051602062000e4f83398151915260001b6200037760201b620001951760201c565b80546001600160a01b0319166001600160a01b039290921691909117905550565b6200025a816200037a60201b620001981760201c565b620002be5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b6064820152608401620001f1565b80620002237f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc60001b6200037760201b620001951760201c565b6060600080856001600160a01b03168560405162000317919062000577565b600060405180830381855af49150503d806000811462000354576040519150601f19603f3d011682016040523d82523d6000602084013e62000359565b606091505b5090925090506200036d8683838762000389565b9695505050505050565b90565b6001600160a01b03163b151590565b60608315620003fd578251600003620003f5576001600160a01b0385163b620003f55760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401620001f1565b508162000409565b62000409838362000411565b949350505050565b815115620004225781518083602001fd5b8060405162461bcd60e51b8152600401620001f1919062000595565b80516001600160a01b03811681146200045657600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b60005b838110156200048e57818101518382015260200162000474565b50506000910152565b600080600060608486031215620004ad57600080fd5b620004b8846200043e565b9250620004c8602085016200043e565b60408501519092506001600160401b0380821115620004e657600080fd5b818601915086601f830112620004fb57600080fd5b8151818111156200051057620005106200045b565b604051601f8201601f19908116603f011681019083821181831017156200053b576200053b6200045b565b816040528281528960208487010111156200055557600080fd5b6200056883602083016020880162000471565b80955050505050509250925092565b600082516200058b81846020870162000471565b9190910192915050565b6020815260008251806020840152620005b681604085016020870162000471565b601f01601f19169190910160400192915050565b61087580620005da6000396000f3fe60806040523661001357610011610017565b005b6100115b61001f6101a7565b6001600160a01b0316330361015f5760606001600160e01b0319600035166364d3180d60e11b810161005a576100536101da565b9150610157565b63587086bd60e11b6001600160e01b031982160161007a57610053610231565b63070d7c6960e41b6001600160e01b031982160161009a57610053610277565b621eb96f60e61b6001600160e01b03198216016100b9576100536102a8565b63a39f25e560e01b6001600160e01b03198216016100d9576100536102e8565b60405162461bcd60e51b815260206004820152604260248201527f5472616e73706172656e745570677261646561626c6550726f78793a2061646d60448201527f696e2063616e6e6f742066616c6c6261636b20746f2070726f78792074617267606482015261195d60f21b608482015260a4015b60405180910390fd5b815160208301f35b6101676102fc565b565b606061018e83836040518060600160405280602781526020016108426027913961030c565b9392505050565b90565b6001600160a01b03163b151590565b60007fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b546001600160a01b0316919050565b60606101e4610384565b60006101f33660048184610695565b81019061020091906106db565b905061021d8160405180602001604052806000815250600061038f565b505060408051602081019091526000815290565b60606000806102433660048184610695565b810190610250919061070c565b915091506102608282600161038f565b604051806020016040528060008152509250505090565b6060610281610384565b60006102903660048184610695565b81019061029d91906106db565b905061021d816103bb565b60606102b2610384565b60006102bc6101a7565b604080516001600160a01b03831660208201529192500160405160208183030381529060405291505090565b60606102f2610384565b60006102bc610412565b610167610307610412565b610421565b6060600080856001600160a01b03168560405161032991906107f2565b600060405180830381855af49150503d8060008114610364576040519150601f19603f3d011682016040523d82523d6000602084013e610369565b606091505b509150915061037a86838387610445565b9695505050505050565b341561016757600080fd5b610398836104c6565b6000825111806103a55750805b156103b6576103b48383610169565b505b505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f6103e46101a7565b604080516001600160a01b03928316815291841660208301520160405180910390a161040f81610506565b50565b600061041c6105af565b905090565b3660008037600080366000845af43d6000803e808015610440573d6000f35b3d6000fd5b606083156104b45782516000036104ad576001600160a01b0385163b6104ad5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015260640161014e565b50816104be565b6104be83836105d7565b949350505050565b6104cf81610601565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b6001600160a01b03811661056b5760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b606482015260840161014e565b807fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b80546001600160a01b0319166001600160a01b039290921691909117905550565b60007f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc6101cb565b8151156105e75781518083602001fd5b8060405162461bcd60e51b815260040161014e919061080e565b6001600160a01b0381163b61066e5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b606482015260840161014e565b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc61058e565b600080858511156106a557600080fd5b838611156106b257600080fd5b5050820193919092039150565b80356001600160a01b03811681146106d657600080fd5b919050565b6000602082840312156106ed57600080fd5b61018e826106bf565b634e487b7160e01b600052604160045260246000fd5b6000806040838503121561071f57600080fd5b610728836106bf565b9150602083013567ffffffffffffffff8082111561074557600080fd5b818501915085601f83011261075957600080fd5b81358181111561076b5761076b6106f6565b604051601f8201601f19908116603f01168101908382118183101715610793576107936106f6565b816040528281528860208487010111156107ac57600080fd5b8260208601602083013760006020848301015280955050505050509250929050565b60005b838110156107e95781810151838201526020016107d1565b50506000910152565b600082516108048184602087016107ce565b9190910192915050565b602081526000825180602084015261082d8160408501602087016107ce565b601f01601f1916919091016040019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a164736f6c6343000811000ab53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a164736f6c6343000811000a \ No newline at end of file +608060405260043610620003ff5760003560e01c806386d54506116200020f578063cbb04d9d1162000123578063e8f67c3b11620000ad578063f80a34021162000078578063f80a34021462000ca3578063fb50b31f1462000cc8578063fc0c5ff11462000ced578063ff69ab611462000d0557600080fd5b8063e8f67c3b1462000c1f578063e992aaf51462000c37578063efdbf0e11462000c4f578063f1f74d841462000c8b57600080fd5b8063d8ca511f11620000ee578063d8ca511f1462000ba3578063daacdb661462000bbb578063dbda7fb31462000bd3578063dd42a1dd1462000bf857600080fd5b8063cbb04d9d1462000aff578063d115a2061462000b40578063d6ca429d1462000b59578063d7c2dfc81462000b7e57600080fd5b8063b187bd2611620001a5578063bfff04751162000170578063bfff04751462000a9d578063c38fbec81462000ac2578063c473318f1462000ae7578063c8509d8114620008bb57600080fd5b8063b187bd261462000a0a578063baa7199e1462000a2a578063bdceadf31462000a4f578063bff02e201462000a6757600080fd5b8063982ef0a711620001e6578063982ef0a71462000975578063a43569b3146200098c578063aad3ec9614620009c0578063ac43175114620009e557600080fd5b806386d5450614620008f85780638a4d3fa814620009325780638cd22b22146200095057600080fd5b806349f41a421162000313578063663706d3116200029d57806376e7d6d6116200026857806376e7d6d6146200088b5780638129fc1c14620008a3578063831d65d114620008bb5780638456cb5914620008e057600080fd5b8063663706d314620007b85780636ec01b2714620007e95780636f8e2fa4146200084157806375cc7d89146200086657600080fd5b80635949187111620002de5780635949187114620007205780635e7cc1c9146200074557806363a036b5146200076a57806364028fbd14620007a157600080fd5b806349f41a4214620006995780634a49ac4c14620006be5780634d99dd1614620006e35780634e6fd6c4146200070857600080fd5b80631fa8882b1162000395578063417c73a71162000360578063417c73a714620005e5578063449ecfe6146200060a57806345211bfd146200062f5780634838d165146200065457600080fd5b80631fa8882b14620005555780632b727c86146200056e5780632e8e8c7114620005935780633840998814620005cd57600080fd5b8063092193ab11620003d6578063092193ab14620004a05780630e9fbf5114620004b75780631182b87514620004dc57806317b4f353146200051057600080fd5b8063046f7da2146200041f578063059ddd2214620004375780630661806e146200047957600080fd5b366200041a5760345460ff166001146200041857600080fd5b005b600080fd5b3480156200042c57600080fd5b506200041862000d1d565b3480156200044457600080fd5b506200045c6200045636600462008839565b62000daf565b6040516001600160a01b0390911681526020015b60405180910390f35b3480156200048657600080fd5b506200049160365481565b60405190815260200162000470565b62000418620004b136600462008839565b620011d7565b348015620004c457600080fd5b5062000418620004d63660046200889b565b62001828565b348015620004e957600080fd5b5062000501620004fb366004620088e0565b62001b54565b60405162000470919062008993565b3480156200051d57600080fd5b506200045c6200052f36600462008a65565b80516020818301810180516045825292820191909301209152546001600160a01b031681565b3480156200056257600080fd5b50620004916201518081565b3480156200057b57600080fd5b506200045c6200058d36600462008839565b62001bec565b348015620005a057600080fd5b506200045c620005b236600462008839565b604d602052600090815260409020546001600160a01b031681565b348015620005da57600080fd5b506200049160375481565b348015620005f257600080fd5b50620004186200060436600462008839565b62001c41565b3480156200061757600080fd5b50620004186200062936600462008839565b62001cc3565b3480156200063c57600080fd5b50620004186200064e36600462008839565b62001ea8565b3480156200066157600080fd5b50620006886200067336600462008839565b60016020526000908152604090205460ff1681565b604051901515815260200162000470565b348015620006a657600080fd5b5062000418620006b836600462008839565b62002081565b348015620006cb57600080fd5b5062000418620006dd36600462008839565b6200229d565b348015620006f057600080fd5b50620004186200070236600462008aba565b62002319565b3480156200071557600080fd5b506200045c61dead81565b3480156200072d57600080fd5b50620004186200073f36600462008af8565b62002949565b3480156200075257600080fd5b50620004186200076436600462008b62565b62003742565b3480156200077757600080fd5b506200078f6200078936600462008b89565b6200396c565b60405162000470949392919062008bf2565b62000418620007b236600462008cae565b62004011565b348015620007c557600080fd5b5062000491620007d736600462008839565b60446020526000908152604090205481565b348015620007f657600080fd5b506200080e6200080836600462008839565b62004660565b6040805182516001600160401b039081168252602080850151821690830152928201519092169082015260600162000470565b3480156200084e57600080fd5b50620005016200086036600462008839565b62004705565b3480156200087357600080fd5b50620004186200088536600462008839565b62004b31565b3480156200089857600080fd5b5062000491603d5481565b348015620008b057600080fd5b506200041862004d03565b348015620008c857600080fd5b5062000418620008da366004620088e0565b62004ece565b348015620008ed57600080fd5b506200041862004f2c565b3480156200090557600080fd5b506200045c6200091736600462008839565b6043602052600090815260409020546001600160a01b031681565b3480156200093f57600080fd5b5062000491670de0b6b3a764000081565b3480156200095d57600080fd5b50620004916200096f36600462008aba565b62004fc4565b620004186200098636600462008d84565b6200507d565b3480156200099957600080fd5b50620009b1620009ab36600462008839565b6200572b565b60405162000470919062008dbc565b348015620009cd57600080fd5b5062000418620009df36600462008aba565b62005a18565b348015620009f257600080fd5b506200041862000a0436600462008e39565b62005a85565b34801562000a1757600080fd5b5060005462010000900460ff1662000688565b34801562000a3757600080fd5b506200041862000a4936600462008ef2565b62006924565b34801562000a5c57600080fd5b5062000491603c5481565b34801562000a7457600080fd5b5062000a8c62000a8636600462008b89565b62006af1565b604051620004709392919062008f4b565b34801562000aaa57600080fd5b506200049162000abc36600462008839565b62006ccd565b34801562000acf57600080fd5b506200041862000ae136600462008839565b62006d1b565b34801562000af457600080fd5b506200049160385481565b34801562000b0c57600080fd5b5062000b2462000b1e36600462008839565b62006fdd565b6040805193845291151560208401529082015260600162000470565b34801562000b4d57600080fd5b5062000491620186a081565b34801562000b6657600080fd5b506200041862000b7836600462008fa8565b62007420565b34801562000b8b57600080fd5b506200041862000b9d36600462009091565b62007646565b34801562000bb057600080fd5b5062000491603b5481565b34801562000bc857600080fd5b506200049160495481565b34801562000be057600080fd5b506200045c62000bf236600462008839565b6200773c565b34801562000c0557600080fd5b50600054630100000090046001600160a01b03166200045c565b34801562000c2c57600080fd5b506200049160355481565b34801562000c4457600080fd5b5062000491603a5481565b34801562000c5c57600080fd5b506200049162000c6e36600462008a65565b805160208183018101805160468252928201919093012091525481565b34801562000c9857600080fd5b5062000491603e5481565b34801562000cb057600080fd5b506200049162000cc236600462008aba565b62007b66565b34801562000cd557600080fd5b506200041862000ce736600462008e39565b62007bd7565b34801562000cfa57600080fd5b506200049160395481565b34801562000d1257600080fd5b5062000491604a5481565b600054630100000090046001600160a01b0316331462000d50576040516306fbb1e360e01b815260040160405180910390fd5b60005462010000900460ff1662000d7a57604051636cd6020160e01b815260040160405180910390fd5b6000805462ff0000191681556040517f62451d457bc659158be6e6247f56ec1df424a5c7597f71c20c2bc44e0965c8f99190a1565b6001600160a01b038082166000908152604160209081526040808320815161018081018352815486168152600182015486169381019390935260028101549094169082015260038301546060820152600483018054929384939091608084019162000e1a90620090f7565b80601f016020809104026020016040519081016040528092919081815260200182805462000e4890620090f7565b801562000e995780601f1062000e6d5761010080835404028352916020019162000e99565b820191906000526020600020905b81548152906001019060200180831162000e7b57829003601f168201915b505050505081526020016005820160405180608001604052908160008201805462000ec490620090f7565b80601f016020809104026020016040519081016040528092919081815260200182805462000ef290620090f7565b801562000f435780601f1062000f175761010080835404028352916020019162000f43565b820191906000526020600020905b81548152906001019060200180831162000f2557829003601f168201915b5050505050815260200160018201805462000f5e90620090f7565b80601f016020809104026020016040519081016040528092919081815260200182805462000f8c90620090f7565b801562000fdd5780601f1062000fb15761010080835404028352916020019162000fdd565b820191906000526020600020905b81548152906001019060200180831162000fbf57829003601f168201915b5050505050815260200160028201805462000ff890620090f7565b80601f01602080910402602001604051908101604052809291908181526020018280546200102690620090f7565b8015620010775780601f106200104b5761010080835404028352916020019162001077565b820191906000526020600020905b8154815290600101906020018083116200105957829003601f168201915b505050505081526020016003820180546200109290620090f7565b80601f0160208091040260200160405190810160405280929190818152602001828054620010c090620090f7565b8015620011115780601f10620010e55761010080835404028352916020019162001111565b820191906000526020600020905b815481529060010190602001808311620010f357829003601f168201915b505050919092525050508152604080516060808201835260098501546001600160401b038082168452600160401b82048116602080860191909152600160801b9092041683850152840191909152600a84015460ff16151582840152600b84015490830152600c8301546080830152600d8301546001600160a01b031660a0830152805161026081019182905260c09092019190600e84019060139082845b815481526020019060010190808311620011b0575050509190925250509051949350505050565b33611000146200120357604051630f22c43960e41b815261100060048201526024015b60405180910390fd5b6001600160a01b038082166000908152604360209081526040808320548416808452604183528184208251610180810184528154871681526001820154871694810194909452600281015490951691830191909152600384015460608301526004840180549194916080840191906200127c90620090f7565b80601f0160208091040260200160405190810160405280929190818152602001828054620012aa90620090f7565b8015620012fb5780601f10620012cf57610100808354040283529160200191620012fb565b820191906000526020600020905b815481529060010190602001808311620012dd57829003601f168201915b50505050508152602001600582016040518060800160405290816000820180546200132690620090f7565b80601f01602080910402602001604051908101604052809291908181526020018280546200135490620090f7565b8015620013a55780601f106200137957610100808354040283529160200191620013a5565b820191906000526020600020905b8154815290600101906020018083116200138757829003601f168201915b50505050508152602001600182018054620013c090620090f7565b80601f0160208091040260200160405190810160405280929190818152602001828054620013ee90620090f7565b80156200143f5780601f1062001413576101008083540402835291602001916200143f565b820191906000526020600020905b8154815290600101906020018083116200142157829003601f168201915b505050505081526020016002820180546200145a90620090f7565b80601f01602080910402602001604051908101604052809291908181526020018280546200148890620090f7565b8015620014d95780601f10620014ad57610100808354040283529160200191620014d9565b820191906000526020600020905b815481529060010190602001808311620014bb57829003601f168201915b50505050508152602001600382018054620014f490620090f7565b80601f01602080910402602001604051908101604052809291908181526020018280546200152290620090f7565b8015620015735780601f10620015475761010080835404028352916020019162001573565b820191906000526020600020905b8154815290600101906020018083116200155557829003601f168201915b505050919092525050508152604080516060808201835260098501546001600160401b038082168452600160401b82048116602080860191909152600160801b9092041683850152840191909152600a84015460ff16151582840152600b84015490830152600c8301546080830152600d8301546001600160a01b031660a0830152805161026081019182905260c09092019190600e84019060139082845b81548152602001906001019080831162001612575050509190925250505060408101519091506001600160a01b031615806200164f57508060e001515b156200170c57604051611002903490600081818185875af1925050503d806000811462001699576040519150601f19603f3d011682016040523d82523d6000602084013e6200169e565b606091505b505050816001600160a01b03167ffc8bff675087dd2da069cc3fb517b9ed001e19750c0865241a5542dba1ba170d604051620016ff9060208082526011908201527024a72b20a624a22fab20a624a220aa27a960791b604082015260600190565b60405180910390a2505050565b60408181015160c0830151519151632f303ebb60e11b81526001600160401b0390921660048301526001600160a01b031690635e607d769034906024016000604051808303818588803b1580156200176357600080fd5b505af115801562001778573d6000803e3d6000fd5b5050505050816001600160a01b03167fe34918ff1c7084970068b53fd71ad6d8b04e9f15d3886cbf006443e6cdc52ea634604051620017b991815260200190565b60405180910390a26040808201519051633041949b60e01b815261200591633041949b91620017ee919086906004016200912d565b600060405180830381600087803b1580156200180957600080fd5b505af11580156200181e573d6000803e3d6000fd5b5050505050505b50565b33611001146200185057604051630f22c43960e41b81526110016004820152602401620011fa565b60005462010000900460ff16156200187b57604051631785c68160e01b815260040160405180910390fd5b6000604583836040516200189192919062009147565b908152604051908190036020019020546001600160a01b03169050620018b9603f8262007e10565b620018d75760405163056e881160e01b815260040160405180910390fd5b6001600160a01b038116600090815260416020526040812090620018ff62015180426200916d565b604a546000828152604b602052604090205491925011620019335760405163bd52fcdb60e01b815260040160405180910390fd5b6000818152604b602052604081208054600192906200195490849062009190565b90915550506040516046906200196e908790879062009147565b908152602001604051809103902054600014158015620019bf5750426201518060468787604051620019a292919062009147565b908152602001604051809103902054620019bd919062009190565b105b15620019de57604051631898eb6b60e01b815260040160405180910390fd5b600080620019ee85600262007e33565b915091508162001a1157604051631b919bb160e11b815260040160405180910390fd5b6002840154603c5460405163045bc4d160e41b815260048101919091526000916001600160a01b0316906345bc4d10906024016020604051808303816000875af115801562001a64573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001a8a9190620091a6565b905062001a98858362007ebd565b856001600160a01b03167f6e9a2ee7aee95665e3a774a212eb11441b217e3e4656ab9563793094689aabb28383600260405162001ad893929190620091c0565b60405180910390a26002850154604051633041949b60e01b815261200591633041949b9162001b16916001600160a01b0316908a906004016200912d565b600060405180830381600087803b15801562001b3157600080fd5b505af115801562001b46573d6000803e3d6000fd5b505050505050505050505050565b6060336120001462001b7e57604051630f22c43960e41b81526120006004820152602401620011fa565b60005462010000900460ff161562001ba957604051631785c68160e01b815260040160405180910390fd5b6034805460ff1916600117905560405162461bcd60e51b815260206004820152600a60248201526919195c1c9958d85d195960b21b6044820152606401620011fa565b60008162001bfc603f8262007e10565b62001c1a5760405163056e881160e01b815260040160405180910390fd5b6001600160a01b038084166000908152604160205260409020600d01541691505b50919050565b600054630100000090046001600160a01b0316331462001c74576040516306fbb1e360e01b815260040160405180910390fd5b6001600160a01b0381166000818152600160208190526040808320805460ff1916909217909155517f7fd26be6fc92aff63f1f4409b2b2ddeb272a888031d7f55ec830485ec61941869190a250565b60005462010000900460ff161562001cee57604051631785c68160e01b815260040160405180910390fd5b3360009081526001602052604090205460ff161562001d205760405163b1d02c3d60e01b815260040160405180910390fd5b8062001d2e603f8262007e10565b62001d4c5760405163056e881160e01b815260040160405180910390fd5b6001600160a01b0382166000908152604160205260409020600a81015460ff1662001d8a57604051634b6b857d60e01b815260040160405180910390fd5b6036546002820154604051630913db4760e01b81526001600160a01b03868116600483015290911690630913db4790602401602060405180830381865afa15801562001dda573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001e009190620091a6565b101562001e20576040516317b204bf60e11b815260040160405180910390fd5b4281600b0154111562001e465760405163170cb76760e21b815260040160405180910390fd5b600a8101805460ff19169055604980546001919060009062001e6a908490620091fb565b90915550506040516001600160a01b038416907f9390b453426557da5ebdc31f19a37753ca04addf656d32f35232211bb2af3f1990600090a2505050565b60005462010000900460ff161562001ed357604051631785c68160e01b815260040160405180910390fd5b3360009081526001602052604090205460ff161562001f055760405163b1d02c3d60e01b815260040160405180910390fd5b62001f0f62007fb2565b62001f1c603f8262007e10565b62001f3a5760405163056e881160e01b815260040160405180910390fd5b6001600160a01b03821662001f6257604051636520611b60e11b815260040160405180910390fd5b6001600160a01b03828116600090815260436020526040902054161562001f9c57604051631e6f587560e11b815260040160405180910390fd5b600062001fa862007fb2565b6001600160a01b0381166000908152604160205260409020600c81015491925090429062001fdb90620151809062009190565b111562001ffb57604051631f92cdbd60e11b815260040160405180910390fd5b80546001600160a01b039081166000908152604460209081526040808320429081905585548986166001600160a01b031991821681178855600c88019290925581855260439093528184208054958816959093168517909255519092917f6e4e747ca35203f16401c69805c7dd52fff67ef60b0ebc5c7fe16890530f223591a350505050565b336200208f603f8262007e10565b620020ad5760405163056e881160e01b815260040160405180910390fd5b60005462010000900460ff1615620020d857604051631785c68160e01b815260040160405180910390fd5b3360009081526001602052604090205460ff16156200210a5760405163b1d02c3d60e01b815260040160405180910390fd5b6001600160a01b038281166000908152604d60205260409020541615620021445760405163bebdc75760e01b815260040160405180910390fd5b62002151603f8362007e10565b15620021705760405163bebdc75760e01b815260040160405180910390fd5b336000818152604160205260409020600d01546001600160a01b039081169084168103620021b15760405163bebdc75760e01b815260040160405180910390fd5b6001600160a01b03811615620021e8576001600160a01b0381166000908152604d6020526040902080546001600160a01b03191690555b6001600160a01b038281166000908152604160205260409020600d0180546001600160a01b0319169186169182179055156200224d576001600160a01b038481166000908152604d6020526040902080546001600160a01b0319169184169190911790555b836001600160a01b0316816001600160a01b0316836001600160a01b03167fcbb728765de145e99c00e8ae32a325231e850359b7b8a6da3b84d672ab3f1d0a60405160405180910390a450505050565b600054630100000090046001600160a01b03163314620022d0576040516306fbb1e360e01b815260040160405180910390fd5b6001600160a01b038116600081815260016020526040808220805460ff19169055517fe0db3499b7fdc3da4cddff5f45d694549c19835e7f719fb5606d3ad1a5de40119190a250565b60005462010000900460ff16156200234457604051631785c68160e01b815260040160405180910390fd5b3360009081526001602052604090205460ff1615620023765760405163b1d02c3d60e01b815260040160405180910390fd5b8162002384603f8262007e10565b620023a25760405163056e881160e01b815260040160405180910390fd5b81600003620023c457604051639811e0c760e01b815260040160405180910390fd5b6001600160a01b03808416600090815260416020908152604080832081516101808101835281548616815260018201548616938101939093526002810154909416908201526003830154606082015260048301805433949160808401916200242c90620090f7565b80601f01602080910402602001604051908101604052809291908181526020018280546200245a90620090f7565b8015620024ab5780601f106200247f57610100808354040283529160200191620024ab565b820191906000526020600020905b8154815290600101906020018083116200248d57829003601f168201915b5050505050815260200160058201604051806080016040529081600082018054620024d690620090f7565b80601f01602080910402602001604051908101604052809291908181526020018280546200250490620090f7565b8015620025555780601f10620025295761010080835404028352916020019162002555565b820191906000526020600020905b8154815290600101906020018083116200253757829003601f168201915b505050505081526020016001820180546200257090620090f7565b80601f01602080910402602001604051908101604052809291908181526020018280546200259e90620090f7565b8015620025ef5780601f10620025c357610100808354040283529160200191620025ef565b820191906000526020600020905b815481529060010190602001808311620025d157829003601f168201915b505050505081526020016002820180546200260a90620090f7565b80601f01602080910402602001604051908101604052809291908181526020018280546200263890620090f7565b8015620026895780601f106200265d5761010080835404028352916020019162002689565b820191906000526020600020905b8154815290600101906020018083116200266b57829003601f168201915b50505050508152602001600382018054620026a490620090f7565b80601f0160208091040260200160405190810160405280929190818152602001828054620026d290620090f7565b8015620027235780601f10620026f75761010080835404028352916020019162002723565b820191906000526020600020905b8154815290600101906020018083116200270557829003601f168201915b505050919092525050508152604080516060808201835260098501546001600160401b038082168452600160401b82048116602080860191909152600160801b9092041683850152840191909152600a84015460ff16151582840152600b84015490830152600c8301546080830152600d8301546001600160a01b031660a0830152805161026081019182905260c09092019190600e84019060139082845b815481526020019060010190808311620027c2575050509190925250505060408082015190516326ccee8b60e11b81526001600160a01b0385811660048301526024820188905292935060009290911690634d99dd16906044016020604051808303816000875af11580156200283c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620028629190620091a6565b9050826001600160a01b0316866001600160a01b03167f3aace7340547de7b9156593a7652dc07ee900cea3fd8f82cb6c9d38b408298028784604051620028b3929190918252602082015260400190565b60405180910390a3856001600160a01b0316836001600160a01b031603620028e057620028e08662007ff3565b6040808301519051633041949b60e01b815261200591633041949b916200290d919087906004016200912d565b600060405180830381600087803b1580156200292857600080fd5b505af11580156200293d573d6000803e3d6000fd5b50505050505050505050565b60005462010000900460ff16156200297457604051631785c68160e01b815260040160405180910390fd5b3360009081526001602052604090205460ff1615620029a65760405163b1d02c3d60e01b815260040160405180910390fd5b83620029b4603f8262007e10565b620029d25760405163056e881160e01b815260040160405180910390fd5b83620029e0603f8262007e10565b620029fe5760405163056e881160e01b815260040160405180910390fd5b6034805460ff19166001179055600084900362002a2e57604051639811e0c760e01b815260040160405180910390fd5b846001600160a01b0316866001600160a01b03160362002a615760405163f0e3e62960e01b815260040160405180910390fd5b6001600160a01b038087166000908152604160209081526040808320815161018081018352815486168152600182015486169381019390935260028101549094169082015260038301546060820152600483018054339491608084019162002ac990620090f7565b80601f016020809104026020016040519081016040528092919081815260200182805462002af790620090f7565b801562002b485780601f1062002b1c5761010080835404028352916020019162002b48565b820191906000526020600020905b81548152906001019060200180831162002b2a57829003601f168201915b505050505081526020016005820160405180608001604052908160008201805462002b7390620090f7565b80601f016020809104026020016040519081016040528092919081815260200182805462002ba190620090f7565b801562002bf25780601f1062002bc65761010080835404028352916020019162002bf2565b820191906000526020600020905b81548152906001019060200180831162002bd457829003601f168201915b5050505050815260200160018201805462002c0d90620090f7565b80601f016020809104026020016040519081016040528092919081815260200182805462002c3b90620090f7565b801562002c8c5780601f1062002c605761010080835404028352916020019162002c8c565b820191906000526020600020905b81548152906001019060200180831162002c6e57829003601f168201915b5050505050815260200160028201805462002ca790620090f7565b80601f016020809104026020016040519081016040528092919081815260200182805462002cd590620090f7565b801562002d265780601f1062002cfa5761010080835404028352916020019162002d26565b820191906000526020600020905b81548152906001019060200180831162002d0857829003601f168201915b5050505050815260200160038201805462002d4190620090f7565b80601f016020809104026020016040519081016040528092919081815260200182805462002d6f90620090f7565b801562002dc05780601f1062002d945761010080835404028352916020019162002dc0565b820191906000526020600020905b81548152906001019060200180831162002da257829003601f168201915b505050919092525050508152604080516060808201835260098501546001600160401b038082168452600160401b82048116602080860191909152600160801b9092041683850152840191909152600a84015460ff16151582840152600b84015490830152600c8301546080830152600d8301546001600160a01b031660a0830152805161026081019182905260c09092019190600e84019060139082845b81548152602001906001019080831162002e5f57505050919092525050506001600160a01b0380891660009081526041602090815260408083208151610180810183528154861681526001820154861693810193909352600281015490941690820152600383015460608201526004830180549495509193909291608084019162002eea90620090f7565b80601f016020809104026020016040519081016040528092919081815260200182805462002f1890620090f7565b801562002f695780601f1062002f3d5761010080835404028352916020019162002f69565b820191906000526020600020905b81548152906001019060200180831162002f4b57829003601f168201915b505050505081526020016005820160405180608001604052908160008201805462002f9490620090f7565b80601f016020809104026020016040519081016040528092919081815260200182805462002fc290620090f7565b8015620030135780601f1062002fe75761010080835404028352916020019162003013565b820191906000526020600020905b81548152906001019060200180831162002ff557829003601f168201915b505050505081526020016001820180546200302e90620090f7565b80601f01602080910402602001604051908101604052809291908181526020018280546200305c90620090f7565b8015620030ad5780601f106200308157610100808354040283529160200191620030ad565b820191906000526020600020905b8154815290600101906020018083116200308f57829003601f168201915b50505050508152602001600282018054620030c890620090f7565b80601f0160208091040260200160405190810160405280929190818152602001828054620030f690620090f7565b8015620031475780601f106200311b5761010080835404028352916020019162003147565b820191906000526020600020905b8154815290600101906020018083116200312957829003601f168201915b505050505081526020016003820180546200316290620090f7565b80601f01602080910402602001604051908101604052809291908181526020018280546200319090620090f7565b8015620031e15780601f10620031b557610100808354040283529160200191620031e1565b820191906000526020600020905b815481529060010190602001808311620031c357829003601f168201915b505050919092525050508152604080516060808201835260098501546001600160401b038082168452600160401b82048116602080860191909152600160801b9092041683850152840191909152600a84015460ff16151582840152600b84015490830152600c8301546080830152600d8301546001600160a01b031660a0830152805161026081019182905260c09092019190600e84019060139082845b815481526020019060010190808311620032805750505050508152505090508060e001518015620032c35750876001600160a01b0316836001600160a01b031614155b15620032e257604051636468920360e01b815260040160405180910390fd5b60408083015190516352e82ce560e11b81526001600160a01b038581166004830152602482018a9052600092169063a5d059ca906044016020604051808303816000875af115801562003339573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200335f9190620091a6565b9050603754811015620033855760405163dc6f0bdd60e01b815260040160405180910390fd5b896001600160a01b0316846001600160a01b03161480156200341a57506036546040808501519051630913db4760e01b81526001600160a01b038d8116600483015290911690630913db4790602401602060405180830381865afa158015620033f2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620034189190620091a6565b105b1562003439576040516317b204bf60e11b815260040160405180910390fd5b6000620186a0603a54836200344f919062009211565b6200345b91906200916d565b9050600083604001516001600160a01b03168260405160006040518083038185875af1925050503d8060008114620034b0576040519150601f19603f3d011682016040523d82523d6000602084013e620034b5565b606091505b5050905080620034d8576040516312171d8360e31b815260040160405180910390fd5b620034e48284620091fb565b60408086015190516317066a5760e21b81526001600160a01b03898116600483015292955060009290911690635c19a95c90869060240160206040518083038185885af11580156200353a573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190620035619190620091a6565b9050866001600160a01b03168c6001600160a01b03168e6001600160a01b03167ffdac6e81913996d95abcc289e90f2d8bd235487ce6fe6f821e7d21002a1915b48e8589604051620035c6939291909283526020830191909152604082015260600190565b60405180910390a46040805160028082526060820183526000926020830190803683370190505090508660400151816000815181106200360a576200360a6200922b565b60200260200101906001600160a01b031690816001600160a01b0316815250508560400151816001815181106200364557620036456200922b565b6001600160a01b0390921660209283029190910190910152604051634484077560e01b815261200590634484077590620036869084908c9060040162009241565b600060405180830381600087803b158015620036a157600080fd5b505af1158015620036b6573d6000803e3d6000fd5b505050508a1562003728576120056001600160a01b031663e5ed5b1e898f6040518363ffffffff1660e01b8152600401620036f39291906200912d565b600060405180830381600087803b1580156200370e57600080fd5b505af115801562003723573d6000803e3d6000fd5b505050505b50506034805460ff19169055505050505050505050505050565b60005462010000900460ff16156200376d57604051631785c68160e01b815260040160405180910390fd5b3360009081526001602052604090205460ff16156200379f5760405163b1d02c3d60e01b815260040160405180910390fd5b620037a962007fb2565b620037b6603f8262007e10565b620037d45760405163056e881160e01b815260040160405180910390fd5b6000620037e062007fb2565b6001600160a01b0381166000908152604160205260409020600c8101549192509042906200381390620151809062009190565b11156200383357604051631f92cdbd60e11b815260040160405180910390fd5b60098101546001600160401b03600160401b909104811690851611156200386d5760405163dc81db8560e01b815260040160405180910390fd5b60098101546000906001600160401b039081169086161015620038ab576009820154620038a59086906001600160401b03166200926d565b620038c5565b6009820154620038c5906001600160401b0316866200926d565b60098301546001600160401b039182169250600160801b900416811115620039005760405163dc81db8560e01b815260040160405180910390fd5b60098201805467ffffffffffffffff19166001600160401b03871690811790915542600c8401556040519081526001600160a01b038416907f78cdd96edf59e09cfd4d26ef6ef6c92d166effe6a40970c54821206d541932cb9060200160405180910390a25050505050565b606080606060006200397f603f62008119565b905080861015620040085784156200399857846200399a565b805b9450600085620039ab8884620091fb565b11620039c357620039bd8783620091fb565b620039c5565b855b9050806001600160401b03811115620039e257620039e2620089a8565b60405190808252806020026020018201604052801562003a0c578160200160208202803683370190505b509450806001600160401b0381111562003a2a5762003a2a620089a8565b60405190808252806020026020018201604052801562003a54578160200160208202803683370190505b509350806001600160401b0381111562003a725762003a72620089a8565b60405190808252806020026020018201604052801562003aa757816020015b606081526020019060019003908162003a915790505b50925060005b818110156200400557600062003ad162003ac8838b62009190565b603f9062008124565b6001600160a01b0380821660009081526041602090815260408083208151610180810183528154861681526001820154861693810193909352600281015490941690820152600383015460608201526004830180549495509193909291608084019162003b3e90620090f7565b80601f016020809104026020016040519081016040528092919081815260200182805462003b6c90620090f7565b801562003bbd5780601f1062003b915761010080835404028352916020019162003bbd565b820191906000526020600020905b81548152906001019060200180831162003b9f57829003601f168201915b505050505081526020016005820160405180608001604052908160008201805462003be890620090f7565b80601f016020809104026020016040519081016040528092919081815260200182805462003c1690620090f7565b801562003c675780601f1062003c3b5761010080835404028352916020019162003c67565b820191906000526020600020905b81548152906001019060200180831162003c4957829003601f168201915b5050505050815260200160018201805462003c8290620090f7565b80601f016020809104026020016040519081016040528092919081815260200182805462003cb090620090f7565b801562003d015780601f1062003cd55761010080835404028352916020019162003d01565b820191906000526020600020905b81548152906001019060200180831162003ce357829003601f168201915b5050505050815260200160028201805462003d1c90620090f7565b80601f016020809104026020016040519081016040528092919081815260200182805462003d4a90620090f7565b801562003d9b5780601f1062003d6f5761010080835404028352916020019162003d9b565b820191906000526020600020905b81548152906001019060200180831162003d7d57829003601f168201915b5050505050815260200160038201805462003db690620090f7565b80601f016020809104026020016040519081016040528092919081815260200182805462003de490620090f7565b801562003e355780601f1062003e095761010080835404028352916020019162003e35565b820191906000526020600020905b81548152906001019060200180831162003e1757829003601f168201915b505050919092525050508152604080516060808201835260098501546001600160401b038082168452600160401b82048116602080860191909152600160801b9092041683850152840191909152600a84015460ff16151582840152600b84015490830152600c8301546080830152600d8301546001600160a01b031660a0830152805161026081019182905260c09092019190600e84019060139082845b81548152602001906001019080831162003ed4575050505050815250509050806000015188848151811062003f0d5762003f0d6200922b565b60200260200101906001600160a01b031690816001600160a01b0316815250508060e0015162003fa65780604001516001600160a01b03166315d1f8986040518163ffffffff1660e01b8152600401602060405180830381865afa15801562003f7a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062003fa09190620091a6565b62003fa9565b60005b87848151811062003fbe5762003fbe6200922b565b602002602001018181525050806080015186848151811062003fe45762003fe46200922b565b602002602001018190525050508062003ffd9062009297565b905062003aad565b50505b92959194509250565b60005462010000900460ff16156200403c57604051631785c68160e01b815260040160405180910390fd5b3360009081526001602052604090205460ff16156200406e5760405163b1d02c3d60e01b815260040160405180910390fd5b336200407c603f8262007e10565b156200409b57604051635f28f62b60e01b815260040160405180910390fd5b6001600160a01b038181166000908152604d60205260409020541615620040d557604051631a0a9b9f60e21b815260040160405180910390fd5b6001600160a01b0388811660009081526043602052604090205416156200410f57604051631e6f587560e11b815260040160405180910390fd5b60006001600160a01b0316604588886040516200412e92919062009147565b908152604051908190036020019020546001600160a01b03161462004166576040516311fdb94760e01b815260040160405180910390fd5b6000620041748380620092b3565b6040516020016200418792919062009147565b60408051601f1981840301815291815281516020928301206000818152604290935291205490915060ff1615620041d15760405163c0bf414360e01b815260040160405180910390fd5b6000620041e7670de0b6b3a764000034620091fb565b90506036548110156200420d576040516317b204bf60e11b815260040160405180910390fd5b6001600160a01b038a166200423557604051636520611b60e11b815260040160405180910390fd5b6113886200424a604087016020880162008b62565b6001600160401b031611806200429057506200426d604086016020870162008b62565b6001600160401b031662004285602087018762008b62565b6001600160401b0316115b80620042cf5750620042a9604086016020870162008b62565b6001600160401b0316620042c4606087016040880162008b62565b6001600160401b0316115b15620042ee5760405163dc81db8560e01b815260040160405180910390fd5b62004339620042fe8580620092b3565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506200813292505050565b6200435757604051635dba5ad760e01b815260040160405180910390fd5b62004366838a8a8a8a620082d4565b6200438457604051631647e3cb60e11b815260040160405180910390fd5b6000620043d284620043978780620092b3565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506200840492505050565b9050620043e1603f8562008505565b506000838152604260209081526040808320805460ff191660019081179091556001600160a01b0380891680865260419094529190932080548f83166001600160a01b031991821617825593810180548516909317909255600282018054918516919093161790915542600382015560048101620044618b8d836200935b565b50856005820162004473828262009423565b50879050600982016200448782826200955c565b505042600c8201556001600160a01b038c81166000908152604360205260409081902080546001600160a01b03191692881692909217909155518590604590620044d5908e908e9062009147565b908152602001604051809103902060006101000a8154816001600160a01b0302191690836001600160a01b03160217905550816001600160a01b0316856001600160a01b03168d6001600160a01b03167faecd9fb95e79c75a3a1de93362c6be5fe6ab65770d8614be583884161cd8228d8e8e604051620045589291906200962c565b60405180910390a460408051848152602081018590526001600160a01b0387169182917f24d7bda8602b916d64417f0dbfe2e2e88ec9b1157bd9f596dfdb91ba26624e04910160405180910390a360408051670de0b6b3a7640000808252602082015261dead916001600160a01b038816917f24d7bda8602b916d64417f0dbfe2e2e88ec9b1157bd9f596dfdb91ba26624e04910160405180910390a3604051633041949b60e01b815261200590633041949b906200461e90859089906004016200912d565b600060405180830381600087803b1580156200463957600080fd5b505af11580156200464e573d6000803e3d6000fd5b50505050505050505050505050505050565b6040805160608101825260008082526020820181905291810191909152816200468b603f8262007e10565b620046a95760405163056e881160e01b815260040160405180910390fd5b50506001600160a01b031660009081526041602090815260409182902082516060810184526009909101546001600160401b038082168352600160401b8204811693830193909352600160801b90049091169181019190915290565b6001600160a01b038082166000908152604160209081526040808320815161018081018352815486168152600182015486169381019390935260028101549094169082015260038301546060828101919091526004840180549194916080840191906200477290620090f7565b80601f0160208091040260200160405190810160405280929190818152602001828054620047a090620090f7565b8015620047f15780601f10620047c557610100808354040283529160200191620047f1565b820191906000526020600020905b815481529060010190602001808311620047d357829003601f168201915b50505050508152602001600582016040518060800160405290816000820180546200481c90620090f7565b80601f01602080910402602001604051908101604052809291908181526020018280546200484a90620090f7565b80156200489b5780601f106200486f576101008083540402835291602001916200489b565b820191906000526020600020905b8154815290600101906020018083116200487d57829003601f168201915b50505050508152602001600182018054620048b690620090f7565b80601f0160208091040260200160405190810160405280929190818152602001828054620048e490620090f7565b8015620049355780601f10620049095761010080835404028352916020019162004935565b820191906000526020600020905b8154815290600101906020018083116200491757829003601f168201915b505050505081526020016002820180546200495090620090f7565b80601f01602080910402602001604051908101604052809291908181526020018280546200497e90620090f7565b8015620049cf5780601f10620049a357610100808354040283529160200191620049cf565b820191906000526020600020905b815481529060010190602001808311620049b157829003601f168201915b50505050508152602001600382018054620049ea90620090f7565b80601f016020809104026020016040519081016040528092919081815260200182805462004a1890620090f7565b801562004a695780601f1062004a3d5761010080835404028352916020019162004a69565b820191906000526020600020905b81548152906001019060200180831162004a4b57829003601f168201915b505050919092525050508152604080516060808201835260098501546001600160401b038082168452600160401b82048116602080860191909152600160801b9092041683850152840191909152600a84015460ff16151582840152600b84015490830152600c8301546080830152600d8301546001600160a01b031660a0830152805161026081019182905260c09092019190600e84019060139082845b81548152602001906001019080831162004b085750505091909252505050608001519392505050565b336110011462004b5957604051630f22c43960e41b81526110016004820152602401620011fa565b6001600160a01b038082166000908152604360205260409020541662004b81603f8262007e10565b62004b9f5760405163056e881160e01b815260040160405180910390fd5b6001600160a01b038181166000908152604160205260408082206002810154603b54925163045bc4d160e41b81526004810193909352909316906345bc4d10906024016020604051808303816000875af115801562004c02573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062004c289190620091a6565b90506000603d544262004c3c919062009190565b905062004c4a838262007ebd565b836001600160a01b03167f6e9a2ee7aee95665e3a774a212eb11441b217e3e4656ab9563793094689aabb28284600160405162004c8a93929190620091c0565b60405180910390a26002830154604051633041949b60e01b815261200591633041949b9162004cc8916001600160a01b03169088906004016200912d565b600060405180830381600087803b15801562004ce357600080fd5b505af115801562004cf8573d6000803e3d6000fd5b505050505050505050565b600054610100900460ff161580801562004d245750600054600160ff909116105b8062004d405750303b15801562004d40575060005460ff166001145b62004da55760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608401620011fa565b6000805460ff19166001179055801562004dc9576000805461ff0019166101001790555b33411462004dea5760405163022d8c9560e31b815260040160405180910390fd5b3a1562004e0a576040516383f1b1d360e01b815260040160405180910390fd5b611388603555686c6b935b8bbd400000603655670de0b6b3a7640000603755602d60385562093a806039556002603a819055678ac7230489e80000603b55680ad78ebc5ac6200000603c556202a300603d5562278d00603e55604a5562004e857308e68ec70fa3b629784fdb28887e206ce8561e086200851c565b801562001825576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a150565b336120001462004ef657604051630f22c43960e41b81526120006004820152602401620011fa565b60405162461bcd60e51b815260206004820152600a60248201526919195c1c9958d85d195960b21b6044820152606401620011fa565b600054630100000090046001600160a01b0316331462004f5f576040516306fbb1e360e01b815260040160405180910390fd5b60005462010000900460ff161562004f8a57604051631785c68160e01b815260040160405180910390fd5b6000805462ff00001916620100001781556040517f9e87fac88ff661f02d44f95383c817fece4bce600a3dab7a54406878b965e7529190a1565b600062004fd3603f8462007e10565b62004ff15760405163056e881160e01b815260040160405180910390fd5b6001600160a01b0383811660009081526041602052604090819020600201549051636bbf224960e01b815260048101859052911690636bbf2249906024015b602060405180830381865afa1580156200504e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620050749190620091a6565b90505b92915050565b60005462010000900460ff1615620050a857604051631785c68160e01b815260040160405180910390fd5b3360009081526001602052604090205460ff1615620050da5760405163b1d02c3d60e01b815260040160405180910390fd5b81620050e8603f8262007e10565b620051065760405163056e881160e01b815260040160405180910390fd5b60375434908110156200512c5760405163dc6f0bdd60e01b815260040160405180910390fd5b6001600160a01b03808516600090815260416020908152604080832081516101808101835281548616815260018201548616938101939093526002810154909416908201526003830154606082015260048301805433949160808401916200519490620090f7565b80601f0160208091040260200160405190810160405280929190818152602001828054620051c290620090f7565b8015620052135780601f10620051e75761010080835404028352916020019162005213565b820191906000526020600020905b815481529060010190602001808311620051f557829003601f168201915b50505050508152602001600582016040518060800160405290816000820180546200523e90620090f7565b80601f01602080910402602001604051908101604052809291908181526020018280546200526c90620090f7565b8015620052bd5780601f106200529157610100808354040283529160200191620052bd565b820191906000526020600020905b8154815290600101906020018083116200529f57829003601f168201915b50505050508152602001600182018054620052d890620090f7565b80601f01602080910402602001604051908101604052809291908181526020018280546200530690620090f7565b8015620053575780601f106200532b5761010080835404028352916020019162005357565b820191906000526020600020905b8154815290600101906020018083116200533957829003601f168201915b505050505081526020016002820180546200537290620090f7565b80601f0160208091040260200160405190810160405280929190818152602001828054620053a090620090f7565b8015620053f15780601f10620053c557610100808354040283529160200191620053f1565b820191906000526020600020905b815481529060010190602001808311620053d357829003601f168201915b505050505081526020016003820180546200540c90620090f7565b80601f01602080910402602001604051908101604052809291908181526020018280546200543a90620090f7565b80156200548b5780601f106200545f576101008083540402835291602001916200548b565b820191906000526020600020905b8154815290600101906020018083116200546d57829003601f168201915b505050919092525050508152604080516060808201835260098501546001600160401b038082168452600160401b82048116602080860191909152600160801b9092041683850152840191909152600a84015460ff16151582840152600b84015490830152600c8301546080830152600d8301546001600160a01b031660a0830152805161026081019182905260c09092019190600e84019060139082845b8154815260200190600101908083116200552a5750505050508152505090508060e0015180156200556d5750856001600160a01b0316826001600160a01b031614155b156200558c57604051636468920360e01b815260040160405180910390fd5b60408082015190516317066a5760e21b81526001600160a01b0384811660048301526000921690635c19a95c90869060240160206040518083038185885af1158015620055dd573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190620056049190620091a6565b9050826001600160a01b0316876001600160a01b03167f24d7bda8602b916d64417f0dbfe2e2e88ec9b1157bd9f596dfdb91ba26624e04838760405162005655929190918252602082015260400190565b60405180910390a36040808301519051633041949b60e01b815261200591633041949b916200568a919087906004016200912d565b600060405180830381600087803b158015620056a557600080fd5b505af1158015620056ba573d6000803e3d6000fd5b5050505085156200181e576040516372f6ad8f60e11b81526120059063e5ed5b1e90620056ee9086908b906004016200912d565b600060405180830381600087803b1580156200570957600080fd5b505af11580156200571e573d6000803e3d6000fd5b5050505050505050505050565b620057576040518060800160405280606081526020016060815260200160608152602001606081525090565b8162005765603f8262007e10565b620057835760405163056e881160e01b815260040160405180910390fd5b6001600160a01b03831660009081526041602052604090819020815160808101909252600501805482908290620057ba90620090f7565b80601f0160208091040260200160405190810160405280929190818152602001828054620057e890620090f7565b8015620058395780601f106200580d5761010080835404028352916020019162005839565b820191906000526020600020905b8154815290600101906020018083116200581b57829003601f168201915b505050505081526020016001820180546200585490620090f7565b80601f01602080910402602001604051908101604052809291908181526020018280546200588290620090f7565b8015620058d35780601f10620058a757610100808354040283529160200191620058d3565b820191906000526020600020905b815481529060010190602001808311620058b557829003601f168201915b50505050508152602001600282018054620058ee90620090f7565b80601f01602080910402602001604051908101604052809291908181526020018280546200591c90620090f7565b80156200596d5780601f1062005941576101008083540402835291602001916200596d565b820191906000526020600020905b8154815290600101906020018083116200594f57829003601f168201915b505050505081526020016003820180546200598890620090f7565b80601f0160208091040260200160405190810160405280929190818152602001828054620059b690620090f7565b801562005a075780601f10620059db5761010080835404028352916020019162005a07565b820191906000526020600020905b815481529060010190602001808311620059e957829003601f168201915b505050505081525050915050919050565b60005462010000900460ff161562005a4357604051631785c68160e01b815260040160405180910390fd5b3360009081526001602052604090205460ff161562005a755760405163b1d02c3d60e01b815260040160405180910390fd5b62005a818282620085b5565b5050565b336110071462005aad57604051630f22c43960e41b81526110076004820152602401620011fa565b62005b1a6040518060400160405280601081526020016f1d1c985b9cd9995c91d85cd31a5b5a5d60821b81525085858080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509293925050620086c19050565b1562005bd5576020811462005b4c5783838383604051630a5a604160e01b8152600401620011fa949392919062009642565b604080516020601f840181900481028201810190925282815260009162005b8f9185858083850183828082843760009201919091525092939250506200871e9050565b90506108fc81108062005ba3575061271081115b1562005bcc5784848484604051630a5a604160e01b8152600401620011fa949392919062009642565b603555620068df565b62005c466040518060400160405280601481526020017336b4b729b2b6332232b632b3b0ba34b7b721272160611b81525085858080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509293925050620086c19050565b1562005d10576020811462005c785783838383604051630a5a604160e01b8152600401620011fa949392919062009642565b604080516020601f840181900481028201810190925282815260009162005cbb9185858083850183828082843760009201919091525092939250506200871e9050565b9050683635c9adc5dea0000081108062005cde575069152d02c7e14af680000081115b1562005d075784848484604051630a5a604160e01b8152600401620011fa949392919062009642565b603655620068df565b62005d83604051806040016040528060168152602001756d696e44656c65676174696f6e424e424368616e676560501b81525085858080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509293925050620086c19050565b1562005e4a576020811462005db55783838383604051630a5a604160e01b8152600401620011fa949392919062009642565b604080516020601f840181900481028201810190925282815260009162005df89185858083850183828082843760009201919091525092939250506200871e9050565b905067016345785d8a000081108062005e185750678ac7230489e8000081115b1562005e415784848484604051630a5a604160e01b8152600401620011fa949392919062009642565b603755620068df565b62005ebb604051806040016040528060148152602001736d6178456c656374656456616c696461746f727360601b81525085858080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509293925050620086c19050565b1562005f73576020811462005eed5783838383604051630a5a604160e01b8152600401620011fa949392919062009642565b604080516020601f840181900481028201810190925282815260009162005f309185858083850183828082843760009201919091525092939250506200871e9050565b905080158062005f4157506101f481115b1562005f6a5784848484604051630a5a604160e01b8152600401620011fa949392919062009642565b603855620068df565b62005fdc6040518060400160405280600c81526020016b1d5b989bdb9914195c9a5bd960a21b81525085858080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509293925050620086c19050565b156200609957602081146200600e5783838383604051630a5a604160e01b8152600401620011fa949392919062009642565b604080516020601f8401819004810282018101909252828152600091620060519185858083850183828082843760009201919091525092939250506200871e9050565b90506203f48081108062006067575062278d0081115b15620060905784848484604051630a5a604160e01b8152600401620011fa949392919062009642565b603955620068df565b6200610760405180604001604052806011815260200170726564656c65676174654665655261746560781b81525085858080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509293925050620086c19050565b15620061b45760208114620061395783838383604051630a5a604160e01b8152600401620011fa949392919062009642565b604080516020601f84018190048102820181019092528281526000916200617c9185858083850183828082843760009201919091525092939250506200871e9050565b90506064811115620061ab5784848484604051630a5a604160e01b8152600401620011fa949392919062009642565b603a55620068df565b6200622460405180604001604052806013815260200172191bdddb9d1a5b5954db185cda105b5bdd5b9d606a1b81525085858080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509293925050620086c19050565b15620062e55760208114620062565783838383604051630a5a604160e01b8152600401620011fa949392919062009642565b604080516020601f8401819004810282018101909252828152600091620062999185858083850183828082843760009201919091525092939250506200871e9050565b9050674563918244f40000811080620062b35750603c5481115b15620062dc5784848484604051630a5a604160e01b8152600401620011fa949392919062009642565b603b55620068df565b620063536040518060400160405280601181526020017019995b1bdb9e54db185cda105b5bdd5b9d607a1b81525085858080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509293925050620086c19050565b15620064165760208114620063855783838383604051630a5a604160e01b8152600401620011fa949392919062009642565b604080516020601f8401819004810282018101909252828152600091620063c89185858083850183828082843760009201919091525092939250506200871e9050565b905068056bc75e2d63100000811080620063e45750603b548111155b156200640d5784848484604051630a5a604160e01b8152600401620011fa949392919062009642565b603c55620068df565b620064836040518060400160405280601081526020016f646f776e74696d654a61696c54696d6560801b81525085858080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509293925050620086c19050565b15620065405760208114620064b55783838383604051630a5a604160e01b8152600401620011fa949392919062009642565b604080516020601f8401819004810282018101909252828152600091620064f89185858083850183828082843760009201919091525092939250506200871e9050565b90506202a3008110806200650e5750603e548110155b15620065375784848484604051630a5a604160e01b8152600401620011fa949392919062009642565b603d55620068df565b620065ab6040518060400160405280600e81526020016d66656c6f6e794a61696c54696d6560901b81525085858080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509293925050620086c19050565b15620066685760208114620065dd5783838383604051630a5a604160e01b8152600401620011fa949392919062009642565b604080516020601f8401819004810282018101909252828152600091620066209185858083850183828082843760009201919091525092939250506200871e9050565b9050620d2f00811080620066365750603d548111155b156200665f5784848484604051630a5a604160e01b8152600401620011fa949392919062009642565b603e55620068df565b620066e26040518060400160405280601c81526020017f6d617846656c6f6e794265747765656e42726561746865426c6f636b0000000081525085858080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509293925050620086c19050565b156200678e5760208114620067145783838383604051630a5a604160e01b8152600401620011fa949392919062009642565b604080516020601f8401819004810282018101909252828152600091620067579185858083850183828082843760009201919091525092939250506200871e9050565b905080600003620067855784848484604051630a5a604160e01b8152600401620011fa949392919062009642565b604a55620068df565b620067fc6040518060400160405280601181526020017039ba30b5b2a43ab1283937ba32b1ba37b960791b81525085858080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509293925050620086c19050565b15620068bc57601481146200682e5783838383604051630a5a604160e01b8152600401620011fa949392919062009642565b600062006876601484848080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092939250506200871e9050565b90506001600160a01b038116620068aa5784848484604051630a5a604160e01b8152600401620011fa949392919062009642565b620068b58162008723565b50620068df565b838383836040516325ee20d560e21b8152600401620011fa949392919062009642565b7ff1ce9b2cbf50eeb05769a29e2543fd350cab46894a7dd9978a12d534bb20e6338484848460405162006916949392919062009642565b60405180910390a150505050565b60005462010000900460ff16156200694f57604051631785c68160e01b815260040160405180910390fd5b3360009081526001602052604090205460ff1615620069815760405163b1d02c3d60e01b815260040160405180910390fd5b816000816001600160401b038111156200699f576200699f620089a8565b604051908082528060200260200182016040528015620069c9578160200160208202803683370190505b5090506000805b8381101562006ac75762006a12878783818110620069f257620069f26200922b565b905060200201602081019062006a09919062008839565b603f9062007e10565b62006a305760405163056e881160e01b815260040160405180910390fd5b6041600088888481811062006a495762006a496200922b565b905060200201602081019062006a60919062008839565b6001600160a01b039081168252602082019290925260400160002060020154845191169250829084908390811062006a9c5762006a9c6200922b565b6001600160a01b039092166020928302919091019091015262006abf8162009297565b9050620069d0565b50604051634484077560e01b8152612005906344840775906200290d908590889060040162009241565b606080600062006b02603f62008119565b90508085101562006cc657831562006b1b578362006b1d565b805b935060008462006b2e8784620091fb565b1162006b465762006b408683620091fb565b62006b48565b845b9050806001600160401b0381111562006b655762006b65620089a8565b60405190808252806020026020018201604052801562006b8f578160200160208202803683370190505b509350806001600160401b0381111562006bad5762006bad620089a8565b60405190808252806020026020018201604052801562006bd7578160200160208202803683370190505b50925060005b8181101562006cc35762006bf662003ac8828962009190565b85828151811062006c0b5762006c0b6200922b565b60200260200101906001600160a01b031690816001600160a01b0316815250506041600086838151811062006c445762006c446200922b565b60200260200101516001600160a01b03166001600160a01b0316815260200190815260200160002060020160009054906101000a90046001600160a01b031684828151811062006c985762006c986200922b565b6001600160a01b039092166020928302919091019091015262006cbb8162009297565b905062006bdd565b50505b9250925092565b60008162006cdd603f8262007e10565b62006cfb5760405163056e881160e01b815260040160405180910390fd5b50506001600160a01b03166000908152604160205260409020600c015490565b336110011462006d4357604051630f22c43960e41b81526110016004820152602401620011fa565b60005462010000900460ff161562006d6e57604051631785c68160e01b815260040160405180910390fd5b6001600160a01b038082166000908152604360205260409020541662006d96603f8262007e10565b62006db45760405163056e881160e01b815260040160405180910390fd5b6001600160a01b03811660009081526041602052604081209062006ddc62015180426200916d565b604a546000828152604b60205260409020549192501162006e105760405163bd52fcdb60e01b815260040160405180910390fd5b6000818152604b6020526040812080546001929062006e3190849062009190565b90915550506001600160a01b0384166000908152604460205260409020541580159062006e8657506001600160a01b038416600090815260446020526040902054429062006e8490620151809062009190565b105b1562006ea5576040516330abb81d60e21b815260040160405180910390fd5b60008062006eb585600062007e33565b915091508162006ed857604051631b919bb160e11b815260040160405180910390fd5b6002840154603c5460405163045bc4d160e41b815260048101919091526000916001600160a01b0316906345bc4d10906024016020604051808303816000875af115801562006f2b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062006f519190620091a6565b905062006f5f858362007ebd565b856001600160a01b03167f6e9a2ee7aee95665e3a774a212eb11441b217e3e4656ab9563793094689aabb28383600060405162006f9f93929190620091c0565b60405180910390a26002850154604051633041949b60e01b815261200591633041949b91620056ee916001600160a01b0316908a906004016200912d565b6001600160a01b03808216600090815260416020908152604080832081516101808101835281548616815260018201548616938101939093526002810154909416908201526003830154606082015260048301805492938493849384939092916080840191906200704e90620090f7565b80601f01602080910402602001604051908101604052809291908181526020018280546200707c90620090f7565b8015620070cd5780601f10620070a157610100808354040283529160200191620070cd565b820191906000526020600020905b815481529060010190602001808311620070af57829003601f168201915b5050505050815260200160058201604051806080016040529081600082018054620070f890620090f7565b80601f01602080910402602001604051908101604052809291908181526020018280546200712690620090f7565b8015620071775780601f106200714b5761010080835404028352916020019162007177565b820191906000526020600020905b8154815290600101906020018083116200715957829003601f168201915b505050505081526020016001820180546200719290620090f7565b80601f0160208091040260200160405190810160405280929190818152602001828054620071c090620090f7565b8015620072115780601f10620071e55761010080835404028352916020019162007211565b820191906000526020600020905b815481529060010190602001808311620071f357829003601f168201915b505050505081526020016002820180546200722c90620090f7565b80601f01602080910402602001604051908101604052809291908181526020018280546200725a90620090f7565b8015620072ab5780601f106200727f57610100808354040283529160200191620072ab565b820191906000526020600020905b8154815290600101906020018083116200728d57829003601f168201915b50505050508152602001600382018054620072c690620090f7565b80601f0160208091040260200160405190810160405280929190818152602001828054620072f490620090f7565b8015620073455780601f10620073195761010080835404028352916020019162007345565b820191906000526020600020905b8154815290600101906020018083116200732757829003601f168201915b505050919092525050508152604080516060808201835260098501546001600160401b038082168452600160401b82048116602080860191909152600160801b9092041683850152840191909152600a84015460ff16151582840152600b84015490830152600c8301546080830152600d8301546001600160a01b031660a0830152805161026081019182905260c09092019190600e84019060139082845b815481526020019060010190808311620073e45750505091909252505050606081015160e0820151610100909201519097919650945092505050565b60005462010000900460ff16156200744b57604051631785c68160e01b815260040160405180910390fd5b3360009081526001602052604090205460ff16156200747d5760405163b1d02c3d60e01b815260040160405180910390fd5b6200748762007fb2565b62007494603f8262007e10565b620074b25760405163056e881160e01b815260040160405180910390fd5b6000620074be62007fb2565b6001600160a01b0381166000908152604160205260409020600c810154919250904290620074f190620151809062009190565b11156200751157604051631f92cdbd60e11b815260040160405180910390fd5b6005810180546200752290620090f7565b80601f01602080910402602001604051908101604052809291908181526020018280546200755090620090f7565b8015620075a15780601f106200757557610100808354040283529160200191620075a1565b820191906000526020600020905b8154815290600101906020018083116200758357829003601f168201915b5050508287525085916005840191508190620075be908262009678565b5060208201516001820190620075d5908262009678565b5060408201516002820190620075ec908262009678565b506060820151600382019062007603908262009678565b505042600c830155506040516001600160a01b038316907f85d6366b336ade7f106987ec7a8eac1e8799e508aeab045a39d2f63e0dc969d990600090a250505050565b60005462010000900460ff16156200767157604051631785c68160e01b815260040160405180910390fd5b3360009081526001602052604090205460ff1615620076a35760405163b1d02c3d60e01b815260040160405180910390fd5b828114620076c4576040516341abc80160e01b815260040160405180910390fd5b60005b83811015620077355762007722858583818110620076e957620076e96200922b565b905060200201602081019062007700919062008839565b8484848181106200771557620077156200922b565b90506020020135620085b5565b6200772d8162009297565b9050620076c7565b5050505050565b6001600160a01b0380821660009081526041602090815260408083208151610180810183528154861681526001820154861693810193909352600281015490941690820152600383015460608201526004830180549293849390916080840191620077a790620090f7565b80601f0160208091040260200160405190810160405280929190818152602001828054620077d590620090f7565b8015620078265780601f10620077fa5761010080835404028352916020019162007826565b820191906000526020600020905b8154815290600101906020018083116200780857829003601f168201915b50505050508152602001600582016040518060800160405290816000820180546200785190620090f7565b80601f01602080910402602001604051908101604052809291908181526020018280546200787f90620090f7565b8015620078d05780601f10620078a457610100808354040283529160200191620078d0565b820191906000526020600020905b815481529060010190602001808311620078b257829003601f168201915b50505050508152602001600182018054620078eb90620090f7565b80601f01602080910402602001604051908101604052809291908181526020018280546200791990620090f7565b80156200796a5780601f106200793e576101008083540402835291602001916200796a565b820191906000526020600020905b8154815290600101906020018083116200794c57829003601f168201915b505050505081526020016002820180546200798590620090f7565b80601f0160208091040260200160405190810160405280929190818152602001828054620079b390620090f7565b801562007a045780601f10620079d85761010080835404028352916020019162007a04565b820191906000526020600020905b815481529060010190602001808311620079e657829003601f168201915b5050505050815260200160038201805462007a1f90620090f7565b80601f016020809104026020016040519081016040528092919081815260200182805462007a4d90620090f7565b801562007a9e5780601f1062007a725761010080835404028352916020019162007a9e565b820191906000526020600020905b81548152906001019060200180831162007a8057829003601f168201915b505050919092525050508152604080516060808201835260098501546001600160401b038082168452600160401b82048116602080860191909152600160801b9092041683850152840191909152600a84015460ff16151582840152600b84015490830152600c8301546080830152600d8301546001600160a01b031660a0830152805161026081019182905260c09092019190600e84019060139082845b81548152602001906001019080831162007b3d5750505091909252505050604001519392505050565b600062007b75603f8462007e10565b62007b935760405163056e881160e01b815260040160405180910390fd5b6001600160a01b038381166000908152604160205260409081902060020154905163aa1966cd60e01b81526004810185905291169063aa1966cd9060240162005030565b60005462010000900460ff161562007c0257604051631785c68160e01b815260040160405180910390fd5b3360009081526001602052604090205460ff161562007c345760405163b1d02c3d60e01b815260040160405180910390fd5b62007c3e62007fb2565b62007c4b603f8262007e10565b62007c695760405163056e881160e01b815260040160405180910390fd5b600062007c7562007fb2565b905062007c868187878787620082d4565b62007ca457604051631647e3cb60e11b815260040160405180910390fd5b60006001600160a01b03166045878760405162007cc392919062009147565b908152604051908190036020019020546001600160a01b03161462007cfb576040516311fdb94760e01b815260040160405180910390fd5b6001600160a01b0381166000908152604160205260409020600c810154429062007d2a90620151809062009190565b111562007d4a57604051631f92cdbd60e11b815260040160405180910390fd5b4260468260040160405162007d60919062009740565b908152604051908190036020019020556004810162007d818789836200935b565b5042600c820155604051829060459062007d9f908a908a9062009147565b90815260405190819003602001812080546001600160a01b039384166001600160a01b0319909116179055908316907f783156582145bd0ff7924fae6953ba054cf1233eb60739a200ddb10de068ff0d9062007dff908a908a906200962c565b60405180910390a250505050505050565b6001600160a01b0381166000908152600183016020526040812054151562005074565b6000806000848460405160200162007e4d929190620097be565b60408051601f1981840301815291815281516020928301206000818152604c9093529120549091504281111562007e8d5760008093509350505062007eb6565b603e5462007e9c904262009190565b6000928352604c6020526040909220829055506001925090505b9250929050565b6000600162007ecd603f62008119565b62007ed99190620091fb565b604954108015915062007f255760018301546040516001600160a01b03909116907f2afdc18061ac21cff7d9f11527ab9c8dec6fabd4edf6f894ed634bebd6a20d4590600090a2505050565b82600b015482111562007f3a57600b83018290555b600a83015460ff1662007fad57600a8301805460ff191660019081179091556049805460009062007f6d90849062009190565b909155505060018301546040516001600160a01b03909116907f4905ac32602da3fb8b4b7b00c285e5fc4c6c2308cc908b4a1e4e9625a29c90a390600090a25b505050565b336000908152604d60205260408120546001600160a01b03161562007fee5750336000908152604d60205260409020546001600160a01b031690565b503390565b6001600160a01b0381166000908152604160205260409020600a81015460ff16156200801d575050565b6036546002820154604051630913db4760e01b81526001600160a01b03858116600483015290911690630913db4790602401602060405180830381865afa1580156200806d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620080939190620091a6565b101562005a8157620080b581603d5442620080af919062009190565b62007ebd565b80546040516335409f7f60e01b81526001600160a01b039091166004820152611000906335409f7f90602401600060405180830381600087803b158015620080fc57600080fd5b505af115801562008111573d6000803e3d6000fd5b505050505050565b600062005077825490565b60006200507483836200878f565b6000808290506003815110806200814a575060098151115b15620081595750600092915050565b6041816000815181106200817157620081716200922b565b016020015160f81c1080620081a35750605a816000815181106200819957620081996200922b565b016020015160f81c115b15620081b25750600092915050565b60015b8151811015620082ca576030828281518110620081d657620081d66200922b565b016020015160f81c10806200820757506039828281518110620081fd57620081fd6200922b565b016020015160f81c115b801562008257575060418282815181106200822657620082266200922b565b016020015160f81c1080620082575750605a8282815181106200824d576200824d6200922b565b016020015160f81c115b8015620082a7575060618282815181106200827657620082766200922b565b016020015160f81c1080620082a75750607a8282815181106200829d576200829d6200922b565b016020015160f81c115b15620082b7575060009392505050565b620082c28162009297565b9050620081b5565b5060019392505050565b6000603084141580620082e8575060608214155b15620082f757506000620083fb565b60008686864660405160200162008312949392919062009808565b60408051808303601f1901815282825280516020918201208184528383019092529092506000919060208201818036833701905050905081602082015260008186868a8a6040516020016200836c95949392919062009835565b60408051808303601f190181526001808452838301909252925060009190602082018180368337019050509050815160016020830182602086016066600019fa620083b657600080fd5b50600081600081518110620083cf57620083cf6200922b565b016020015160f81c905060018114620083f157600095505050505050620083fb565b6001955050505050505b95945050505050565b60008061200361dead6040516200841b906200880e565b6001600160a01b03928316815291166020820152606060408201819052600090820152608001604051809103906000f0801580156200845e573d6000803e3d6000fd5b509050806001600160a01b031663f399e22e3486866040518463ffffffff1660e01b8152600401620084929291906200986d565b6000604051808303818588803b158015620084ac57600080fd5b505af1158015620084c1573d6000803e3d6000fd5b50506040516001600160a01b038086169450881692507fd481492e4e93bb36b4c12a5af93f03be3bf04b454dfbc35dd2663fa26f44d5b09150600090a39392505050565b600062005074836001600160a01b038416620087bc565b600054610100900460ff16620085895760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b6064820152608401620011fa565b600080546001600160a01b039092166301000000026301000000600160b81b0319909216919091179055565b81620085c3603f8262007e10565b620085e15760405163056e881160e01b815260040160405180910390fd5b6001600160a01b03838116600090815260416020526040808220600201549051635569f64b60e11b8152336004820152602481018690529192169063aad3ec96906044016020604051808303816000875af115801562008645573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200866b9190620091a6565b9050336001600160a01b0316846001600160a01b03167ff7a40077ff7a04c7e61f6f26fb13774259ddf1b6bce9ecf26a8276cdd399268383604051620086b391815260200190565b60405180910390a350505050565b600081604051602001620086d6919062009893565b6040516020818303038152906040528051906020012083604051602001620086ff919062009893565b6040516020818303038152906040528051906020012014905092915050565b015190565b600080546040516001600160a01b0380851693630100000090930416917f44fc1b38a4abaa91ebd1b628a5b259a698f86238c8217d68f516e87769c60c0b91a3600080546001600160a01b039092166301000000026301000000600160b81b0319909216919091179055565b6000826000018281548110620087a957620087a96200922b565b9060005260206000200154905092915050565b6000818152600183016020526040812054620088055750815460018181018455600084815260208082209093018490558454848252828601909352604090209190915562005077565b50600062005077565b610e9680620098b283390190565b80356001600160a01b03811681146200883457600080fd5b919050565b6000602082840312156200884c57600080fd5b62005074826200881c565b60008083601f8401126200886a57600080fd5b5081356001600160401b038111156200888257600080fd5b60208301915083602082850101111562007eb657600080fd5b60008060208385031215620088af57600080fd5b82356001600160401b03811115620088c657600080fd5b620088d48582860162008857565b90969095509350505050565b600080600060408486031215620088f657600080fd5b833560ff811681146200890857600080fd5b925060208401356001600160401b038111156200892457600080fd5b620089328682870162008857565b9497909650939450505050565b60005b838110156200895c57818101518382015260200162008942565b50506000910152565b600081518084526200897f8160208601602086016200893f565b601f01601f19169290920160200192915050565b60208152600062005074602083018462008965565b634e487b7160e01b600052604160045260246000fd5b604051608081016001600160401b0381118282101715620089e357620089e3620089a8565b60405290565b60006001600160401b038084111562008a065762008a06620089a8565b604051601f8501601f19908116603f0116810190828211818310171562008a315762008a31620089a8565b8160405280935085815286868601111562008a4b57600080fd5b858560208301376000602087830101525050509392505050565b60006020828403121562008a7857600080fd5b81356001600160401b0381111562008a8f57600080fd5b8201601f8101841362008aa157600080fd5b62008ab284823560208401620089e9565b949350505050565b6000806040838503121562008ace57600080fd5b62008ad9836200881c565b946020939093013593505050565b803580151581146200883457600080fd5b6000806000806080858703121562008b0f57600080fd5b62008b1a856200881c565b935062008b2a602086016200881c565b92506040850135915062008b416060860162008ae7565b905092959194509250565b6001600160401b03811681146200182557600080fd5b60006020828403121562008b7557600080fd5b813562008b828162008b4c565b9392505050565b6000806040838503121562008b9d57600080fd5b50508035926020909101359150565b600081518084526020808501945080840160005b8381101562008be75781516001600160a01b03168752958201959082019060010162008bc0565b509495945050505050565b60808152600062008c07608083018762008bac565b82810360208481019190915286518083528782019282019060005b8181101562008c405784518352938301939183019160010162008c22565b5050848103604086015286518082528282019350600581901b8201830183890160005b8381101562008c9557601f1985840301875262008c8283835162008965565b9686019692509085019060010162008c63565b5050809550505050505082606083015295945050505050565b600080600080600080600087890360e081121562008ccb57600080fd5b62008cd6896200881c565b975060208901356001600160401b038082111562008cf357600080fd5b62008d018c838d0162008857565b909950975060408b013591508082111562008d1b57600080fd5b62008d298c838d0162008857565b90975095508591506060605f198401121562008d4457600080fd5b60608b01945060c08b013592508083111562008d5f57600080fd5b505088016080818b03121562008d7457600080fd5b8091505092959891949750929550565b6000806040838503121562008d9857600080fd5b62008da3836200881c565b915062008db36020840162008ae7565b90509250929050565b60208152600082516080602084015262008dda60a084018262008965565b90506020840151601f198085840301604086015262008dfa838362008965565b9250604086015191508085840301606086015262008e19838362008965565b9250606086015191508085840301608086015250620083fb828262008965565b6000806000806040858703121562008e5057600080fd5b84356001600160401b038082111562008e6857600080fd5b62008e768883890162008857565b9096509450602087013591508082111562008e9057600080fd5b5062008e9f8782880162008857565b95989497509550505050565b60008083601f84011262008ebe57600080fd5b5081356001600160401b0381111562008ed657600080fd5b6020830191508360208260051b850101111562007eb657600080fd5b60008060006040848603121562008f0857600080fd5b83356001600160401b0381111562008f1f57600080fd5b62008f2d8682870162008eab565b909450925062008f429050602085016200881c565b90509250925092565b60608152600062008f60606083018662008bac565b828103602084015262008f74818662008bac565b915050826040830152949350505050565b600082601f83011262008f9757600080fd5b6200507483833560208501620089e9565b60006020828403121562008fbb57600080fd5b81356001600160401b038082111562008fd357600080fd5b908301906080828603121562008fe857600080fd5b62008ff2620089be565b8235828111156200900257600080fd5b620090108782860162008f85565b8252506020830135828111156200902657600080fd5b620090348782860162008f85565b6020830152506040830135828111156200904d57600080fd5b6200905b8782860162008f85565b6040830152506060830135828111156200907457600080fd5b620090828782860162008f85565b60608301525095945050505050565b60008060008060408587031215620090a857600080fd5b84356001600160401b0380821115620090c057600080fd5b620090ce8883890162008eab565b90965094506020870135915080821115620090e857600080fd5b5062008e9f8782880162008eab565b600181811c908216806200910c57607f821691505b60208210810362001c3b57634e487b7160e01b600052602260045260246000fd5b6001600160a01b0392831681529116602082015260400190565b8183823760009101908152919050565b634e487b7160e01b600052601160045260246000fd5b6000826200918b57634e487b7160e01b600052601260045260246000fd5b500490565b8082018082111562005077576200507762009157565b600060208284031215620091b957600080fd5b5051919050565b838152602081018390526060810160038310620091ed57634e487b7160e01b600052602160045260246000fd5b826040830152949350505050565b8181038181111562005077576200507762009157565b808202811582820484141762005077576200507762009157565b634e487b7160e01b600052603260045260246000fd5b60408152600062009256604083018562008bac565b905060018060a01b03831660208301529392505050565b6001600160401b0382811682821603908082111562009290576200929062009157565b5092915050565b600060018201620092ac57620092ac62009157565b5060010190565b6000808335601e19843603018112620092cb57600080fd5b8301803591506001600160401b03821115620092e657600080fd5b60200191503681900382131562007eb657600080fd5b601f82111562007fad57600081815260208120601f850160051c81016020861015620093255750805b601f850160051c820191505b81811015620081115782815560010162009331565b600019600383901b1c191660019190911b1790565b6001600160401b03831115620093755762009375620089a8565b6200938d83620093868354620090f7565b83620092fc565b6000601f841160018114620093c05760008515620093ab5750838201355b620093b7868262009346565b84555062007735565b600083815260209020601f19861690835b82811015620093f35786850135825560209485019460019092019101620093d1565b5086821015620094115760001960f88860031b161c19848701351681555b505060018560011b0183555050505050565b6200942f8283620092b3565b6001600160401b03811115620094495762009449620089a8565b62009461816200945a8554620090f7565b85620092fc565b6000601f8211600181146200949457600083156200947f5750838201355b6200948b848262009346565b865550620094f1565b600085815260209020601f19841690835b82811015620094c75786850135825560209485019460019092019101620094a5565b5084821015620094e55760001960f88660031b161c19848701351681555b505060018360011b0185555b50505050620095046020830183620092b3565b620095148183600186016200935b565b5050620095256040830183620092b3565b620095358183600286016200935b565b5050620095466060830183620092b3565b620095568183600386016200935b565b50505050565b8135620095698162008b4c565b6001600160401b03811690508154816001600160401b031982161783556020840135620095968162008b4c565b6fffffffffffffffff0000000000000000604091821b166fffffffffffffffffffffffffffffffff19831684178117855590850135620095d68162008b4c565b6001600160c01b0319929092169092179190911760809190911b67ffffffffffffffff60801b1617905550565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b60208152600062008ab260208301848662009603565b6040815260006200965860408301868862009603565b82810360208401526200966d81858762009603565b979650505050505050565b81516001600160401b03811115620096945762009694620089a8565b620096ac81620096a58454620090f7565b84620092fc565b602080601f831160018114620096e05760008415620096cb5750858301515b620096d7858262009346565b86555062008111565b600085815260208120601f198616915b828110156200971157888601518255948401946001909101908401620096f0565b5085821015620097305787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b60008083546200975081620090f7565b600182811680156200976b57600181146200978157620097b2565b60ff1984168752821515830287019450620097b2565b8760005260208060002060005b85811015620097a95781548a8201529084019082016200978e565b50505082870194505b50929695505050505050565b6bffffffffffffffffffffffff198360601b168152600060038310620097f457634e487b7160e01b600052602160045260246000fd5b5060f89190911b6014820152601501919050565b6bffffffffffffffffffffffff198560601b16815282846014830137601492019182015260340192915050565b6000865162009849818460208b016200893f565b82018587823760009086019081528385823760009301928352509095945050505050565b6001600160a01b038316815260406020820181905260009062008ab29083018462008965565b60008251620098a78184602087016200893f565b919091019291505056fe608060405260405162000e9638038062000e96833981016040819052620000269162000497565b828162000036828260006200004d565b50620000449050826200008a565b505050620005ca565b6200005883620000e5565b600082511180620000665750805b1562000085576200008383836200012760201b620001691760201c565b505b505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f620000b562000156565b604080516001600160a01b03928316815291841660208301520160405180910390a1620000e2816200018f565b50565b620000f08162000244565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b60606200014f838360405180606001604052806027815260200162000e6f60279139620002f8565b9392505050565b60006200018060008051602062000e4f83398151915260001b6200037760201b620001951760201c565b546001600160a01b0316919050565b6001600160a01b038116620001fa5760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b60648201526084015b60405180910390fd5b806200022360008051602062000e4f83398151915260001b6200037760201b620001951760201c565b80546001600160a01b0319166001600160a01b039290921691909117905550565b6200025a816200037a60201b620001981760201c565b620002be5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b6064820152608401620001f1565b80620002237f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc60001b6200037760201b620001951760201c565b6060600080856001600160a01b03168560405162000317919062000577565b600060405180830381855af49150503d806000811462000354576040519150601f19603f3d011682016040523d82523d6000602084013e62000359565b606091505b5090925090506200036d8683838762000389565b9695505050505050565b90565b6001600160a01b03163b151590565b60608315620003fd578251600003620003f5576001600160a01b0385163b620003f55760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401620001f1565b508162000409565b62000409838362000411565b949350505050565b815115620004225781518083602001fd5b8060405162461bcd60e51b8152600401620001f1919062000595565b80516001600160a01b03811681146200045657600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b60005b838110156200048e57818101518382015260200162000474565b50506000910152565b600080600060608486031215620004ad57600080fd5b620004b8846200043e565b9250620004c8602085016200043e565b60408501519092506001600160401b0380821115620004e657600080fd5b818601915086601f830112620004fb57600080fd5b8151818111156200051057620005106200045b565b604051601f8201601f19908116603f011681019083821181831017156200053b576200053b6200045b565b816040528281528960208487010111156200055557600080fd5b6200056883602083016020880162000471565b80955050505050509250925092565b600082516200058b81846020870162000471565b9190910192915050565b6020815260008251806020840152620005b681604085016020870162000471565b601f01601f19169190910160400192915050565b61087580620005da6000396000f3fe60806040523661001357610011610017565b005b6100115b61001f6101a7565b6001600160a01b0316330361015f5760606001600160e01b0319600035166364d3180d60e11b810161005a576100536101da565b9150610157565b63587086bd60e11b6001600160e01b031982160161007a57610053610231565b63070d7c6960e41b6001600160e01b031982160161009a57610053610277565b621eb96f60e61b6001600160e01b03198216016100b9576100536102a8565b63a39f25e560e01b6001600160e01b03198216016100d9576100536102e8565b60405162461bcd60e51b815260206004820152604260248201527f5472616e73706172656e745570677261646561626c6550726f78793a2061646d60448201527f696e2063616e6e6f742066616c6c6261636b20746f2070726f78792074617267606482015261195d60f21b608482015260a4015b60405180910390fd5b815160208301f35b6101676102fc565b565b606061018e83836040518060600160405280602781526020016108426027913961030c565b9392505050565b90565b6001600160a01b03163b151590565b60007fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b546001600160a01b0316919050565b60606101e4610384565b60006101f33660048184610695565b81019061020091906106db565b905061021d8160405180602001604052806000815250600061038f565b505060408051602081019091526000815290565b60606000806102433660048184610695565b810190610250919061070c565b915091506102608282600161038f565b604051806020016040528060008152509250505090565b6060610281610384565b60006102903660048184610695565b81019061029d91906106db565b905061021d816103bb565b60606102b2610384565b60006102bc6101a7565b604080516001600160a01b03831660208201529192500160405160208183030381529060405291505090565b60606102f2610384565b60006102bc610412565b610167610307610412565b610421565b6060600080856001600160a01b03168560405161032991906107f2565b600060405180830381855af49150503d8060008114610364576040519150601f19603f3d011682016040523d82523d6000602084013e610369565b606091505b509150915061037a86838387610445565b9695505050505050565b341561016757600080fd5b610398836104c6565b6000825111806103a55750805b156103b6576103b48383610169565b505b505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f6103e46101a7565b604080516001600160a01b03928316815291841660208301520160405180910390a161040f81610506565b50565b600061041c6105af565b905090565b3660008037600080366000845af43d6000803e808015610440573d6000f35b3d6000fd5b606083156104b45782516000036104ad576001600160a01b0385163b6104ad5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015260640161014e565b50816104be565b6104be83836105d7565b949350505050565b6104cf81610601565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b6001600160a01b03811661056b5760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b606482015260840161014e565b807fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b80546001600160a01b0319166001600160a01b039290921691909117905550565b60007f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc6101cb565b8151156105e75781518083602001fd5b8060405162461bcd60e51b815260040161014e919061080e565b6001600160a01b0381163b61066e5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b606482015260840161014e565b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc61058e565b600080858511156106a557600080fd5b838611156106b257600080fd5b5050820193919092039150565b80356001600160a01b03811681146106d657600080fd5b919050565b6000602082840312156106ed57600080fd5b61018e826106bf565b634e487b7160e01b600052604160045260246000fd5b6000806040838503121561071f57600080fd5b610728836106bf565b9150602083013567ffffffffffffffff8082111561074557600080fd5b818501915085601f83011261075957600080fd5b81358181111561076b5761076b6106f6565b604051601f8201601f19908116603f01168101908382118183101715610793576107936106f6565b816040528281528860208487010111156107ac57600080fd5b8260208601602083013760006020848301015280955050505050509250929050565b60005b838110156107e95781810151838201526020016107d1565b50506000910152565b600082516108048184602087016107ce565b9190910192915050565b602081526000825180602084015261082d8160408501602087016107ce565b601f01601f1916919091016040019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a164736f6c6343000811000ab53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a164736f6c6343000811000a \ No newline at end of file diff --git a/core/systemcontracts/pascal/mainnet/TokenHubContract b/core/systemcontracts/pascal/mainnet/TokenHubContract index 325fd93a82..ffe9f8e761 100644 --- a/core/systemcontracts/pascal/mainnet/TokenHubContract +++ b/core/systemcontracts/pascal/mainnet/TokenHubContract @@ -1 +1 @@ -6080604052600436106103395760003560e01c806393ab703f116101ab578063b9fd21e3116100f7578063df8079e911610095578063e8f35cea1161006f578063e8f35cea14610dd9578063f9a2bbc714610e0c578063fc1a598f14610e21578063fd6a687914610e5457610381565b8063df8079e914610d85578063e04c83a714610d9a578063e1c7392a14610dc457610381565b8063c81b1662116100d1578063c81b166214610d20578063c8509d811461092a578063cf41984414610d35578063dc927faf14610d7057610381565b8063b9fd21e314610ca5578063bbface1f14610cba578063bd46646114610ced57610381565b8063a78abc1611610164578063aad560631161013e578063aad5606314610b5e578063ab51bb9614610b73578063ac43175114610ba1578063b99328c514610c6c57610381565b8063a78abc1614610aed578063aa7415f514610b02578063aa82dce114610b4957610381565b806393ab703f14610a275780639509b98014610a3c5780639a854bbd14610a755780639a99b4f014610a8a5780639dc0926214610ac3578063a1a11bf514610ad857610381565b806351e8067211610285578063727be1f8116102235780637e434d54116101fd5780637e434d5414610915578063831d65d11461092a5780638525db03146109af5780638eff336c146109e857610381565b8063727be1f81461089757806375d47a0a146108c1578063799758b9146108d657610381565b8063613684751161025f57806361368475146107165780636e056520146107415780636e47b4821461086d57806371d308631461088257610381565b806351e80672146106c257806359b92789146106d75780635d499b1b1461070157610381565b80633d713223116102f257806343a368b9116102cc57806343a368b914610657578063493279b11461066c57806350432d321461069857806351b4dce3146106ad57610381565b80633d7132231461057c5780633fd8b02f1461062d57806343756e5c1461064257610381565b80630e2374a5146103865780631182b875146103b757806312234582146104b1578063149d14d9146104ec57806328087028146105135780632ae454831461052857610381565b3661038157341561037f576040805133815234602082015281517f6c98249d85d88c3753a04a22230f595e4dc8d3dc86c34af35deeeedc861b89db929181900390910190a15b005b600080fd5b34801561039257600080fd5b5061039b610e69565b604080516001600160a01b039092168252519081900360200190f35b3480156103c357600080fd5b5061043c600480360360408110156103da57600080fd5b60ff8235169190810190604081016020820135600160201b8111156103fe57600080fd5b82018360208201111561041057600080fd5b803590602001918460018302840111600160201b8311171561043157600080fd5b509092509050610e6f565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561047657818101518382015260200161045e565b50505050905090810190601f1680156104a35780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3480156104bd57600080fd5b5061037f600480360360408110156104d457600080fd5b506001600160a01b0381358116916020013516610eb7565b3480156104f857600080fd5b50610501610f31565b60408051918252519081900360200190f35b34801561051f57600080fd5b5061039b610f37565b34801561053457600080fd5b506105636004803603604081101561054b57600080fd5b506001600160a01b0381358116916020013516610f3d565b6040805192835260208301919091528051918290030190f35b34801561058857600080fd5b5061039b6004803603602081101561059f57600080fd5b810190602081018135600160201b8111156105b957600080fd5b8201836020820111156105cb57600080fd5b803590602001918460018302840111600160201b831117156105ec57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550610f61945050505050565b34801561063957600080fd5b50610501610f82565b34801561064e57600080fd5b5061039b610f88565b34801561066357600080fd5b50610501610f8e565b34801561067857600080fd5b50610681610f9a565b6040805161ffff9092168252519081900360200190f35b3480156106a457600080fd5b50610501610f9f565b3480156106b957600080fd5b5061039b610faa565b3480156106ce57600080fd5b5061039b610fb0565b3480156106e357600080fd5b5061039b600480360360208110156106fa57600080fd5b5035610fb6565b34801561070d57600080fd5b50610501610fd1565b34801561072257600080fd5b5061072b610fda565b6040805160ff9092168252519081900360200190f35b6108596004803603608081101561075757600080fd5b810190602081018135600160201b81111561077157600080fd5b82018360208201111561078357600080fd5b803590602001918460208302840111600160201b831117156107a457600080fd5b919390929091602081019035600160201b8111156107c157600080fd5b8201836020820111156107d357600080fd5b803590602001918460208302840111600160201b831117156107f457600080fd5b919390929091602081019035600160201b81111561081157600080fd5b82018360208201111561082357600080fd5b803590602001918460208302840111600160201b8311171561084457600080fd5b91935091503567ffffffffffffffff16610fdf565b604080519115158252519081900360200190f35b34801561087957600080fd5b5061039b611025565b34801561088e57600080fd5b5061050161102b565b3480156108a357600080fd5b50610859600480360360208110156108ba57600080fd5b5035611031565b3480156108cd57600080fd5b5061039b61106d565b3480156108e257600080fd5b5061037f600480360360608110156108f957600080fd5b508035906001600160a01b036020820135169060400135611073565b34801561092157600080fd5b5061039b611323565b34801561093657600080fd5b5061037f6004803603604081101561094d57600080fd5b60ff8235169190810190604081016020820135600160201b81111561097157600080fd5b82018360208201111561098357600080fd5b803590602001918460018302840111600160201b831117156109a457600080fd5b509092509050611329565b3480156109bb57600080fd5b5061037f600480360360408110156109d257600080fd5b50803590602001356001600160a01b031661136e565b3480156109f457600080fd5b5061037f60048036036060811015610a0b57600080fd5b508035906001600160a01b0360208201351690604001356114d7565b348015610a3357600080fd5b50610501611517565b348015610a4857600080fd5b5061037f60048036036040811015610a5f57600080fd5b506001600160a01b03813516906020013561151e565b348015610a8157600080fd5b506105016115e0565b348015610a9657600080fd5b5061050160048036036040811015610aad57600080fd5b506001600160a01b0381351690602001356115ec565b348015610acf57600080fd5b5061039b611672565b348015610ae457600080fd5b5061039b611678565b348015610af957600080fd5b5061085961167e565b61085960048036036080811015610b1857600080fd5b5080356001600160a01b03908116916020810135909116906040810135906060013567ffffffffffffffff16610fdf565b348015610b5557600080fd5b5061039b611687565b348015610b6a57600080fd5b5061039b61168d565b348015610b7f57600080fd5b50610b88611693565b6040805163ffffffff9092168252519081900360200190f35b348015610bad57600080fd5b5061037f60048036036040811015610bc457600080fd5b810190602081018135600160201b811115610bde57600080fd5b820183602082011115610bf057600080fd5b803590602001918460018302840111600160201b83111715610c1157600080fd5b919390929091602081019035600160201b811115610c2e57600080fd5b820183602082011115610c4057600080fd5b803590602001918460018302840111600160201b83111715610c6157600080fd5b509092509050611698565b348015610c7857600080fd5b5061037f60048036036040811015610c8f57600080fd5b50803590602001356001600160a01b03166114d7565b348015610cb157600080fd5b506105016116d8565b348015610cc657600080fd5b5061050160048036036020811015610cdd57600080fd5b50356001600160a01b03166116e2565b348015610cf957600080fd5b5061050160048036036020811015610d1057600080fd5b50356001600160a01b03166116f4565b348015610d2c57600080fd5b5061039b61170f565b348015610d4157600080fd5b5061037f60048036036040811015610d5857600080fd5b506001600160a01b0381358116916020013516611715565b348015610d7c57600080fd5b5061039b6117a8565b348015610d9157600080fd5b5061039b6117ae565b348015610da657600080fd5b5061085960048036036020811015610dbd57600080fd5b50356117b4565b348015610dd057600080fd5b5061037f61180c565b348015610de557600080fd5b5061050160048036036020811015610dfc57600080fd5b50356001600160a01b03166118ac565b348015610e1857600080fd5b5061039b6118be565b348015610e2d57600080fd5b5061043c60048036036020811015610e4457600080fd5b50356001600160a01b03166118c4565b348015610e6057600080fd5b5061039b6119eb565b61200181565b60005460609060ff16610eb7576040805162461bcd60e51b81526020600482015260196024820152600080516020611d9c833981519152604482015290519081900360640190fd5b3361200014610ef75760405162461bcd60e51b815260040180806020018281038252602f815260200180611d4a602f913960400191505060405180910390fd5b6040805162461bcd60e51b815260206004820152600a60248201526919195c1c9958d85d195960b21b604482015290519081900360640190fd5b60015490565b61200581565b60076020908152600092835260408084209091529082529020805460019091015482565b6020908101516000908152600490915260409020546001600160a01b031690565b60055481565b61100181565b670de0b6b3a764000081565b603881565b66071afd498d000081565b61200681565b61200081565b6000908152600460205260409020546001600160a01b031690565b6402540be40081565b600881565b6000805460ff16610ef7576040805162461bcd60e51b81526020600482015260196024820152600080516020611d9c833981519152604482015290519081900360640190fd5b61100581565b60015481565b6040805162461bcd60e51b815260206004820152600a60248201526919195c1c9958d85d195960b21b6044820152905160009181900360640190fd5b61100881565b60005460ff166110b8576040805162461bcd60e51b81526020600482015260196024820152600080516020611d9c833981519152604482015290519081900360640190fd5b33613000146110f85760405162461bcd60e51b815260040180806020018281038252602b815260200180611cd0602b913960400191505060405180910390fd5b677ce66c50e284000081111561113f5760405162461bcd60e51b8152600401808060200182810382526035815260200180611c9b6035913960400191505060405180910390fd5b60006221272160e91b84146112a9576000848152600460205260409020546001600160a01b0316806111b2576040805184815290516001600160a01b0386169187917fc16ee9013bf67c846d37735983debb0acc5b2d1419cb5931c9843ad4689505499181900360200190a3505061131e565b6001600160a01b0381166000908152600260205260409020546111d584826119f1565b604080516370a0823160e01b8152306004820152905191945084916001600160a01b038516916370a08231916024808301926020929190829003018186803b15801561122057600080fd5b505afa158015611234573d6000803e3d6000fd5b505050506040513d602081101561124a57600080fd5b50511015611296576040805162461bcd60e51b8152602060048201526014602482015273696e73756666696369656e742062616c616e636560601b604482015290519081900360640190fd5b6112a286838588611a3a565b505061131c565b6112be826402540be40063ffffffff611ad416565b90508047101561130c576040805162461bcd60e51b8152602060048201526014602482015273696e73756666696369656e742062616c616e636560601b604482015290519081900360640190fd5b600061131a85828487611a3a565b505b505b505050565b61200381565b60005460ff16610eb7576040805162461bcd60e51b81526020600482015260196024820152600080516020611d9c833981519152604482015290519081900360640190fd5b33613000146113ae5760405162461bcd60e51b815260040180806020018281038252602b815260200180611cd0602b913960400191505060405180910390fd5b60006221272160e91b831461141957506000828152600460205260409020546001600160a01b031680611419576040805162461bcd60e51b815260206004820152600e60248201526d1a5b9d985b1a59081cde5b589bdb60921b604482015290519081900360640190fd5b6001600160a01b0380821660009081526007602090815260408083209386168352929052208054611484576040805162461bcd60e51b815260206004820152601060248201526f1b9bc81b1bd8dad95908185b5bdd5b9d60821b604482015290519081900360640190fd5b8054600082556040805182815290516001600160a01b03808716929086169188917f8041a9a8704332594e2884f5e0f942281cdd7611854c365b4d0aa70b2295d6b6919081900360200190a45050505050565b3361100814610ef75760405162461bcd60e51b8152600401808060200182810382526023815260200180611d796023913960400191505060405180910390fd5b62093a8081565b81806001600160a01b031663893d20e86040518163ffffffff1660e01b815260040160206040518083038186803b15801561155857600080fd5b505afa15801561156c573d6000803e3d6000fd5b505050506040513d602081101561158257600080fd5b50516001600160a01b03163314610ef7576040805162461bcd60e51b815260206004820152601860248201527f6e6f74206f776e6572206f6620424550323020746f6b656e0000000000000000604482015290519081900360640190fd5b677ce66c50e284000081565b6000805460ff16611632576040805162461bcd60e51b81526020600482015260196024820152600080516020611d9c833981519152604482015290519081900360640190fd5b3361100514610ef75760405162461bcd60e51b815260040180806020018281038252602f815260200180611c6c602f913960400191505060405180910390fd5b61100781565b61100681565b60005460ff1681565b61200281565b61300081565b600081565b3361100714610ef75760405162461bcd60e51b815260040180806020018281038252602e815260200180611d1c602e913960400191505060405180910390fd5b6221272160e91b81565b60026020526000908152604090205481565b6001600160a01b031660009081526003602052604090205490565b61100281565b60085460ff1660021415611761576040805162461bcd60e51b815260206004820152600e60248201526d4e6f2072652d656e7472616e637960901b604482015290519081900360640190fd5b6008805460ff191660021790556040805162461bcd60e51b815260206004820152600a60248201526919195c1c9958d85d195960b21b604482015290519081900360640190fd5b61100381565b61200481565b60003361200214610ef7576040805162461bcd60e51b815260206004820152601f60248201527f746865206d73672073656e646572206d757374206265207374616b6548756200604482015290519081900360640190fd5b60005460ff1615611864576040805162461bcd60e51b815260206004820152601960248201527f74686520636f6e747261637420616c726561647920696e697400000000000000604482015290519081900360640190fd5b66071afd498d000060019081556000808052600260205260127fac33ff75c19e70fe83507db0d683fd3465c996598dc972688b7ace676c89077b55805460ff19169091179055565b60066020526000908152604090205481565b61100081565b6001600160a01b03811660009081526003602090815260409182902054825182815280840190935260609290918391906020820181803683375050506020810183905290506000805b60208160ff16101561195457828160ff168151811061192857fe5b01602001516001600160f81b031916156119475781600101915061194c565b611954565b60010161190d565b5060608160ff166040519080825280601f01601f191660200182016040528015611985576020820181803683370190505b50905060005b8260ff168160ff1610156119e157838160ff16815181106119a857fe5b602001015160f81c60f81b828260ff16815181106119c257fe5b60200101906001600160f81b031916908160001a90535060010161198b565b5095945050505050565b61100481565b60006008821115611a1a57611a13836007198401600a0a63ffffffff611ad416565b9050611a34565b611a31836008849003600a0a63ffffffff611b2d16565b90505b92915050565b6001600160a01b0380841660009081526007602090815260408083209385168352929052208054611a71908463ffffffff611b6f16565b81554262093a80016001820181905560408051858152602081019290925280516001600160a01b03808616939088169289927f446d1aa056e7b903901f49880e9f252762c1b81dc4301cf28db6dae526497eaa9281900390910190a45050505050565b600082611ae357506000611a34565b82820282848281611af057fe5b0414611a315760405162461bcd60e51b8152600401808060200182810382526021815260200180611cfb6021913960400191505060405180910390fd5b6000611a3183836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250611bc9565b600082820183811015611a31576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b60008183611c555760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b83811015611c1a578181015183820152602001611c02565b50505050905090810190601f168015611c475780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b506000838581611c6157fe5b049594505050505056fe746865206d6573736167652073656e646572206d75737420626520696e63656e746976697a6520636f6e7472616374616d6f756e7420697320746f6f206c617267652c20657863656564206d6178696d756d206265703220746f6b656e20616d6f756e74746865206d73672073656e646572206d75737420626520746f6b656e207265636f76657220706f7274616c536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f77746865206d6573736167652073656e646572206d75737420626520676f7665726e616e636520636f6e7472616374746865206d6573736167652073656e646572206d7573742062652063726f737320636861696e20636f6e7472616374746865206d73672073656e646572206d75737420626520746f6b656e4d616e6167657274686520636f6e7472616374206e6f7420696e69742079657400000000000000a164736f6c6343000604000a \ No newline at end of file +60806040526004361061036f5760003560e01c80639509b980116101c6578063bbface1f116100f7578063e04c83a711610095578063f9a2bbc71161006f578063f9a2bbc714610e57578063fa9e915914610e6c578063fc1a598f14610e81578063fd6a687914610eb4576103b7565b8063e04c83a714610de5578063e1c7392a14610e0f578063e8f35cea14610e24576103b7565b8063c8509d81116100d1578063c8509d8114610960578063cf41984414610d80578063dc927faf14610dbb578063df8079e914610dd0576103b7565b8063bbface1f14610d05578063bd46646114610d38578063c81b166214610d6b576103b7565b8063aa82dce111610164578063ac4317511161013e578063ac43175114610bd7578063b99328c514610ca2578063b9fd21e314610cdb578063ba35ead614610cf0576103b7565b8063aa82dce114610b7f578063aad5606314610b94578063ab51bb9614610ba9576103b7565b80639dc09262116101a05780639dc0926214610af9578063a1a11bf514610b0e578063a78abc1614610b23578063aa7415f514610b38576103b7565b80639509b98014610a725780639a854bbd14610aab5780639a99b4f014610ac0576103b7565b806359b92789116102a057806375d47a0a1161023e578063831d65d111610218578063831d65d1146109605780638525db03146109e55780638eff336c14610a1e57806393ab703f14610a5d576103b7565b806375d47a0a146108f7578063799758b91461090c5780637e434d541461094b576103b7565b80636e0565201161027a5780636e056520146107775780636e47b482146108a357806371d30863146108b8578063727be1f8146108cd576103b7565b806359b927891461070d5780635d499b1b14610737578063613684751461074c576103b7565b80633fd8b02f1161030d578063493279b1116102e7578063493279b1146106a257806350432d32146106ce57806351b4dce3146106e357806351e80672146106f8576103b7565b80633fd8b02f1461066357806343756e5c1461067857806343a368b91461068d576103b7565b8063149d14d911610349578063149d14d91461052257806328087028146105495780632ae454831461055e5780633d713223146105b2576103b7565b80630e2374a5146103bc5780631182b875146103ed57806312234582146104e7576103b7565b366103b75734156103b5576040805133815234602082015281517f6c98249d85d88c3753a04a22230f595e4dc8d3dc86c34af35deeeedc861b89db929181900390910190a15b005b600080fd5b3480156103c857600080fd5b506103d1610ec9565b604080516001600160a01b039092168252519081900360200190f35b3480156103f957600080fd5b506104726004803603604081101561041057600080fd5b60ff8235169190810190604081016020820135600160201b81111561043457600080fd5b82018360208201111561044657600080fd5b803590602001918460018302840111600160201b8311171561046757600080fd5b509092509050610ecf565b6040805160208082528351818301528351919283929083019185019080838360005b838110156104ac578181015183820152602001610494565b50505050905090810190601f1680156104d95780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3480156104f357600080fd5b506103b56004803603604081101561050a57600080fd5b506001600160a01b0381358116916020013516610f17565b34801561052e57600080fd5b50610537610f91565b60408051918252519081900360200190f35b34801561055557600080fd5b506103d1610f97565b34801561056a57600080fd5b506105996004803603604081101561058157600080fd5b506001600160a01b0381358116916020013516610f9d565b6040805192835260208301919091528051918290030190f35b3480156105be57600080fd5b506103d1600480360360208110156105d557600080fd5b810190602081018135600160201b8111156105ef57600080fd5b82018360208201111561060157600080fd5b803590602001918460018302840111600160201b8311171561062257600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550610fc1945050505050565b34801561066f57600080fd5b50610537610fe2565b34801561068457600080fd5b506103d1610fe8565b34801561069957600080fd5b50610537610fee565b3480156106ae57600080fd5b506106b7610ffa565b6040805161ffff9092168252519081900360200190f35b3480156106da57600080fd5b50610537610fff565b3480156106ef57600080fd5b506103d161100a565b34801561070457600080fd5b506103d1611010565b34801561071957600080fd5b506103d16004803603602081101561073057600080fd5b5035611016565b34801561074357600080fd5b50610537611031565b34801561075857600080fd5b5061076161103a565b6040805160ff9092168252519081900360200190f35b61088f6004803603608081101561078d57600080fd5b810190602081018135600160201b8111156107a757600080fd5b8201836020820111156107b957600080fd5b803590602001918460208302840111600160201b831117156107da57600080fd5b919390929091602081019035600160201b8111156107f757600080fd5b82018360208201111561080957600080fd5b803590602001918460208302840111600160201b8311171561082a57600080fd5b919390929091602081019035600160201b81111561084757600080fd5b82018360208201111561085957600080fd5b803590602001918460208302840111600160201b8311171561087a57600080fd5b91935091503567ffffffffffffffff1661103f565b604080519115158252519081900360200190f35b3480156108af57600080fd5b506103d1611085565b3480156108c457600080fd5b5061053761108b565b3480156108d957600080fd5b5061088f600480360360208110156108f057600080fd5b5035611091565b34801561090357600080fd5b506103d16110cd565b34801561091857600080fd5b506103b56004803603606081101561092f57600080fd5b508035906001600160a01b0360208201351690604001356110d3565b34801561095757600080fd5b506103d1611383565b34801561096c57600080fd5b506103b56004803603604081101561098357600080fd5b60ff8235169190810190604081016020820135600160201b8111156109a757600080fd5b8201836020820111156109b957600080fd5b803590602001918460018302840111600160201b831117156109da57600080fd5b509092509050611389565b3480156109f157600080fd5b506103b560048036036040811015610a0857600080fd5b50803590602001356001600160a01b03166113ce565b348015610a2a57600080fd5b506103b560048036036060811015610a4157600080fd5b508035906001600160a01b036020820135169060400135611537565b348015610a6957600080fd5b50610537611577565b348015610a7e57600080fd5b506103b560048036036040811015610a9557600080fd5b506001600160a01b03813516906020013561157e565b348015610ab757600080fd5b50610537611640565b348015610acc57600080fd5b5061053760048036036040811015610ae357600080fd5b506001600160a01b03813516906020013561164c565b348015610b0557600080fd5b506103d16116d2565b348015610b1a57600080fd5b506103d16116d8565b348015610b2f57600080fd5b5061088f6116de565b61088f60048036036080811015610b4e57600080fd5b5080356001600160a01b03908116916020810135909116906040810135906060013567ffffffffffffffff1661103f565b348015610b8b57600080fd5b506103d16116e7565b348015610ba057600080fd5b506103d16116ed565b348015610bb557600080fd5b50610bbe6116f3565b6040805163ffffffff9092168252519081900360200190f35b348015610be357600080fd5b506103b560048036036040811015610bfa57600080fd5b810190602081018135600160201b811115610c1457600080fd5b820183602082011115610c2657600080fd5b803590602001918460018302840111600160201b83111715610c4757600080fd5b919390929091602081019035600160201b811115610c6457600080fd5b820183602082011115610c7657600080fd5b803590602001918460018302840111600160201b83111715610c9757600080fd5b5090925090506116f8565b348015610cae57600080fd5b506103b560048036036040811015610cc557600080fd5b50803590602001356001600160a01b0316611537565b348015610ce757600080fd5b50610537611738565b348015610cfc57600080fd5b50610537611742565b348015610d1157600080fd5b5061053760048036036020811015610d2857600080fd5b50356001600160a01b0316611748565b348015610d4457600080fd5b5061053760048036036020811015610d5b57600080fd5b50356001600160a01b031661175a565b348015610d7757600080fd5b506103d1611775565b348015610d8c57600080fd5b506103b560048036036040811015610da357600080fd5b506001600160a01b038135811691602001351661177b565b348015610dc757600080fd5b506103d1611a4f565b348015610ddc57600080fd5b506103d1611a55565b348015610df157600080fd5b5061088f60048036036020811015610e0857600080fd5b5035611a5b565b348015610e1b57600080fd5b506103b5611ab3565b348015610e3057600080fd5b5061053760048036036020811015610e4757600080fd5b50356001600160a01b0316611b53565b348015610e6357600080fd5b506103d1611b65565b348015610e7857600080fd5b50610537611b6b565b348015610e8d57600080fd5b5061047260048036036020811015610ea457600080fd5b50356001600160a01b0316611b71565b348015610ec057600080fd5b506103d1611c98565b61200181565b60005460609060ff16610f17576040805162461bcd60e51b81526020600482015260196024820152600080516020612049833981519152604482015290519081900360640190fd5b3361200014610f575760405162461bcd60e51b815260040180806020018281038252602f815260200180611ff7602f913960400191505060405180910390fd5b6040805162461bcd60e51b815260206004820152600a60248201526919195c1c9958d85d195960b21b604482015290519081900360640190fd5b60015490565b61200581565b60076020908152600092835260408084209091529082529020805460019091015482565b6020908101516000908152600490915260409020546001600160a01b031690565b60055481565b61100181565b670de0b6b3a764000081565b603881565b66071afd498d000081565b61200681565b61200081565b6000908152600460205260409020546001600160a01b031690565b6402540be40081565b600881565b6000805460ff16610f57576040805162461bcd60e51b81526020600482015260196024820152600080516020612049833981519152604482015290519081900360640190fd5b61100581565b60015481565b6040805162461bcd60e51b815260206004820152600a60248201526919195c1c9958d85d195960b21b6044820152905160009181900360640190fd5b61100881565b60005460ff16611118576040805162461bcd60e51b81526020600482015260196024820152600080516020612049833981519152604482015290519081900360640190fd5b33613000146111585760405162461bcd60e51b815260040180806020018281038252602b815260200180611f7d602b913960400191505060405180910390fd5b677ce66c50e284000081111561119f5760405162461bcd60e51b8152600401808060200182810382526035815260200180611f486035913960400191505060405180910390fd5b60006221272160e91b8414611309576000848152600460205260409020546001600160a01b031680611212576040805184815290516001600160a01b0386169187917fc16ee9013bf67c846d37735983debb0acc5b2d1419cb5931c9843ad4689505499181900360200190a3505061137e565b6001600160a01b0381166000908152600260205260409020546112358482611c9e565b604080516370a0823160e01b8152306004820152905191945084916001600160a01b038516916370a08231916024808301926020929190829003018186803b15801561128057600080fd5b505afa158015611294573d6000803e3d6000fd5b505050506040513d60208110156112aa57600080fd5b505110156112f6576040805162461bcd60e51b8152602060048201526014602482015273696e73756666696369656e742062616c616e636560601b604482015290519081900360640190fd5b61130286838588611ce7565b505061137c565b61131e826402540be40063ffffffff611d8116565b90508047101561136c576040805162461bcd60e51b8152602060048201526014602482015273696e73756666696369656e742062616c616e636560601b604482015290519081900360640190fd5b600061137a85828487611ce7565b505b505b505050565b61200381565b60005460ff16610f17576040805162461bcd60e51b81526020600482015260196024820152600080516020612049833981519152604482015290519081900360640190fd5b336130001461140e5760405162461bcd60e51b815260040180806020018281038252602b815260200180611f7d602b913960400191505060405180910390fd5b60006221272160e91b831461147957506000828152600460205260409020546001600160a01b031680611479576040805162461bcd60e51b815260206004820152600e60248201526d1a5b9d985b1a59081cde5b589bdb60921b604482015290519081900360640190fd5b6001600160a01b03808216600090815260076020908152604080832093861683529290522080546114e4576040805162461bcd60e51b815260206004820152601060248201526f1b9bc81b1bd8dad95908185b5bdd5b9d60821b604482015290519081900360640190fd5b8054600082556040805182815290516001600160a01b03808716929086169188917f8041a9a8704332594e2884f5e0f942281cdd7611854c365b4d0aa70b2295d6b6919081900360200190a45050505050565b3361100814610f575760405162461bcd60e51b81526004018080602001828103825260238152602001806120266023913960400191505060405180910390fd5b62093a8081565b81806001600160a01b031663893d20e86040518163ffffffff1660e01b815260040160206040518083038186803b1580156115b857600080fd5b505afa1580156115cc573d6000803e3d6000fd5b505050506040513d60208110156115e257600080fd5b50516001600160a01b03163314610f57576040805162461bcd60e51b815260206004820152601860248201527f6e6f74206f776e6572206f6620424550323020746f6b656e0000000000000000604482015290519081900360640190fd5b677ce66c50e284000081565b6000805460ff16611692576040805162461bcd60e51b81526020600482015260196024820152600080516020612049833981519152604482015290519081900360640190fd5b3361100514610f575760405162461bcd60e51b815260040180806020018281038252602f815260200180611f19602f913960400191505060405180910390fd5b61100781565b61100681565b60005460ff1681565b61200281565b61300081565b600081565b3361100714610f575760405162461bcd60e51b815260040180806020018281038252602e815260200180611fc9602e913960400191505060405180910390fd5b6221272160e91b81565b61c35081565b60026020526000908152604090205481565b6001600160a01b031660009081526003602052604090205490565b61100281565b60085460ff16600214156117c7576040805162461bcd60e51b815260206004820152600e60248201526d4e6f2072652d656e7472616e637960901b604482015290519081900360640190fd5b6008805460ff191660021790556001600160a01b038083166000908152600760209081526040808320938516835292905220805461183f576040805162461bcd60e51b815260206004820152601060248201526f1b9bc81b1bd8dad95908185b5bdd5b9d60821b604482015290519081900360640190fd5b8060010154421015611898576040805162461bcd60e51b815260206004820152601760248201527f7374696c6c206f6e206c6f636b696e6720706572696f64000000000000000000604482015290519081900360640190fd5b805460008083556001600160a01b03851661190b576040516001600160a01b038516906127109084906000818181858888f193505050503d80600081146118fb576040519150601f19603f3d011682016040523d82523d6000602084013e611900565b606091505b50508091505061199e565b846001600160a01b031663a9059cbb61c35086856040518463ffffffff1660e01b815260040180836001600160a01b03166001600160a01b0316815260200182815260200192505050602060405180830381600088803b15801561196e57600080fd5b5087f1158015611982573d6000803e3d6000fd5b50505050506040513d602081101561199957600080fd5b505190505b806119f0576040805162461bcd60e51b815260206004820152601e60248201527f776974686472617720756e6c6f636b656420746f6b656e206661696c65640000604482015290519081900360640190fd5b836001600160a01b0316856001600160a01b03167f832fc3e25f2b3e6fb0eb59419a73cba405f2a249fce75f7e31ea5a457a0323f1846040518082815260200191505060405180910390a350506008805460ff19166001179055505050565b61100381565b61200481565b60003361200214610f57576040805162461bcd60e51b815260206004820152601f60248201527f746865206d73672073656e646572206d757374206265207374616b6548756200604482015290519081900360640190fd5b60005460ff1615611b0b576040805162461bcd60e51b815260206004820152601960248201527f74686520636f6e747261637420616c726561647920696e697400000000000000604482015290519081900360640190fd5b66071afd498d000060019081556000808052600260205260127fac33ff75c19e70fe83507db0d683fd3465c996598dc972688b7ace676c89077b55805460ff19169091179055565b60066020526000908152604090205481565b61100081565b61271081565b6001600160a01b03811660009081526003602090815260409182902054825182815280840190935260609290918391906020820181803683375050506020810183905290506000805b60208160ff161015611c0157828160ff1681518110611bd557fe5b01602001516001600160f81b03191615611bf457816001019150611bf9565b611c01565b600101611bba565b5060608160ff166040519080825280601f01601f191660200182016040528015611c32576020820181803683370190505b50905060005b8260ff168160ff161015611c8e57838160ff1681518110611c5557fe5b602001015160f81c60f81b828260ff1681518110611c6f57fe5b60200101906001600160f81b031916908160001a905350600101611c38565b5095945050505050565b61100481565b60006008821115611cc757611cc0836007198401600a0a63ffffffff611d8116565b9050611ce1565b611cde836008849003600a0a63ffffffff611dda16565b90505b92915050565b6001600160a01b0380841660009081526007602090815260408083209385168352929052208054611d1e908463ffffffff611e1c16565b81554262093a80016001820181905560408051858152602081019290925280516001600160a01b03808616939088169289927f446d1aa056e7b903901f49880e9f252762c1b81dc4301cf28db6dae526497eaa9281900390910190a45050505050565b600082611d9057506000611ce1565b82820282848281611d9d57fe5b0414611cde5760405162461bcd60e51b8152600401808060200182810382526021815260200180611fa86021913960400191505060405180910390fd5b6000611cde83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250611e76565b600082820183811015611cde576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b60008183611f025760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b83811015611ec7578181015183820152602001611eaf565b50505050905090810190601f168015611ef45780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b506000838581611f0e57fe5b049594505050505056fe746865206d6573736167652073656e646572206d75737420626520696e63656e746976697a6520636f6e7472616374616d6f756e7420697320746f6f206c617267652c20657863656564206d6178696d756d206265703220746f6b656e20616d6f756e74746865206d73672073656e646572206d75737420626520746f6b656e207265636f76657220706f7274616c536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f77746865206d6573736167652073656e646572206d75737420626520676f7665726e616e636520636f6e7472616374746865206d6573736167652073656e646572206d7573742062652063726f737320636861696e20636f6e7472616374746865206d73672073656e646572206d75737420626520746f6b656e4d616e6167657274686520636f6e7472616374206e6f7420696e69742079657400000000000000a164736f6c6343000604000a \ No newline at end of file diff --git a/core/systemcontracts/pascal/mainnet/TokenRecoverPortalContract b/core/systemcontracts/pascal/mainnet/TokenRecoverPortalContract index 62e5193f62..6f50594edf 100644 --- a/core/systemcontracts/pascal/mainnet/TokenRecoverPortalContract +++ b/core/systemcontracts/pascal/mainnet/TokenRecoverPortalContract @@ -1 +1 @@ -608060405234801561001057600080fd5b50600436106100f55760003560e01c80638129fc1c11610097578063b187bd2611610066578063b187bd26146101fc578063bfb5a6a114610207578063e33f8d321461021a578063e842426a1461023d57600080fd5b80638129fc1c146101cc5780638456cb59146101d45780639fcb5012146101dc578063ac431751146101e957600080fd5b80634838d165116100d35780634838d165146101335780634a49ac4c14610166578063572c99801461017957806374be21501461018c57600080fd5b8063046f7da2146100fa5780632eb4a7ab14610104578063417c73a714610120575b600080fd5b610102610268565b005b61010d60685481565b6040519081526020015b60405180910390f35b61010261012e366004611670565b6102f0565b610156610141366004611670565b60346020526000908152604090205460ff1681565b6040519015158152602001610117565b610102610174366004611670565b61036c565b61010261018736600461168b565b6103e5565b6101bf6040518060400160405280601481526020017342696e616e63652d436861696e2d54696772697360601b81525081565b6040516101179190611707565b61010261047b565b6101026105ed565b6069546101569060ff1681565b6101026101f7366004611763565b610679565b60335460ff16610156565b610102610215366004611814565b610a98565b6101566102283660046118ee565b6000908152606a602052604090205460ff1690565b606754610250906001600160a01b031681565b6040516001600160a01b039091168152602001610117565b60335461010090046001600160a01b03163314610298576040516306fbb1e360e01b815260040160405180910390fd5b60335460ff166102bb57604051636cd6020160e01b815260040160405180910390fd5b6033805460ff191690556040517f62451d457bc659158be6e6247f56ec1df424a5c7597f71c20c2bc44e0965c8f990600090a1565b60335461010090046001600160a01b03163314610320576040516306fbb1e360e01b815260040160405180910390fd5b6001600160a01b038116600081815260346020526040808220805460ff19166001179055517f7fd26be6fc92aff63f1f4409b2b2ddeb272a888031d7f55ec830485ec61941869190a250565b60335461010090046001600160a01b0316331461039c576040516306fbb1e360e01b815260040160405180910390fd5b6001600160a01b038116600081815260346020526040808220805460ff19169055517fe0db3499b7fdc3da4cddff5f45d694549c19835e7f719fb5606d3ad1a5de40119190a250565b60335461010090046001600160a01b03163314610415576040516306fbb1e360e01b815260040160405180910390fd5b604051638525db0360e01b8152600481018390526001600160a01b038216602482015261100490638525db0390604401600060405180830381600087803b15801561045f57600080fd5b505af1158015610473573d6000803e3d6000fd5b505050505050565b600054610100900460ff161580801561049b5750600054600160ff909116105b806104b55750303b1580156104b5575060005460ff166001145b61051d5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084015b60405180910390fd5b6000805460ff191660011790558015610540576000805461ff0019166101001790555b3341146105605760405163022d8c9560e31b815260040160405180910390fd5b3a1561057f576040516383f1b1d360e01b815260040160405180910390fd5b610587610df8565b6105a47308e68ec70fa3b629784fdb28887e206ce8561e08610e25565b80156105ea576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b50565b60335461010090046001600160a01b0316331461061d576040516306fbb1e360e01b815260040160405180910390fd5b60335460ff161561064157604051631785c68160e01b815260040160405180910390fd5b6033805460ff191660011790556040517f9e87fac88ff661f02d44f95383c817fece4bce600a3dab7a54406878b965e75290600090a1565b336110071461069f57604051630f22c43960e41b81526110076004820152602401610514565b6107096040518060400160405280600f81526020016e617070726f76616c4164647265737360881b81525085858080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509293925050610e749050565b156107d357601481146107375783838383604051630a5a604160e01b81526004016105149493929190611930565b600061077d601484848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509293925050610ece9050565b90506001600160a01b0381166107ae5784848484604051630a5a604160e01b81526004016105149493929190611930565b606780546001600160a01b0319166001600160a01b0392909216919091179055610a55565b6108386040518060400160405280600a8152602001691b595c9adb19549bdbdd60b21b81525085858080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509293925050610e749050565b156109085760695460ff1615610861576040516379b3306f60e11b815260040160405180910390fd5b6020811461088a5783838383604051630a5a604160e01b81526004016105149493929190611930565b604080516020601f84018190048102820181019092528281526000916108cb918585808385018382808284376000920191909152509293925050610ece9050565b9050806108f35784848484604051630a5a604160e01b81526004016105149493929190611930565b6068556069805460ff19166001179055610a55565b6109806040518060400160405280601b81526020017f746f6b656e5265636f766572506f7274616c50726f746563746f72000000000081525085858080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509293925050610e749050565b15610a3457601481146109ae5783838383604051630a5a604160e01b81526004016105149493929190611930565b60006109f4601484848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509293925050610ece9050565b90506001600160a01b038116610a255784848484604051630a5a604160e01b81526004016105149493929190611930565b610a2e81610ed3565b50610a55565b838383836040516325ee20d560e21b81526004016105149493929190611930565b7ff1ce9b2cbf50eeb05769a29e2543fd350cab46894a7dd9978a12d534bb20e63384848484604051610a8a9493929190611930565b60405180910390a150505050565b60695460ff16610abb5760405163678f619760e11b815260040160405180910390fd5b606854610adb5760405163678f619760e11b815260040160405180910390fd5b6067546001600160a01b0316610b0457604051631a1b977b60e31b815260040160405180910390fd5b60335460ff1615610b2857604051631785c68160e01b815260040160405180910390fd5b610b30610f3a565b6000610bbe89898080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050604080516020601f8d018190048102820181019092528b815292508b91508a9081908401838280828437600081840152601f19601f82011690508083019250505050505050610bb98e8e33610f93565b6110b4565b90506000818c8c604051602001610bd793929190611962565b604051602081830303815290604052805190602001209050610c08816000908152606a602052604090205460ff1690565b15610c2557604051623e493160e81b815260040160405180910390fd5b610ccd3389898080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050604080516020601f8d018190048102820181019092528b815292508b91508a908190840183828082843760009201919091525050604080516020808c0282810182019093528b82528994509092508b918b9182919085019084908082843760009201919091525061118c92505050565b610d0e848480806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250506068549150849050611297565b610d2b576040516309bde33960e01b815260040160405180910390fd5b6000818152606a602052604090819020805460ff191660011790555163799758b960e01b8152600481018d9052336024820152604481018c90526110049063799758b990606401600060405180830381600087803b158015610d8c57600080fd5b505af1158015610da0573d6000803e3d6000fd5b505050507f39cc0b7297a0ef9102d75ebc4919ffec0347d50008c2b865eda4125d5812cb64828d338e604051610dd99493929190611989565b60405180910390a15050610dec60018055565b50505050505050505050565b600054610100900460ff16610e1f5760405162461bcd60e51b8152600401610514906119c1565b60018055565b600054610100900460ff16610e4c5760405162461bcd60e51b8152600401610514906119c1565b603380546001600160a01b0390921661010002610100600160a81b0319909216919091179055565b600081604051602001610e879190611a0c565b6040516020818303038152906040528051906020012083604051602001610eae9190611a0c565b604051602081830303815290604052805190602001201490505b92915050565b015190565b6033546040516001600160a01b0380841692610100900416907f44fc1b38a4abaa91ebd1b628a5b259a698f86238c8217d68f516e87769c60c0b90600090a3603380546001600160a01b0390921661010002610100600160a81b0319909216919091179055565b600260015403610f8c5760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610514565b6002600155565b600060026040518060400160405280601481526020017342696e616e63652d436861696e2d54696772697360601b815250610ff085604051602001610fda91815260200190565b60405160208183030381529060405260006112ad565b6040516bffffffffffffffffffffffff19606087901b1660208201526110299060340160405160208183030381529060405260016112ad565b61103f88604051602001610fda91815260200190565b6040516020016110529493929190611a28565b60408051601f198184030181529082905261106c91611a0c565b602060405180830381855afa158015611089573d6000803e3d6000fd5b5050506040513d601f19601f820116820180604052508101906110ac9190611b57565b949350505050565b606083516021146110d857604051638152ea1b60e01b815260040160405180910390fd5b82516040146110fa57604051635e4bd79760e11b815260040160405180910390fd5b604080516020808252818301909252600091602082018180368337019050509050826020820152600085858360405160200161113893929190611b86565b60408051808303601f190181526014808452838301909252925060009190602082018180368337019050509050815160146020830182602086016069600019fa61118157600080fd5b509695505050505050565b606060005b82518110156111ea57818382815181106111ad576111ad611bc9565b60200260200101516040516020016111c6929190611bdf565b604051602081830303815290604052915080806111e290611c17565b915050611191565b5060006040518060400160405280601481526020017342696e616e63652d436861696e2d54696772697360601b8152508787866068548660405160200161123696959493929190611c30565b60408051601f1981840301815291905280516020909101206067549091506001600160a01b0316611267868361147f565b6001600160a01b03161461128e576040516356b00a4f60e11b815260040160405180910390fd5b50505050505050565b6000826112a48584611519565b14949350505050565b60606000835160026112bf9190611ca1565b67ffffffffffffffff8111156112d7576112d7611b70565b6040519080825280601f01601f191660200182016040528015611301576020820181803683370190505b5060408051808201909152601081526f181899199a1a9b1b9c1cb0b131b232b360811b602082015290915060005b85518110156114475781825187838151811061134d5761134d611bc9565b016020015161135f919060f81c611cce565b8151811061136f5761136f611bc9565b01602001516001600160f81b0319168361138a836002611ca1565b8151811061139a5761139a611bc9565b60200101906001600160f81b031916908160001a9053508182518783815181106113c6576113c6611bc9565b01602001516113d8919060f81c611ce2565b815181106113e8576113e8611bc9565b01602001516001600160f81b03191683611403836002611ca1565b61140e906001611cf6565b8151811061141e5761141e611bc9565b60200101906001600160f81b031916908160001a9053508061143f81611c17565b91505061132f565b508315611477578160405160200161145f9190611d09565b60405160208183030381529060405292505050610ec8565b509392505050565b600082516041146114a3576040516356b00a4f60e11b815260040160405180910390fd5b60208301516040840151606085015160001a601b8110156114cc576114c9601b82611d33565b90505b601b8160ff1610806114e15750601c8160ff16115b156114ff576040516356b00a4f60e11b815260040160405180910390fd5b600061150d8683868661155e565b50979650505050505050565b600081815b84518110156114775761154a8286838151811061153d5761153d611bc9565b6020026020010151611622565b91508061155681611c17565b91505061151e565b6000807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a08311156115955750600090506003611619565b6040805160008082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa1580156115e9573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b03811661161257600060019250925050611619565b9150600090505b94509492505050565b600081831061163e57600082815260208490526040902061164d565b60008381526020839052604090205b9392505050565b80356001600160a01b038116811461166b57600080fd5b919050565b60006020828403121561168257600080fd5b61164d82611654565b6000806040838503121561169e57600080fd5b823591506116ae60208401611654565b90509250929050565b60005b838110156116d25781810151838201526020016116ba565b50506000910152565b600081518084526116f38160208601602086016116b7565b601f01601f19169290920160200192915050565b60208152600061164d60208301846116db565b60008083601f84011261172c57600080fd5b50813567ffffffffffffffff81111561174457600080fd5b60208301915083602082850101111561175c57600080fd5b9250929050565b6000806000806040858703121561177957600080fd5b843567ffffffffffffffff8082111561179157600080fd5b61179d8883890161171a565b909650945060208701359150808211156117b657600080fd5b506117c38782880161171a565b95989497509550505050565b60008083601f8401126117e157600080fd5b50813567ffffffffffffffff8111156117f957600080fd5b6020830191508360208260051b850101111561175c57600080fd5b60008060008060008060008060008060c08b8d03121561183357600080fd5b8a35995060208b0135985060408b013567ffffffffffffffff8082111561185957600080fd5b6118658e838f0161171a565b909a50985060608d013591508082111561187e57600080fd5b61188a8e838f0161171a565b909850965060808d01359150808211156118a357600080fd5b6118af8e838f0161171a565b909650945060a08d01359150808211156118c857600080fd5b506118d58d828e016117cf565b915080935050809150509295989b9194979a5092959850565b60006020828403121561190057600080fd5b5035919050565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b604081526000611944604083018688611907565b8281036020840152611957818587611907565b979650505050505050565b600084516119748184602089016116b7565b91909101928352506020820152604001919050565b60808152600061199c60808301876116db565b6020830195909552506001600160a01b03929092166040830152606090910152919050565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b60008251611a1e8184602087016116b7565b9190910192915050565b7f7b226163636f756e745f6e756d626572223a2230222c22636861696e5f6964228152611d1160f11b602082015260008551611a6b816022850160208a016116b7565b7f222c2264617461223a6e756c6c2c226d656d6f223a22222c226d736773223a5b6022918401918201526a3d9130b6b7bab73a111d1160a91b60428201528551611abc81604d840160208a016116b7565b6e1116113932b1b4b834b2b73a111d1160891b604d92909101918201528451611aec81605c8401602089016116b7565b711116113a37b5b2b72fb9bcb6b137b6111d1160711b605c92909101918201528351611b1f81606e8401602088016116b7565b7f227d5d2c2273657175656e6365223a2230222c22736f75726365223a2230227d606e9290910191820152608e019695505050505050565b600060208284031215611b6957600080fd5b5051919050565b634e487b7160e01b600052604160045260246000fd5b60008451611b988184602089016116b7565b845190830190611bac8183602089016116b7565b8451910190611bbf8183602088016116b7565b0195945050505050565b634e487b7160e01b600052603260045260246000fd5b60008351611bf18184602088016116b7565b9190910191825250602001919050565b634e487b7160e01b600052601160045260246000fd5b600060018201611c2957611c29611c01565b5060010190565b60008751611c42818460208c016116b7565b606088901b6bffffffffffffffffffffffff19169083019081528651611c6f816014840160208b016116b7565b0160148101869052603481018590528351611c918160548401602088016116b7565b0160540198975050505050505050565b8082028115828204841417610ec857610ec8611c01565b634e487b7160e01b600052601260045260246000fd5b600082611cdd57611cdd611cb8565b500490565b600082611cf157611cf1611cb8565b500690565b80820180821115610ec857610ec8611c01565b61060f60f31b815260008251611d268160028501602087016116b7565b9190910160020192915050565b60ff8181168382160190811115610ec857610ec8611c0156fea164736f6c6343000811000a \ No newline at end of file +608060405234801561001057600080fd5b50600436106101005760003560e01c80638456cb5911610097578063bfb5a6a111610066578063bfb5a6a114610212578063dd42a1dd14610225578063e33f8d321461024f578063e842426a1461027257600080fd5b80638456cb59146101df5780639fcb5012146101e7578063ac431751146101f4578063b187bd261461020757600080fd5b80634a49ac4c116100d35780634a49ac4c14610171578063572c99801461018457806374be2150146101975780638129fc1c146101d757600080fd5b8063046f7da2146101055780632eb4a7ab1461010f578063417c73a71461012b5780634838d1651461013e575b600080fd5b61010d610285565b005b61011860685481565b6040519081526020015b60405180910390f35b61010d61013936600461168d565b61030d565b61016161014c36600461168d565b60346020526000908152604090205460ff1681565b6040519015158152602001610122565b61010d61017f36600461168d565b610389565b61010d6101923660046116a8565b610402565b6101ca6040518060400160405280601481526020017342696e616e63652d436861696e2d54696772697360601b81525081565b6040516101229190611724565b61010d610498565b61010d61060a565b6069546101619060ff1681565b61010d610202366004611780565b610696565b60335460ff16610161565b61010d610220366004611831565b610ab5565b60335461010090046001600160a01b03165b6040516001600160a01b039091168152602001610122565b61016161025d36600461190b565b6000908152606a602052604090205460ff1690565b606754610237906001600160a01b031681565b60335461010090046001600160a01b031633146102b5576040516306fbb1e360e01b815260040160405180910390fd5b60335460ff166102d857604051636cd6020160e01b815260040160405180910390fd5b6033805460ff191690556040517f62451d457bc659158be6e6247f56ec1df424a5c7597f71c20c2bc44e0965c8f990600090a1565b60335461010090046001600160a01b0316331461033d576040516306fbb1e360e01b815260040160405180910390fd5b6001600160a01b038116600081815260346020526040808220805460ff19166001179055517f7fd26be6fc92aff63f1f4409b2b2ddeb272a888031d7f55ec830485ec61941869190a250565b60335461010090046001600160a01b031633146103b9576040516306fbb1e360e01b815260040160405180910390fd5b6001600160a01b038116600081815260346020526040808220805460ff19169055517fe0db3499b7fdc3da4cddff5f45d694549c19835e7f719fb5606d3ad1a5de40119190a250565b60335461010090046001600160a01b03163314610432576040516306fbb1e360e01b815260040160405180910390fd5b604051638525db0360e01b8152600481018390526001600160a01b038216602482015261100490638525db0390604401600060405180830381600087803b15801561047c57600080fd5b505af1158015610490573d6000803e3d6000fd5b505050505050565b600054610100900460ff16158080156104b85750600054600160ff909116105b806104d25750303b1580156104d2575060005460ff166001145b61053a5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084015b60405180910390fd5b6000805460ff19166001179055801561055d576000805461ff0019166101001790555b33411461057d5760405163022d8c9560e31b815260040160405180910390fd5b3a1561059c576040516383f1b1d360e01b815260040160405180910390fd5b6105a4610e15565b6105c17308e68ec70fa3b629784fdb28887e206ce8561e08610e42565b8015610607576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b50565b60335461010090046001600160a01b0316331461063a576040516306fbb1e360e01b815260040160405180910390fd5b60335460ff161561065e57604051631785c68160e01b815260040160405180910390fd5b6033805460ff191660011790556040517f9e87fac88ff661f02d44f95383c817fece4bce600a3dab7a54406878b965e75290600090a1565b33611007146106bc57604051630f22c43960e41b81526110076004820152602401610531565b6107266040518060400160405280600f81526020016e617070726f76616c4164647265737360881b81525085858080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509293925050610e919050565b156107f057601481146107545783838383604051630a5a604160e01b8152600401610531949392919061194d565b600061079a601484848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509293925050610eeb9050565b90506001600160a01b0381166107cb5784848484604051630a5a604160e01b8152600401610531949392919061194d565b606780546001600160a01b0319166001600160a01b0392909216919091179055610a72565b6108556040518060400160405280600a8152602001691b595c9adb19549bdbdd60b21b81525085858080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509293925050610e919050565b156109255760695460ff161561087e576040516379b3306f60e11b815260040160405180910390fd5b602081146108a75783838383604051630a5a604160e01b8152600401610531949392919061194d565b604080516020601f84018190048102820181019092528281526000916108e8918585808385018382808284376000920191909152509293925050610eeb9050565b9050806109105784848484604051630a5a604160e01b8152600401610531949392919061194d565b6068556069805460ff19166001179055610a72565b61099d6040518060400160405280601b81526020017f746f6b656e5265636f766572506f7274616c50726f746563746f72000000000081525085858080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509293925050610e919050565b15610a5157601481146109cb5783838383604051630a5a604160e01b8152600401610531949392919061194d565b6000610a11601484848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509293925050610eeb9050565b90506001600160a01b038116610a425784848484604051630a5a604160e01b8152600401610531949392919061194d565b610a4b81610ef0565b50610a72565b838383836040516325ee20d560e21b8152600401610531949392919061194d565b7ff1ce9b2cbf50eeb05769a29e2543fd350cab46894a7dd9978a12d534bb20e63384848484604051610aa7949392919061194d565b60405180910390a150505050565b60695460ff16610ad85760405163678f619760e11b815260040160405180910390fd5b606854610af85760405163678f619760e11b815260040160405180910390fd5b6067546001600160a01b0316610b2157604051631a1b977b60e31b815260040160405180910390fd5b60335460ff1615610b4557604051631785c68160e01b815260040160405180910390fd5b610b4d610f57565b6000610bdb89898080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050604080516020601f8d018190048102820181019092528b815292508b91508a9081908401838280828437600081840152601f19601f82011690508083019250505050505050610bd68e8e33610fb0565b6110d1565b90506000818c8c604051602001610bf49392919061197f565b604051602081830303815290604052805190602001209050610c25816000908152606a602052604090205460ff1690565b15610c4257604051623e493160e81b815260040160405180910390fd5b610cea3389898080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050604080516020601f8d018190048102820181019092528b815292508b91508a908190840183828082843760009201919091525050604080516020808c0282810182019093528b82528994509092508b918b918291908501908490808284376000920191909152506111a992505050565b610d2b8484808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152505060685491508490506112b4565b610d48576040516309bde33960e01b815260040160405180910390fd5b6000818152606a602052604090819020805460ff191660011790555163799758b960e01b8152600481018d9052336024820152604481018c90526110049063799758b990606401600060405180830381600087803b158015610da957600080fd5b505af1158015610dbd573d6000803e3d6000fd5b505050507f39cc0b7297a0ef9102d75ebc4919ffec0347d50008c2b865eda4125d5812cb64828d338e604051610df694939291906119a6565b60405180910390a15050610e0960018055565b50505050505050505050565b600054610100900460ff16610e3c5760405162461bcd60e51b8152600401610531906119de565b60018055565b600054610100900460ff16610e695760405162461bcd60e51b8152600401610531906119de565b603380546001600160a01b0390921661010002610100600160a81b0319909216919091179055565b600081604051602001610ea49190611a29565b6040516020818303038152906040528051906020012083604051602001610ecb9190611a29565b604051602081830303815290604052805190602001201490505b92915050565b015190565b6033546040516001600160a01b0380841692610100900416907f44fc1b38a4abaa91ebd1b628a5b259a698f86238c8217d68f516e87769c60c0b90600090a3603380546001600160a01b0390921661010002610100600160a81b0319909216919091179055565b600260015403610fa95760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610531565b6002600155565b600060026040518060400160405280601481526020017342696e616e63652d436861696e2d54696772697360601b81525061100d85604051602001610ff791815260200190565b60405160208183030381529060405260006112ca565b6040516bffffffffffffffffffffffff19606087901b1660208201526110469060340160405160208183030381529060405260016112ca565b61105c88604051602001610ff791815260200190565b60405160200161106f9493929190611a45565b60408051601f198184030181529082905261108991611a29565b602060405180830381855afa1580156110a6573d6000803e3d6000fd5b5050506040513d601f19601f820116820180604052508101906110c99190611b74565b949350505050565b606083516021146110f557604051638152ea1b60e01b815260040160405180910390fd5b825160401461111757604051635e4bd79760e11b815260040160405180910390fd5b604080516020808252818301909252600091602082018180368337019050509050826020820152600085858360405160200161115593929190611ba3565b60408051808303601f190181526014808452838301909252925060009190602082018180368337019050509050815160146020830182602086016069600019fa61119e57600080fd5b509695505050505050565b606060005b825181101561120757818382815181106111ca576111ca611be6565b60200260200101516040516020016111e3929190611bfc565b604051602081830303815290604052915080806111ff90611c34565b9150506111ae565b5060006040518060400160405280601481526020017342696e616e63652d436861696e2d54696772697360601b8152508787866068548660405160200161125396959493929190611c4d565b60408051601f1981840301815291905280516020909101206067549091506001600160a01b0316611284868361149c565b6001600160a01b0316146112ab576040516356b00a4f60e11b815260040160405180910390fd5b50505050505050565b6000826112c18584611536565b14949350505050565b60606000835160026112dc9190611cbe565b67ffffffffffffffff8111156112f4576112f4611b8d565b6040519080825280601f01601f19166020018201604052801561131e576020820181803683370190505b5060408051808201909152601081526f181899199a1a9b1b9c1cb0b131b232b360811b602082015290915060005b85518110156114645781825187838151811061136a5761136a611be6565b016020015161137c919060f81c611ceb565b8151811061138c5761138c611be6565b01602001516001600160f81b031916836113a7836002611cbe565b815181106113b7576113b7611be6565b60200101906001600160f81b031916908160001a9053508182518783815181106113e3576113e3611be6565b01602001516113f5919060f81c611cff565b8151811061140557611405611be6565b01602001516001600160f81b03191683611420836002611cbe565b61142b906001611d13565b8151811061143b5761143b611be6565b60200101906001600160f81b031916908160001a9053508061145c81611c34565b91505061134c565b508315611494578160405160200161147c9190611d26565b60405160208183030381529060405292505050610ee5565b509392505050565b600082516041146114c0576040516356b00a4f60e11b815260040160405180910390fd5b60208301516040840151606085015160001a601b8110156114e9576114e6601b82611d50565b90505b601b8160ff1610806114fe5750601c8160ff16115b1561151c576040516356b00a4f60e11b815260040160405180910390fd5b600061152a8683868661157b565b50979650505050505050565b600081815b8451811015611494576115678286838151811061155a5761155a611be6565b602002602001015161163f565b91508061157381611c34565b91505061153b565b6000807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a08311156115b25750600090506003611636565b6040805160008082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa158015611606573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b03811661162f57600060019250925050611636565b9150600090505b94509492505050565b600081831061165b57600082815260208490526040902061166a565b60008381526020839052604090205b9392505050565b80356001600160a01b038116811461168857600080fd5b919050565b60006020828403121561169f57600080fd5b61166a82611671565b600080604083850312156116bb57600080fd5b823591506116cb60208401611671565b90509250929050565b60005b838110156116ef5781810151838201526020016116d7565b50506000910152565b600081518084526117108160208601602086016116d4565b601f01601f19169290920160200192915050565b60208152600061166a60208301846116f8565b60008083601f84011261174957600080fd5b50813567ffffffffffffffff81111561176157600080fd5b60208301915083602082850101111561177957600080fd5b9250929050565b6000806000806040858703121561179657600080fd5b843567ffffffffffffffff808211156117ae57600080fd5b6117ba88838901611737565b909650945060208701359150808211156117d357600080fd5b506117e087828801611737565b95989497509550505050565b60008083601f8401126117fe57600080fd5b50813567ffffffffffffffff81111561181657600080fd5b6020830191508360208260051b850101111561177957600080fd5b60008060008060008060008060008060c08b8d03121561185057600080fd5b8a35995060208b0135985060408b013567ffffffffffffffff8082111561187657600080fd5b6118828e838f01611737565b909a50985060608d013591508082111561189b57600080fd5b6118a78e838f01611737565b909850965060808d01359150808211156118c057600080fd5b6118cc8e838f01611737565b909650945060a08d01359150808211156118e557600080fd5b506118f28d828e016117ec565b915080935050809150509295989b9194979a5092959850565b60006020828403121561191d57600080fd5b5035919050565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b604081526000611961604083018688611924565b8281036020840152611974818587611924565b979650505050505050565b600084516119918184602089016116d4565b91909101928352506020820152604001919050565b6080815260006119b960808301876116f8565b6020830195909552506001600160a01b03929092166040830152606090910152919050565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b60008251611a3b8184602087016116d4565b9190910192915050565b7f7b226163636f756e745f6e756d626572223a2230222c22636861696e5f6964228152611d1160f11b602082015260008551611a88816022850160208a016116d4565b7f222c2264617461223a6e756c6c2c226d656d6f223a22222c226d736773223a5b6022918401918201526a3d9130b6b7bab73a111d1160a91b60428201528551611ad981604d840160208a016116d4565b6e1116113932b1b4b834b2b73a111d1160891b604d92909101918201528451611b0981605c8401602089016116d4565b711116113a37b5b2b72fb9bcb6b137b6111d1160711b605c92909101918201528351611b3c81606e8401602088016116d4565b7f227d5d2c2273657175656e6365223a2230222c22736f75726365223a2230227d606e9290910191820152608e019695505050505050565b600060208284031215611b8657600080fd5b5051919050565b634e487b7160e01b600052604160045260246000fd5b60008451611bb58184602089016116d4565b845190830190611bc98183602089016116d4565b8451910190611bdc8183602088016116d4565b0195945050505050565b634e487b7160e01b600052603260045260246000fd5b60008351611c0e8184602088016116d4565b9190910191825250602001919050565b634e487b7160e01b600052601160045260246000fd5b600060018201611c4657611c46611c1e565b5060010190565b60008751611c5f818460208c016116d4565b606088901b6bffffffffffffffffffffffff19169083019081528651611c8c816014840160208b016116d4565b0160148101869052603481018590528351611cae8160548401602088016116d4565b0160540198975050505050505050565b8082028115828204841417610ee557610ee5611c1e565b634e487b7160e01b600052601260045260246000fd5b600082611cfa57611cfa611cd5565b500490565b600082611d0e57611d0e611cd5565b500690565b80820180821115610ee557610ee5611c1e565b61060f60f31b815260008251611d438160028501602087016116d4565b9190910160020192915050565b60ff8181168382160190811115610ee557610ee5611c1e56fea164736f6c6343000811000a \ No newline at end of file diff --git a/core/systemcontracts/pascal/mainnet/ValidatorContract b/core/systemcontracts/pascal/mainnet/ValidatorContract index 4137ae8504..f3b678991d 100644 --- a/core/systemcontracts/pascal/mainnet/ValidatorContract +++ b/core/systemcontracts/pascal/mainnet/ValidatorContract @@ -1 +1 @@ -6080604052600436106104565760003560e01c80638c5d749d1161023f578063c81b166211610139578063e1c7392a116100b6578063f92eb86b1161007a578063f92eb86b14610b7f578063f9a2bbc714610b94578063fccc281314610ba9578063fd4ad81f14610bbe578063fd6a687914610bed5761045d565b8063e1c7392a14610b02578063e40716a114610b17578063ea321e4914610b2c578063eb57e20214610b4c578063f340fa0114610b6c5761045d565b8063d68fb56a116100fd578063d68fb56a14610a99578063daacdb6614610aae578063dc927faf14610ac3578063df8079e914610ad8578063e086c7b114610aed5761045d565b8063c81b166214610a3a578063c8509d81146107fc578063cb75a59214610a4f578063ce910b0c14610a64578063d58918ae14610a845761045d565b8063aa82dce1116101c7578063aef198a91161018b578063aef198a9146109c4578063b7ab4db5146109d9578063b8cf4ef1146109fb578063c466689d14610a10578063c6d3394514610a255761045d565b8063aa82dce114610938578063aad560631461094d578063ab51bb9614610962578063ac43175114610984578063ad3c9da6146109a45761045d565b80639fe0f8161161020e5780639fe0f816146108cf578063a0dc2758146108e4578063a1a11bf5146108f9578063a5422d5c1461090e578063a78abc16146109235761045d565b80638c5d749d146108705780638d19a410146108855780639369d7de146108a55780639dc09262146108ba5761045d565b80635192c82c1161035057806375d47a0a116102d8578063831d65d11161029c578063831d65d1146107fc578063862498821461081c57806388b32f11146108315780638a7beb01146108465780638b5ad0c91461085b5761045d565b806375d47a0a1461079357806378dfed4a146107a85780637a84ca2a146107bd5780637e434d54146107d2578063820dcaa8146107e75761045d565b8063565c56b31161031f578063565c56b3146106f757806360eba4fe1461071757806362b72cf5146107375780636969a25c1461074c5780636e47b4821461077e5761045d565b80635192c82c1461069857806351b4dce3146106ad57806351e80672146106c257806355614fcc146106d75761045d565b80632a0ffb6e116103de5780633b071dcc116103a25780633b071dcc1461061457806343756e5c1461063757806345cf9daf1461064c578063493279b1146106615780634df6e0c3146106835761045d565b80632a0ffb6e14610574578063300c356714610594578063321d398a146105b45780633365af3a146105d457806335409f7f146105f45761045d565b8063152ad3b811610425578063152ad3b8146104f35780631bd14ed8146105155780631e4c15241461052a5780631ff180691461054a578063280870281461055f5761045d565b806304c4fec61461046257806307a56847146104795780630e2374a5146104a45780631182b875146104c65761045d565b3661045d57005b600080fd5b34801561046e57600080fd5b50610477610c02565b005b34801561048557600080fd5b5061048e610c76565b60405161049b9190616d4d565b60405180910390f35b3480156104b057600080fd5b506104b9610c7c565b60405161049b9190616103565b3480156104d257600080fd5b506104e66104e1366004615fe9565b610c82565b60405161049b9190616223565b3480156104ff57600080fd5b50610508610d9e565b60405161049b9190616218565b34801561052157600080fd5b5061048e610da7565b34801561053657600080fd5b50610477610545366004615e17565b610dad565b34801561055657600080fd5b5061048e6110e1565b34801561056b57600080fd5b506104b96110e7565b34801561058057600080fd5b5061047761058f366004615d77565b6110ed565b3480156105a057600080fd5b506104776105af366004615daf565b61110e565b3480156105c057600080fd5b506105086105cf366004615f96565b611457565b3480156105e057600080fd5b506105086105ef366004615f96565b611526565b34801561060057600080fd5b5061047761060f366004615d77565b6115d7565b34801561062057600080fd5b5061062961173c565b60405161049b9291906161a8565b34801561064357600080fd5b506104b9611a18565b34801561065857600080fd5b5061048e611a1e565b34801561066d57600080fd5b50610676611a24565b60405161049b9190616d3e565b34801561068f57600080fd5b50610629611a29565b3480156106a457600080fd5b5061048e611bb5565b3480156106b957600080fd5b506104b9611bbb565b3480156106ce57600080fd5b506104b9611bc1565b3480156106e357600080fd5b506105086106f2366004615d77565b611bc7565b34801561070357600080fd5b5061048e610712366004615d77565b611c03565b34801561072357600080fd5b506104e6610732366004615f96565b611c54565b34801561074357600080fd5b5061048e611cfa565b34801561075857600080fd5b5061076c610767366004615f96565b611d00565b60405161049b96959493929190616130565b34801561078a57600080fd5b506104b9611d64565b34801561079f57600080fd5b506104b9611d6a565b3480156107b457600080fd5b5061048e611d70565b3480156107c957600080fd5b5061048e611d76565b3480156107de57600080fd5b506104b9611d7c565b3480156107f357600080fd5b5061048e611d82565b34801561080857600080fd5b50610477610817366004615fe9565b611d88565b34801561082857600080fd5b5061048e611da9565b34801561083d57600080fd5b5061048e611daf565b34801561085257600080fd5b50610508611db5565b34801561086757600080fd5b5061048e611dbe565b34801561087c57600080fd5b5061048e611dc4565b34801561089157600080fd5b5061048e6108a0366004615d77565b611de1565b3480156108b157600080fd5b50610477611e21565b3480156108c657600080fd5b506104b9611f35565b3480156108db57600080fd5b5061048e611f3b565b3480156108f057600080fd5b5061048e611f40565b34801561090557600080fd5b506104b9611f45565b34801561091a57600080fd5b506104e6611f4b565b34801561092f57600080fd5b50610508611f6a565b34801561094457600080fd5b506104b9611f73565b34801561095957600080fd5b506104b9611f79565b34801561096e57600080fd5b50610977611f7f565b60405161049b9190616d80565b34801561099057600080fd5b5061047761099f366004615f3a565b611f84565b3480156109b057600080fd5b5061048e6109bf366004615d77565b612976565b3480156109d057600080fd5b5061048e612988565b3480156109e557600080fd5b506109ee612995565b60405161049b9190616195565b348015610a0757600080fd5b5061048e612a80565b348015610a1c57600080fd5b5061048e612a85565b348015610a3157600080fd5b5061048e612a8b565b348015610a4657600080fd5b506104b9612a90565b348015610a5b57600080fd5b5061048e612a96565b348015610a7057600080fd5b506104e6610a7f366004615f96565b612a9c565b348015610a9057600080fd5b5061048e612aa9565b348015610aa557600080fd5b5061048e612aaf565b348015610aba57600080fd5b5061048e612aee565b348015610acf57600080fd5b506104b9612af4565b348015610ae457600080fd5b506104b9612afa565b348015610af957600080fd5b5061048e612b00565b348015610b0e57600080fd5b50610477612b05565b348015610b2357600080fd5b5061048e612cae565b348015610b3857600080fd5b50610508610b47366004615efb565b612cb4565b348015610b5857600080fd5b50610477610b67366004615d77565b612e3a565b610477610b7a366004615d77565b612f42565b348015610b8b57600080fd5b5061048e6132f8565b348015610ba057600080fd5b506104b96132fe565b348015610bb557600080fd5b506104b9613304565b348015610bca57600080fd5b50610bde610bd9366004615f96565b61330a565b60405161049b93929190616d56565b348015610bf957600080fd5b506104b96133cc565b6000610c0d33611de1565b9050600b8181548110610c1c57fe5b600091825260209091206001601690920201015460ff16610c585760405162461bcd60e51b8152600401610c4f906169f5565b60405180910390fd5b6000610c62612aaf565b9050610c7133838360016133d2565b505050565b60095481565b61200181565b60005460609060ff16610ca75760405162461bcd60e51b8152600401610c4f906163ab565b3361200014610cc85760405162461bcd60e51b8152600401610c4f90616b56565b600b54610d8657610cd7615923565b60015460005b81811015610d8257600b80546001810182556000919091528351600080516020616e1883398151915260169092029182019081556020808601516000805160206174478339815191528401805460ff1916911515919091179055604086015180518794610d5e93600080516020616e38833981519152909101920190615952565b506060820151610d7490600383019060136159cc565b505050806001019050610cdd565b5050505b60405162461bcd60e51b8152600401610c4f9061665a565b60075460ff1681565b600f5481565b334114610dcc5760405162461bcd60e51b8152600401610c4f90616ba5565b3a15610dea5760405162461bcd60e51b8152600401610c4f90616934565b8251604080518281526020808402820101909152606090828015610e2857816020015b610e156159f9565b815260200190600190039081610e0d5790505b50905060005b82811015610ed2576040518060c00160405280878381518110610e4d57fe5b60200260200101516001600160a01b0316815260200160006001600160a01b0316815260200160006001600160a01b03168152602001868381518110610e8f57fe5b60200260200101516001600160401b031681526020016000151581526020016000815250828281518110610ebf57fe5b6020908102919091010152600101610e2e565b50606080610ee083866135c4565b9150915060005b600154811015610fd657600060018281548110610f0057fe5b906000526020600020906004020160030154905080600014610fcd57600060018381548110610f2b57fe5b9060005260206000209060040201600301819055506120026001600160a01b031663092193ab8260018581548110610f5f57fe5b60009182526020909120600491820201546040516001600160e01b031960e086901b168152610f9a926001600160a01b039092169101616103565b6000604051808303818588803b158015610fb357600080fd5b505af1158015610fc7573d6000803e3d6000fd5b50505050505b50600101610ee7565b504715611044577f6ecc855f9440a9282c90913bbc91619fd44f5ec0b462af28d127b116f130aa4d4760405161100c9190616d4d565b60405180910390a1604051611002904780156108fc02916000818181858888f19350505050158015611042573d6000803e3d6000fd5b505b600060035581511561105a5761105a8282613aae565b6110016001600160a01b031663fc4333cd6040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561109757600080fd5b505af11580156110ab573d6000803e3d6000fd5b50506040517fedd8d7296956dd970ab4de3f2fc03be2b0ffc615d20cd4c72c6e44f928630ebf925060009150a150505050505050565b60035481565b61200581565b3361200214610d865760405162461bcd60e51b8152600401610c4f90616d07565b33411461112d5760405162461bcd60e51b8152600401610c4f90616ba5565b601054431161114e5760405162461bcd60e51b8152600401610c4f90616584565b3a1561116c5760405162461bcd60e51b8152600401610c4f90616934565b60005460ff1661118e5760405162461bcd60e51b8152600401610c4f906163ab565b60006110023168056bc75e2d631000008111156111c5576111be8168056bc75e2d6310000063ffffffff61429d16565b91506111cc565b505061144d565b6040516309a99b4f60e41b815261100290639a99b4f0906111f39030908690600401616117565b602060405180830381600087803b15801561120d57600080fd5b505af1158015611221573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112459190615fae565b91508161125357505061144d565b6000805b848110156112815785858281811061126b57fe5b9050602002013582019150806001019050611257565b508061128f5750505061144d565b6000806000805b8981101561144557848989838181106112ab57fe5b905060200201358802816112bb57fe5b0493508a8a828181106112ca57fe5b90506020020160208101906112df9190615d77565b6001600160a01b038116600090815260046020526040902054909350915081156113fb57600060018084038154811061131457fe5b9060005260206000209060040201905080600201601c9054906101000a900460ff161561138157836001600160a01b03167fb9c75cbbfde137c4281689580799ef5f52144e78858f776a5979b2b212137d85866040516113749190616d4d565b60405180910390a26113f5565b600354611394908663ffffffff6142df16565b60039081558101546113ac908663ffffffff6142df16565b60038201556040516001600160a01b038516907fcb0aad6cf9cd03bdf6137e359f541c42f38b39f007cae8e89e88aa7d8c6617b2906113ec908890616d4d565b60405180910390a25b5061143d565b826001600160a01b03167fb9c75cbbfde137c4281689580799ef5f52144e78858f776a5979b2b212137d85856040516114349190616d4d565b60405180910390a25b600101611296565b505050505050505b5050436010555050565b600154600090821061146b57506000611521565b60006001600160a01b03166001838154811061148357fe5b60009182526020909120600490910201546001600160a01b031614806114b3575060085415806114b35750600a54155b806114c2575060085460095410155b806114d357506114d182611526565b155b806114fc57506000600b83815481106114e857fe5b906000526020600020906016020160000154115b806115105750600161150c612995565b5111155b1561151d57506000611521565b5060015b919050565b600154600090821061153a57506000611521565b600b548210611577576001828154811061155057fe5b9060005260206000209060040201600201601c9054906101000a900460ff16159050611521565b6001828154811061158457fe5b9060005260206000209060040201600201601c9054906101000a900460ff161580156115d15750600b82815481106115b857fe5b600091825260209091206001601690920201015460ff16155b92915050565b600b54611695576115e6615923565b60015460005b8181101561169157600b80546001810182556000919091528351600080516020616e1883398151915260169092029182019081556020808601516000805160206174478339815191528401805460ff191691151591909117905560408601518051879461166d93600080516020616e38833981519152909101920190615952565b50606082015161168390600383019060136159cc565b5050508060010190506115ec565b5050505b3361100114806116a6575033612002145b6116c25760405162461bcd60e51b8152600401610c4f906163e2565b6001600160a01b038116600090815260046020526040902054806116e65750611739565b6001810390506000600b82815481106116fb57fe5b600091825260209091206001601690920201015460ff16905061171e8383614304565b80156117275750805b15610c71576009805460001901905550505b50565b60015460609081906000805b8281101561178f576001818154811061175d57fe5b9060005260206000209060040201600201601c9054906101000a900460ff16611787576001909101905b600101611748565b506060816040519080825280602002602001820160405280156117bc578160200160208202803683370190505b5090506060826040519080825280602002602001820160405280156117f557816020015b60608152602001906001900390816117e05790505b50600b54600094509091508414156119705760005b8481101561196a576001818154811061181f57fe5b9060005260206000209060040201600201601c9054906101000a900460ff16611962576001818154811061184f57fe5b600091825260209091206004909102015483516001600160a01b039091169084908690811061187a57fe5b60200260200101906001600160a01b031690816001600160a01b031681525050600b81815481106118a757fe5b600091825260209182902060026016909202018101805460408051601f60001961010060018616150201909316949094049182018590048502840185019052808352919290919083018282801561193f5780601f106119145761010080835404028352916020019161193f565b820191906000526020600020905b81548152906001019060200180831161192257829003601f168201915b505050505082858151811061195057fe5b60209081029190910101526001909301925b60010161180a565b50611a0c565b60005b84811015611a0a576001818154811061198857fe5b9060005260206000209060040201600201601c9054906101000a900460ff16611a0257600181815481106119b857fe5b600091825260209091206004909102015483516001600160a01b03909116908490869081106119e357fe5b6001600160a01b03909216602092830291909101909101526001909301925b600101611973565b505b909450925050505b9091565b61100181565b60085481565b603881565b6060806000600e549050600080600c5411611a45576015611a49565b600c545b90506060611a55612995565b90506060611a62826146c7565b905082825111611a79579094509250611a14915050565b83838351031015611a8b578282510393505b8315611ac15760c84304611aa783838388880360008a8a614835565b611abf8383838888038989038a8b8b8b510301614835565b505b606083604051908082528060200260200182016040528015611aed578160200160208202803683370190505b509050606084604051908082528060200260200182016040528015611b2657816020015b6060815260200190600190039081611b115790505b50905060005b85811015611ba757848181518110611b4057fe5b6020026020010151838281518110611b5457fe5b60200260200101906001600160a01b031690816001600160a01b031681525050838181518110611b8057fe5b6020026020010151828281518110611b9457fe5b6020908102919091010152600101611b2c565b509096509450505050509091565b60065481565b61200681565b61200081565b6001600160a01b03811660009081526004602052604081205480611bef576000915050611521565b60001901611bfc81611526565b9392505050565b6001600160a01b03811660009081526004602052604081205480611c2b576000915050611521565b600180820381548110611c3a57fe5b906000526020600020906004020160030154915050919050565b60128181548110611c6157fe5b600091825260209182902001805460408051601f6002600019610100600187161502019094169390930492830185900485028101850190915281815293509091830182828015611cf25780601f10611cc757610100808354040283529160200191611cf2565b820191906000526020600020905b815481529060010190602001808311611cd557829003601f168201915b505050505081565b60105481565b60018181548110611d0d57fe5b600091825260209091206004909102018054600182015460028301546003909301546001600160a01b0392831694509082169291821691600160a01b81046001600160401b031691600160e01b90910460ff169086565b61100581565b61100881565b6103e881565b600c5481565b61200381565b61271081565b3361200014610d865760405162461bcd60e51b8152600401610c4f90616b56565b60025481565b60115481565b60145460ff1681565b600a5481565b600060175460001415611dd957506001611dde565b506017545b90565b6001600160a01b03811660009081526004602052604081205480611e175760405162461bcd60e51b8152600401610c4f90616ade565b6000190192915050565b600b54611edf57611e30615923565b60015460005b81811015611edb57600b80546001810182556000919091528351600080516020616e1883398151915260169092029182019081556020808601516000805160206174478339815191528401805460ff1916911515919091179055604086015180518794611eb793600080516020616e38833981519152909101920190615952565b506060820151611ecd90600383019060136159cc565b505050806001019050611e36565b5050505b600854611eec5760036008555b600a54611ef9576002600a555b6000611f0433611de1565b9050611f0f81611457565b611f2b5760405162461bcd60e51b8152600401610c4f906168b0565b611739338261498c565b61100781565b600381565b60c881565b61100681565b6040518061062001604052806105ef8152602001616e586105ef913981565b60005460ff1681565b61200281565b61300081565b600081565b60005460ff16611fa65760405162461bcd60e51b8152600401610c4f906163ab565b3361100714611fc75760405162461bcd60e51b8152600401610c4f90616962565b61202784848080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250506040805180820190915260098152686275726e526174696f60b81b60208201529150614a249050565b156120dc576020811461204c5760405162461bcd60e51b8152600401610c4f90616268565b604080516020601f840181900481028201810190925282815260009161208a91858580838501838280828437600092019190915250614a7d92505050565b90506127106120b66018546120aa600f54856142df90919063ffffffff16565b9063ffffffff6142df16565b11156120d45760405162461bcd60e51b8152600401610c4f9061667e565b600655612933565b61214684848080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250506040805180820190915260138152726d61784e756d4f664d61696e7461696e696e6760681b60208201529150614a249050565b156121e0576020811461216b5760405162461bcd60e51b8152600401610c4f9061629f565b604080516020601f84018190048102820181019092528281526000916121a991858580838501838280828437600092019190915250614a7d92505050565b600c54909150806121b8575060155b8082106121d75760405162461bcd60e51b8152600401610c4f906165c6565b50600855612933565b61224984848080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250506040805180820190915260128152716d61696e7461696e536c6173685363616c6560701b60208201529150614a249050565b156122e2576020811461226e5760405162461bcd60e51b8152600401610c4f90616331565b604080516020601f84018190048102820181019092528281526000916122ac91858580838501838280828437600092019190915250614a7d92505050565b90506000811180156122be5750600a81105b6122da5760405162461bcd60e51b8152600401610c4f90616c3a565b600a55612933565b61235684848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505060408051808201909152601981527f6d61784e756d4f66576f726b696e6743616e646964617465730000000000000060208201529150614a249050565b156123e5576020811461237b5760405162461bcd60e51b8152600401610c4f906162e5565b604080516020601f84018190048102820181019092528281526000916123b991858580838501838280828437600092019190915250614a7d92505050565b9050600d548111156123dd5760405162461bcd60e51b8152600401610c4f90616787565b600e55612933565b61244e84848080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250506040805180820190915260128152716d61784e756d4f6643616e6469646174657360701b60208201529150614a249050565b156124d057602081146124735760405162461bcd60e51b8152600401610c4f906169b0565b604080516020601f84018190048102820181019092528281526000916124b191858580838501838280828437600092019190915250614a7d92505050565b600d819055600e549091508110156124ca57600d54600e555b50612933565b61253484848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505060408051808201909152600d81526c6e756d4f66436162696e65747360981b60208201529150614a249050565b156125e257602081146125595760405162461bcd60e51b8152600401610c4f90616376565b604080516020601f840181900481028201810190925282815260009161259791858580838501838280828437600092019190915250614a7d92505050565b9050600081116125b95760405162461bcd60e51b8152600401610c4f906164df565b60648111156125da5760405162461bcd60e51b8152600401610c4f90616527565b600c55612933565b61264e84848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505060408051808201909152601581527473797374656d52657761726442617365526174696f60581b60208201529150614a249050565b156126f757602081146126735760405162461bcd60e51b8152600401610c4f90616bf2565b604080516020601f84018190048102820181019092528281526000916126b191858580838501838280828437600092019190915250614a7d92505050565b90506127106126d16018546120aa600654856142df90919063ffffffff16565b11156126ef5760405162461bcd60e51b8152600401610c4f90616450565b600f55612933565b61276b84848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505060408051808201909152601881527f73797374656d526577617264416e74694d4556526174696f000000000000000060208201529150614a249050565b1561281457602081146127905760405162461bcd60e51b8152600401610c4f9061670d565b604080516020601f84018190048102820181019092528281526000916127ce91858580838501838280828437600092019190915250614a7d92505050565b90506127106127ee600f546120aa600654856142df90919063ffffffff16565b111561280c5760405162461bcd60e51b8152600401610c4f90616821565b601855612933565b61287584848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505060408051808201909152600a8152690e8eae4dc98cadccee8d60b31b60208201529150614a249050565b1561291b576020811461289a5760405162461bcd60e51b8152600401610c4f90616623565b604080516020601f84018190048102820181019092528281526000916128d891858580838501838280828437600092019190915250614a7d92505050565b9050600381101580156128ec575060098111155b806128f75750806001145b6129135760405162461bcd60e51b8152600401610c4f90616a58565b601755612933565b60405162461bcd60e51b8152600401610c4f90616c97565b7f6cdb0ac70ab7f2e2d035cca5be60d89906f2dede7648ddbd7402189c1eeed17a848484846040516129689493929190616236565b60405180910390a150505050565b60046020526000908152604090205481565b68056bc75e2d6310000081565b6001546060906000805b828110156129c4576129b081611526565b156129bc578160010191505b60010161299f565b506060816040519080825280602002602001820160405280156129f1578160200160208202803683370190505b5090506000915060005b83811015612a7857612a0c81611526565b15612a705760018181548110612a1e57fe5b600091825260209091206004909102015482516001600160a01b0390911690839085908110612a4957fe5b60200260200101906001600160a01b031690816001600160a01b0316815250508260010192505b6001016129fb565b509250505090565b601581565b61027181565b600281565b61100281565b60175481565b60138181548110611c6157fe5b60185481565b6000612ab9612995565b519050600080600c5411612ace576015612ad2565b600c545b905080821115612ae0578091505b81612aea57600191505b5090565b60055481565b61100381565b61200481565b606481565b60005460ff1615612b285760405162461bcd60e51b8152600401610c4f90616a21565b612b30615a2e565b6000612b566040518061062001604052806105ef8152602001616e586105ef9139614a82565b9150915080612b775760405162461bcd60e51b8152600401610c4f90616b15565b60005b826020015151811015612c9c57600183602001518281518110612b9957fe5b60209081029190910181015182546001818101855560009485528385208351600493840290910180546001600160a01b039283166001600160a01b03199182161782558587015182850180549185169183169190911790556040860151600283018054606089015160808a01511515600160e01b0260ff60e01b196001600160401b03909216600160a01b0267ffffffffffffffff60a01b199590981692909516919091179290921694909417161790915560a090930151600390930192909255918601518051918501939185908110612c6f57fe5b602090810291909101810151516001600160a01b0316825281019190915260400160002055600101612b7a565b50506000805460ff1916600117905550565b600d5481565b601354600090815b81811015612dbd57612da585858080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050601380549092508591508110612d0d57fe5b600091825260209182902001805460408051601f6002600019610100600187161502019094169390930492830185900485028101850190915281815292830182828015612d9b5780601f10612d7057610100808354040283529160200191612d9b565b820191906000526020600020905b815481529060010190602001808311612d7e57829003601f168201915b5050505050614c3e565b15612db5576001925050506115d1565b600101612cbc565b5060125460005b81811015612e2e57612e1586868080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050601280549092508591508110612d0d57fe5b15612e2657600193505050506115d1565b600101612dc4565b50600095945050505050565b3361100114612e5b5760405162461bcd60e51b8152600401610c4f90616cbe565b600b54612f1957612e6a615923565b60015460005b81811015612f1557600b80546001810182556000919091528351600080516020616e1883398151915260169092029182019081556020808601516000805160206174478339815191528401805460ff1916911515919091179055604086015180518794612ef193600080516020616e38833981519152909101920190615952565b506060820151612f0790600383019060136159cc565b505050806001019050612e70565b5050505b6000612f2482614ca2565b9050612f2f81611457565b15612f3e57612f3e828261498c565b5050565b334114612f615760405162461bcd60e51b8152600401610c4f90616ba5565b60005460ff16612f835760405162461bcd60e51b8152600401610c4f906163ab565b60003411612fa35760405162461bcd60e51b8152600401610c4f90616758565b3a15612fc15760405162461bcd60e51b8152600401610c4f90616934565b6001600160a01b03811660009081526004602052604090205460145434919060ff1661300157610271600f556103e86006556014805460ff191660011790555b600f54601754600110801561301857506000601854115b1561303d57600160175403601754438161302e57fe5b06601854028161303a57fe5b04015b60008311801561304d5750600081115b156130fa57600061307661271061306a348563ffffffff614e2516565b9063ffffffff614e5f16565b905080156130f8576040516110029082156108fc029083906000818181858888f193505050501580156130ad573d6000803e3d6000fd5b507f6ecc855f9440a9282c90913bbc91619fd44f5ec0b462af28d127b116f130aa4d816040516130dd9190616d4d565b60405180910390a16130f5848263ffffffff61429d16565b93505b505b60008311801561310c57506000600654115b156131b257600061312e61271061306a60065434614e2590919063ffffffff16565b905080156131b05760405161dead9082156108fc029083906000818181858888f19350505050158015613165573d6000803e3d6000fd5b507f627059660ea01c4733a328effb2294d2f86905bf806da763a89cee254de8bee5816040516131959190616d4d565b60405180910390a16131ad848263ffffffff61429d16565b93505b505b81156132b05760006001808403815481106131c957fe5b9060005260206000209060040201905080600201601c9054906101000a900460ff161561323657846001600160a01b03167ff177e5d6c5764d79c32883ed824111d9b13f5668cf6ab1cc12dd36791dd955b4856040516132299190616d4d565b60405180910390a26132aa565b600354613249908563ffffffff6142df16565b6003908155810154613261908563ffffffff6142df16565b60038201556040516001600160a01b038616907f93a090ecc682c002995fad3c85b30c5651d7fd29b0be5da9d784a3302aedc055906132a1908790616d4d565b60405180910390a25b506132f2565b836001600160a01b03167ff177e5d6c5764d79c32883ed824111d9b13f5668cf6ab1cc12dd36791dd955b4846040516132e99190616d4d565b60405180910390a25b50505050565b600e5481565b61100081565b61dead81565b600b818154811061331757fe5b6000918252602091829020601691909102018054600180830154600280850180546040805161010096831615969096026000190190911692909204601f810188900488028501880190925281845293965060ff909116949192918301828280156133c25780601f10613397576101008083540402835291602001916133c2565b820191906000526020600020905b8154815290600101906020018083116133a557829003601f168201915b5050505050905083565b61100481565b6000600a54600014806133e3575082155b806133ee5750600954155b156133fb575060006135bc565b60096000815460019003919050819055506000613446600a5461306a8661306a600b8a8154811061342857fe5b6000918252602090912060169091020154439063ffffffff61429d16565b90506000600b868154811061345757fe5b906000526020600020906016020160010160006101000a81548160ff0219169083151502179055506000806110016001600160a01b0316638256ace66040518163ffffffff1660e01b8152600401604080518083038186803b1580156134bc57600080fd5b505afa1580156134d0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906134f49190615fc6565b91509150600093508083106135725761350d8888614304565b506040516328aa02b160e01b8152611001906328aa02b190613537908b9087908a90600401616172565b600060405180830381600087803b15801561355157600080fd5b505af1158015613565573d6000803e3d6000fd5b5050505060019350613584565b8183106135845761358288614ca2565b505b6040516001600160a01b038916907fb9d38178dc641ff1817967a63c9078cbcd955a9f1fcd75e0e3636de615d44d3b90600090a25050505b949350505050565b6060806000808080806135d5612aaf565b6001549091505b801561380757600181039250600b83815481106135f557fe5b600091825260209091206001601690920201015460ff16613615576137fe565b6001838154811061362257fe5b600091825260208220600490910201546001600160a01b0316955061364c908690859085906133d2565b935083613658576137fe565b60405163436aa28360e11b81526000908190612002906386d5450690613682908a90600401616103565b60206040518083038186803b15801561369a57600080fd5b505afa1580156136ae573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906136d29190615d93565b90506001600160a01b0381161561375b576040516302ceee9160e11b81526120029063059ddd2290613708908490600401616103565b60206040518083038186803b15801561372057600080fd5b505afa158015613734573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906137589190615d93565b91505b60005b8c518110156137fa57876001600160a01b03168d828151811061377d57fe5b6020026020010151600001516001600160a01b031614806137c65750826001600160a01b03168d82815181106137af57fe5b6020026020010151600001516001600160a01b0316145b156137f25760018d82815181106137d957fe5b60209081029190910101519015156080909101526137fa565b60010161375e565b5050505b600019016135dc565b5060005b89518110156138745789818151811061382057fe5b60200260200101516080015180613860575060006001600160a01b03168a828151811061384957fe5b6020026020010151600001516001600160a01b0316145b1561386c578560010195505b60010161380b565b508851851061395c5760408051600180825281830190925290816020015b61389a6159f9565b815260200190600190039081613892575050604080516001808252818301909252919850602082015b60608152602001906001900390816138c3579050509550886000815181106138e757fe5b6020026020010151876000815181106138fc57fe5b60200260200101819052508760008151811061391457fe5b60200260200101518660008151811061392957fe5b602002602001018190525060008760008151811061394357fe5b6020908102919091010151901515608090910152613aa1565b8489510360405190808252806020026020018201604052801561399957816020015b6139866159f9565b81526020019060019003908161397e5790505b509650848951036040519080825280602002602001820160405280156139d357816020015b60608152602001906001900390816139be5790505b5095506000915060005b8951811015613a9f578981815181106139f257fe5b602002602001015160800151158015613a35575060006001600160a01b03168a8281518110613a1d57fe5b6020026020010151600001516001600160a01b031614155b15613a9757898181518110613a4657fe5b6020026020010151888481518110613a5a57fe5b6020026020010181905250888181518110613a7157fe5b6020026020010151878481518110613a8557fe5b60200260200101819052508260010192505b6001016139dd565b505b50505050505b9250929050565b600154825160005b82811015613bcb576001613ac86159f9565b60018381548110613ad557fe5b600091825260208083206040805160c08101825260049490940290910180546001600160a01b0390811685526001820154811693850193909352600281015492831691840191909152600160a01b82046001600160401b03166060840152600160e01b90910460ff16151560808301526003015460a082015291505b84811015613b9f57878181518110613b6557fe5b6020026020010151600001516001600160a01b031682600001516001600160a01b03161415613b975760009250613b9f565b600101613b51565b508115613bc15780516001600160a01b03166000908152600460205260408120555b5050600101613ab6565b5080821115613c8a57805b82811015613c88576001805480613be957fe5b60008281526020812060046000199093019283020180546001600160a01b0319908116825560018201805490911690556002810180546001600160e81b0319169055600301559055600b805480613c3c57fe5b60008281526020812060166000199093019283020181815560018101805460ff1916905590613c6e6002830182615a52565b613c7c600383016000615a96565b50509055600101613bd6565b505b6000818310613c995781613c9b565b825b905060005b8181101561403f57613d4d868281518110613cb757fe5b602002602001015160018381548110613ccc57fe5b60009182526020918290206040805160c08101825260049390930290910180546001600160a01b0390811684526001820154811694840194909452600281015493841691830191909152600160a01b83046001600160401b03166060830152600160e01b90920460ff161515608082015260039091015460a0820152614ea1565b613f01578060010160046000888481518110613d6557fe5b6020026020010151600001516001600160a01b03166001600160a01b0316815260200190815260200160002081905550858181518110613da157fe5b602002602001015160018281548110613db657fe5b6000918252602091829020835160049092020180546001600160a01b039283166001600160a01b0319918216178255928401516001820180549184169185169190911790556040840151600282018054606087015160808801511515600160e01b0260ff60e01b196001600160401b03909216600160a01b0267ffffffffffffffff60a01b1995909716929097169190911792909216939093171692909217905560a0909101516003909101558451859082908110613e7157fe5b6020026020010151600b8281548110613e8657fe5b90600052602060002090601602016002019080519060200190613eaa929190615952565b506000600b8281548110613eba57fe5b60009182526020822060169190910201600101805460ff191692151592909217909155600b805483908110613eeb57fe5b6000918252602090912060169091020155614037565b858181518110613f0d57fe5b60200260200101516060015160018281548110613f2657fe5b906000526020600020906004020160020160146101000a8154816001600160401b0302191690836001600160401b03160217905550613fec858281518110613f6a57fe5b6020026020010151600b8381548110613f7f57fe5b600091825260209182902060026016909202018101805460408051601f600019610100600186161502019093169490940491820185900485028401850190528083529192909190830182828015612d9b5780601f10612d7057610100808354040283529160200191612d9b565b61403757848181518110613ffc57fe5b6020026020010151600b828154811061401157fe5b90600052602060002090601602016002019080519060200190614035929190615952565b505b600101613ca0565b508282111561421757614050615923565b835b838110156142145785818151811061406657fe5b60200260200101518260400181905250600187828151811061408457fe5b6020908102919091018101518254600181810185556000948552838520835160049093020180546001600160a01b039384166001600160a01b0319918216178255848601518284018054918616918316919091179055604080860151600284018054606089015160808a01511515600160e01b0260ff60e01b196001600160401b03909216600160a01b0267ffffffffffffffff60a01b1995909a1692909616919091179290921696909617169190911790935560a090930151600390930192909255600b8054928301815590935284516016909102600080516020616e188339815191528101918255858301516000805160206174478339815191528201805491151560ff19909216919091179055928501518051869492936141ba93600080516020616e3883398151915201920190615952565b5060608201516141d090600383019060136159cc565b50505080600101600460008984815181106141e757fe5b602090810291909101810151516001600160a01b0316825281019190915260400160002055600101614052565b50505b61421f614efd565b6142276150df565b6000600981905560015493505b83811015614295576000600b828154811061424b57fe5b60009182526020822060169190910201600101805460ff191692151592909217909155600b80548390811061427c57fe5b6000918252602090912060169091020155600101614234565b505050505050565b6000611bfc83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506152cd565b600082820183811015611bfc5760405162461bcd60e51b8152600401610c4f90616419565b6000806001838154811061431457fe5b9060005260206000209060040201600301549050600060018080549050039050600161433e612995565b51116143735760006001858154811061435357fe5b9060005260206000209060040201600301819055506000925050506115d1565b846001600160a01b03167f3b6f9ef90462b512a1293ecec018670bf7b7f1876fb727590a8a6d7643130a70836040516143ac9190616d4d565b60405180910390a26001600160a01b038516600090815260046020526040812055835b6001546000190181101561459957600181600101815481106143ed57fe5b90600052602060002090600402016001828154811061440857fe5b60009182526020909120825460049092020180546001600160a01b03199081166001600160a01b0393841617825560018085015481840180548416918616919091179055600280860180549185018054909416919095161780835584546001600160401b03600160a01b91829004160267ffffffffffffffff60a01b1990911617808355935460ff600160e01b918290041615150260ff60e01b19909416939093179055600392830154920191909155600b8054909183019081106144c957fe5b9060005260206000209060160201600b82815481106144e457fe5b600091825260209091208254601690920201908155600180830154818301805460ff909216151560ff199092169190911790556002808401805461453b938386019390821615610100026000190190911604615aa5565b5061454e60038281019084016013615b1a565b5090505080600101600460006001848154811061456757fe5b600091825260208083206004909202909101546001600160a01b031683528201929092526040019020556001016143cf565b5060018054806145a557fe5b60008281526020812060046000199093019283020180546001600160a01b0319908116825560018201805490911690556002810180546001600160e81b0319169055600301559055600b8054806145f857fe5b60008281526020812060166000199093019283020181815560018101805460ff191690559061462a6002830182615a52565b614638600383016000615a96565b50509055600081838161464757fe5b04905080156146bb5760015460005b818110156146b85761468f836001838154811061466f57fe5b9060005260206000209060040201600301546142df90919063ffffffff16565b6001828154811061469c57fe5b6000918252602090912060036004909202010155600101614656565b50505b50600195945050505050565b60015481516040805182815260208084028201019091526060929190839082801561470657816020015b60608152602001906001900390816146f15790505b50600b54909150831461471d579250611521915050565b60005b8281101561482c57600b60016004600089858151811061473c57fe5b60200260200101516001600160a01b03166001600160a01b0316815260200190815260200160002054038154811061477057fe5b600091825260209182902060026016909202018101805460408051601f6000196101006001861615020190931694909404918201859004850284018501905280835291929091908301828280156148085780601f106147dd57610100808354040283529160200191614808565b820191906000526020600020905b8154815290600101906020018083116147eb57829003601f168201915b505050505082828151811061481957fe5b6020908102919091010152600101614720565b50949350505050565b60005b8281101561498257600082878388016040516020016148589291906160f5565b6040516020818303038152906040528051906020012060001c8161487857fe5b06905080850182870114614979576000898388018151811061489657fe5b60200260200101519050606089848901815181106148b057fe5b602002602001015190508a838801815181106148c857fe5b60200260200101518b858a01815181106148de57fe5b60200260200101906001600160a01b031690816001600160a01b031681525050818b8489018151811061490d57fe5b60200260200101906001600160a01b031690816001600160a01b031681525050898388018151811061493b57fe5b60200260200101518a858a018151811061495157fe5b6020026020010181905250808a8489018151811061496b57fe5b602002602001018190525050505b50600101614838565b5050505050505050565b600980546001908101909155600b8054839081106149a657fe5b906000526020600020906016020160010160006101000a81548160ff02191690831515021790555043600b82815481106149dc57fe5b600091825260208220601690910201919091556040516001600160a01b038416917ff62981a567ec3cec866c6fa93c55bcdf841d6292d18b8d522ececa769375d82d91a25050565b600081604051602001614a3791906160d9565b6040516020818303038152906040528051906020012083604051602001614a5e91906160d9565b6040516020818303038152906040528051906020012014905092915050565b015190565b614a8a615a2e565b6000614a94615a2e565b614a9c615b44565b614aad614aa8866152f9565b61531e565b90506000805b614abc83615368565b15614c305780614ae157614ad7614ad284615389565b6153d7565b60ff168452614c28565b8060011415614c23576060614afd614af885615389565b615457565b90508051604051908082528060200260200182016040528015614b3a57816020015b614b276159f9565b815260200190600190039081614b1f5790505b5085602001819052508051604051908082528060200260200182016040528015614b7857816020015b6060815260200190600190039081614b635790505b50604086015260005b8151811015614c1857614b926159f9565b60606000614bb2858581518110614ba557fe5b6020026020010151615528565b92509250925080614bd2578860009a509a50505050505050505050614c39565b8289602001518581518110614be357fe5b60200260200101819052508189604001518581518110614bff57fe5b6020026020010181905250505050806001019050614b81565b506001925050614c28565b614c30565b600101614ab3565b50919350909150505b915091565b815181516000916001918114808314614c5a5760009250614c98565b600160208701838101602088015b600284838510011415614c93578051835114614c875760009650600093505b60209283019201614c68565b505050505b5090949350505050565b6001600160a01b03811660009081526004602052604081205480614ccb57506000199050611521565b600181039050600060018281548110614ce057fe5b9060005260206000209060040201600301549050600060018381548110614d0357fe5b6000918252602090912060036004909202010155600154604051600019909101906001600160a01b038616907f8cd4e147d8af98a9e3b6724021b8bf6aed2e5dac71c38f2dce8161b82585b25d90614d5c908590616d4d565b60405180910390a280614d7457829350505050611521565b6000818381614d7f57fe5b0490508015614e1b5760005b84811015614dcd57614da4826001838154811061466f57fe5b60018281548110614db157fe5b6000918252602090912060036004909202010155600101614d8b565b50600180549085015b81811015614e1857614def836001838154811061466f57fe5b60018281548110614dfc57fe5b6000918252602090912060036004909202010155600101614dd6565b50505b5091949350505050565b600082614e34575060006115d1565b82820282848281614e4157fe5b0414611bfc5760405162461bcd60e51b8152600401610c4f906168f3565b6000611bfc83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250615642565b805182516000916001600160a01b039182169116148015614edb575081602001516001600160a01b031683602001516001600160a01b0316145b8015611bfc5750506040908101519101516001600160a01b0390811691161490565b60125460135480821115614f4857805b82811015614f46576012805480614f2057fe5b600190038181906000526020600020016000614f3c9190615a52565b9055600101614f0d565b505b6000818310614f575781614f59565b825b905060005b818110156150715761501660128281548110614f7657fe5b600091825260209182902001805460408051601f60026000196101006001871615020190941693909304928301859004850281018501909152818152928301828280156150045780601f10614fd957610100808354040283529160200191615004565b820191906000526020600020905b815481529060010190602001808311614fe757829003601f168201915b505050505060138381548110612d0d57fe5b615069576013818154811061502757fe5b906000526020600020016012828154811061503e57fe5b906000526020600020019080546001816001161561010002031660029004615067929190615aa5565b505b600101614f5e565b5082821115610c7157825b828110156132f25760126013828154811061509357fe5b60009182526020808320845460018181018755958552919093209290910180546150d6949390920192909160026101009282161592909202600019011604615aa5565b5060010161507c565b601354600b548082111561512a57805b8281101561512857601380548061510257fe5b60019003818190600052602060002001600061511e9190615a52565b90556001016150ef565b505b6000818310615139578161513b565b825b905060005b8181101561525a576151f86013828154811061515857fe5b600091825260209182902001805460408051601f60026000196101006001871615020190941693909304928301859004850281018501909152818152928301828280156151e65780601f106151bb576101008083540402835291602001916151e6565b820191906000526020600020905b8154815290600101906020018083116151c957829003601f168201915b5050505050600b8381548110613f7f57fe5b61525257600b818154811061520957fe5b90600052602060002090601602016002016013828154811061522757fe5b906000526020600020019080546001816001161561010002031660029004615250929190615aa5565b505b600101615140565b5082821115610c7157825b828110156132f2576013600b828154811061527c57fe5b6000918252602080832084546001808201875595855291909320601692909202909201600290810180546152c495939094019390926000199082161561010002011604615aa5565b50600101615265565b600081848411156152f15760405162461bcd60e51b8152600401610c4f9190616223565b505050900390565b615301615b64565b506040805180820190915281518152602082810190820152919050565b615326615b44565b61532f82615679565b61533857600080fd5b600061534783602001516156b3565b60208085015160408051808201909152868152920190820152915050919050565b6000615372615b64565b505080518051602091820151919092015191011190565b615391615b64565b61539a82615368565b6153a357600080fd5b602082015160006153b382615716565b80830160209586015260408051808201909152908152938401919091525090919050565b8051600090158015906153ec57508151602110155b6153f557600080fd5b600061540483602001516156b3565b9050808360000151101561542a5760405162461bcd60e51b8152600401610c4f90616aa7565b82516020808501518301805192849003929183101561482c57506020919091036101000a90049392505050565b606061546282615679565b61546b57600080fd5b6000615476836157f7565b90506060816040519080825280602002602001820160405280156154b457816020015b6154a1615b64565b8152602001906001900390816154995790505b50905060006154c685602001516156b3565b60208601510190506000805b8481101561551d576154e383615716565b915060405180604001604052808381526020018481525084828151811061550657fe5b6020908102919091010152918101916001016154d2565b509195945050505050565b6155306159f9565b6060600061553c6159f9565b6060615546615b44565b61554f8761531e565b90506000805b61555e83615368565b1561563357806155895761557961557484615389565b615853565b6001600160a01b0316855261562b565b80600114156155b15761559e61557484615389565b6001600160a01b0316602086015261562b565b80600214156155d9576155c661557484615389565b6001600160a01b0316604086015261562b565b8060031415615605576155ee614ad284615389565b6001600160401b031660608601526001915061562b565b80600414156156265761561f61561a84615389565b61586d565b935061562b565b615633565b600101615555565b50929791965091945092505050565b600081836156635760405162461bcd60e51b8152600401610c4f9190616223565b50600083858161566f57fe5b0495945050505050565b805160009061568a57506000611521565b6020820151805160001a9060c08210156156a957600092505050611521565b5060019392505050565b8051600090811a60808110156156cd576000915050611521565b60b88110806156e8575060c081108015906156e8575060f881105b156156f7576001915050611521565b60c081101561570b5760b519019050611521565b60f519019050611521565b80516000908190811a608081101561573157600191506157f0565b60b881101561574657607e19810191506157f0565b60c081101561579757600060b78203600186019550806020036101000a8651049150600181018201935050808310156157915760405162461bcd60e51b8152600401610c4f906167f6565b506157f0565b60f88110156157ac5760be19810191506157f0565b600060f78203600186019550806020036101000a8651049150600181018201935050808310156157ee5760405162461bcd60e51b8152600401610c4f906167f6565b505b5092915050565b805160009061580857506000611521565b6000809050600061581c84602001516156b3565b602085015185519181019250015b8082101561584a5761583b82615716565b8201915082600101925061582a565b50909392505050565b805160009060151461586457600080fd5b6115d1826153d7565b805160609061587b57600080fd5b600061588a83602001516156b3565b83516040805191839003808352601f19601f82011683016020019091529192506060908280156158c1576020820181803683370190505b509050600081602001905061482c848760200151018285806158e257610c71565b5b60208110615902578251825260209283019290910190601f19016158e3565b915181516020939093036101000a6000190180199091169216919091179052565b6040518060800160405280600081526020016000151581526020016060815260200161594d615b7e565b905290565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f1061599357805160ff19168380011785556159c0565b828001600101855582156159c0579182015b828111156159c05782518255916020019190600101906159a5565b50612aea929150615b9d565b82601381019282156159c057916020028201828111156159c05782518255916020019190600101906159a5565b6040805160c081018252600080825260208201819052918101829052606081018290526080810182905260a081019190915290565b6040518060600160405280600060ff16815260200160608152602001606081525090565b50805460018160011615610100020316600290046000825580601f10615a785750611739565b601f0160209004906000526020600020908101906117399190615b9d565b50611739906013810190615b9d565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10615ade57805485556159c0565b828001600101855582156159c057600052602060002091601f016020900482015b828111156159c0578254825591600101919060010190615aff565b82601381019282156159c057918201828111156159c0578254825591600101919060010190615aff565b6040518060400160405280615b57615b64565b8152602001600081525090565b604051806040016040528060008152602001600081525090565b6040518061026001604052806013906020820280368337509192915050565b611dde91905b80821115612aea5760008155600101615ba3565b80356115d181616e02565b60008083601f840112615bd3578182fd5b5081356001600160401b03811115615be9578182fd5b6020830191508360208083028501011115613aa757600080fd5b6000601f8381840112615c14578182fd5b8235615c27615c2282616db7565b616d91565b818152925060208084019085810160005b84811015615cb9578135880189603f820112615c5357600080fd5b838101356001600160401b03811115615c6b57600080fd5b615c7c818901601f19168601616d91565b81815260408c81848601011115615c9257600080fd5b82818501888401375060009181018601919091528552509282019290820190600101615c38565b50505050505092915050565b600082601f830112615cd5578081fd5b8135615ce3615c2282616db7565b818152915060208083019084810181840286018201871015615d0457600080fd5b6000805b85811015615cb95782356001600160401b0381168114615d26578283fd5b85529383019391830191600101615d08565b60008083601f840112615d49578182fd5b5081356001600160401b03811115615d5f578182fd5b602083019150836020828501011115613aa757600080fd5b600060208284031215615d88578081fd5b8135611bfc81616e02565b600060208284031215615da4578081fd5b8151611bfc81616e02565b60008060008060408587031215615dc4578283fd5b84356001600160401b0380821115615dda578485fd5b615de688838901615bc2565b90965094506020870135915080821115615dfe578384fd5b50615e0b87828801615bc2565b95989497509550505050565b600080600060608486031215615e2b578283fd5b83356001600160401b0380821115615e41578485fd5b81860187601f820112615e52578586fd5b80359250615e62615c2284616db7565b80848252602080830192508084018b828389028701011115615e8257898afd5b8994505b86851015615eac57615e988c82615bb7565b845260019490940193928101928101615e86565b509097508801359350505080821115615ec3578384fd5b615ecf87838801615cc5565b93506040860135915080821115615ee4578283fd5b50615ef186828701615c03565b9150509250925092565b60008060208385031215615f0d578182fd5b82356001600160401b03811115615f22578283fd5b615f2e85828601615d38565b90969095509350505050565b60008060008060408587031215615f4f578384fd5b84356001600160401b0380821115615f65578586fd5b615f7188838901615d38565b90965094506020870135915080821115615f89578384fd5b50615e0b87828801615d38565b600060208284031215615fa7578081fd5b5035919050565b600060208284031215615fbf578081fd5b5051919050565b60008060408385031215615fd8578182fd5b505080516020909101519092909150565b600080600060408486031215615ffd578081fd5b833560ff8116811461600d578182fd5b925060208401356001600160401b03811115616027578182fd5b61603386828701615d38565b9497909650939450505050565b6000815180845260208085019450808401835b838110156160785781516001600160a01b031687529582019590820190600101616053565b509495945050505050565b60008284528282602086013780602084860101526020601f19601f85011685010190509392505050565b600081518084526160c5816020860160208601616dd6565b601f01601f19169290920160200192915050565b600082516160eb818460208701616dd6565b9190910192915050565b918252602082015260400190565b6001600160a01b0391909116815260200190565b6001600160a01b03929092168252602082015260400190565b6001600160a01b03968716815294861660208601529290941660408401526001600160401b03166060830152911515608082015260a081019190915260c00190565b6001600160a01b0393909316835260208301919091521515604082015260600190565b600060208252611bfc6020830184616040565b6000604082526161bb6040830185616040565b602083820381850152818551808452828401915082838202850101838801865b8381101561620957601f198784030185526161f78383516160ad565b948601949250908501906001016161db565b50909998505050505050505050565b901515815260200190565b600060208252611bfc60208301846160ad565b60006040825261624a604083018688616083565b828103602084015261625d818587616083565b979650505050505050565b6020808252601c908201527f6c656e677468206f66206275726e526174696f206d69736d6174636800000000604082015260600190565b60208082526026908201527f6c656e677468206f66206d61784e756d4f664d61696e7461696e696e67206d696040820152650e6dac2e8c6d60d31b606082015260800190565b6020808252602c908201527f6c656e677468206f66206d61784e756d4f66576f726b696e6743616e6469646160408201526b0e8cae640dad2e6dac2e8c6d60a31b606082015260800190565b60208082526025908201527f6c656e677468206f66206d61696e7461696e536c6173685363616c65206d69736040820152640dac2e8c6d60db1b606082015260800190565b6020808252818101527f6c656e677468206f66206e756d4f66436162696e657473206d69736d61746368604082015260600190565b60208082526019908201527f74686520636f6e7472616374206e6f7420696e69742079657400000000000000604082015260600190565b6020808252601f908201527f6f6e6c7920736c617368206f72207374616b6548756220636f6e747261637400604082015260600190565b6020808252601b908201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604082015260600190565b60208082526063908201527f7468652073797374656d52657761726442617365526174696f20706c7573206260408201527f75726e526174696f20616e642073797374656d526577617264416e74694d455660608201527f526174696f206d757374206265206e6f2067726561746572207468616e20313060808201526203030360ec1b60a082015260c00190565b60208082526028908201527f746865206e756d4f66436162696e657473206d75737420626520677265617465604082015267072207468616e20360c41b606082015260800190565b60208082526039908201527f746865206e756d4f66436162696e657473206d757374206265206c657373207460408201527f68616e204d41585f4e554d5f4f465f56414c494441544f525300000000000000606082015260800190565b60208082526022908201527f63616e206e6f7420646f207468697320747769636520696e206f6e6520626c6f604082015261636b60f01b606082015260800190565b60208082526037908201527f746865206d61784e756d4f664d61696e7461696e696e67206d7573742062652060408201527f6c657373207468616e206e756d4f66436162696e657473000000000000000000606082015260800190565b6020808252601d908201527f6c656e677468206f66207475726e4c656e677468206d69736d61746368000000604082015260600190565b6020808252600a908201526919195c1c9958d85d195960b21b604082015260600190565b60208082526063908201527f746865206275726e526174696f20706c75732073797374656d5265776172644260408201527f617365526174696f20616e642073797374656d526577617264416e74694d455660608201527f526174696f206d757374206265206e6f2067726561746572207468616e20313060808201526203030360ec1b60a082015260c00190565b6020808252602b908201527f6c656e677468206f662073797374656d526577617264416e74694d455652617460408201526a0d2de40dad2e6dac2e8c6d60ab1b606082015260800190565b6020808252601590820152746465706f7369742076616c7565206973207a65726f60581b604082015260600190565b60208082526049908201527f746865206d61784e756d4f66576f726b696e6743616e64696461746573206d7560408201527f7374206265206e6f742067726561746572207468616e206d61784e756d4f6643606082015268616e6469646174657360b81b608082015260a00190565b6020808252601190820152706164646974696f6e206f766572666c6f7760781b604082015260600190565b60208082526063908201527f7468652073797374656d526577617264416e74694d4556526174696f20706c7560408201527f73206275726e526174696f20616e642073797374656d5265776172644261736560608201527f526174696f206d757374206265206e6f2067726561746572207468616e20313060808201526203030360ec1b60a082015260c00190565b60208082526023908201527f63616e206e6f7420656e7465722054656d706f72617279204d61696e74656e616040820152626e636560e81b606082015260800190565b60208082526021908201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6040820152607760f81b606082015260800190565b6020808252601490820152736761737072696365206973206e6f74207a65726f60601b604082015260600190565b6020808252602e908201527f746865206d6573736167652073656e646572206d75737420626520676f76657260408201526d1b985b98d94818dbdb9d1c9858dd60921b606082015260800190565b60208082526025908201527f6c656e677468206f66206d61784e756d4f6643616e64696461746573206d69736040820152640dac2e8c6d60db1b606082015260800190565b6020808252601290820152716e6f7420696e206d61696e74656e616e636560701b604082015260600190565b60208082526019908201527f74686520636f6e747261637420616c726561647920696e697400000000000000604082015260600190565b6020808252602f908201527f746865207475726e4c656e6774682073686f756c6420626520696e205b332c3960408201526e5d206f7220657175616c20746f203160881b606082015260800190565b6020808252601a908201527f6c656e677468206973206c657373207468616e206f6666736574000000000000604082015260600190565b60208082526017908201527f6f6e6c792063757272656e742076616c696461746f7273000000000000000000604082015260600190565b60208082526021908201527f6661696c656420746f20706172736520696e69742076616c696461746f7253656040820152601d60fa1b606082015260800190565b6020808252602f908201527f746865206d6573736167652073656e646572206d7573742062652063726f737360408201526e0818da185a5b8818dbdb9d1c9858dd608a1b606082015260800190565b6020808252602d908201527f746865206d6573736167652073656e646572206d75737420626520746865206260408201526c3637b1b590383937b23ab1b2b960991b606082015260800190565b60208082526028908201527f6c656e677468206f662073797374656d52657761726442617365526174696f206040820152670dad2e6dac2e8c6d60c31b606082015260800190565b6020808252603e908201527f746865206d61696e7461696e536c6173685363616c65206d757374206265206760408201527f726561746572207468616e203020616e64206c657373207468616e2031300000606082015260800190565b6020808252600d908201526c756e6b6e6f776e20706172616d60981b604082015260600190565b60208082526029908201527f746865206d6573736167652073656e646572206d75737420626520736c6173686040820152680818dbdb9d1c9858dd60ba1b606082015260800190565b6020808252601f908201527f746865206d73672073656e646572206d757374206265207374616b6548756200604082015260600190565b61ffff91909116815260200190565b90815260200190565b6000848252831515602083015260606040830152616d7760608301846160ad565b95945050505050565b63ffffffff91909116815260200190565b6040518181016001600160401b0381118282101715616daf57600080fd5b604052919050565b60006001600160401b03821115616dcc578081fd5b5060209081020190565b60005b83811015616df1578181015183820152602001616dd9565b838111156132f25750506000910152565b6001600160a01b038116811461173957600080fdfe0175b7a638427703f0dbe7bb9bbf987a2551717b34e79f33b5b1008d1fa01db90175b7a638427703f0dbe7bb9bbf987a2551717b34e79f33b5b1008d1fa01dbbf905ec80f905e8f846942a7cdd959bfe8d9487b2a43b33565295a698f7e294b6a7edd747c0554875d3fc531d19ba1497992c5e941ff80f3f7f110ffd8920a3ac38fdef318fe94a3f86048c27395000f846946488aa4d1955ee33403f8ccb1d4de5fb97c7ade294220f003d8bdfaadf52aa1e55ae4cc485e6794875941a87e90e440a39c99aa9cb5cea0ad6a3f0b2407b86048c27395000f846949ef9f4360c606c7ab4db26b016007d3ad0ab86a0946103af86a874b705854033438383c82575f25bc29418e2db06cbff3e3c5f856410a1838649e760175786048c27395000f84694ee01c3b1283aa067c58eab4709f85e99d46de5fe94ee4b9bfb1871c64e2bcabb1dc382dc8b7c4218a29415904ab26ab0e99d70b51c220ccdcccabee6e29786048c27395000f84694685b1ded8013785d6623cc18d214320b6bb6475994a20ef4e5e4e7e36258dbf51f4d905114cb1b34bc9413e39085dc88704f4394d35209a02b1a9520320c86048c27395000f8469478f3adfc719c99674c072166708589033e2d9afe9448a30d5eaa7b64492a160f139e2da2800ec3834e94055838358c29edf4dcc1ba1985ad58aedbb6be2b86048c27395000f84694c2be4ec20253b8642161bc3f444f53679c1f3d479466f50c616d737e60d7ca6311ff0d9c434197898a94d1d678a2506eeaa365056fe565df8bc8659f28b086048c27395000f846942f7be8361c80a4c1e7e9aaf001d0877f1cfde218945f93992ac37f3e61db2ef8a587a436a161fd210b94ecbc4fb1a97861344dad0867ca3cba2b860411f086048c27395000f84694ce2fd7544e0b2cc94692d4a704debef7bcb613289444abc67b4b2fba283c582387f54c9cba7c34bafa948acc2ab395ded08bb75ce85bf0f95ad2abc51ad586048c27395000f84694b8f7166496996a7da21cf1f1b04d9b3e26a3d077946770572763289aac606e4f327c2f6cc1aa3b3e3b94882d745ed97d4422ca8da1c22ec49d880c4c097286048c27395000f846942d4c407bbe49438ed859fe965b140dcf1aab71a9943ad0939e120f33518fbba04631afe7a3ed6327b194b2bbb170ca4e499a2b0f3cc85ebfa6e8c4dfcbea86048c27395000f846946bbad7cf34b5fa511d8e963dbba288b1960e75d694853b0f6c324d1f4e76c8266942337ac1b0af1a229442498946a51ca5924552ead6fc2af08b94fcba648601d1a94a2000f846944430b3230294d12c6ab2aac5c2cd68e80b16b581947b107f4976a252a6939b771202c28e64e03f52d694795811a7f214084116949fc4f53cedbf189eeab28601d1a94a2000f84694ea0a6e3c511bbd10f4519ece37dc24887e11b55d946811ca77acfb221a49393c193f3a22db829fcc8e9464feb7c04830dd9ace164fc5c52b3f5a29e5018a8601d1a94a2000f846947ae2f5b9e386cd1b50a4550696d957cb4900f03a94e83bcc5077e6b873995c24bac871b5ad856047e19464e48d4057a90b233e026c1041e6012ada897fe88601d1a94a2000f8469482012708dafc9e1b880fd083b32182b869be8e09948e5adc73a2d233a1b496ed3115464dd6c7b887509428b383d324bc9a37f4e276190796ba5a8947f5ed8601d1a94a2000f8469422b81f8e175ffde54d797fe11eb03f9e3bf75f1d94a1c3ef7ca38d8ba80cce3bfc53ebd2903ed21658942767f7447f7b9b70313d4147b795414aecea54718601d1a94a2000f8469468bf0b8b6fb4e317a0f9d6f03eaf8ce6675bc60d94675cfe570b7902623f47e7f59c9664b5f5065dcf94d84f0d2e50bcf00f2fc476e1c57f5ca2d57f625b8601d1a94a2000f846948c4d90829ce8f72d0163c1d5cf348a862d5506309485c42a7b34309bee2ed6a235f86d16f059deec5894cc2cedc53f0fa6d376336efb67e43d167169f3b78601d1a94a2000f8469435e7a025f4da968de7e4d7e4004197917f4070f194b1182abaeeb3b4d8eba7e6a4162eac7ace23d57394c4fd0d870da52e73de2dd8ded19fe3d26f43a1138601d1a94a2000f84694d6caa02bbebaebb5d7e581e4b66559e635f805ff94c07335cf083c1c46a487f0325769d88e163b653694efaff03b42e41f953a925fc43720e45fb61a19938601d1a94a20000175b7a638427703f0dbe7bb9bbf987a2551717b34e79f33b5b1008d1fa01dbaa164736f6c6343000604000a \ No newline at end of file +60806040526004361061044b5760003560e01c80638c5d749d11610234578063c81b16621161012e578063e1c7392a116100b6578063f92eb86b1161007a578063f92eb86b14610b5f578063f9a2bbc714610b74578063fccc281314610b89578063fd4ad81f14610b9e578063fd6a687914610bcd57610452565b8063e1c7392a14610ae2578063e40716a114610af7578063ea321e4914610b0c578063eb57e20214610b2c578063f340fa0114610b4c57610452565b8063d58918ae116100fd578063d58918ae14610a79578063d68fb56a14610a8e578063daacdb6614610aa3578063dc927faf14610ab8578063df8079e914610acd57610452565b8063c81b166214610a2f578063c8509d81146107f1578063cb75a59214610a44578063ce910b0c14610a5957610452565b8063aa82dce1116101bc578063aef198a911610180578063aef198a9146109b9578063b7ab4db5146109ce578063b8cf4ef1146109f0578063c466689d14610a05578063c6d3394514610a1a57610452565b8063aa82dce11461092d578063aad5606314610942578063ab51bb9614610957578063ac43175114610979578063ad3c9da61461099957610452565b80639fe0f816116102035780639fe0f816146108c4578063a0dc2758146108d9578063a1a11bf5146108ee578063a5422d5c14610903578063a78abc161461091857610452565b80638c5d749d146108655780638d19a4101461087a5780639369d7de1461089a5780639dc09262146108af57610452565b80635192c82c1161034557806375d47a0a116102cd578063831d65d111610291578063831d65d1146107f1578063862498821461081157806388b32f11146108265780638a7beb011461083b5780638b5ad0c91461085057610452565b806375d47a0a1461078857806378dfed4a1461079d5780637a84ca2a146107b25780637e434d54146107c7578063820dcaa8146107dc57610452565b8063565c56b311610314578063565c56b3146106ec57806360eba4fe1461070c57806362b72cf51461072c5780636969a25c146107415780636e47b4821461077357610452565b80635192c82c1461068d57806351b4dce3146106a257806351e80672146106b757806355614fcc146106cc57610452565b80632a0ffb6e116103d35780633b071dcc116103975780633b071dcc1461060957806343756e5c1461062c57806345cf9daf14610641578063493279b1146106565780634df6e0c31461067857610452565b80632a0ffb6e14610569578063300c356714610589578063321d398a146105a95780633365af3a146105c957806335409f7f146105e957610452565b8063152ad3b81161041a578063152ad3b8146104e85780631bd14ed81461050a5780631e4c15241461051f5780631ff180691461053f578063280870281461055457610452565b806304c4fec61461045757806307a568471461046e5780630e2374a5146104995780631182b875146104bb57610452565b3661045257005b600080fd5b34801561046357600080fd5b5061046c610be2565b005b34801561047a57600080fd5b50610483610c56565b6040516104909190616d9f565b60405180910390f35b3480156104a557600080fd5b506104ae610c5c565b6040516104909190616155565b3480156104c757600080fd5b506104db6104d636600461603b565b610c62565b6040516104909190616275565b3480156104f457600080fd5b506104fd610d7e565b604051610490919061626a565b34801561051657600080fd5b50610483610d87565b34801561052b57600080fd5b5061046c61053a366004615e69565b610d8d565b34801561054b57600080fd5b506104836110c1565b34801561056057600080fd5b506104ae6110c7565b34801561057557600080fd5b5061046c610584366004615dc9565b6110cd565b34801561059557600080fd5b5061046c6105a4366004615e01565b6110ee565b3480156105b557600080fd5b506104fd6105c4366004615fe8565b611437565b3480156105d557600080fd5b506104fd6105e4366004615fe8565b611506565b3480156105f557600080fd5b5061046c610604366004615dc9565b6115b7565b34801561061557600080fd5b5061061e61171c565b6040516104909291906161fa565b34801561063857600080fd5b506104ae6119f8565b34801561064d57600080fd5b506104836119fe565b34801561066257600080fd5b5061066b611a04565b6040516104909190616d90565b34801561068457600080fd5b5061061e611a09565b34801561069957600080fd5b50610483611b95565b3480156106ae57600080fd5b506104ae611b9b565b3480156106c357600080fd5b506104ae611ba1565b3480156106d857600080fd5b506104fd6106e7366004615dc9565b611ba7565b3480156106f857600080fd5b50610483610707366004615dc9565b611be3565b34801561071857600080fd5b506104db610727366004615fe8565b611c34565b34801561073857600080fd5b50610483611cda565b34801561074d57600080fd5b5061076161075c366004615fe8565b611ce0565b60405161049096959493929190616182565b34801561077f57600080fd5b506104ae611d44565b34801561079457600080fd5b506104ae611d4a565b3480156107a957600080fd5b50610483611d50565b3480156107be57600080fd5b50610483611d56565b3480156107d357600080fd5b506104ae611d5c565b3480156107e857600080fd5b50610483611d62565b3480156107fd57600080fd5b5061046c61080c36600461603b565b611d68565b34801561081d57600080fd5b50610483611d89565b34801561083257600080fd5b50610483611d8f565b34801561084757600080fd5b506104fd611d95565b34801561085c57600080fd5b50610483611d9e565b34801561087157600080fd5b50610483611da4565b34801561088657600080fd5b50610483610895366004615dc9565b611dc1565b3480156108a657600080fd5b5061046c611e01565b3480156108bb57600080fd5b506104ae611f15565b3480156108d057600080fd5b50610483611f1b565b3480156108e557600080fd5b50610483611f20565b3480156108fa57600080fd5b506104ae611f25565b34801561090f57600080fd5b506104db611f2b565b34801561092457600080fd5b506104fd611f4a565b34801561093957600080fd5b506104ae611f53565b34801561094e57600080fd5b506104ae611f59565b34801561096357600080fd5b5061096c611f5f565b6040516104909190616dd2565b34801561098557600080fd5b5061046c610994366004615f8c565b611f64565b3480156109a557600080fd5b506104836109b4366004615dc9565b6129cd565b3480156109c557600080fd5b506104836129df565b3480156109da57600080fd5b506109e36129ec565b60405161049091906161e7565b3480156109fc57600080fd5b50610483612ad7565b348015610a1157600080fd5b50610483612adc565b348015610a2657600080fd5b50610483612ae2565b348015610a3b57600080fd5b506104ae612ae7565b348015610a5057600080fd5b50610483612aed565b348015610a6557600080fd5b506104db610a74366004615fe8565b612af3565b348015610a8557600080fd5b50610483612b00565b348015610a9a57600080fd5b50610483612b06565b348015610aaf57600080fd5b50610483612b45565b348015610ac457600080fd5b506104ae612b4b565b348015610ad957600080fd5b506104ae612b51565b348015610aee57600080fd5b5061046c612b57565b348015610b0357600080fd5b50610483612d00565b348015610b1857600080fd5b506104fd610b27366004615f4d565b612d06565b348015610b3857600080fd5b5061046c610b47366004615dc9565b612e8c565b61046c610b5a366004615dc9565b612f94565b348015610b6b57600080fd5b5061048361334a565b348015610b8057600080fd5b506104ae613350565b348015610b9557600080fd5b506104ae613356565b348015610baa57600080fd5b50610bbe610bb9366004615fe8565b61335c565b60405161049093929190616da8565b348015610bd957600080fd5b506104ae61341e565b6000610bed33611dc1565b9050600b8181548110610bfc57fe5b600091825260209091206001601690920201015460ff16610c385760405162461bcd60e51b8152600401610c2f90616a47565b60405180910390fd5b6000610c42612b06565b9050610c513383836001613424565b505050565b60095481565b61200181565b60005460609060ff16610c875760405162461bcd60e51b8152600401610c2f9061645a565b3361200014610ca85760405162461bcd60e51b8152600401610c2f90616ba8565b600b54610d6657610cb7615975565b60015460005b81811015610d6257600b80546001810182556000919091528351600080516020616e6a83398151915260169092029182019081556020808601516000805160206174998339815191528401805460ff1916911515919091179055604086015180518794610d3e93600080516020616e8a8339815191529091019201906159a4565b506060820151610d549060038301906013615a1e565b505050806001019050610cbd565b5050505b60405162461bcd60e51b8152600401610c2f906166ac565b60075460ff1681565b600f5481565b334114610dac5760405162461bcd60e51b8152600401610c2f90616bf7565b3a15610dca5760405162461bcd60e51b8152600401610c2f90616986565b8251604080518281526020808402820101909152606090828015610e0857816020015b610df5615a4b565b815260200190600190039081610ded5790505b50905060005b82811015610eb2576040518060c00160405280878381518110610e2d57fe5b60200260200101516001600160a01b0316815260200160006001600160a01b0316815260200160006001600160a01b03168152602001868381518110610e6f57fe5b60200260200101516001600160401b031681526020016000151581526020016000815250828281518110610e9f57fe5b6020908102919091010152600101610e0e565b50606080610ec08386613616565b9150915060005b600154811015610fb657600060018281548110610ee057fe5b906000526020600020906004020160030154905080600014610fad57600060018381548110610f0b57fe5b9060005260206000209060040201600301819055506120026001600160a01b031663092193ab8260018581548110610f3f57fe5b60009182526020909120600491820201546040516001600160e01b031960e086901b168152610f7a926001600160a01b039092169101616155565b6000604051808303818588803b158015610f9357600080fd5b505af1158015610fa7573d6000803e3d6000fd5b50505050505b50600101610ec7565b504715611024577f6ecc855f9440a9282c90913bbc91619fd44f5ec0b462af28d127b116f130aa4d47604051610fec9190616d9f565b60405180910390a1604051611002904780156108fc02916000818181858888f19350505050158015611022573d6000803e3d6000fd5b505b600060035581511561103a5761103a8282613b00565b6110016001600160a01b031663fc4333cd6040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561107757600080fd5b505af115801561108b573d6000803e3d6000fd5b50506040517fedd8d7296956dd970ab4de3f2fc03be2b0ffc615d20cd4c72c6e44f928630ebf925060009150a150505050505050565b60035481565b61200581565b3361200214610d665760405162461bcd60e51b8152600401610c2f90616d59565b33411461110d5760405162461bcd60e51b8152600401610c2f90616bf7565b601054431161112e5760405162461bcd60e51b8152600401610c2f906165d6565b3a1561114c5760405162461bcd60e51b8152600401610c2f90616986565b60005460ff1661116e5760405162461bcd60e51b8152600401610c2f9061645a565b60006110023168056bc75e2d631000008111156111a55761119e8168056bc75e2d6310000063ffffffff6142ef16565b91506111ac565b505061142d565b6040516309a99b4f60e41b815261100290639a99b4f0906111d39030908690600401616169565b602060405180830381600087803b1580156111ed57600080fd5b505af1158015611201573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112259190616000565b91508161123357505061142d565b6000805b848110156112615785858281811061124b57fe5b9050602002013582019150806001019050611237565b508061126f5750505061142d565b6000806000805b89811015611425578489898381811061128b57fe5b9050602002013588028161129b57fe5b0493508a8a828181106112aa57fe5b90506020020160208101906112bf9190615dc9565b6001600160a01b038116600090815260046020526040902054909350915081156113db5760006001808403815481106112f457fe5b9060005260206000209060040201905080600201601c9054906101000a900460ff161561136157836001600160a01b03167fb9c75cbbfde137c4281689580799ef5f52144e78858f776a5979b2b212137d85866040516113549190616d9f565b60405180910390a26113d5565b600354611374908663ffffffff61433116565b600390815581015461138c908663ffffffff61433116565b60038201556040516001600160a01b038516907fcb0aad6cf9cd03bdf6137e359f541c42f38b39f007cae8e89e88aa7d8c6617b2906113cc908890616d9f565b60405180910390a25b5061141d565b826001600160a01b03167fb9c75cbbfde137c4281689580799ef5f52144e78858f776a5979b2b212137d85856040516114149190616d9f565b60405180910390a25b600101611276565b505050505050505b5050436010555050565b600154600090821061144b57506000611501565b60006001600160a01b03166001838154811061146357fe5b60009182526020909120600490910201546001600160a01b03161480611493575060085415806114935750600a54155b806114a2575060085460095410155b806114b357506114b182611506565b155b806114dc57506000600b83815481106114c857fe5b906000526020600020906016020160000154115b806114f0575060016114ec6129ec565b5111155b156114fd57506000611501565b5060015b919050565b600154600090821061151a57506000611501565b600b548210611557576001828154811061153057fe5b9060005260206000209060040201600201601c9054906101000a900460ff16159050611501565b6001828154811061156457fe5b9060005260206000209060040201600201601c9054906101000a900460ff161580156115b15750600b828154811061159857fe5b600091825260209091206001601690920201015460ff16155b92915050565b600b54611675576115c6615975565b60015460005b8181101561167157600b80546001810182556000919091528351600080516020616e6a83398151915260169092029182019081556020808601516000805160206174998339815191528401805460ff191691151591909117905560408601518051879461164d93600080516020616e8a8339815191529091019201906159a4565b5060608201516116639060038301906013615a1e565b5050508060010190506115cc565b5050505b336110011480611686575033612002145b6116a25760405162461bcd60e51b8152600401610c2f90616491565b6001600160a01b038116600090815260046020526040902054806116c65750611719565b6001810390506000600b82815481106116db57fe5b600091825260209091206001601690920201015460ff1690506116fe8383614356565b80156117075750805b15610c51576009805460001901905550505b50565b60015460609081906000805b8281101561176f576001818154811061173d57fe5b9060005260206000209060040201600201601c9054906101000a900460ff16611767576001909101905b600101611728565b5060608160405190808252806020026020018201604052801561179c578160200160208202803683370190505b5090506060826040519080825280602002602001820160405280156117d557816020015b60608152602001906001900390816117c05790505b50600b54600094509091508414156119505760005b8481101561194a57600181815481106117ff57fe5b9060005260206000209060040201600201601c9054906101000a900460ff16611942576001818154811061182f57fe5b600091825260209091206004909102015483516001600160a01b039091169084908690811061185a57fe5b60200260200101906001600160a01b031690816001600160a01b031681525050600b818154811061188757fe5b600091825260209182902060026016909202018101805460408051601f60001961010060018616150201909316949094049182018590048502840185019052808352919290919083018282801561191f5780601f106118f45761010080835404028352916020019161191f565b820191906000526020600020905b81548152906001019060200180831161190257829003601f168201915b505050505082858151811061193057fe5b60209081029190910101526001909301925b6001016117ea565b506119ec565b60005b848110156119ea576001818154811061196857fe5b9060005260206000209060040201600201601c9054906101000a900460ff166119e2576001818154811061199857fe5b600091825260209091206004909102015483516001600160a01b03909116908490869081106119c357fe5b6001600160a01b03909216602092830291909101909101526001909301925b600101611953565b505b909450925050505b9091565b61100181565b60085481565b603881565b6060806000600e549050600080600c5411611a25576015611a29565b600c545b90506060611a356129ec565b90506060611a4282614719565b905082825111611a595790945092506119f4915050565b83838351031015611a6b578282510393505b8315611aa15760c84304611a8783838388880360008a8a614887565b611a9f8383838888038989038a8b8b8b510301614887565b505b606083604051908082528060200260200182016040528015611acd578160200160208202803683370190505b509050606084604051908082528060200260200182016040528015611b0657816020015b6060815260200190600190039081611af15790505b50905060005b85811015611b8757848181518110611b2057fe5b6020026020010151838281518110611b3457fe5b60200260200101906001600160a01b031690816001600160a01b031681525050838181518110611b6057fe5b6020026020010151828281518110611b7457fe5b6020908102919091010152600101611b0c565b509096509450505050509091565b60065481565b61200681565b61200081565b6001600160a01b03811660009081526004602052604081205480611bcf576000915050611501565b60001901611bdc81611506565b9392505050565b6001600160a01b03811660009081526004602052604081205480611c0b576000915050611501565b600180820381548110611c1a57fe5b906000526020600020906004020160030154915050919050565b60128181548110611c4157fe5b600091825260209182902001805460408051601f6002600019610100600187161502019094169390930492830185900485028101850190915281815293509091830182828015611cd25780601f10611ca757610100808354040283529160200191611cd2565b820191906000526020600020905b815481529060010190602001808311611cb557829003601f168201915b505050505081565b60105481565b60018181548110611ced57fe5b600091825260209091206004909102018054600182015460028301546003909301546001600160a01b0392831694509082169291821691600160a01b81046001600160401b031691600160e01b90910460ff169086565b61100581565b61100881565b6103e881565b600c5481565b61200381565b61271081565b3361200014610d665760405162461bcd60e51b8152600401610c2f90616ba8565b60025481565b60115481565b60145460ff1681565b600a5481565b600060175460001415611db957506001611dbe565b506017545b90565b6001600160a01b03811660009081526004602052604081205480611df75760405162461bcd60e51b8152600401610c2f90616b30565b6000190192915050565b600b54611ebf57611e10615975565b60015460005b81811015611ebb57600b80546001810182556000919091528351600080516020616e6a83398151915260169092029182019081556020808601516000805160206174998339815191528401805460ff1916911515919091179055604086015180518794611e9793600080516020616e8a8339815191529091019201906159a4565b506060820151611ead9060038301906013615a1e565b505050806001019050611e16565b5050505b600854611ecc5760036008555b600a54611ed9576002600a555b6000611ee433611dc1565b9050611eef81611437565b611f0b5760405162461bcd60e51b8152600401610c2f90616902565b61171933826149de565b61100781565b600381565b60c881565b61100681565b6040518061062001604052806105ef8152602001616eaa6105ef913981565b60005460ff1681565b61200281565b61300081565b600081565b60005460ff16611f865760405162461bcd60e51b8152600401610c2f9061645a565b3361100714611fa75760405162461bcd60e51b8152600401610c2f906169b4565b61200784848080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250506040805180820190915260098152686275726e526174696f60b81b60208201529150614a769050565b156120bc576020811461202c5760405162461bcd60e51b8152600401610c2f906162ba565b604080516020601f840181900481028201810190925282815260009161206a91858580838501838280828437600092019190915250614acf92505050565b905061271061209660185461208a600f548561433190919063ffffffff16565b9063ffffffff61433116565b11156120b45760405162461bcd60e51b8152600401610c2f906166d0565b60065561298a565b61212684848080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250506040805180820190915260138152726d61784e756d4f664d61696e7461696e696e6760681b60208201529150614a769050565b156121c0576020811461214b5760405162461bcd60e51b8152600401610c2f906162f1565b604080516020601f840181900481028201810190925282815260009161218991858580838501838280828437600092019190915250614acf92505050565b600c5490915080612198575060155b8082106121b75760405162461bcd60e51b8152600401610c2f90616618565b5060085561298a565b61222984848080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250506040805180820190915260128152716d61696e7461696e536c6173685363616c6560701b60208201529150614a769050565b156122c2576020811461224e5760405162461bcd60e51b8152600401610c2f906163e0565b604080516020601f840181900481028201810190925282815260009161228c91858580838501838280828437600092019190915250614acf92505050565b905060008111801561229e5750600a81105b6122ba5760405162461bcd60e51b8152600401610c2f90616c8c565b600a5561298a565b61233684848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505060408051808201909152601981527f6d61784e756d4f66576f726b696e6743616e646964617465730000000000000060208201529150614a769050565b156123c5576020811461235b5760405162461bcd60e51b8152600401610c2f90616394565b604080516020601f840181900481028201810190925282815260009161239991858580838501838280828437600092019190915250614acf92505050565b9050600d548111156123bd5760405162461bcd60e51b8152600401610c2f906167d9565b600e5561298a565b61242e84848080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250506040805180820190915260128152716d61784e756d4f6643616e6469646174657360701b60208201529150614a769050565b156124b057602081146124535760405162461bcd60e51b8152600401610c2f90616a02565b604080516020601f840181900481028201810190925282815260009161249191858580838501838280828437600092019190915250614acf92505050565b600d819055600e549091508110156124aa57600d54600e555b5061298a565b61251484848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505060408051808201909152600d81526c6e756d4f66436162696e65747360981b60208201529150614a769050565b1561263957602081146125395760405162461bcd60e51b8152600401610c2f90616425565b604080516020601f840181900481028201810190925282815260009161257791858580838501838280828437600092019190915250614acf92505050565b9050600081116125995760405162461bcd60e51b8152600401610c2f9061658e565b60006120026001600160a01b031663c473318f6040518163ffffffff1660e01b815260040160206040518083038186803b1580156125d657600080fd5b505afa1580156125ea573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061260e9190616000565b9050808211156126305760405162461bcd60e51b8152600401610c2f90616337565b50600c5561298a565b6126a584848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505060408051808201909152601581527473797374656d52657761726442617365526174696f60581b60208201529150614a769050565b1561274e57602081146126ca5760405162461bcd60e51b8152600401610c2f90616c44565b604080516020601f840181900481028201810190925282815260009161270891858580838501838280828437600092019190915250614acf92505050565b905061271061272860185461208a6006548561433190919063ffffffff16565b11156127465760405162461bcd60e51b8152600401610c2f906164ff565b600f5561298a565b6127c284848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505060408051808201909152601881527f73797374656d526577617264416e74694d4556526174696f000000000000000060208201529150614a769050565b1561286b57602081146127e75760405162461bcd60e51b8152600401610c2f9061675f565b604080516020601f840181900481028201810190925282815260009161282591858580838501838280828437600092019190915250614acf92505050565b9050612710612845600f5461208a6006548561433190919063ffffffff16565b11156128635760405162461bcd60e51b8152600401610c2f90616873565b60185561298a565b6128cc84848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505060408051808201909152600a8152690e8eae4dc98cadccee8d60b31b60208201529150614a769050565b1561297257602081146128f15760405162461bcd60e51b8152600401610c2f90616675565b604080516020601f840181900481028201810190925282815260009161292f91858580838501838280828437600092019190915250614acf92505050565b905060038110158015612943575060098111155b8061294e5750806001145b61296a5760405162461bcd60e51b8152600401610c2f90616aaa565b60175561298a565b60405162461bcd60e51b8152600401610c2f90616ce9565b7f6cdb0ac70ab7f2e2d035cca5be60d89906f2dede7648ddbd7402189c1eeed17a848484846040516129bf9493929190616288565b60405180910390a150505050565b60046020526000908152604090205481565b68056bc75e2d6310000081565b6001546060906000805b82811015612a1b57612a0781611506565b15612a13578160010191505b6001016129f6565b50606081604051908082528060200260200182016040528015612a48578160200160208202803683370190505b5090506000915060005b83811015612acf57612a6381611506565b15612ac75760018181548110612a7557fe5b600091825260209091206004909102015482516001600160a01b0390911690839085908110612aa057fe5b60200260200101906001600160a01b031690816001600160a01b0316815250508260010192505b600101612a52565b509250505090565b601581565b61027181565b600281565b61100281565b60175481565b60138181548110611c4157fe5b60185481565b6000612b106129ec565b519050600080600c5411612b25576015612b29565b600c545b905080821115612b37578091505b81612b4157600191505b5090565b60055481565b61100381565b61200481565b60005460ff1615612b7a5760405162461bcd60e51b8152600401610c2f90616a73565b612b82615a80565b6000612ba86040518061062001604052806105ef8152602001616eaa6105ef9139614ad4565b9150915080612bc95760405162461bcd60e51b8152600401610c2f90616b67565b60005b826020015151811015612cee57600183602001518281518110612beb57fe5b60209081029190910181015182546001818101855560009485528385208351600493840290910180546001600160a01b039283166001600160a01b03199182161782558587015182850180549185169183169190911790556040860151600283018054606089015160808a01511515600160e01b0260ff60e01b196001600160401b03909216600160a01b0267ffffffffffffffff60a01b199590981692909516919091179290921694909417161790915560a090930151600390930192909255918601518051918501939185908110612cc157fe5b602090810291909101810151516001600160a01b0316825281019190915260400160002055600101612bcc565b50506000805460ff1916600117905550565b600d5481565b601354600090815b81811015612e0f57612df785858080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050601380549092508591508110612d5f57fe5b600091825260209182902001805460408051601f6002600019610100600187161502019094169390930492830185900485028101850190915281815292830182828015612ded5780601f10612dc257610100808354040283529160200191612ded565b820191906000526020600020905b815481529060010190602001808311612dd057829003601f168201915b5050505050614c90565b15612e07576001925050506115b1565b600101612d0e565b5060125460005b81811015612e8057612e6786868080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050601280549092508591508110612d5f57fe5b15612e7857600193505050506115b1565b600101612e16565b50600095945050505050565b3361100114612ead5760405162461bcd60e51b8152600401610c2f90616d10565b600b54612f6b57612ebc615975565b60015460005b81811015612f6757600b80546001810182556000919091528351600080516020616e6a83398151915260169092029182019081556020808601516000805160206174998339815191528401805460ff1916911515919091179055604086015180518794612f4393600080516020616e8a8339815191529091019201906159a4565b506060820151612f599060038301906013615a1e565b505050806001019050612ec2565b5050505b6000612f7682614cf4565b9050612f8181611437565b15612f9057612f9082826149de565b5050565b334114612fb35760405162461bcd60e51b8152600401610c2f90616bf7565b60005460ff16612fd55760405162461bcd60e51b8152600401610c2f9061645a565b60003411612ff55760405162461bcd60e51b8152600401610c2f906167aa565b3a156130135760405162461bcd60e51b8152600401610c2f90616986565b6001600160a01b03811660009081526004602052604090205460145434919060ff1661305357610271600f556103e86006556014805460ff191660011790555b600f54601754600110801561306a57506000601854115b1561308f57600160175403601754438161308057fe5b06601854028161308c57fe5b04015b60008311801561309f5750600081115b1561314c5760006130c86127106130bc348563ffffffff614e7716565b9063ffffffff614eb116565b9050801561314a576040516110029082156108fc029083906000818181858888f193505050501580156130ff573d6000803e3d6000fd5b507f6ecc855f9440a9282c90913bbc91619fd44f5ec0b462af28d127b116f130aa4d8160405161312f9190616d9f565b60405180910390a1613147848263ffffffff6142ef16565b93505b505b60008311801561315e57506000600654115b156132045760006131806127106130bc60065434614e7790919063ffffffff16565b905080156132025760405161dead9082156108fc029083906000818181858888f193505050501580156131b7573d6000803e3d6000fd5b507f627059660ea01c4733a328effb2294d2f86905bf806da763a89cee254de8bee5816040516131e79190616d9f565b60405180910390a16131ff848263ffffffff6142ef16565b93505b505b811561330257600060018084038154811061321b57fe5b9060005260206000209060040201905080600201601c9054906101000a900460ff161561328857846001600160a01b03167ff177e5d6c5764d79c32883ed824111d9b13f5668cf6ab1cc12dd36791dd955b48560405161327b9190616d9f565b60405180910390a26132fc565b60035461329b908563ffffffff61433116565b60039081558101546132b3908563ffffffff61433116565b60038201556040516001600160a01b038616907f93a090ecc682c002995fad3c85b30c5651d7fd29b0be5da9d784a3302aedc055906132f3908790616d9f565b60405180910390a25b50613344565b836001600160a01b03167ff177e5d6c5764d79c32883ed824111d9b13f5668cf6ab1cc12dd36791dd955b48460405161333b9190616d9f565b60405180910390a25b50505050565b600e5481565b61100081565b61dead81565b600b818154811061336957fe5b6000918252602091829020601691909102018054600180830154600280850180546040805161010096831615969096026000190190911692909204601f810188900488028501880190925281845293965060ff909116949192918301828280156134145780601f106133e957610100808354040283529160200191613414565b820191906000526020600020905b8154815290600101906020018083116133f757829003601f168201915b5050505050905083565b61100481565b6000600a5460001480613435575082155b806134405750600954155b1561344d5750600061360e565b60096000815460019003919050819055506000613498600a546130bc866130bc600b8a8154811061347a57fe5b6000918252602090912060169091020154439063ffffffff6142ef16565b90506000600b86815481106134a957fe5b906000526020600020906016020160010160006101000a81548160ff0219169083151502179055506000806110016001600160a01b0316638256ace66040518163ffffffff1660e01b8152600401604080518083038186803b15801561350e57600080fd5b505afa158015613522573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906135469190616018565b91509150600093508083106135c45761355f8888614356565b506040516328aa02b160e01b8152611001906328aa02b190613589908b9087908a906004016161c4565b600060405180830381600087803b1580156135a357600080fd5b505af11580156135b7573d6000803e3d6000fd5b50505050600193506135d6565b8183106135d6576135d488614cf4565b505b6040516001600160a01b038916907fb9d38178dc641ff1817967a63c9078cbcd955a9f1fcd75e0e3636de615d44d3b90600090a25050505b949350505050565b606080600080808080613627612b06565b6001549091505b801561385957600181039250600b838154811061364757fe5b600091825260209091206001601690920201015460ff1661366757613850565b6001838154811061367457fe5b600091825260208220600490910201546001600160a01b0316955061369e90869085908590613424565b9350836136aa57613850565b60405163436aa28360e11b81526000908190612002906386d54506906136d4908a90600401616155565b60206040518083038186803b1580156136ec57600080fd5b505afa158015613700573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906137249190615de5565b90506001600160a01b038116156137ad576040516302ceee9160e11b81526120029063059ddd229061375a908490600401616155565b60206040518083038186803b15801561377257600080fd5b505afa158015613786573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906137aa9190615de5565b91505b60005b8c5181101561384c57876001600160a01b03168d82815181106137cf57fe5b6020026020010151600001516001600160a01b031614806138185750826001600160a01b03168d828151811061380157fe5b6020026020010151600001516001600160a01b0316145b156138445760018d828151811061382b57fe5b602090810291909101015190151560809091015261384c565b6001016137b0565b5050505b6000190161362e565b5060005b89518110156138c65789818151811061387257fe5b602002602001015160800151806138b2575060006001600160a01b03168a828151811061389b57fe5b6020026020010151600001516001600160a01b0316145b156138be578560010195505b60010161385d565b50885185106139ae5760408051600180825281830190925290816020015b6138ec615a4b565b8152602001906001900390816138e4575050604080516001808252818301909252919850602082015b60608152602001906001900390816139155790505095508860008151811061393957fe5b60200260200101518760008151811061394e57fe5b60200260200101819052508760008151811061396657fe5b60200260200101518660008151811061397b57fe5b602002602001018190525060008760008151811061399557fe5b6020908102919091010151901515608090910152613af3565b848951036040519080825280602002602001820160405280156139eb57816020015b6139d8615a4b565b8152602001906001900390816139d05790505b50965084895103604051908082528060200260200182016040528015613a2557816020015b6060815260200190600190039081613a105790505b5095506000915060005b8951811015613af157898181518110613a4457fe5b602002602001015160800151158015613a87575060006001600160a01b03168a8281518110613a6f57fe5b6020026020010151600001516001600160a01b031614155b15613ae957898181518110613a9857fe5b6020026020010151888481518110613aac57fe5b6020026020010181905250888181518110613ac357fe5b6020026020010151878481518110613ad757fe5b60200260200101819052508260010192505b600101613a2f565b505b50505050505b9250929050565b600154825160005b82811015613c1d576001613b1a615a4b565b60018381548110613b2757fe5b600091825260208083206040805160c08101825260049490940290910180546001600160a01b0390811685526001820154811693850193909352600281015492831691840191909152600160a01b82046001600160401b03166060840152600160e01b90910460ff16151560808301526003015460a082015291505b84811015613bf157878181518110613bb757fe5b6020026020010151600001516001600160a01b031682600001516001600160a01b03161415613be95760009250613bf1565b600101613ba3565b508115613c135780516001600160a01b03166000908152600460205260408120555b5050600101613b08565b5080821115613cdc57805b82811015613cda576001805480613c3b57fe5b60008281526020812060046000199093019283020180546001600160a01b0319908116825560018201805490911690556002810180546001600160e81b0319169055600301559055600b805480613c8e57fe5b60008281526020812060166000199093019283020181815560018101805460ff1916905590613cc06002830182615aa4565b613cce600383016000615ae8565b50509055600101613c28565b505b6000818310613ceb5781613ced565b825b905060005b8181101561409157613d9f868281518110613d0957fe5b602002602001015160018381548110613d1e57fe5b60009182526020918290206040805160c08101825260049390930290910180546001600160a01b0390811684526001820154811694840194909452600281015493841691830191909152600160a01b83046001600160401b03166060830152600160e01b90920460ff161515608082015260039091015460a0820152614ef3565b613f53578060010160046000888481518110613db757fe5b6020026020010151600001516001600160a01b03166001600160a01b0316815260200190815260200160002081905550858181518110613df357fe5b602002602001015160018281548110613e0857fe5b6000918252602091829020835160049092020180546001600160a01b039283166001600160a01b0319918216178255928401516001820180549184169185169190911790556040840151600282018054606087015160808801511515600160e01b0260ff60e01b196001600160401b03909216600160a01b0267ffffffffffffffff60a01b1995909716929097169190911792909216939093171692909217905560a0909101516003909101558451859082908110613ec357fe5b6020026020010151600b8281548110613ed857fe5b90600052602060002090601602016002019080519060200190613efc9291906159a4565b506000600b8281548110613f0c57fe5b60009182526020822060169190910201600101805460ff191692151592909217909155600b805483908110613f3d57fe5b6000918252602090912060169091020155614089565b858181518110613f5f57fe5b60200260200101516060015160018281548110613f7857fe5b906000526020600020906004020160020160146101000a8154816001600160401b0302191690836001600160401b0316021790555061403e858281518110613fbc57fe5b6020026020010151600b8381548110613fd157fe5b600091825260209182902060026016909202018101805460408051601f600019610100600186161502019093169490940491820185900485028401850190528083529192909190830182828015612ded5780601f10612dc257610100808354040283529160200191612ded565b6140895784818151811061404e57fe5b6020026020010151600b828154811061406357fe5b906000526020600020906016020160020190805190602001906140879291906159a4565b505b600101613cf2565b5082821115614269576140a2615975565b835b83811015614266578581815181106140b857fe5b6020026020010151826040018190525060018782815181106140d657fe5b6020908102919091018101518254600181810185556000948552838520835160049093020180546001600160a01b039384166001600160a01b0319918216178255848601518284018054918616918316919091179055604080860151600284018054606089015160808a01511515600160e01b0260ff60e01b196001600160401b03909216600160a01b0267ffffffffffffffff60a01b1995909a1692909616919091179290921696909617169190911790935560a090930151600390930192909255600b8054928301815590935284516016909102600080516020616e6a8339815191528101918255858301516000805160206174998339815191528201805491151560ff199092169190911790559285015180518694929361420c93600080516020616e8a833981519152019201906159a4565b5060608201516142229060038301906013615a1e565b505050806001016004600089848151811061423957fe5b602090810291909101810151516001600160a01b03168252810191909152604001600020556001016140a4565b50505b614271614f4f565b614279615131565b6000600981905560015493505b838110156142e7576000600b828154811061429d57fe5b60009182526020822060169190910201600101805460ff191692151592909217909155600b8054839081106142ce57fe5b6000918252602090912060169091020155600101614286565b505050505050565b6000611bdc83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525061531f565b600082820183811015611bdc5760405162461bcd60e51b8152600401610c2f906164c8565b6000806001838154811061436657fe5b906000526020600020906004020160030154905060006001808054905003905060016143906129ec565b51116143c5576000600185815481106143a557fe5b9060005260206000209060040201600301819055506000925050506115b1565b846001600160a01b03167f3b6f9ef90462b512a1293ecec018670bf7b7f1876fb727590a8a6d7643130a70836040516143fe9190616d9f565b60405180910390a26001600160a01b038516600090815260046020526040812055835b600154600019018110156145eb576001816001018154811061443f57fe5b90600052602060002090600402016001828154811061445a57fe5b60009182526020909120825460049092020180546001600160a01b03199081166001600160a01b0393841617825560018085015481840180548416918616919091179055600280860180549185018054909416919095161780835584546001600160401b03600160a01b91829004160267ffffffffffffffff60a01b1990911617808355935460ff600160e01b918290041615150260ff60e01b19909416939093179055600392830154920191909155600b80549091830190811061451b57fe5b9060005260206000209060160201600b828154811061453657fe5b600091825260209091208254601690920201908155600180830154818301805460ff909216151560ff199092169190911790556002808401805461458d938386019390821615610100026000190190911604615af7565b506145a060038281019084016013615b6c565b509050508060010160046000600184815481106145b957fe5b600091825260208083206004909202909101546001600160a01b03168352820192909252604001902055600101614421565b5060018054806145f757fe5b60008281526020812060046000199093019283020180546001600160a01b0319908116825560018201805490911690556002810180546001600160e81b0319169055600301559055600b80548061464a57fe5b60008281526020812060166000199093019283020181815560018101805460ff191690559061467c6002830182615aa4565b61468a600383016000615ae8565b50509055600081838161469957fe5b049050801561470d5760015460005b8181101561470a576146e183600183815481106146c157fe5b90600052602060002090600402016003015461433190919063ffffffff16565b600182815481106146ee57fe5b60009182526020909120600360049092020101556001016146a8565b50505b50600195945050505050565b60015481516040805182815260208084028201019091526060929190839082801561475857816020015b60608152602001906001900390816147435790505b50600b54909150831461476f579250611501915050565b60005b8281101561487e57600b60016004600089858151811061478e57fe5b60200260200101516001600160a01b03166001600160a01b031681526020019081526020016000205403815481106147c257fe5b600091825260209182902060026016909202018101805460408051601f60001961010060018616150201909316949094049182018590048502840185019052808352919290919083018282801561485a5780601f1061482f5761010080835404028352916020019161485a565b820191906000526020600020905b81548152906001019060200180831161483d57829003601f168201915b505050505082828151811061486b57fe5b6020908102919091010152600101614772565b50949350505050565b60005b828110156149d457600082878388016040516020016148aa929190616147565b6040516020818303038152906040528051906020012060001c816148ca57fe5b069050808501828701146149cb57600089838801815181106148e857fe5b602002602001015190506060898489018151811061490257fe5b602002602001015190508a8388018151811061491a57fe5b60200260200101518b858a018151811061493057fe5b60200260200101906001600160a01b031690816001600160a01b031681525050818b8489018151811061495f57fe5b60200260200101906001600160a01b031690816001600160a01b031681525050898388018151811061498d57fe5b60200260200101518a858a01815181106149a357fe5b6020026020010181905250808a848901815181106149bd57fe5b602002602001018190525050505b5060010161488a565b5050505050505050565b600980546001908101909155600b8054839081106149f857fe5b906000526020600020906016020160010160006101000a81548160ff02191690831515021790555043600b8281548110614a2e57fe5b600091825260208220601690910201919091556040516001600160a01b038416917ff62981a567ec3cec866c6fa93c55bcdf841d6292d18b8d522ececa769375d82d91a25050565b600081604051602001614a89919061612b565b6040516020818303038152906040528051906020012083604051602001614ab0919061612b565b6040516020818303038152906040528051906020012014905092915050565b015190565b614adc615a80565b6000614ae6615a80565b614aee615b96565b614aff614afa8661534b565b615370565b90506000805b614b0e836153ba565b15614c825780614b3357614b29614b24846153db565b615429565b60ff168452614c7a565b8060011415614c75576060614b4f614b4a856153db565b6154a9565b90508051604051908082528060200260200182016040528015614b8c57816020015b614b79615a4b565b815260200190600190039081614b715790505b5085602001819052508051604051908082528060200260200182016040528015614bca57816020015b6060815260200190600190039081614bb55790505b50604086015260005b8151811015614c6a57614be4615a4b565b60606000614c04858581518110614bf757fe5b602002602001015161557a565b92509250925080614c24578860009a509a50505050505050505050614c8b565b8289602001518581518110614c3557fe5b60200260200101819052508189604001518581518110614c5157fe5b6020026020010181905250505050806001019050614bd3565b506001925050614c7a565b614c82565b600101614b05565b50919350909150505b915091565b815181516000916001918114808314614cac5760009250614cea565b600160208701838101602088015b600284838510011415614ce5578051835114614cd95760009650600093505b60209283019201614cba565b505050505b5090949350505050565b6001600160a01b03811660009081526004602052604081205480614d1d57506000199050611501565b600181039050600060018281548110614d3257fe5b9060005260206000209060040201600301549050600060018381548110614d5557fe5b6000918252602090912060036004909202010155600154604051600019909101906001600160a01b038616907f8cd4e147d8af98a9e3b6724021b8bf6aed2e5dac71c38f2dce8161b82585b25d90614dae908590616d9f565b60405180910390a280614dc657829350505050611501565b6000818381614dd157fe5b0490508015614e6d5760005b84811015614e1f57614df682600183815481106146c157fe5b60018281548110614e0357fe5b6000918252602090912060036004909202010155600101614ddd565b50600180549085015b81811015614e6a57614e4183600183815481106146c157fe5b60018281548110614e4e57fe5b6000918252602090912060036004909202010155600101614e28565b50505b5091949350505050565b600082614e86575060006115b1565b82820282848281614e9357fe5b0414611bdc5760405162461bcd60e51b8152600401610c2f90616945565b6000611bdc83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250615694565b805182516000916001600160a01b039182169116148015614f2d575081602001516001600160a01b031683602001516001600160a01b0316145b8015611bdc5750506040908101519101516001600160a01b0390811691161490565b60125460135480821115614f9a57805b82811015614f98576012805480614f7257fe5b600190038181906000526020600020016000614f8e9190615aa4565b9055600101614f5f565b505b6000818310614fa95781614fab565b825b905060005b818110156150c35761506860128281548110614fc857fe5b600091825260209182902001805460408051601f60026000196101006001871615020190941693909304928301859004850281018501909152818152928301828280156150565780601f1061502b57610100808354040283529160200191615056565b820191906000526020600020905b81548152906001019060200180831161503957829003601f168201915b505050505060138381548110612d5f57fe5b6150bb576013818154811061507957fe5b906000526020600020016012828154811061509057fe5b9060005260206000200190805460018160011615610100020316600290046150b9929190615af7565b505b600101614fb0565b5082821115610c5157825b82811015613344576012601382815481106150e557fe5b6000918252602080832084546001818101875595855291909320929091018054615128949390920192909160026101009282161592909202600019011604615af7565b506001016150ce565b601354600b548082111561517c57805b8281101561517a57601380548061515457fe5b6001900381819060005260206000200160006151709190615aa4565b9055600101615141565b505b600081831061518b578161518d565b825b905060005b818110156152ac5761524a601382815481106151aa57fe5b600091825260209182902001805460408051601f60026000196101006001871615020190941693909304928301859004850281018501909152818152928301828280156152385780601f1061520d57610100808354040283529160200191615238565b820191906000526020600020905b81548152906001019060200180831161521b57829003601f168201915b5050505050600b8381548110613fd157fe5b6152a457600b818154811061525b57fe5b90600052602060002090601602016002016013828154811061527957fe5b9060005260206000200190805460018160011615610100020316600290046152a2929190615af7565b505b600101615192565b5082821115610c5157825b82811015613344576013600b82815481106152ce57fe5b60009182526020808320845460018082018755958552919093206016929092029092016002908101805461531695939094019390926000199082161561010002011604615af7565b506001016152b7565b600081848411156153435760405162461bcd60e51b8152600401610c2f9190616275565b505050900390565b615353615bb6565b506040805180820190915281518152602082810190820152919050565b615378615b96565b615381826156cb565b61538a57600080fd5b60006153998360200151615705565b60208085015160408051808201909152868152920190820152915050919050565b60006153c4615bb6565b505080518051602091820151919092015191011190565b6153e3615bb6565b6153ec826153ba565b6153f557600080fd5b6020820151600061540582615768565b80830160209586015260408051808201909152908152938401919091525090919050565b80516000901580159061543e57508151602110155b61544757600080fd5b60006154568360200151615705565b9050808360000151101561547c5760405162461bcd60e51b8152600401610c2f90616af9565b82516020808501518301805192849003929183101561487e57506020919091036101000a90049392505050565b60606154b4826156cb565b6154bd57600080fd5b60006154c883615849565b905060608160405190808252806020026020018201604052801561550657816020015b6154f3615bb6565b8152602001906001900390816154eb5790505b50905060006155188560200151615705565b60208601510190506000805b8481101561556f5761553583615768565b915060405180604001604052808381526020018481525084828151811061555857fe5b602090810291909101015291810191600101615524565b509195945050505050565b615582615a4b565b6060600061558e615a4b565b6060615598615b96565b6155a187615370565b90506000805b6155b0836153ba565b1561568557806155db576155cb6155c6846153db565b6158a5565b6001600160a01b0316855261567d565b8060011415615603576155f06155c6846153db565b6001600160a01b0316602086015261567d565b806002141561562b576156186155c6846153db565b6001600160a01b0316604086015261567d565b806003141561565757615640614b24846153db565b6001600160401b031660608601526001915061567d565b80600414156156785761567161566c846153db565b6158bf565b935061567d565b615685565b6001016155a7565b50929791965091945092505050565b600081836156b55760405162461bcd60e51b8152600401610c2f9190616275565b5060008385816156c157fe5b0495945050505050565b80516000906156dc57506000611501565b6020820151805160001a9060c08210156156fb57600092505050611501565b5060019392505050565b8051600090811a608081101561571f576000915050611501565b60b881108061573a575060c0811080159061573a575060f881105b15615749576001915050611501565b60c081101561575d5760b519019050611501565b60f519019050611501565b80516000908190811a60808110156157835760019150615842565b60b881101561579857607e1981019150615842565b60c08110156157e957600060b78203600186019550806020036101000a8651049150600181018201935050808310156157e35760405162461bcd60e51b8152600401610c2f90616848565b50615842565b60f88110156157fe5760be1981019150615842565b600060f78203600186019550806020036101000a8651049150600181018201935050808310156158405760405162461bcd60e51b8152600401610c2f90616848565b505b5092915050565b805160009061585a57506000611501565b6000809050600061586e8460200151615705565b602085015185519181019250015b8082101561589c5761588d82615768565b8201915082600101925061587c565b50909392505050565b80516000906015146158b657600080fd5b6115b182615429565b80516060906158cd57600080fd5b60006158dc8360200151615705565b83516040805191839003808352601f19601f8201168301602001909152919250606090828015615913576020820181803683370190505b509050600081602001905061487e8487602001510182858061593457610c51565b5b60208110615954578251825260209283019290910190601f1901615935565b915181516020939093036101000a6000190180199091169216919091179052565b6040518060800160405280600081526020016000151581526020016060815260200161599f615bd0565b905290565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106159e557805160ff1916838001178555615a12565b82800160010185558215615a12579182015b82811115615a125782518255916020019190600101906159f7565b50612b41929150615bef565b8260138101928215615a125791602002820182811115615a125782518255916020019190600101906159f7565b6040805160c081018252600080825260208201819052918101829052606081018290526080810182905260a081019190915290565b6040518060600160405280600060ff16815260200160608152602001606081525090565b50805460018160011615610100020316600290046000825580601f10615aca5750611719565b601f0160209004906000526020600020908101906117199190615bef565b50611719906013810190615bef565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10615b305780548555615a12565b82800160010185558215615a1257600052602060002091601f016020900482015b82811115615a12578254825591600101919060010190615b51565b8260138101928215615a125791820182811115615a12578254825591600101919060010190615b51565b6040518060400160405280615ba9615bb6565b8152602001600081525090565b604051806040016040528060008152602001600081525090565b6040518061026001604052806013906020820280368337509192915050565b611dbe91905b80821115612b415760008155600101615bf5565b80356115b181616e54565b60008083601f840112615c25578182fd5b5081356001600160401b03811115615c3b578182fd5b6020830191508360208083028501011115613af957600080fd5b6000601f8381840112615c66578182fd5b8235615c79615c7482616e09565b616de3565b818152925060208084019085810160005b84811015615d0b578135880189603f820112615ca557600080fd5b838101356001600160401b03811115615cbd57600080fd5b615cce818901601f19168601616de3565b81815260408c81848601011115615ce457600080fd5b82818501888401375060009181018601919091528552509282019290820190600101615c8a565b50505050505092915050565b600082601f830112615d27578081fd5b8135615d35615c7482616e09565b818152915060208083019084810181840286018201871015615d5657600080fd5b6000805b85811015615d0b5782356001600160401b0381168114615d78578283fd5b85529383019391830191600101615d5a565b60008083601f840112615d9b578182fd5b5081356001600160401b03811115615db1578182fd5b602083019150836020828501011115613af957600080fd5b600060208284031215615dda578081fd5b8135611bdc81616e54565b600060208284031215615df6578081fd5b8151611bdc81616e54565b60008060008060408587031215615e16578283fd5b84356001600160401b0380821115615e2c578485fd5b615e3888838901615c14565b90965094506020870135915080821115615e50578384fd5b50615e5d87828801615c14565b95989497509550505050565b600080600060608486031215615e7d578283fd5b83356001600160401b0380821115615e93578485fd5b81860187601f820112615ea4578586fd5b80359250615eb4615c7484616e09565b80848252602080830192508084018b828389028701011115615ed457898afd5b8994505b86851015615efe57615eea8c82615c09565b845260019490940193928101928101615ed8565b509097508801359350505080821115615f15578384fd5b615f2187838801615d17565b93506040860135915080821115615f36578283fd5b50615f4386828701615c55565b9150509250925092565b60008060208385031215615f5f578182fd5b82356001600160401b03811115615f74578283fd5b615f8085828601615d8a565b90969095509350505050565b60008060008060408587031215615fa1578384fd5b84356001600160401b0380821115615fb7578586fd5b615fc388838901615d8a565b90965094506020870135915080821115615fdb578384fd5b50615e5d87828801615d8a565b600060208284031215615ff9578081fd5b5035919050565b600060208284031215616011578081fd5b5051919050565b6000806040838503121561602a578182fd5b505080516020909101519092909150565b60008060006040848603121561604f578081fd5b833560ff8116811461605f578182fd5b925060208401356001600160401b03811115616079578182fd5b61608586828701615d8a565b9497909650939450505050565b6000815180845260208085019450808401835b838110156160ca5781516001600160a01b0316875295820195908201906001016160a5565b509495945050505050565b60008284528282602086013780602084860101526020601f19601f85011685010190509392505050565b60008151808452616117816020860160208601616e28565b601f01601f19169290920160200192915050565b6000825161613d818460208701616e28565b9190910192915050565b918252602082015260400190565b6001600160a01b0391909116815260200190565b6001600160a01b03929092168252602082015260400190565b6001600160a01b03968716815294861660208601529290941660408401526001600160401b03166060830152911515608082015260a081019190915260c00190565b6001600160a01b0393909316835260208301919091521515604082015260600190565b600060208252611bdc6020830184616092565b60006040825261620d6040830185616092565b602083820381850152818551808452828401915082838202850101838801865b8381101561625b57601f198784030185526162498383516160ff565b9486019492509085019060010161622d565b50909998505050505050505050565b901515815260200190565b600060208252611bdc60208301846160ff565b60006040825261629c6040830186886160d5565b82810360208401526162af8185876160d5565b979650505050505050565b6020808252601c908201527f6c656e677468206f66206275726e526174696f206d69736d6174636800000000604082015260600190565b60208082526026908201527f6c656e677468206f66206d61784e756d4f664d61696e7461696e696e67206d696040820152650e6dac2e8c6d60d31b606082015260800190565b60208082526038908201527f746865206e756d4f66436162696e657473206d757374206265206c657373207460408201527f68616e206d6178456c656374656456616c696461746f72730000000000000000606082015260800190565b6020808252602c908201527f6c656e677468206f66206d61784e756d4f66576f726b696e6743616e6469646160408201526b0e8cae640dad2e6dac2e8c6d60a31b606082015260800190565b60208082526025908201527f6c656e677468206f66206d61696e7461696e536c6173685363616c65206d69736040820152640dac2e8c6d60db1b606082015260800190565b6020808252818101527f6c656e677468206f66206e756d4f66436162696e657473206d69736d61746368604082015260600190565b60208082526019908201527f74686520636f6e7472616374206e6f7420696e69742079657400000000000000604082015260600190565b6020808252601f908201527f6f6e6c7920736c617368206f72207374616b6548756220636f6e747261637400604082015260600190565b6020808252601b908201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604082015260600190565b60208082526063908201527f7468652073797374656d52657761726442617365526174696f20706c7573206260408201527f75726e526174696f20616e642073797374656d526577617264416e74694d455660608201527f526174696f206d757374206265206e6f2067726561746572207468616e20313060808201526203030360ec1b60a082015260c00190565b60208082526028908201527f746865206e756d4f66436162696e657473206d75737420626520677265617465604082015267072207468616e20360c41b606082015260800190565b60208082526022908201527f63616e206e6f7420646f207468697320747769636520696e206f6e6520626c6f604082015261636b60f01b606082015260800190565b60208082526037908201527f746865206d61784e756d4f664d61696e7461696e696e67206d7573742062652060408201527f6c657373207468616e206e756d4f66436162696e657473000000000000000000606082015260800190565b6020808252601d908201527f6c656e677468206f66207475726e4c656e677468206d69736d61746368000000604082015260600190565b6020808252600a908201526919195c1c9958d85d195960b21b604082015260600190565b60208082526063908201527f746865206275726e526174696f20706c75732073797374656d5265776172644260408201527f617365526174696f20616e642073797374656d526577617264416e74694d455660608201527f526174696f206d757374206265206e6f2067726561746572207468616e20313060808201526203030360ec1b60a082015260c00190565b6020808252602b908201527f6c656e677468206f662073797374656d526577617264416e74694d455652617460408201526a0d2de40dad2e6dac2e8c6d60ab1b606082015260800190565b6020808252601590820152746465706f7369742076616c7565206973207a65726f60581b604082015260600190565b60208082526049908201527f746865206d61784e756d4f66576f726b696e6743616e64696461746573206d7560408201527f7374206265206e6f742067726561746572207468616e206d61784e756d4f6643606082015268616e6469646174657360b81b608082015260a00190565b6020808252601190820152706164646974696f6e206f766572666c6f7760781b604082015260600190565b60208082526063908201527f7468652073797374656d526577617264416e74694d4556526174696f20706c7560408201527f73206275726e526174696f20616e642073797374656d5265776172644261736560608201527f526174696f206d757374206265206e6f2067726561746572207468616e20313060808201526203030360ec1b60a082015260c00190565b60208082526023908201527f63616e206e6f7420656e7465722054656d706f72617279204d61696e74656e616040820152626e636560e81b606082015260800190565b60208082526021908201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6040820152607760f81b606082015260800190565b6020808252601490820152736761737072696365206973206e6f74207a65726f60601b604082015260600190565b6020808252602e908201527f746865206d6573736167652073656e646572206d75737420626520676f76657260408201526d1b985b98d94818dbdb9d1c9858dd60921b606082015260800190565b60208082526025908201527f6c656e677468206f66206d61784e756d4f6643616e64696461746573206d69736040820152640dac2e8c6d60db1b606082015260800190565b6020808252601290820152716e6f7420696e206d61696e74656e616e636560701b604082015260600190565b60208082526019908201527f74686520636f6e747261637420616c726561647920696e697400000000000000604082015260600190565b6020808252602f908201527f746865207475726e4c656e6774682073686f756c6420626520696e205b332c3960408201526e5d206f7220657175616c20746f203160881b606082015260800190565b6020808252601a908201527f6c656e677468206973206c657373207468616e206f6666736574000000000000604082015260600190565b60208082526017908201527f6f6e6c792063757272656e742076616c696461746f7273000000000000000000604082015260600190565b60208082526021908201527f6661696c656420746f20706172736520696e69742076616c696461746f7253656040820152601d60fa1b606082015260800190565b6020808252602f908201527f746865206d6573736167652073656e646572206d7573742062652063726f737360408201526e0818da185a5b8818dbdb9d1c9858dd608a1b606082015260800190565b6020808252602d908201527f746865206d6573736167652073656e646572206d75737420626520746865206260408201526c3637b1b590383937b23ab1b2b960991b606082015260800190565b60208082526028908201527f6c656e677468206f662073797374656d52657761726442617365526174696f206040820152670dad2e6dac2e8c6d60c31b606082015260800190565b6020808252603e908201527f746865206d61696e7461696e536c6173685363616c65206d757374206265206760408201527f726561746572207468616e203020616e64206c657373207468616e2031300000606082015260800190565b6020808252600d908201526c756e6b6e6f776e20706172616d60981b604082015260600190565b60208082526029908201527f746865206d6573736167652073656e646572206d75737420626520736c6173686040820152680818dbdb9d1c9858dd60ba1b606082015260800190565b6020808252601f908201527f746865206d73672073656e646572206d757374206265207374616b6548756200604082015260600190565b61ffff91909116815260200190565b90815260200190565b6000848252831515602083015260606040830152616dc960608301846160ff565b95945050505050565b63ffffffff91909116815260200190565b6040518181016001600160401b0381118282101715616e0157600080fd5b604052919050565b60006001600160401b03821115616e1e578081fd5b5060209081020190565b60005b83811015616e43578181015183820152602001616e2b565b838111156133445750506000910152565b6001600160a01b038116811461171957600080fdfe0175b7a638427703f0dbe7bb9bbf987a2551717b34e79f33b5b1008d1fa01db90175b7a638427703f0dbe7bb9bbf987a2551717b34e79f33b5b1008d1fa01dbbf905ec80f905e8f846942a7cdd959bfe8d9487b2a43b33565295a698f7e294b6a7edd747c0554875d3fc531d19ba1497992c5e941ff80f3f7f110ffd8920a3ac38fdef318fe94a3f86048c27395000f846946488aa4d1955ee33403f8ccb1d4de5fb97c7ade294220f003d8bdfaadf52aa1e55ae4cc485e6794875941a87e90e440a39c99aa9cb5cea0ad6a3f0b2407b86048c27395000f846949ef9f4360c606c7ab4db26b016007d3ad0ab86a0946103af86a874b705854033438383c82575f25bc29418e2db06cbff3e3c5f856410a1838649e760175786048c27395000f84694ee01c3b1283aa067c58eab4709f85e99d46de5fe94ee4b9bfb1871c64e2bcabb1dc382dc8b7c4218a29415904ab26ab0e99d70b51c220ccdcccabee6e29786048c27395000f84694685b1ded8013785d6623cc18d214320b6bb6475994a20ef4e5e4e7e36258dbf51f4d905114cb1b34bc9413e39085dc88704f4394d35209a02b1a9520320c86048c27395000f8469478f3adfc719c99674c072166708589033e2d9afe9448a30d5eaa7b64492a160f139e2da2800ec3834e94055838358c29edf4dcc1ba1985ad58aedbb6be2b86048c27395000f84694c2be4ec20253b8642161bc3f444f53679c1f3d479466f50c616d737e60d7ca6311ff0d9c434197898a94d1d678a2506eeaa365056fe565df8bc8659f28b086048c27395000f846942f7be8361c80a4c1e7e9aaf001d0877f1cfde218945f93992ac37f3e61db2ef8a587a436a161fd210b94ecbc4fb1a97861344dad0867ca3cba2b860411f086048c27395000f84694ce2fd7544e0b2cc94692d4a704debef7bcb613289444abc67b4b2fba283c582387f54c9cba7c34bafa948acc2ab395ded08bb75ce85bf0f95ad2abc51ad586048c27395000f84694b8f7166496996a7da21cf1f1b04d9b3e26a3d077946770572763289aac606e4f327c2f6cc1aa3b3e3b94882d745ed97d4422ca8da1c22ec49d880c4c097286048c27395000f846942d4c407bbe49438ed859fe965b140dcf1aab71a9943ad0939e120f33518fbba04631afe7a3ed6327b194b2bbb170ca4e499a2b0f3cc85ebfa6e8c4dfcbea86048c27395000f846946bbad7cf34b5fa511d8e963dbba288b1960e75d694853b0f6c324d1f4e76c8266942337ac1b0af1a229442498946a51ca5924552ead6fc2af08b94fcba648601d1a94a2000f846944430b3230294d12c6ab2aac5c2cd68e80b16b581947b107f4976a252a6939b771202c28e64e03f52d694795811a7f214084116949fc4f53cedbf189eeab28601d1a94a2000f84694ea0a6e3c511bbd10f4519ece37dc24887e11b55d946811ca77acfb221a49393c193f3a22db829fcc8e9464feb7c04830dd9ace164fc5c52b3f5a29e5018a8601d1a94a2000f846947ae2f5b9e386cd1b50a4550696d957cb4900f03a94e83bcc5077e6b873995c24bac871b5ad856047e19464e48d4057a90b233e026c1041e6012ada897fe88601d1a94a2000f8469482012708dafc9e1b880fd083b32182b869be8e09948e5adc73a2d233a1b496ed3115464dd6c7b887509428b383d324bc9a37f4e276190796ba5a8947f5ed8601d1a94a2000f8469422b81f8e175ffde54d797fe11eb03f9e3bf75f1d94a1c3ef7ca38d8ba80cce3bfc53ebd2903ed21658942767f7447f7b9b70313d4147b795414aecea54718601d1a94a2000f8469468bf0b8b6fb4e317a0f9d6f03eaf8ce6675bc60d94675cfe570b7902623f47e7f59c9664b5f5065dcf94d84f0d2e50bcf00f2fc476e1c57f5ca2d57f625b8601d1a94a2000f846948c4d90829ce8f72d0163c1d5cf348a862d5506309485c42a7b34309bee2ed6a235f86d16f059deec5894cc2cedc53f0fa6d376336efb67e43d167169f3b78601d1a94a2000f8469435e7a025f4da968de7e4d7e4004197917f4070f194b1182abaeeb3b4d8eba7e6a4162eac7ace23d57394c4fd0d870da52e73de2dd8ded19fe3d26f43a1138601d1a94a2000f84694d6caa02bbebaebb5d7e581e4b66559e635f805ff94c07335cf083c1c46a487f0325769d88e163b653694efaff03b42e41f953a925fc43720e45fb61a19938601d1a94a20000175b7a638427703f0dbe7bb9bbf987a2551717b34e79f33b5b1008d1fa01dbaa164736f6c6343000604000a \ No newline at end of file diff --git a/core/systemcontracts/pascal/rialto/GovernorContract b/core/systemcontracts/pascal/rialto/GovernorContract index 49d2950299..6e52f984cd 100644 --- a/core/systemcontracts/pascal/rialto/GovernorContract +++ b/core/systemcontracts/pascal/rialto/GovernorContract @@ -1 +1 @@ -6080604052600436106103dd5760003560e01c80637b3c71d3116101fd578063c170ec0b11610118578063deaaa7cc116100ab578063ece40cc11161007a578063ece40cc114610de9578063f23a6e6114610e09578063f8ce560a14610e35578063fc0c546a14610e55578063fe0d94c114610e7657600080fd5b8063deaaa7cc14610caa578063e23a9a5214610cde578063ea0217cf14610da9578063eb9019d414610dc957600080fd5b8063d33219b4116100e7578063d33219b414610c05578063da95691a14610c24578063dd4e2ba514610c44578063ddf0b00914610c8a57600080fd5b8063c170ec0b14610b97578063c28bc2fa14610bb2578063c59057e414610bc5578063d07f91e914610be557600080fd5b8063a7713a7011610190578063b187bd261161015f578063b187bd2614610b18578063b58131b014610b36578063bc197c8114610b4b578063c01f9e3714610b7757600080fd5b8063a7713a7014610aa3578063a890c91014610ab8578063ab58fb8e14610ad8578063ac43175114610af857600080fd5b806384b0196e116101cc57806384b0196e14610a1b57806391ddadf414610a4357806397c3d33414610a6f5780639a802a6d14610a8357600080fd5b80637b3c71d3146109b15780637d5e81e2146109d15780638129fc1c146109f15780638456cb5914610a0657600080fd5b806332b8113e116102f85780634838d1651161028b57806354fd4d501161025a57806354fd4d501461090757806356781388146109315780635f398a141461095157806360c4247f1461097157806370b0f6601461099157600080fd5b80634838d165146108715780634a49ac4c146108a15780634bf5d7e9146108c1578063533ddd14146108d657600080fd5b806340e58ee5116102c757806340e58ee5146107c6578063417c73a7146107e65780634385963214610806578063452115d61461085157600080fd5b806332b8113e1461073a5780633932abb1146107635780633bccf4fd146107795780633e4f49e61461079957600080fd5b8063150b7a02116103705780632656227d1161033f5780632656227d1461068c5780632d63f6931461069f5780632fe3e261146106d6578063328dd9821461070a57600080fd5b8063150b7a02146105e5578063160cbed71461062957806317977c611461064957806324bc1a641461067757600080fd5b8063046f7da2116103ac578063046f7da21461053857806306f3f9e61461054d57806306fdde031461056d578063143489d01461058f57600080fd5b8063013cf08b1461044d57806301ffc9a7146104c857806302a251a3146104f8578063034201811461051857600080fd5b3661044857306103eb610e89565b6001600160a01b0316146104465760405162461bcd60e51b815260206004820152601f60248201527f476f7665726e6f723a206d7573742073656e6420746f206578656375746f720060448201526064015b60405180910390fd5b005b600080fd5b34801561045957600080fd5b5061046d610468366004615c35565b610ea3565b604080519a8b526001600160a01b0390991660208b0152978901969096526060880194909452608087019290925260a086015260c085015260e084015215156101008301521515610120820152610140015b60405180910390f35b3480156104d457600080fd5b506104e86104e3366004615c4e565b610f5e565b60405190151581526020016104bf565b34801561050457600080fd5b50610195545b6040519081526020016104bf565b34801561052457600080fd5b5061050a610533366004615d94565b610f6f565b34801561054457600080fd5b50610446611067565b34801561055957600080fd5b50610446610568366004615c35565b6110f7565b34801561057957600080fd5b50610582611182565b6040516104bf9190615e8a565b34801561059b57600080fd5b506105cd6105aa366004615c35565b60009081526101636020526040902054600160401b90046001600160a01b031690565b6040516001600160a01b0390911681526020016104bf565b3480156105f157600080fd5b50610610610600366004615eb2565b630a85bd0160e11b949350505050565b6040516001600160e01b031990911681526020016104bf565b34801561063557600080fd5b5061050a610644366004616089565b611215565b34801561065557600080fd5b5061050a610664366004616118565b6102c36020526000908152604090205481565b34801561068357600080fd5b5061050a611300565b61050a61069a366004616089565b611326565b3480156106ab57600080fd5b5061050a6106ba366004615c35565b600090815261016360205260409020546001600160401b031690565b3480156106e257600080fd5b5061050a7fb3b3f3b703cd84ce352197dcff232b1b5d3cfb2025ce47cf04742d0651f1af8881565b34801561071657600080fd5b5061072a610725366004615c35565b611419565b6040516104bf94939291906161fe565b34801561074657600080fd5b5061028f546040516001600160401b0390911681526020016104bf565b34801561076f57600080fd5b506101945461050a565b34801561078557600080fd5b5061050a61079436600461624b565b6116ab565b3480156107a557600080fd5b506107b96107b4366004615c35565b611721565b6040516104bf91906162af565b3480156107d257600080fd5b506104466107e1366004615c35565b61172c565b3480156107f257600080fd5b50610446610801366004616118565b611757565b34801561081257600080fd5b506104e86108213660046162d7565b60008281526101c6602090815260408083206001600160a01b038516845260080190915290205460ff1692915050565b34801561085d57600080fd5b5061050a61086c366004616089565b6117d8565b34801561087d57600080fd5b506104e861088c366004616118565b60016020526000908152604090205460ff1681565b3480156108ad57600080fd5b506104466108bc366004616118565b6117e6565b3480156108cd57600080fd5b50610582611861565b3480156108e257600080fd5b506104e86108f1366004616118565b6102c16020526000908152604090205460ff1681565b34801561091357600080fd5b506040805180820190915260018152603160f81b6020820152610582565b34801561093d57600080fd5b5061050a61094c366004616307565b61190e565b34801561095d57600080fd5b5061050a61096c366004616333565b611937565b34801561097d57600080fd5b5061050a61098c366004615c35565b611981565b34801561099d57600080fd5b506104466109ac366004615c35565b611a36565b3480156109bd57600080fd5b5061050a6109cc3660046163b6565b611abe565b3480156109dd57600080fd5b5061050a6109ec36600461640f565b611b10565b3480156109fd57600080fd5b50610446611c2b565b348015610a1257600080fd5b50610446611e59565b348015610a2757600080fd5b50610a30611eef565b6040516104bf97969594939291906164af565b348015610a4f57600080fd5b50610a58611f8d565b60405165ffffffffffff90911681526020016104bf565b348015610a7b57600080fd5b50606461050a565b348015610a8f57600080fd5b5061050a610a9e366004616511565b612001565b348015610aaf57600080fd5b5061050a612018565b348015610ac457600080fd5b50610446610ad3366004616118565b612045565b348015610ae457600080fd5b5061050a610af3366004615c35565b6120cd565b348015610b0457600080fd5b50610446610b13366004616569565b612169565b348015610b2457600080fd5b5060005462010000900460ff166104e8565b348015610b4257600080fd5b5061050a6128ae565b348015610b5757600080fd5b50610610610b663660046165c8565b63bc197c8160e01b95945050505050565b348015610b8357600080fd5b5061050a610b92366004615c35565b6128ba565b348015610ba357600080fd5b506102c2546104e89060ff1681565b610446610bc036600461665b565b6128c5565b348015610bd157600080fd5b5061050a610be0366004616089565b6129d5565b348015610bf157600080fd5b50610446610c0036600461669e565b612a0f565b348015610c1157600080fd5b5061022b546001600160a01b03166105cd565b348015610c3057600080fd5b5061050a610c3f3660046166c7565b612a97565b348015610c5057600080fd5b5060408051808201909152601a81527f737570706f72743d627261766f2671756f72756d3d627261766f0000000000006020820152610582565b348015610c9657600080fd5b50610446610ca5366004615c35565b612b1e565b348015610cb657600080fd5b5061050a7f150214d74d59b7d1e90c73fc22ef3d991dd0a76b046543d4d80ab92d2a50328f81565b348015610cea57600080fd5b50610d79610cf93660046162d7565b60408051606081018252600080825260208201819052918101919091525060009182526101c6602090815260408084206001600160a01b0393909316845260089092018152918190208151606081018352905460ff8082161515835261010082041693820193909352620100009092046001600160601b03169082015290565b6040805182511515815260208084015160ff1690820152918101516001600160601b0316908201526060016104bf565b348015610db557600080fd5b50610446610dc4366004615c35565b612b41565b348015610dd557600080fd5b5061050a610de4366004616768565b612bc9565b348015610df557600080fd5b50610446610e04366004615c35565b612bea565b348015610e1557600080fd5b50610610610e24366004616794565b63f23a6e6160e01b95945050505050565b348015610e4157600080fd5b5061050a610e50366004615c35565b612c72565b348015610e6157600080fd5b506101f8546105cd906001600160a01b031681565b610446610e84366004615c35565b612d01565b6000610e9e61022b546001600160a01b031690565b905090565b8060008080808080808080610eb78a6120cd565b60008c815261016360205260409020549098506001600160401b03169650610ede8b6128ba565b60008c81526101c66020526040812080546005820154600683015460078401546001600160a01b039093169e50949a509850929650919450610f1f8d611721565b90506002816007811115610f3557610f35616299565b1493506007816007811115610f4c57610f4c616299565b14925050509193959799509193959799565b6000610f6982612d24565b92915050565b60008061101361100b7fb3b3f3b703cd84ce352197dcff232b1b5d3cfb2025ce47cf04742d0651f1af888c8c8c8c604051610fab9291906167fc565b60405180910390208b80519060200120604051602001610ff0959493929190948552602085019390935260ff9190911660408401526060830152608082015260a00190565b60405160208183030381529060405280519060200120612d49565b868686612d76565b90506110598a828b8b8b8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152508d9250612d94915050565b9a9950505050505050505050565b600054630100000090046001600160a01b03163314611099576040516306fbb1e360e01b815260040160405180910390fd5b60005462010000900460ff166110c257604051636cd6020160e01b815260040160405180910390fd5b6000805462ff0000191681556040517f62451d457bc659158be6e6247f56ec1df424a5c7597f71c20c2bc44e0965c8f99190a1565b6110ff610e89565b6001600160a01b0316336001600160a01b03161461112f5760405162461bcd60e51b815260040161043d9061680c565b30611138610e89565b6001600160a01b03161461117657600080366040516111589291906167fc565b604051809103902090505b8061116f610164612dfd565b0361116357505b61117f81612e7c565b50565b6060610162805461119290616843565b80601f01602080910402602001604051908101604052809291908181526020018280546111be90616843565b801561120b5780601f106111e05761010080835404028352916020019161120b565b820191906000526020600020905b8154815290600101906020018083116111ee57829003601f168201915b5050505050905090565b6000805462010000900460ff161561124057604051631785c68160e01b815260040160405180910390fd5b3360009081526001602052604090205460ff16156112715760405163b1d02c3d60e01b815260040160405180910390fd5b60005b85518110156112ea576102c160008783815181106112945761129461687d565b6020908102919091018101516001600160a01b031682528101919091526040016000205460ff166112d857604051630b094f2760e31b815260040160405180910390fd5b806112e2816168a9565b915050611274565b506112f785858585612fed565b95945050505050565b6000610e9e600161130f611f8d565b61131991906168c2565b65ffffffffffff16612c72565b600080611335868686866129d5565b9050600061134282611721565b9050600481600781111561135857611358616299565b14806113755750600581600781111561137357611373616299565b145b6113915760405162461bcd60e51b815260040161043d906168e8565b6000828152610163602052604090819020600201805460ff19166001179055517f712ae1383f79ac853f8d882153778e0260ef8f03b504e2866e0593e04d2b291f906113e09084815260200190565b60405180910390a16113f582888888886131f2565b6114028288888888613293565b61140f8288888888613375565b5095945050505050565b60608060608060006101c660008781526020019081526020016000209050806001018160020182600301836004018380548060200260200160405190810160405280929190818152602001828054801561149c57602002820191906000526020600020905b81546001600160a01b0316815260019091019060200180831161147e575b50505050509350828054806020026020016040519081016040528092919081815260200182805480156114ee57602002820191906000526020600020905b8154815260200190600101908083116114da575b5050505050925081805480602002602001604051908101604052809291908181526020016000905b828210156115c257838290600052602060002001805461153590616843565b80601f016020809104026020016040519081016040528092919081815260200182805461156190616843565b80156115ae5780601f10611583576101008083540402835291602001916115ae565b820191906000526020600020905b81548152906001019060200180831161159157829003601f168201915b505050505081526020019060010190611516565b50505050915080805480602002602001604051908101604052809291908181526020016000905b8282101561169557838290600052602060002001805461160890616843565b80601f016020809104026020016040519081016040528092919081815260200182805461163490616843565b80156116815780601f1061165657610100808354040283529160200191611681565b820191906000526020600020905b81548152906001019060200180831161166457829003601f168201915b5050505050815260200190600101906115e9565b5050505090509450945094509450509193509193565b604080517f150214d74d59b7d1e90c73fc22ef3d991dd0a76b046543d4d80ab92d2a50328f602082015290810186905260ff8516606082015260009081906116f99061100b90608001610ff0565b9050611716878288604051806020016040528060008152506133b0565b979650505050505050565b6000610f69826133d3565b60008060008061173b85613520565b935093509350935061174f848484846117d8565b505050505050565b600054630100000090046001600160a01b03163314611789576040516306fbb1e360e01b815260040160405180910390fd5b6001600160a01b0381166000818152600160208190526040808320805460ff1916909217909155517f7fd26be6fc92aff63f1f4409b2b2ddeb272a888031d7f55ec830485ec61941869190a250565b60006112f7858585856137b1565b600054630100000090046001600160a01b03163314611818576040516306fbb1e360e01b815260040160405180910390fd5b6001600160a01b038116600081815260016020526040808220805460ff19169055517fe0db3499b7fdc3da4cddff5f45d694549c19835e7f719fb5606d3ad1a5de40119190a250565b6101f85460408051634bf5d7e960e01b815290516060926001600160a01b031691634bf5d7e99160048083019260009291908290030181865afa9250505080156118cd57506040513d6000823e601f3d908101601f191682016040526118ca9190810190616929565b60015b611909575060408051808201909152601d81527f6d6f64653d626c6f636b6e756d6265722666726f6d3d64656661756c74000000602082015290565b919050565b60008033905061192f848285604051806020016040528060008152506133b0565b949350505050565b60008033905061171687828888888080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152508a9250612d94915050565b61025e5460009080820361199a57505061025d54919050565b600061025e6119aa600184616996565b815481106119ba576119ba61687d565b60009182526020918290206040805180820190915291015463ffffffff8116808352600160201b9091046001600160e01b03169282019290925291508410611a1057602001516001600160e01b03169392505050565b611a25611a1c8561387c565b61025e906138e5565b6001600160e01b0316949350505050565b611a3e610e89565b6001600160a01b0316336001600160a01b031614611a6e5760405162461bcd60e51b815260040161043d9061680c565b30611a77610e89565b6001600160a01b031614611ab55760008036604051611a979291906167fc565b604051809103902090505b80611aae610164612dfd565b03611aa257505b61117f81613998565b600080339050611b0686828787878080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506133b092505050565b9695505050505050565b6000805462010000900460ff1615611b3b57604051631785c68160e01b815260040160405180910390fd5b3360009081526001602052604090205460ff1615611b6c5760405163b1d02c3d60e01b815260040160405180910390fd5b611b746139db565b3360009081526102c360205260409020548015611be9576000611b9682611721565b90506001816007811115611bac57611bac616299565b1480611bc957506000816007811115611bc757611bc7616299565b145b15611be75760405163867f3ee560e01b815260040160405180910390fd5b505b825160208401206000611bfe888888856129d5565b3360009081526102c3602052604090208190559050611c1f88888888613a86565b98975050505050505050565b600054610100900460ff1615808015611c4b5750600054600160ff909116105b80611c655750303b158015611c65575060005460ff166001145b611cc85760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b606482015260840161043d565b6000805460ff191660011790558015611ceb576000805461ff0019166101001790555b334114611d0b5760405163022d8c9560e31b815260040160405180910390fd5b3a15611d2a576040516383f1b1d360e01b815260040160405180910390fd5b611d566040518060400160405280600b81526020016a2129a1a3b7bb32b93737b960a91b815250613aee565b611d80611d656003603c6169bf565b611d71600360786169bf565b680ad78ebc5ac6200000613b45565b611d88613b7c565b611d93612005613ba3565b611d9e612006613bd3565b611da8600a613c03565b611dbc611db76003603c6169bf565b613c33565b6110076000526102c16020527f2f832952f0ef896b8c8edd6d16a2e4f2591a90375e33021e3b9ff197f3793fc0805460ff19166001179055611e117304d63abcd2b9b1baa327f2dda0f873f197ccd186613c63565b801561117f576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a150565b600054630100000090046001600160a01b03163314611e8b576040516306fbb1e360e01b815260040160405180910390fd5b60005462010000900460ff1615611eb557604051631785c68160e01b815260040160405180910390fd5b6000805462ff00001916620100001781556040517f9e87fac88ff661f02d44f95383c817fece4bce600a3dab7a54406878b965e7529190a1565b6000606080600080600060606098546000801b148015611f0f5750609954155b611f535760405162461bcd60e51b81526020600482015260156024820152741152540dcc4c8e88155b9a5b9a5d1a585b1a5e9959605a1b604482015260640161043d565b611f5b613cb6565b611f63613cc5565b60408051600080825260208201909252600f60f81b9b939a50919850469750309650945092509050565b6101f854604080516324776b7d60e21b815290516000926001600160a01b0316916391ddadf49160048083019260209291908290030181865afa925050508015611ff4575060408051601f3d908101601f19168201909252611ff1918101906169e1565b60015b61190957610e9e43613cd4565b600061200e848484613d3b565b90505b9392505050565b61025e546000901561203d5761202f61025e613db2565b6001600160e01b0316905090565b5061025d5490565b61204d610e89565b6001600160a01b0316336001600160a01b03161461207d5760405162461bcd60e51b815260040161043d9061680c565b30612086610e89565b6001600160a01b0316146120c457600080366040516120a69291906167fc565b604051809103902090505b806120bd610164612dfd565b036120b157505b61117f81613de2565b61022b54600082815261022c602052604080822054905163d45c443560e01b81526004810191909152909182916001600160a01b039091169063d45c443590602401602060405180830381865afa15801561212c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121509190616a09565b9050806001146121605780612011565b60009392505050565b336110071461218f57604051630f22c43960e41b8152611007600482015260240161043d565b6121f56040518060400160405280600b81526020016a766f74696e6744656c617960a81b81525085858080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509293925050613e4d9050565b156122aa57602081146122235783838383604051630a5a604160e01b815260040161043d9493929190616a4b565b604080516020601f8401819004810282018101909252828152600091612264918585808385018382808284376000920191909152509293925050613ea69050565b905080158061227557506201518081115b1561229b5784848484604051630a5a604160e01b815260040161043d9493929190616a4b565b6122a481613998565b5061286b565b6123116040518060400160405280600c81526020016b1d9bdd1a5b99d4195c9a5bd960a21b81525085858080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509293925050613e4d9050565b156123c0576020811461233f5783838383604051630a5a604160e01b815260040161043d9493929190616a4b565b604080516020601f8401819004810282018101909252828152600091612380918585808385018382808284376000920191909152509293925050613ea69050565b9050801580612391575062278d0081115b156123b75784848484604051630a5a604160e01b815260040161043d9493929190616a4b565b6122a481613eab565b61242c604051806040016040528060118152602001701c1c9bdc1bdcd85b151a1c995cda1bdb19607a1b81525085858080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509293925050613e4d9050565b156124e2576020811461245a5783838383604051630a5a604160e01b815260040161043d9493929190616a4b565b604080516020601f840181900481028201810190925282815260009161249b918585808385018382808284376000920191909152509293925050613ea69050565b90508015806124b3575069021e19e0c9bab240000081115b156124d95784848484604051630a5a604160e01b815260040161043d9493929190616a4b565b6122a481613f4e565b61254c6040518060400160405280600f81526020016e38bab7b93ab6a73ab6b2b930ba37b960891b81525085858080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509293925050613e4d9050565b156125fb576020811461257a5783838383604051630a5a604160e01b815260040161043d9493929190616a4b565b604080516020601f84018190048102820181019092528281526000916125bb918585808385018382808284376000920191909152509293925050613ea69050565b905060058110806125cc5750601481115b156125f25784848484604051630a5a604160e01b815260040161043d9493929190616a4b565b6122a481612e7c565b61266a604051806040016040528060148152602001736d696e506572696f64416674657251756f72756d60601b81525085858080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509293925050613e4d9050565b1561273057600881146126985783838383604051630a5a604160e01b815260040161043d9493929190616a4b565b60006126de600884848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509293925050613ea69050565b90506001600160401b038116158061270157506202a300816001600160401b0316115b156127275784848484604051630a5a604160e01b815260040161043d9493929190616a4b565b6122a481613f91565b61279c6040518060400160405280601181526020017033b7bb32b93737b9283937ba32b1ba37b960791b81525085858080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509293925050613e4d9050565b1561284a57601481146127ca5783838383604051630a5a604160e01b815260040161043d9493929190616a4b565b6000612810601484848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509293925050613ea69050565b90506001600160a01b0381166128415784848484604051630a5a604160e01b815260040161043d9493929190616a4b565b6122a481613ffd565b838383836040516325ee20d560e21b815260040161043d9493929190616a4b565b7ff1ce9b2cbf50eeb05769a29e2543fd350cab46894a7dd9978a12d534bb20e633848484846040516128a09493929190616a4b565b60405180910390a150505050565b6000610e9e6101965490565b6000610f6982614069565b6128cd610e89565b6001600160a01b0316336001600160a01b0316146128fd5760405162461bcd60e51b815260040161043d9061680c565b30612906610e89565b6001600160a01b03161461294457600080366040516129269291906167fc565b604051809103902090505b8061293d610164612dfd565b0361293157505b600080856001600160a01b03168585856040516129629291906167fc565b60006040518083038185875af1925050503d806000811461299f576040519150601f19603f3d011682016040523d82523d6000602084013e6129a4565b606091505b50915091506129cc8282604051806060016040528060288152602001616ea8602891396140a7565b50505050505050565b6000848484846040516020016129ee9493929190616a72565b60408051601f19818403018152919052805160209091012095945050505050565b612a17610e89565b6001600160a01b0316336001600160a01b031614612a475760405162461bcd60e51b815260040161043d9061680c565b30612a50610e89565b6001600160a01b031614612a8e5760008036604051612a709291906167fc565b604051809103902090505b80612a87610164612dfd565b03612a7b57505b61117f81613f91565b60008251845114612afb5760405162461bcd60e51b815260206004820152602860248201527f476f7665726e6f72427261766f3a20696e76616c6964207369676e61747572656044820152670e640d8cadccee8d60c31b606482015260840161043d565b612b093387878787876140c0565b611b068686612b18878761417e565b85611b10565b600080600080612b2d85613520565b935093509350935061174f84848484611215565b612b49610e89565b6001600160a01b0316336001600160a01b031614612b795760405162461bcd60e51b815260040161043d9061680c565b30612b82610e89565b6001600160a01b031614612bc05760008036604051612ba29291906167fc565b604051809103902090505b80612bb9610164612dfd565b03612bad57505b61117f81613eab565b60006120118383612be560408051602081019091526000815290565b613d3b565b612bf2610e89565b6001600160a01b0316336001600160a01b031614612c225760405162461bcd60e51b815260040161043d9061680c565b30612c2b610e89565b6001600160a01b031614612c695760008036604051612c4b9291906167fc565b604051809103902090505b80612c62610164612dfd565b03612c5657505b61117f81613f4e565b60006064612c7f83611981565b6101f854604051632394e7a360e21b8152600481018690526001600160a01b0390911690638e539e8c90602401602060405180830381865afa158015612cc9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612ced9190616a09565b612cf79190616abd565b610f6991906169bf565b600080600080612d1085613520565b935093509350935061174f84848484611326565b60006001600160e01b03198216636e665ced60e01b1480610f695750610f69826142b0565b6000610f69612d5661434c565b8360405161190160f01b8152600281019290925260228201526042902090565b6000806000612d8787878787614356565b9150915061140f8161441a565b6000805462010000900460ff1615612dbf57604051631785c68160e01b815260040160405180910390fd5b3360009081526001602052604090205460ff1615612df05760405163b1d02c3d60e01b815260040160405180910390fd5b611b068686868686614564565b6000612e188254600f81810b600160801b909204900b131590565b15612e3657604051631ed9509560e11b815260040160405180910390fd5b508054600f0b6000818152600180840160205260408220805492905583546fffffffffffffffffffffffffffffffff191692016001600160801b03169190911790915590565b6064811115612eff5760405162461bcd60e51b815260206004820152604360248201527f476f7665726e6f72566f74657351756f72756d4672616374696f6e3a2071756f60448201527f72756d4e756d657261746f72206f7665722071756f72756d44656e6f6d696e616064820152623a37b960e91b608482015260a40161043d565b6000612f09612018565b90508015801590612f1b575061025e54155b15612f8057604080518082019091526000815261025e9060208101612f3f84614667565b6001600160e01b039081169091528254600181018455600093845260209384902083519490930151909116600160201b0263ffffffff909316929092179101555b612fae612f9b612f8e611f8d565b65ffffffffffff1661387c565b612fa484614667565b61025e91906146d0565b505060408051828152602081018490527f0553476bf02ef2726e8ce5ced78d63e26e602e4a2257b1f559418e24b4633997910160405180910390a15050565b600080612ffc868686866129d5565b9050600461300982611721565b600781111561301a5761301a616299565b146130375760405162461bcd60e51b815260040161043d906168e8565b61022b546040805163793d064960e11b815290516000926001600160a01b03169163f27a0c929160048083019260209291908290030181865afa158015613082573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906130a69190616a09565b61022b5460405163b1c5f42760e01b81529192506001600160a01b03169063b1c5f427906130e1908a908a908a906000908b90600401616ad4565b602060405180830381865afa1580156130fe573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906131229190616a09565b600083815261022c60205260408082209290925561022b5491516308f2a0bb60e41b81526001600160a01b0390921691638f2a0bb09161316f918b918b918b91908b908990600401616b22565b600060405180830381600087803b15801561318957600080fd5b505af115801561319d573d6000803e3d6000fd5b505050507f9a2e42fd6722813d69113e7d0079d3d940171428df7373df9c7f7617cfda28928282426131cf9190616b7a565b604080519283526020830191909152015b60405180910390a15095945050505050565b306131fb610e89565b6001600160a01b03161461328c5760005b845181101561174f57306001600160a01b03168582815181106132315761323161687d565b60200260200101516001600160a01b03160361327c5761327c83828151811061325c5761325c61687d565b6020026020010151805190602001206101646146eb90919063ffffffff16565b613285816168a9565b905061320c565b5050505050565b60005462010000900460ff16156132bd57604051631785c68160e01b815260040160405180910390fd5b3360009081526001602052604090205460ff16156132ee5760405163b1d02c3d60e01b815260040160405180910390fd5b60005b8451811015613367576102c160008683815181106133115761331161687d565b6020908102919091018101516001600160a01b031682528101919091526040016000205460ff1661335557604051630b094f2760e31b815260040160405180910390fd5b8061335f816168a9565b9150506132f1565b5061328c8585858585614727565b3061337e610e89565b6001600160a01b03161461328c5761016454600f81810b600160801b909204900b131561328c5760006101645561328c565b60006112f7858585856133ce60408051602081019091526000815290565b612d94565b6000806133df8361479c565b905060048160078111156133f5576133f5616299565b146134005792915050565b600083815261022c60205260409020548061341c575092915050565b61022b54604051632ab0f52960e01b8152600481018390526001600160a01b0390911690632ab0f52990602401602060405180830381865afa158015613466573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061348a9190616b8d565b15613499575060079392505050565b61022b54604051632c258a9f60e11b8152600481018390526001600160a01b039091169063584b153e90602401602060405180830381865afa1580156134e3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906135079190616b8d565b15613516575060059392505050565b5060029392505050565b60608060606000806101c66000878152602001908152602001600020905080600101816002016136f283600301805480602002602001604051908101604052809291908181526020016000905b8282101561361957838290600052602060002001805461358c90616843565b80601f01602080910402602001604051908101604052809291908181526020018280546135b890616843565b80156136055780601f106135da57610100808354040283529160200191613605565b820191906000526020600020905b8154815290600101906020018083116135e857829003601f168201915b50505050508152602001906001019061356d565b50505060048601805460408051602080840282018101909252828152935060009084015b828210156136e957838290600052602060002001805461365c90616843565b80601f016020809104026020016040519081016040528092919081815260200182805461368890616843565b80156136d55780601f106136aa576101008083540402835291602001916136d5565b820191906000526020600020905b8154815290600101906020018083116136b857829003601f168201915b50505050508152602001906001019061363d565b5050505061417e565b600984015483546040805160208084028201810190925282815291869183018282801561374857602002820191906000526020600020905b81546001600160a01b0316815260019091019060200180831161372a575b505050505093508280548060200260200160405190810160405280929190818152602001828054801561379a57602002820191906000526020600020905b815481526020019060010190808311613786575b505050505092509450945094509450509193509193565b6000806137c0868686866129d5565b60008181526101c660205260409020549091506001600160a01b03163381148061381457506137ed6128ae565b6138128260016137fb611f8d565b61380591906168c2565b65ffffffffffff16612bc9565b105b6138705760405162461bcd60e51b815260206004820152602760248201527f476f7665726e6f72427261766f3a2070726f706f7365722061626f76652074686044820152661c995cda1bdb1960ca1b606482015260840161043d565b611716878787876148d4565b600063ffffffff8211156138e15760405162461bcd60e51b815260206004820152602660248201527f53616665436173743a2076616c756520646f65736e27742066697420696e203360448201526532206269747360d01b606482015260840161043d565b5090565b815460009081816005811115613942576000613900846148e2565b61390a9085616996565b60008881526020902090915081015463ffffffff908116908716101561393257809150613940565b61393d816001616b7a565b92505b505b6000613950878785856149ca565b9050801561398b5761397587613967600184616996565b600091825260209091200190565b54600160201b90046001600160e01b0316611716565b6000979650505050505050565b6101945460408051918252602082018390527fc565b045403dc03c2eea82b81a0465edad9e2e7fc4d97e11421c209da93d7a93910160405180910390a161019455565b6102c25460ff16613a84576a084595161401484a0000006120056001600160a01b03166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015613a32573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613a569190616a09565b1015613a75576040516311b6707f60e01b815260040160405180910390fd5b6102c2805460ff191660011790555b565b6000613ae233868686516001600160401b03811115613aa757613aa7615cd1565b604051908082528060200260200182016040528015613ada57816020015b6060815260200190600190039081613ac55790505b5087876140c0565b6112f785858585614a20565b600054610100900460ff16613b155760405162461bcd60e51b815260040161043d90616baf565b613b3c81613b376040805180820190915260018152603160f81b602082015290565b614dff565b61117f81614e4e565b600054610100900460ff16613b6c5760405162461bcd60e51b815260040161043d90616baf565b613b77838383614e86565b505050565b600054610100900460ff16613a845760405162461bcd60e51b815260040161043d90616baf565b600054610100900460ff16613bca5760405162461bcd60e51b815260040161043d90616baf565b61117f81614ec8565b600054610100900460ff16613bfa5760405162461bcd60e51b815260040161043d90616baf565b61117f81614f12565b600054610100900460ff16613c2a5760405162461bcd60e51b815260040161043d90616baf565b61117f81614f39565b600054610100900460ff16613c5a5760405162461bcd60e51b815260040161043d90616baf565b61117f81614f60565b600054610100900460ff16613c8a5760405162461bcd60e51b815260040161043d90616baf565b600080546001600160a01b039092166301000000026301000000600160b81b0319909216919091179055565b6060609a805461119290616843565b6060609b805461119290616843565b600065ffffffffffff8211156138e15760405162461bcd60e51b815260206004820152602660248201527f53616665436173743a2076616c756520646f65736e27742066697420696e203460448201526538206269747360d01b606482015260840161043d565b6101f854604051630748d63560e31b81526001600160a01b038581166004830152602482018590526000921690633a46b1a890604401602060405180830381865afa158015613d8e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061200e9190616a09565b8054600090801561216057613dcc83613967600184616996565b54600160201b90046001600160e01b0316612011565b61022b54604080516001600160a01b03928316815291831660208301527f08f74ea46ef7894f65eabfb5e6e695de773a000b47c529ab559178069b226401910160405180910390a161022b80546001600160a01b0319166001600160a01b0392909216919091179055565b600081604051602001613e609190616bfa565b6040516020818303038152906040528051906020012083604051602001613e879190616bfa565b6040516020818303038152906040528051906020012014905092915050565b015190565b60008111613f0b5760405162461bcd60e51b815260206004820152602760248201527f476f7665726e6f7253657474696e67733a20766f74696e6720706572696f6420604482015266746f6f206c6f7760c81b606482015260840161043d565b6101955460408051918252602082018390527f7e3f7f0708a84de9203036abaa450dccc85ad5ff52f78c170f3edb55cf5e8828910160405180910390a161019555565b6101965460408051918252602082018390527fccb45da8d5717e6c4544694297c4ba5cf151d455c9bb0ed4fc7a38411bc05461910160405180910390a161019655565b61028f54604080516001600160401b03928316815291831660208301527f7ca4ac117ed3cdce75c1161d8207c440389b1a15d69d096831664657c07dafc2910160405180910390a161028f805467ffffffffffffffff19166001600160401b0392909216919091179055565b600080546040516001600160a01b0380851693630100000090930416917f44fc1b38a4abaa91ebd1b628a5b259a698f86238c8217d68f516e87769c60c0b91a3600080546001600160a01b039092166301000000026301000000600160b81b0319909216919091179055565b60008181526101636020526040812060010154610f69906001600160401b0316600084815261029060205260409020546001600160401b0316614f87565b606083156140b6575081612011565b6120118383614f9d565b8051602082012060006140de87876140d8888861417e565b856129d5565b60008181526101c6602052604090206009810154919250906141735780546001600160a01b0319166001600160a01b038a16178155875161412890600183019060208b0190615a6c565b50865161413e90600283019060208a0190615acd565b5085516141549060038301906020890190615b08565b50845161416a9060048301906020880190615b5a565b50600981018390555b505050505050505050565b6060600082516001600160401b0381111561419b5761419b615cd1565b6040519080825280602002602001820160405280156141ce57816020015b60608152602001906001900390816141b95790505b50905060005b81518110156142a8578481815181106141ef576141ef61687d565b60200260200101515160001461425f578481815181106142115761421161687d565b6020026020010151805190602001208482815181106142325761423261687d565b602002602001015160405160200161424b929190616c16565b60405160208183030381529060405261427a565b8381815181106142715761427161687d565b60200260200101515b82828151811061428c5761428c61687d565b6020026020010181905250806142a1906168a9565b90506141d4565b509392505050565b600063288ace0360e11b6318df743f60e31b63bf26d89760e01b6379dd796f60e01b6001600160e01b031986168214806142f657506001600160e01b0319868116908216145b8061430d57506001600160e01b0319868116908516145b8061432857506001600160e01b03198616630271189760e51b145b80611b0657506301ffc9a760e01b6001600160e01b03198716149695505050505050565b6000610e9e614fc7565b6000807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a083111561438d5750600090506003614411565b6040805160008082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa1580156143e1573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b03811661440a57600060019250925050614411565b9150600090505b94509492505050565b600081600481111561442e5761442e616299565b036144365750565b600181600481111561444a5761444a616299565b036144975760405162461bcd60e51b815260206004820152601860248201527f45434453413a20696e76616c6964207369676e61747572650000000000000000604482015260640161043d565b60028160048111156144ab576144ab616299565b036144f85760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e67746800604482015260640161043d565b600381600481111561450c5761450c616299565b0361117f5760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b606482015260840161043d565b600080614574878787878761503b565b600088815261029060205260409020549091506001600160401b03161580156145a157506145a187615191565b15611b065760006145bb61028f546001600160401b031690565b6145c3611f8d565b65ffffffffffff166145d59190616c47565b90506145e0886128ba565b816001600160401b0316111561462f576040516001600160401b038216815288907f541f725fb9f7c98a30cc9c0ff32fbb14358cd7159c847a3aa20a2bdc442ba5119060200160405180910390a25b600088815261029060205260409020805467ffffffffffffffff19166001600160401b03929092169190911790559695505050505050565b60006001600160e01b038211156138e15760405162461bcd60e51b815260206004820152602760248201527f53616665436173743a2076616c756520646f65736e27742066697420696e20326044820152663234206269747360c81b606482015260840161043d565b6000806146de8585856151d1565b915091505b935093915050565b8154600160801b90819004600f0b6000818152600180860160205260409091209390935583546001600160801b03908116939091011602179055565b61022b5460405163e38335e560e01b81526001600160a01b039091169063e38335e5903490614763908890889088906000908990600401616ad4565b6000604051808303818588803b15801561477c57600080fd5b505af1158015614790573d6000803e3d6000fd5b50505050505050505050565b600081815261016360205260408120600281015460ff16156147c15750600792915050565b6002810154610100900460ff16156147dc5750600292915050565b600083815261016360205260408120546001600160401b0316908190036148455760405162461bcd60e51b815260206004820152601d60248201527f476f7665726e6f723a20756e6b6e6f776e2070726f706f73616c206964000000604482015260640161043d565b600061484f611f8d565b65ffffffffffff16905080821061486b57506000949350505050565b6000614876866128ba565b905081811061488b5750600195945050505050565b61489486615191565b80156148b7575060008681526101c6602052604090206006810154600590910154115b156148c85750600495945050505050565b50600395945050505050565b60006112f785858585615370565b6000816000036148f457506000919050565b6000600161490184615426565b901c6001901b9050600181848161491a5761491a6169a9565b048201901c90506001818481614932576149326169a9565b048201901c9050600181848161494a5761494a6169a9565b048201901c90506001818481614962576149626169a9565b048201901c9050600181848161497a5761497a6169a9565b048201901c90506001818481614992576149926169a9565b048201901c905060018184816149aa576149aa6169a9565b048201901c9050612011818285816149c4576149c46169a9565b046154ba565b60005b818310156142a85760006149e184846154c9565b60008781526020902090915063ffffffff86169082015463ffffffff161115614a0c57809250614a1a565b614a17816001616b7a565b93505b506149cd565b600033614a2d81846154e4565b614a795760405162461bcd60e51b815260206004820152601d60248201527f476f7665726e6f723a2070726f706f7365722072657374726963746564000000604482015260640161043d565b6000614a83611f8d565b65ffffffffffff169050614a956128ae565b614aa483610de4600185616996565b1015614b0c5760405162461bcd60e51b815260206004820152603160248201527f476f7665726e6f723a2070726f706f73657220766f7465732062656c6f7720706044820152701c9bdc1bdcd85b081d1a1c995cda1bdb19607a1b606482015260840161043d565b6000614b2188888888805190602001206129d5565b90508651885114614b445760405162461bcd60e51b815260040161043d90616c67565b8551885114614b655760405162461bcd60e51b815260040161043d90616c67565b6000885111614bb65760405162461bcd60e51b815260206004820152601860248201527f476f7665726e6f723a20656d7074792070726f706f73616c0000000000000000604482015260640161043d565b600081815261016360205260409020546001600160401b031615614c265760405162461bcd60e51b815260206004820152602160248201527f476f7665726e6f723a2070726f706f73616c20616c72656164792065786973746044820152607360f81b606482015260840161043d565b6000614c326101945490565b614c3c9084616b7a565b90506000614c4a6101955490565b614c549083616b7a565b90506040518060e00160405280614c6a846155d5565b6001600160401b031681526001600160a01b038716602082015260006040820152606001614c97836155d5565b6001600160401b03908116825260006020808401829052604080850183905260609485018390528883526101638252918290208551815492870151878501519186166001600160e01b031990941693909317600160401b6001600160a01b039094168402176001600160e01b0316600160e01b60e09290921c91909102178155938501516080860151908416921c0217600183015560a08301516002909201805460c09094015161ffff1990941692151561ff00191692909217610100931515939093029290921790558a517f7d84a6263ae0d98d3329bd7b46bb4e8d6f98cd35a7adb45c274c8b7fd5ebd5e091859188918e918e91811115614d9c57614d9c615cd1565b604051908082528060200260200182016040528015614dcf57816020015b6060815260200190600190039081614dba5790505b508d88888f604051614de999989796959493929190616ca8565b60405180910390a1509098975050505050505050565b600054610100900460ff16614e265760405162461bcd60e51b815260040161043d90616baf565b609a614e328382616d86565b50609b614e3f8282616d86565b50506000609881905560995550565b600054610100900460ff16614e755760405162461bcd60e51b815260040161043d90616baf565b610162614e828282616d86565b5050565b600054610100900460ff16614ead5760405162461bcd60e51b815260040161043d90616baf565b614eb683613998565b614ebf82613eab565b613b7781613f4e565b600054610100900460ff16614eef5760405162461bcd60e51b815260040161043d90616baf565b6101f880546001600160a01b0319166001600160a01b0392909216919091179055565b600054610100900460ff166120c45760405162461bcd60e51b815260040161043d90616baf565b600054610100900460ff166111765760405162461bcd60e51b815260040161043d90616baf565b600054610100900460ff16612a8e5760405162461bcd60e51b815260040161043d90616baf565b6000818311614f965781612011565b5090919050565b815115614fad5781518083602001fd5b8060405162461bcd60e51b815260040161043d9190615e8a565b60007f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f614ff261563d565b614ffa615696565b60408051602081019490945283019190915260608201524660808201523060a082015260c00160405160208183030381529060405280519060200120905090565b600085815261016360205260408120600161505588611721565b600781111561506657615066616299565b146150bf5760405162461bcd60e51b815260206004820152602360248201527f476f7665726e6f723a20766f7465206e6f742063757272656e746c792061637460448201526269766560e81b606482015260840161043d565b80546000906150d99088906001600160401b031686613d3b565b90506150e888888884886156c7565b835160000361513d57866001600160a01b03167fb8e138887d0aa13bab447e82de9d5c1777041ecd21ca36ba824ff1e6c07ddda4898884896040516151309493929190616e45565b60405180910390a2611716565b866001600160a01b03167fe2babfbac5889a709b63bb7f598b324e08bc5a4fb9ec647fb3cbc9ec07eb8712898884898960405161517e959493929190616e6d565b60405180910390a2979650505050505050565b60008181526101c66020526040812060058101546151c8610e5085600090815261016360205260409020546001600160401b031690565b11159392505050565b8254600090819080156153175760006151ef87613967600185616996565b60408051808201909152905463ffffffff808216808452600160201b9092046001600160e01b0316602084015291925090871610156152705760405162461bcd60e51b815260206004820152601b60248201527f436865636b706f696e743a2064656372656173696e67206b6579730000000000604482015260640161043d565b805163ffffffff8088169116036152b8578461529188613967600186616996565b80546001600160e01b0392909216600160201b0263ffffffff909216919091179055615307565b6040805180820190915263ffffffff80881682526001600160e01b0380881660208085019182528b54600181018d5560008d81529190912094519151909216600160201b029216919091179101555b6020015192508391506146e39050565b50506040805180820190915263ffffffff80851682526001600160e01b0380851660208085019182528854600181018a5560008a815291822095519251909316600160201b0291909316179201919091559050816146e3565b60008061537f86868686615865565b600081815261022c6020526040902054909150156112f75761022b54600082815261022c60205260409081902054905163c4d252f560e01b81526001600160a01b039092169163c4d252f5916153db9160040190815260200190565b600060405180830381600087803b1580156153f557600080fd5b505af1158015615409573d6000803e3d6000fd5b505050600082815261022c60205260408120555095945050505050565b600080608083901c1561543b57608092831c92015b604083901c1561544d57604092831c92015b602083901c1561545f57602092831c92015b601083901c1561547157601092831c92015b600883901c1561548357600892831c92015b600483901c1561549557600492831c92015b600283901c156154a757600292831c92015b600183901c15610f695760010192915050565b6000818310614f965781612011565b60006154d860028484186169bf565b61201190848416616b7a565b805160009060348110156154fc576001915050610f69565b82810160131901516001600160a01b031981166b046e0e4dee0dee6cae47a60f60a31b1461552f57600192505050610f69565b60008061553d602885616996565b90505b838110156155b4576000806155748884815181106155605761556061687d565b01602001516001600160f81b031916615972565b915091508161558c5760019650505050505050610f69565b8060ff166004856001600160a01b0316901b1793505050806155ad906168a9565b9050615540565b50856001600160a01b0316816001600160a01b031614935050505092915050565b60006001600160401b038211156138e15760405162461bcd60e51b815260206004820152602660248201527f53616665436173743a2076616c756520646f65736e27742066697420696e203660448201526534206269747360d01b606482015260840161043d565b600080615648613cb6565b80519091501561565f578051602090910120919050565b609854801561566e5792915050565b7fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a4709250505090565b6000806156a1613cc5565b8051909150156156b8578051602090910120919050565b609954801561566e5792915050565b60008581526101c6602090815260408083206001600160a01b038816845260088101909252909120805460ff16156157575760405162461bcd60e51b815260206004820152602d60248201527f476f7665726e6f72436f6d7061746962696c697479427261766f3a20766f746560448201526c08185b1c9958591e4818d85cdd609a1b606482015260840161043d565b805460ff86166101000261ffff1990911617600117815561577784615a04565b81546001600160601b039190911662010000026dffffffffffffffffffffffff00001990911617815560ff85166157c757838260060160008282546157bc9190616b7a565b909155506129cc9050565b60001960ff8616016157e757838260050160008282546157bc9190616b7a565b60011960ff86160161580757838260070160008282546157bc9190616b7a565b60405162461bcd60e51b815260206004820152602d60248201527f476f7665726e6f72436f6d7061746962696c697479427261766f3a20696e766160448201526c6c696420766f7465207479706560981b606482015260840161043d565b600080615874868686866129d5565b9050600061588182611721565b9050600281600781111561589757615897616299565b141580156158b7575060068160078111156158b4576158b4616299565b14155b80156158d5575060078160078111156158d2576158d2616299565b14155b6159215760405162461bcd60e51b815260206004820152601d60248201527f476f7665726e6f723a2070726f706f73616c206e6f7420616374697665000000604482015260640161043d565b6000828152610163602052604090819020600201805461ff001916610100179055517f789cf55be980739dad1d0699b93b58e806b51c9d96619bfa8fe0a28abaa7b30c906131e09084815260200190565b60008060f883901c602f8111801561598d5750603a8160ff16105b156159a257600194602f199091019350915050565b8060ff1660401080156159b8575060478160ff16105b156159cd576001946036199091019350915050565b8060ff1660601080156159e3575060678160ff16105b156159f8576001946056199091019350915050565b50600093849350915050565b60006001600160601b038211156138e15760405162461bcd60e51b815260206004820152602660248201527f53616665436173743a2076616c756520646f65736e27742066697420696e203960448201526536206269747360d01b606482015260840161043d565b828054828255906000526020600020908101928215615ac1579160200282015b82811115615ac157825182546001600160a01b0319166001600160a01b03909116178255602090920191600190910190615a8c565b506138e1929150615bac565b828054828255906000526020600020908101928215615ac1579160200282015b82811115615ac1578251825591602001919060010190615aed565b828054828255906000526020600020908101928215615b4e579160200282015b82811115615b4e5782518290615b3e9082616d86565b5091602001919060010190615b28565b506138e1929150615bc1565b828054828255906000526020600020908101928215615ba0579160200282015b82811115615ba05782518290615b909082616d86565b5091602001919060010190615b7a565b506138e1929150615bde565b5b808211156138e15760008155600101615bad565b808211156138e1576000615bd58282615bfb565b50600101615bc1565b808211156138e1576000615bf28282615bfb565b50600101615bde565b508054615c0790616843565b6000825580601f10615c17575050565b601f01602090049060005260206000209081019061117f9190615bac565b600060208284031215615c4757600080fd5b5035919050565b600060208284031215615c6057600080fd5b81356001600160e01b03198116811461201157600080fd5b803560ff8116811461190957600080fd5b60008083601f840112615c9b57600080fd5b5081356001600160401b03811115615cb257600080fd5b602083019150836020828501011115615cca57600080fd5b9250929050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b0381118282101715615d0f57615d0f615cd1565b604052919050565b60006001600160401b03821115615d3057615d30615cd1565b50601f01601f191660200190565b600082601f830112615d4f57600080fd5b8135615d62615d5d82615d17565b615ce7565b818152846020838601011115615d7757600080fd5b816020850160208301376000918101602001919091529392505050565b60008060008060008060008060e0898b031215615db057600080fd5b88359750615dc060208a01615c78565b965060408901356001600160401b0380821115615ddc57600080fd5b615de88c838d01615c89565b909850965060608b0135915080821115615e0157600080fd5b50615e0e8b828c01615d3e565b945050615e1d60808a01615c78565b925060a0890135915060c089013590509295985092959890939650565b60005b83811015615e55578181015183820152602001615e3d565b50506000910152565b60008151808452615e76816020860160208601615e3a565b601f01601f19169290920160200192915050565b6020815260006120116020830184615e5e565b6001600160a01b038116811461117f57600080fd5b60008060008060808587031215615ec857600080fd5b8435615ed381615e9d565b93506020850135615ee381615e9d565b92506040850135915060608501356001600160401b03811115615f0557600080fd5b615f1187828801615d3e565b91505092959194509250565b60006001600160401b03821115615f3657615f36615cd1565b5060051b60200190565b600082601f830112615f5157600080fd5b81356020615f61615d5d83615f1d565b82815260059290921b84018101918181019086841115615f8057600080fd5b8286015b84811015615fa4578035615f9781615e9d565b8352918301918301615f84565b509695505050505050565b600082601f830112615fc057600080fd5b81356020615fd0615d5d83615f1d565b82815260059290921b84018101918181019086841115615fef57600080fd5b8286015b84811015615fa45780358352918301918301615ff3565b600082601f83011261601b57600080fd5b8135602061602b615d5d83615f1d565b82815260059290921b8401810191818101908684111561604a57600080fd5b8286015b84811015615fa45780356001600160401b0381111561606d5760008081fd5b61607b8986838b0101615d3e565b84525091830191830161604e565b6000806000806080858703121561609f57600080fd5b84356001600160401b03808211156160b657600080fd5b6160c288838901615f40565b955060208701359150808211156160d857600080fd5b6160e488838901615faf565b945060408701359150808211156160fa57600080fd5b506161078782880161600a565b949793965093946060013593505050565b60006020828403121561612a57600080fd5b813561201181615e9d565b600081518084526020808501945080840160005b8381101561616e5781516001600160a01b031687529582019590820190600101616149565b509495945050505050565b600081518084526020808501945080840160005b8381101561616e5781518752958201959082019060010161618d565b600081518084526020808501808196508360051b8101915082860160005b858110156161f15782840389526161df848351615e5e565b988501989350908401906001016161c7565b5091979650505050505050565b6080815260006162116080830187616135565b82810360208401526162238187616179565b9050828103604084015261623781866161a9565b9050828103606084015261171681856161a9565b600080600080600060a0868803121561626357600080fd5b8535945061627360208701615c78565b935061628160408701615c78565b94979396509394606081013594506080013592915050565b634e487b7160e01b600052602160045260246000fd5b60208101600883106162d157634e487b7160e01b600052602160045260246000fd5b91905290565b600080604083850312156162ea57600080fd5b8235915060208301356162fc81615e9d565b809150509250929050565b6000806040838503121561631a57600080fd5b8235915061632a60208401615c78565b90509250929050565b60008060008060006080868803121561634b57600080fd5b8535945061635b60208701615c78565b935060408601356001600160401b038082111561637757600080fd5b61638389838a01615c89565b9095509350606088013591508082111561639c57600080fd5b506163a988828901615d3e565b9150509295509295909350565b600080600080606085870312156163cc57600080fd5b843593506163dc60208601615c78565b925060408501356001600160401b038111156163f757600080fd5b61640387828801615c89565b95989497509550505050565b6000806000806080858703121561642557600080fd5b84356001600160401b038082111561643c57600080fd5b61644888838901615f40565b9550602087013591508082111561645e57600080fd5b61646a88838901615faf565b9450604087013591508082111561648057600080fd5b61648c8883890161600a565b935060608701359150808211156164a257600080fd5b50615f1187828801615d3e565b60ff60f81b8816815260e0602082015260006164ce60e0830189615e5e565b82810360408401526164e08189615e5e565b606084018890526001600160a01b038716608085015260a0840186905283810360c085015290506110598185616179565b60008060006060848603121561652657600080fd5b833561653181615e9d565b92506020840135915060408401356001600160401b0381111561655357600080fd5b61655f86828701615d3e565b9150509250925092565b6000806000806040858703121561657f57600080fd5b84356001600160401b038082111561659657600080fd5b6165a288838901615c89565b909650945060208701359150808211156165bb57600080fd5b5061640387828801615c89565b600080600080600060a086880312156165e057600080fd5b85356165eb81615e9d565b945060208601356165fb81615e9d565b935060408601356001600160401b038082111561661757600080fd5b61662389838a01615faf565b9450606088013591508082111561663957600080fd5b61664589838a01615faf565b9350608088013591508082111561639c57600080fd5b6000806000806060858703121561667157600080fd5b843561667c81615e9d565b93506020850135925060408501356001600160401b038111156163f757600080fd5b6000602082840312156166b057600080fd5b81356001600160401b038116811461201157600080fd5b600080600080600060a086880312156166df57600080fd5b85356001600160401b03808211156166f657600080fd5b61670289838a01615f40565b9650602088013591508082111561671857600080fd5b61672489838a01615faf565b9550604088013591508082111561673a57600080fd5b61674689838a0161600a565b9450606088013591508082111561675c57600080fd5b61664589838a0161600a565b6000806040838503121561677b57600080fd5b823561678681615e9d565b946020939093013593505050565b600080600080600060a086880312156167ac57600080fd5b85356167b781615e9d565b945060208601356167c781615e9d565b9350604086013592506060860135915060808601356001600160401b038111156167f057600080fd5b6163a988828901615d3e565b8183823760009101908152919050565b60208082526018908201527f476f7665726e6f723a206f6e6c79476f7665726e616e63650000000000000000604082015260600190565b600181811c9082168061685757607f821691505b60208210810361687757634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b6000600182016168bb576168bb616893565b5060010190565b65ffffffffffff8281168282160390808211156168e1576168e1616893565b5092915050565b60208082526021908201527f476f7665726e6f723a2070726f706f73616c206e6f74207375636365737366756040820152601b60fa1b606082015260800190565b60006020828403121561693b57600080fd5b81516001600160401b0381111561695157600080fd5b8201601f8101841361696257600080fd5b8051616970615d5d82615d17565b81815285602083850101111561698557600080fd5b6112f7826020830160208601615e3a565b81810381811115610f6957610f69616893565b634e487b7160e01b600052601260045260246000fd5b6000826169dc57634e487b7160e01b600052601260045260246000fd5b500490565b6000602082840312156169f357600080fd5b815165ffffffffffff8116811461201157600080fd5b600060208284031215616a1b57600080fd5b5051919050565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b604081526000616a5f604083018688616a22565b8281036020840152611716818587616a22565b608081526000616a856080830187616135565b8281036020840152616a978187616179565b90508281036040840152616aab81866161a9565b91505082606083015295945050505050565b8082028115828204841417610f6957610f69616893565b60a081526000616ae760a0830188616135565b8281036020840152616af98188616179565b90508281036040840152616b0d81876161a9565b60608401959095525050608001529392505050565b60c081526000616b3560c0830189616135565b8281036020840152616b478189616179565b90508281036040840152616b5b81886161a9565b60608401969096525050608081019290925260a0909101529392505050565b80820180821115610f6957610f69616893565b600060208284031215616b9f57600080fd5b8151801515811461201157600080fd5b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b60008251616c0c818460208701615e3a565b9190910192915050565b6001600160e01b0319831681528151600090616c39816004850160208701615e3a565b919091016004019392505050565b6001600160401b038181168382160190808211156168e1576168e1616893565b60208082526021908201527f476f7665726e6f723a20696e76616c69642070726f706f73616c206c656e67746040820152600d60fb1b606082015260800190565b8981526001600160a01b038916602082015261012060408201819052600090616cd38382018b616135565b90508281036060840152616ce7818a616179565b90508281036080840152616cfb81896161a9565b905082810360a0840152616d0f81886161a9565b90508560c08401528460e0840152828103610100840152616d308185615e5e565b9c9b505050505050505050505050565b601f821115613b7757600081815260208120601f850160051c81016020861015616d675750805b601f850160051c820191505b8181101561174f57828155600101616d73565b81516001600160401b03811115616d9f57616d9f615cd1565b616db381616dad8454616843565b84616d40565b602080601f831160018114616de85760008415616dd05750858301515b600019600386901b1c1916600185901b17855561174f565b600085815260208120601f198616915b82811015616e1757888601518255948401946001909101908401616df8565b5085821015616e355787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b84815260ff84166020820152826040820152608060608201526000611b066080830184615e5e565b85815260ff8516602082015283604082015260a060608201526000616e9560a0830185615e5e565b8281036080840152611c1f8185615e5e56fe476f7665726e6f723a2072656c617920726576657274656420776974686f7574206d657373616765a164736f6c6343000811000a \ No newline at end of file +6080604052600436106103e85760003560e01c80637b3c71d311610208578063c28bc2fa11610118578063deaaa7cc116100ab578063ece40cc11161007a578063ece40cc114610e19578063f23a6e6114610e39578063f8ce560a14610e65578063fc0c546a14610e85578063fe0d94c114610ea657600080fd5b8063deaaa7cc14610cda578063e23a9a5214610d0e578063ea0217cf14610dd9578063eb9019d414610df957600080fd5b8063da95691a116100e7578063da95691a14610c2f578063dd42a1dd14610c4f578063dd4e2ba514610c74578063ddf0b00914610cba57600080fd5b8063c28bc2fa14610bbd578063c59057e414610bd0578063d07f91e914610bf0578063d33219b414610c1057600080fd5b8063a7713a701161019b578063b187bd261161016a578063b187bd2614610b23578063b58131b014610b41578063bc197c8114610b56578063c01f9e3714610b82578063c170ec0b14610ba257600080fd5b8063a7713a7014610aae578063a890c91014610ac3578063ab58fb8e14610ae3578063ac43175114610b0357600080fd5b806384b0196e116101d757806384b0196e14610a2657806391ddadf414610a4e57806397c3d33414610a7a5780639a802a6d14610a8e57600080fd5b80637b3c71d3146109bc5780637d5e81e2146109dc5780638129fc1c146109fc5780638456cb5914610a1157600080fd5b806332b8113e116103035780634838d1651161029657806354fd4d501161026557806354fd4d5014610912578063567813881461093c5780635f398a141461095c57806360c4247f1461097c57806370b0f6601461099c57600080fd5b80634838d1651461087c5780634a49ac4c146108ac5780634bf5d7e9146108cc578063533ddd14146108e157600080fd5b806340e58ee5116102d257806340e58ee5146107d1578063417c73a7146107f15780634385963214610811578063452115d61461085c57600080fd5b806332b8113e146107455780633932abb11461076e5780633bccf4fd146107845780633e4f49e6146107a457600080fd5b8063150b7a021161037b5780632656227d1161034a5780632656227d146106975780632d63f693146106aa5780632fe3e261146106e1578063328dd9821461071557600080fd5b8063150b7a02146105f0578063160cbed71461063457806317977c611461065457806324bc1a641461068257600080fd5b8063046f7da2116103b7578063046f7da21461054357806306f3f9e61461055857806306fdde0314610578578063143489d01461059a57600080fd5b8063013cf08b1461045857806301ffc9a7146104d357806302a251a314610503578063034201811461052357600080fd5b3661045357306103f6610eb9565b6001600160a01b0316146104515760405162461bcd60e51b815260206004820152601f60248201527f476f7665726e6f723a206d7573742073656e6420746f206578656375746f720060448201526064015b60405180910390fd5b005b600080fd5b34801561046457600080fd5b50610478610473366004615c65565b610ed3565b604080519a8b526001600160a01b0390991660208b0152978901969096526060880194909452608087019290925260a086015260c085015260e084015215156101008301521515610120820152610140015b60405180910390f35b3480156104df57600080fd5b506104f36104ee366004615c7e565b610f8e565b60405190151581526020016104ca565b34801561050f57600080fd5b50610195545b6040519081526020016104ca565b34801561052f57600080fd5b5061051561053e366004615dc4565b610f9f565b34801561054f57600080fd5b50610451611097565b34801561056457600080fd5b50610451610573366004615c65565b611127565b34801561058457600080fd5b5061058d6111b2565b6040516104ca9190615eba565b3480156105a657600080fd5b506105d86105b5366004615c65565b60009081526101636020526040902054600160401b90046001600160a01b031690565b6040516001600160a01b0390911681526020016104ca565b3480156105fc57600080fd5b5061061b61060b366004615ee2565b630a85bd0160e11b949350505050565b6040516001600160e01b031990911681526020016104ca565b34801561064057600080fd5b5061051561064f3660046160b9565b611245565b34801561066057600080fd5b5061051561066f366004616148565b6102c36020526000908152604090205481565b34801561068e57600080fd5b50610515611330565b6105156106a53660046160b9565b611356565b3480156106b657600080fd5b506105156106c5366004615c65565b600090815261016360205260409020546001600160401b031690565b3480156106ed57600080fd5b506105157fb3b3f3b703cd84ce352197dcff232b1b5d3cfb2025ce47cf04742d0651f1af8881565b34801561072157600080fd5b50610735610730366004615c65565b611449565b6040516104ca949392919061622e565b34801561075157600080fd5b5061028f546040516001600160401b0390911681526020016104ca565b34801561077a57600080fd5b5061019454610515565b34801561079057600080fd5b5061051561079f36600461627b565b6116db565b3480156107b057600080fd5b506107c46107bf366004615c65565b611751565b6040516104ca91906162df565b3480156107dd57600080fd5b506104516107ec366004615c65565b61175c565b3480156107fd57600080fd5b5061045161080c366004616148565b611787565b34801561081d57600080fd5b506104f361082c366004616307565b60008281526101c6602090815260408083206001600160a01b038516845260080190915290205460ff1692915050565b34801561086857600080fd5b506105156108773660046160b9565b611808565b34801561088857600080fd5b506104f3610897366004616148565b60016020526000908152604090205460ff1681565b3480156108b857600080fd5b506104516108c7366004616148565b611816565b3480156108d857600080fd5b5061058d611891565b3480156108ed57600080fd5b506104f36108fc366004616148565b6102c16020526000908152604090205460ff1681565b34801561091e57600080fd5b506040805180820190915260018152603160f81b602082015261058d565b34801561094857600080fd5b50610515610957366004616337565b61193e565b34801561096857600080fd5b50610515610977366004616363565b611967565b34801561098857600080fd5b50610515610997366004615c65565b6119b1565b3480156109a857600080fd5b506104516109b7366004615c65565b611a66565b3480156109c857600080fd5b506105156109d73660046163e6565b611aee565b3480156109e857600080fd5b506105156109f736600461643f565b611b40565b348015610a0857600080fd5b50610451611c5b565b348015610a1d57600080fd5b50610451611e89565b348015610a3257600080fd5b50610a3b611f1f565b6040516104ca97969594939291906164df565b348015610a5a57600080fd5b50610a63611fbd565b60405165ffffffffffff90911681526020016104ca565b348015610a8657600080fd5b506064610515565b348015610a9a57600080fd5b50610515610aa9366004616541565b612031565b348015610aba57600080fd5b50610515612048565b348015610acf57600080fd5b50610451610ade366004616148565b612075565b348015610aef57600080fd5b50610515610afe366004615c65565b6120fd565b348015610b0f57600080fd5b50610451610b1e366004616599565b612199565b348015610b2f57600080fd5b5060005462010000900460ff166104f3565b348015610b4d57600080fd5b506105156128de565b348015610b6257600080fd5b5061061b610b713660046165f8565b63bc197c8160e01b95945050505050565b348015610b8e57600080fd5b50610515610b9d366004615c65565b6128ea565b348015610bae57600080fd5b506102c2546104f39060ff1681565b610451610bcb36600461668b565b6128f5565b348015610bdc57600080fd5b50610515610beb3660046160b9565b612a05565b348015610bfc57600080fd5b50610451610c0b3660046166ce565b612a3f565b348015610c1c57600080fd5b5061022b546001600160a01b03166105d8565b348015610c3b57600080fd5b50610515610c4a3660046166f7565b612ac7565b348015610c5b57600080fd5b50600054630100000090046001600160a01b03166105d8565b348015610c8057600080fd5b5060408051808201909152601a81527f737570706f72743d627261766f2671756f72756d3d627261766f000000000000602082015261058d565b348015610cc657600080fd5b50610451610cd5366004615c65565b612b4e565b348015610ce657600080fd5b506105157f150214d74d59b7d1e90c73fc22ef3d991dd0a76b046543d4d80ab92d2a50328f81565b348015610d1a57600080fd5b50610da9610d29366004616307565b60408051606081018252600080825260208201819052918101919091525060009182526101c6602090815260408084206001600160a01b0393909316845260089092018152918190208151606081018352905460ff8082161515835261010082041693820193909352620100009092046001600160601b03169082015290565b6040805182511515815260208084015160ff1690820152918101516001600160601b0316908201526060016104ca565b348015610de557600080fd5b50610451610df4366004615c65565b612b71565b348015610e0557600080fd5b50610515610e14366004616798565b612bf9565b348015610e2557600080fd5b50610451610e34366004615c65565b612c1a565b348015610e4557600080fd5b5061061b610e543660046167c4565b63f23a6e6160e01b95945050505050565b348015610e7157600080fd5b50610515610e80366004615c65565b612ca2565b348015610e9157600080fd5b506101f8546105d8906001600160a01b031681565b610451610eb4366004615c65565b612d31565b6000610ece61022b546001600160a01b031690565b905090565b8060008080808080808080610ee78a6120fd565b60008c815261016360205260409020549098506001600160401b03169650610f0e8b6128ea565b60008c81526101c66020526040812080546005820154600683015460078401546001600160a01b039093169e50949a509850929650919450610f4f8d611751565b90506002816007811115610f6557610f656162c9565b1493506007816007811115610f7c57610f7c6162c9565b14925050509193959799509193959799565b6000610f9982612d54565b92915050565b60008061104361103b7fb3b3f3b703cd84ce352197dcff232b1b5d3cfb2025ce47cf04742d0651f1af888c8c8c8c604051610fdb92919061682c565b60405180910390208b80519060200120604051602001611020959493929190948552602085019390935260ff9190911660408401526060830152608082015260a00190565b60405160208183030381529060405280519060200120612d79565b868686612da6565b90506110898a828b8b8b8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152508d9250612dc4915050565b9a9950505050505050505050565b600054630100000090046001600160a01b031633146110c9576040516306fbb1e360e01b815260040160405180910390fd5b60005462010000900460ff166110f257604051636cd6020160e01b815260040160405180910390fd5b6000805462ff0000191681556040517f62451d457bc659158be6e6247f56ec1df424a5c7597f71c20c2bc44e0965c8f99190a1565b61112f610eb9565b6001600160a01b0316336001600160a01b03161461115f5760405162461bcd60e51b81526004016104489061683c565b30611168610eb9565b6001600160a01b0316146111a6576000803660405161118892919061682c565b604051809103902090505b8061119f610164612e2d565b0361119357505b6111af81612eac565b50565b606061016280546111c290616873565b80601f01602080910402602001604051908101604052809291908181526020018280546111ee90616873565b801561123b5780601f106112105761010080835404028352916020019161123b565b820191906000526020600020905b81548152906001019060200180831161121e57829003601f168201915b5050505050905090565b6000805462010000900460ff161561127057604051631785c68160e01b815260040160405180910390fd5b3360009081526001602052604090205460ff16156112a15760405163b1d02c3d60e01b815260040160405180910390fd5b60005b855181101561131a576102c160008783815181106112c4576112c46168ad565b6020908102919091018101516001600160a01b031682528101919091526040016000205460ff1661130857604051630b094f2760e31b815260040160405180910390fd5b80611312816168d9565b9150506112a4565b506113278585858561301d565b95945050505050565b6000610ece600161133f611fbd565b61134991906168f2565b65ffffffffffff16612ca2565b60008061136586868686612a05565b9050600061137282611751565b90506004816007811115611388576113886162c9565b14806113a5575060058160078111156113a3576113a36162c9565b145b6113c15760405162461bcd60e51b815260040161044890616918565b6000828152610163602052604090819020600201805460ff19166001179055517f712ae1383f79ac853f8d882153778e0260ef8f03b504e2866e0593e04d2b291f906114109084815260200190565b60405180910390a16114258288888888613222565b61143282888888886132c3565b61143f82888888886133a5565b5095945050505050565b60608060608060006101c66000878152602001908152602001600020905080600101816002018260030183600401838054806020026020016040519081016040528092919081815260200182805480156114cc57602002820191906000526020600020905b81546001600160a01b031681526001909101906020018083116114ae575b505050505093508280548060200260200160405190810160405280929190818152602001828054801561151e57602002820191906000526020600020905b81548152602001906001019080831161150a575b5050505050925081805480602002602001604051908101604052809291908181526020016000905b828210156115f257838290600052602060002001805461156590616873565b80601f016020809104026020016040519081016040528092919081815260200182805461159190616873565b80156115de5780601f106115b3576101008083540402835291602001916115de565b820191906000526020600020905b8154815290600101906020018083116115c157829003601f168201915b505050505081526020019060010190611546565b50505050915080805480602002602001604051908101604052809291908181526020016000905b828210156116c557838290600052602060002001805461163890616873565b80601f016020809104026020016040519081016040528092919081815260200182805461166490616873565b80156116b15780601f10611686576101008083540402835291602001916116b1565b820191906000526020600020905b81548152906001019060200180831161169457829003601f168201915b505050505081526020019060010190611619565b5050505090509450945094509450509193509193565b604080517f150214d74d59b7d1e90c73fc22ef3d991dd0a76b046543d4d80ab92d2a50328f602082015290810186905260ff8516606082015260009081906117299061103b90608001611020565b9050611746878288604051806020016040528060008152506133e0565b979650505050505050565b6000610f9982613403565b60008060008061176b85613550565b935093509350935061177f84848484611808565b505050505050565b600054630100000090046001600160a01b031633146117b9576040516306fbb1e360e01b815260040160405180910390fd5b6001600160a01b0381166000818152600160208190526040808320805460ff1916909217909155517f7fd26be6fc92aff63f1f4409b2b2ddeb272a888031d7f55ec830485ec61941869190a250565b6000611327858585856137e1565b600054630100000090046001600160a01b03163314611848576040516306fbb1e360e01b815260040160405180910390fd5b6001600160a01b038116600081815260016020526040808220805460ff19169055517fe0db3499b7fdc3da4cddff5f45d694549c19835e7f719fb5606d3ad1a5de40119190a250565b6101f85460408051634bf5d7e960e01b815290516060926001600160a01b031691634bf5d7e99160048083019260009291908290030181865afa9250505080156118fd57506040513d6000823e601f3d908101601f191682016040526118fa9190810190616959565b60015b611939575060408051808201909152601d81527f6d6f64653d626c6f636b6e756d6265722666726f6d3d64656661756c74000000602082015290565b919050565b60008033905061195f848285604051806020016040528060008152506133e0565b949350505050565b60008033905061174687828888888080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152508a9250612dc4915050565b61025e546000908082036119ca57505061025d54919050565b600061025e6119da6001846169c6565b815481106119ea576119ea6168ad565b60009182526020918290206040805180820190915291015463ffffffff8116808352600160201b9091046001600160e01b03169282019290925291508410611a4057602001516001600160e01b03169392505050565b611a55611a4c856138ac565b61025e90613915565b6001600160e01b0316949350505050565b611a6e610eb9565b6001600160a01b0316336001600160a01b031614611a9e5760405162461bcd60e51b81526004016104489061683c565b30611aa7610eb9565b6001600160a01b031614611ae55760008036604051611ac792919061682c565b604051809103902090505b80611ade610164612e2d565b03611ad257505b6111af816139c8565b600080339050611b3686828787878080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506133e092505050565b9695505050505050565b6000805462010000900460ff1615611b6b57604051631785c68160e01b815260040160405180910390fd5b3360009081526001602052604090205460ff1615611b9c5760405163b1d02c3d60e01b815260040160405180910390fd5b611ba4613a0b565b3360009081526102c360205260409020548015611c19576000611bc682611751565b90506001816007811115611bdc57611bdc6162c9565b1480611bf957506000816007811115611bf757611bf76162c9565b145b15611c175760405163867f3ee560e01b815260040160405180910390fd5b505b825160208401206000611c2e88888885612a05565b3360009081526102c3602052604090208190559050611c4f88888888613ab6565b98975050505050505050565b600054610100900460ff1615808015611c7b5750600054600160ff909116105b80611c955750303b158015611c95575060005460ff166001145b611cf85760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608401610448565b6000805460ff191660011790558015611d1b576000805461ff0019166101001790555b334114611d3b5760405163022d8c9560e31b815260040160405180910390fd5b3a15611d5a576040516383f1b1d360e01b815260040160405180910390fd5b611d866040518060400160405280600b81526020016a2129a1a3b7bb32b93737b960a91b815250613b1e565b611db0611d956003603c6169ef565b611da1600360786169ef565b680ad78ebc5ac6200000613b75565b611db8613bac565b611dc3612005613bd3565b611dce612006613c03565b611dd8600a613c33565b611dec611de76003603c6169ef565b613c63565b6110076000526102c16020527f2f832952f0ef896b8c8edd6d16a2e4f2591a90375e33021e3b9ff197f3793fc0805460ff19166001179055611e417304d63abcd2b9b1baa327f2dda0f873f197ccd186613c93565b80156111af576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a150565b600054630100000090046001600160a01b03163314611ebb576040516306fbb1e360e01b815260040160405180910390fd5b60005462010000900460ff1615611ee557604051631785c68160e01b815260040160405180910390fd5b6000805462ff00001916620100001781556040517f9e87fac88ff661f02d44f95383c817fece4bce600a3dab7a54406878b965e7529190a1565b6000606080600080600060606098546000801b148015611f3f5750609954155b611f835760405162461bcd60e51b81526020600482015260156024820152741152540dcc4c8e88155b9a5b9a5d1a585b1a5e9959605a1b6044820152606401610448565b611f8b613ce6565b611f93613cf5565b60408051600080825260208201909252600f60f81b9b939a50919850469750309650945092509050565b6101f854604080516324776b7d60e21b815290516000926001600160a01b0316916391ddadf49160048083019260209291908290030181865afa925050508015612024575060408051601f3d908101601f1916820190925261202191810190616a11565b60015b61193957610ece43613d04565b600061203e848484613d6b565b90505b9392505050565b61025e546000901561206d5761205f61025e613de2565b6001600160e01b0316905090565b5061025d5490565b61207d610eb9565b6001600160a01b0316336001600160a01b0316146120ad5760405162461bcd60e51b81526004016104489061683c565b306120b6610eb9565b6001600160a01b0316146120f457600080366040516120d692919061682c565b604051809103902090505b806120ed610164612e2d565b036120e157505b6111af81613e12565b61022b54600082815261022c602052604080822054905163d45c443560e01b81526004810191909152909182916001600160a01b039091169063d45c443590602401602060405180830381865afa15801561215c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121809190616a39565b9050806001146121905780612041565b60009392505050565b33611007146121bf57604051630f22c43960e41b81526110076004820152602401610448565b6122256040518060400160405280600b81526020016a766f74696e6744656c617960a81b81525085858080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509293925050613e7d9050565b156122da57602081146122535783838383604051630a5a604160e01b81526004016104489493929190616a7b565b604080516020601f8401819004810282018101909252828152600091612294918585808385018382808284376000920191909152509293925050613ed69050565b90508015806122a557506201518081115b156122cb5784848484604051630a5a604160e01b81526004016104489493929190616a7b565b6122d4816139c8565b5061289b565b6123416040518060400160405280600c81526020016b1d9bdd1a5b99d4195c9a5bd960a21b81525085858080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509293925050613e7d9050565b156123f0576020811461236f5783838383604051630a5a604160e01b81526004016104489493929190616a7b565b604080516020601f84018190048102820181019092528281526000916123b0918585808385018382808284376000920191909152509293925050613ed69050565b90508015806123c1575062278d0081115b156123e75784848484604051630a5a604160e01b81526004016104489493929190616a7b565b6122d481613edb565b61245c604051806040016040528060118152602001701c1c9bdc1bdcd85b151a1c995cda1bdb19607a1b81525085858080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509293925050613e7d9050565b15612512576020811461248a5783838383604051630a5a604160e01b81526004016104489493929190616a7b565b604080516020601f84018190048102820181019092528281526000916124cb918585808385018382808284376000920191909152509293925050613ed69050565b90508015806124e3575069021e19e0c9bab240000081115b156125095784848484604051630a5a604160e01b81526004016104489493929190616a7b565b6122d481613f7e565b61257c6040518060400160405280600f81526020016e38bab7b93ab6a73ab6b2b930ba37b960891b81525085858080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509293925050613e7d9050565b1561262b57602081146125aa5783838383604051630a5a604160e01b81526004016104489493929190616a7b565b604080516020601f84018190048102820181019092528281526000916125eb918585808385018382808284376000920191909152509293925050613ed69050565b905060058110806125fc5750601481115b156126225784848484604051630a5a604160e01b81526004016104489493929190616a7b565b6122d481612eac565b61269a604051806040016040528060148152602001736d696e506572696f64416674657251756f72756d60601b81525085858080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509293925050613e7d9050565b1561276057600881146126c85783838383604051630a5a604160e01b81526004016104489493929190616a7b565b600061270e600884848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509293925050613ed69050565b90506001600160401b038116158061273157506202a300816001600160401b0316115b156127575784848484604051630a5a604160e01b81526004016104489493929190616a7b565b6122d481613fc1565b6127cc6040518060400160405280601181526020017033b7bb32b93737b9283937ba32b1ba37b960791b81525085858080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509293925050613e7d9050565b1561287a57601481146127fa5783838383604051630a5a604160e01b81526004016104489493929190616a7b565b6000612840601484848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509293925050613ed69050565b90506001600160a01b0381166128715784848484604051630a5a604160e01b81526004016104489493929190616a7b565b6122d48161402d565b838383836040516325ee20d560e21b81526004016104489493929190616a7b565b7ff1ce9b2cbf50eeb05769a29e2543fd350cab46894a7dd9978a12d534bb20e633848484846040516128d09493929190616a7b565b60405180910390a150505050565b6000610ece6101965490565b6000610f9982614099565b6128fd610eb9565b6001600160a01b0316336001600160a01b03161461292d5760405162461bcd60e51b81526004016104489061683c565b30612936610eb9565b6001600160a01b031614612974576000803660405161295692919061682c565b604051809103902090505b8061296d610164612e2d565b0361296157505b600080856001600160a01b031685858560405161299292919061682c565b60006040518083038185875af1925050503d80600081146129cf576040519150601f19603f3d011682016040523d82523d6000602084013e6129d4565b606091505b50915091506129fc8282604051806060016040528060288152602001616ed8602891396140d7565b50505050505050565b600084848484604051602001612a1e9493929190616aa2565b60408051601f19818403018152919052805160209091012095945050505050565b612a47610eb9565b6001600160a01b0316336001600160a01b031614612a775760405162461bcd60e51b81526004016104489061683c565b30612a80610eb9565b6001600160a01b031614612abe5760008036604051612aa092919061682c565b604051809103902090505b80612ab7610164612e2d565b03612aab57505b6111af81613fc1565b60008251845114612b2b5760405162461bcd60e51b815260206004820152602860248201527f476f7665726e6f72427261766f3a20696e76616c6964207369676e61747572656044820152670e640d8cadccee8d60c31b6064820152608401610448565b612b393387878787876140f0565b611b368686612b4887876141ae565b85611b40565b600080600080612b5d85613550565b935093509350935061177f84848484611245565b612b79610eb9565b6001600160a01b0316336001600160a01b031614612ba95760405162461bcd60e51b81526004016104489061683c565b30612bb2610eb9565b6001600160a01b031614612bf05760008036604051612bd292919061682c565b604051809103902090505b80612be9610164612e2d565b03612bdd57505b6111af81613edb565b60006120418383612c1560408051602081019091526000815290565b613d6b565b612c22610eb9565b6001600160a01b0316336001600160a01b031614612c525760405162461bcd60e51b81526004016104489061683c565b30612c5b610eb9565b6001600160a01b031614612c995760008036604051612c7b92919061682c565b604051809103902090505b80612c92610164612e2d565b03612c8657505b6111af81613f7e565b60006064612caf836119b1565b6101f854604051632394e7a360e21b8152600481018690526001600160a01b0390911690638e539e8c90602401602060405180830381865afa158015612cf9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612d1d9190616a39565b612d279190616aed565b610f9991906169ef565b600080600080612d4085613550565b935093509350935061177f84848484611356565b60006001600160e01b03198216636e665ced60e01b1480610f995750610f99826142e0565b6000610f99612d8661437c565b8360405161190160f01b8152600281019290925260228201526042902090565b6000806000612db787878787614386565b9150915061143f8161444a565b6000805462010000900460ff1615612def57604051631785c68160e01b815260040160405180910390fd5b3360009081526001602052604090205460ff1615612e205760405163b1d02c3d60e01b815260040160405180910390fd5b611b368686868686614594565b6000612e488254600f81810b600160801b909204900b131590565b15612e6657604051631ed9509560e11b815260040160405180910390fd5b508054600f0b6000818152600180840160205260408220805492905583546fffffffffffffffffffffffffffffffff191692016001600160801b03169190911790915590565b6064811115612f2f5760405162461bcd60e51b815260206004820152604360248201527f476f7665726e6f72566f74657351756f72756d4672616374696f6e3a2071756f60448201527f72756d4e756d657261746f72206f7665722071756f72756d44656e6f6d696e616064820152623a37b960e91b608482015260a401610448565b6000612f39612048565b90508015801590612f4b575061025e54155b15612fb057604080518082019091526000815261025e9060208101612f6f84614697565b6001600160e01b039081169091528254600181018455600093845260209384902083519490930151909116600160201b0263ffffffff909316929092179101555b612fde612fcb612fbe611fbd565b65ffffffffffff166138ac565b612fd484614697565b61025e9190614700565b505060408051828152602081018490527f0553476bf02ef2726e8ce5ced78d63e26e602e4a2257b1f559418e24b4633997910160405180910390a15050565b60008061302c86868686612a05565b9050600461303982611751565b600781111561304a5761304a6162c9565b146130675760405162461bcd60e51b815260040161044890616918565b61022b546040805163793d064960e11b815290516000926001600160a01b03169163f27a0c929160048083019260209291908290030181865afa1580156130b2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906130d69190616a39565b61022b5460405163b1c5f42760e01b81529192506001600160a01b03169063b1c5f42790613111908a908a908a906000908b90600401616b04565b602060405180830381865afa15801561312e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906131529190616a39565b600083815261022c60205260408082209290925561022b5491516308f2a0bb60e41b81526001600160a01b0390921691638f2a0bb09161319f918b918b918b91908b908990600401616b52565b600060405180830381600087803b1580156131b957600080fd5b505af11580156131cd573d6000803e3d6000fd5b505050507f9a2e42fd6722813d69113e7d0079d3d940171428df7373df9c7f7617cfda28928282426131ff9190616baa565b604080519283526020830191909152015b60405180910390a15095945050505050565b3061322b610eb9565b6001600160a01b0316146132bc5760005b845181101561177f57306001600160a01b0316858281518110613261576132616168ad565b60200260200101516001600160a01b0316036132ac576132ac83828151811061328c5761328c6168ad565b60200260200101518051906020012061016461471b90919063ffffffff16565b6132b5816168d9565b905061323c565b5050505050565b60005462010000900460ff16156132ed57604051631785c68160e01b815260040160405180910390fd5b3360009081526001602052604090205460ff161561331e5760405163b1d02c3d60e01b815260040160405180910390fd5b60005b8451811015613397576102c16000868381518110613341576133416168ad565b6020908102919091018101516001600160a01b031682528101919091526040016000205460ff1661338557604051630b094f2760e31b815260040160405180910390fd5b8061338f816168d9565b915050613321565b506132bc8585858585614757565b306133ae610eb9565b6001600160a01b0316146132bc5761016454600f81810b600160801b909204900b13156132bc576000610164556132bc565b6000611327858585856133fe60408051602081019091526000815290565b612dc4565b60008061340f836147cc565b90506004816007811115613425576134256162c9565b146134305792915050565b600083815261022c60205260409020548061344c575092915050565b61022b54604051632ab0f52960e01b8152600481018390526001600160a01b0390911690632ab0f52990602401602060405180830381865afa158015613496573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906134ba9190616bbd565b156134c9575060079392505050565b61022b54604051632c258a9f60e11b8152600481018390526001600160a01b039091169063584b153e90602401602060405180830381865afa158015613513573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906135379190616bbd565b15613546575060059392505050565b5060029392505050565b60608060606000806101c660008781526020019081526020016000209050806001018160020161372283600301805480602002602001604051908101604052809291908181526020016000905b828210156136495783829060005260206000200180546135bc90616873565b80601f01602080910402602001604051908101604052809291908181526020018280546135e890616873565b80156136355780601f1061360a57610100808354040283529160200191613635565b820191906000526020600020905b81548152906001019060200180831161361857829003601f168201915b50505050508152602001906001019061359d565b50505060048601805460408051602080840282018101909252828152935060009084015b8282101561371957838290600052602060002001805461368c90616873565b80601f01602080910402602001604051908101604052809291908181526020018280546136b890616873565b80156137055780601f106136da57610100808354040283529160200191613705565b820191906000526020600020905b8154815290600101906020018083116136e857829003601f168201915b50505050508152602001906001019061366d565b505050506141ae565b600984015483546040805160208084028201810190925282815291869183018282801561377857602002820191906000526020600020905b81546001600160a01b0316815260019091019060200180831161375a575b50505050509350828054806020026020016040519081016040528092919081815260200182805480156137ca57602002820191906000526020600020905b8154815260200190600101908083116137b6575b505050505092509450945094509450509193509193565b6000806137f086868686612a05565b60008181526101c660205260409020549091506001600160a01b031633811480613844575061381d6128de565b61384282600161382b611fbd565b61383591906168f2565b65ffffffffffff16612bf9565b105b6138a05760405162461bcd60e51b815260206004820152602760248201527f476f7665726e6f72427261766f3a2070726f706f7365722061626f76652074686044820152661c995cda1bdb1960ca1b6064820152608401610448565b61174687878787614904565b600063ffffffff8211156139115760405162461bcd60e51b815260206004820152602660248201527f53616665436173743a2076616c756520646f65736e27742066697420696e203360448201526532206269747360d01b6064820152608401610448565b5090565b81546000908181600581111561397257600061393084614912565b61393a90856169c6565b60008881526020902090915081015463ffffffff908116908716101561396257809150613970565b61396d816001616baa565b92505b505b6000613980878785856149fa565b905080156139bb576139a5876139976001846169c6565b600091825260209091200190565b54600160201b90046001600160e01b0316611746565b6000979650505050505050565b6101945460408051918252602082018390527fc565b045403dc03c2eea82b81a0465edad9e2e7fc4d97e11421c209da93d7a93910160405180910390a161019455565b6102c25460ff16613ab4576a084595161401484a0000006120056001600160a01b03166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015613a62573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613a869190616a39565b1015613aa5576040516311b6707f60e01b815260040160405180910390fd5b6102c2805460ff191660011790555b565b6000613b1233868686516001600160401b03811115613ad757613ad7615d01565b604051908082528060200260200182016040528015613b0a57816020015b6060815260200190600190039081613af55790505b5087876140f0565b61132785858585614a50565b600054610100900460ff16613b455760405162461bcd60e51b815260040161044890616bdf565b613b6c81613b676040805180820190915260018152603160f81b602082015290565b614e2f565b6111af81614e7e565b600054610100900460ff16613b9c5760405162461bcd60e51b815260040161044890616bdf565b613ba7838383614eb6565b505050565b600054610100900460ff16613ab45760405162461bcd60e51b815260040161044890616bdf565b600054610100900460ff16613bfa5760405162461bcd60e51b815260040161044890616bdf565b6111af81614ef8565b600054610100900460ff16613c2a5760405162461bcd60e51b815260040161044890616bdf565b6111af81614f42565b600054610100900460ff16613c5a5760405162461bcd60e51b815260040161044890616bdf565b6111af81614f69565b600054610100900460ff16613c8a5760405162461bcd60e51b815260040161044890616bdf565b6111af81614f90565b600054610100900460ff16613cba5760405162461bcd60e51b815260040161044890616bdf565b600080546001600160a01b039092166301000000026301000000600160b81b0319909216919091179055565b6060609a80546111c290616873565b6060609b80546111c290616873565b600065ffffffffffff8211156139115760405162461bcd60e51b815260206004820152602660248201527f53616665436173743a2076616c756520646f65736e27742066697420696e203460448201526538206269747360d01b6064820152608401610448565b6101f854604051630748d63560e31b81526001600160a01b038581166004830152602482018590526000921690633a46b1a890604401602060405180830381865afa158015613dbe573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061203e9190616a39565b8054600090801561219057613dfc836139976001846169c6565b54600160201b90046001600160e01b0316612041565b61022b54604080516001600160a01b03928316815291831660208301527f08f74ea46ef7894f65eabfb5e6e695de773a000b47c529ab559178069b226401910160405180910390a161022b80546001600160a01b0319166001600160a01b0392909216919091179055565b600081604051602001613e909190616c2a565b6040516020818303038152906040528051906020012083604051602001613eb79190616c2a565b6040516020818303038152906040528051906020012014905092915050565b015190565b60008111613f3b5760405162461bcd60e51b815260206004820152602760248201527f476f7665726e6f7253657474696e67733a20766f74696e6720706572696f6420604482015266746f6f206c6f7760c81b6064820152608401610448565b6101955460408051918252602082018390527f7e3f7f0708a84de9203036abaa450dccc85ad5ff52f78c170f3edb55cf5e8828910160405180910390a161019555565b6101965460408051918252602082018390527fccb45da8d5717e6c4544694297c4ba5cf151d455c9bb0ed4fc7a38411bc05461910160405180910390a161019655565b61028f54604080516001600160401b03928316815291831660208301527f7ca4ac117ed3cdce75c1161d8207c440389b1a15d69d096831664657c07dafc2910160405180910390a161028f805467ffffffffffffffff19166001600160401b0392909216919091179055565b600080546040516001600160a01b0380851693630100000090930416917f44fc1b38a4abaa91ebd1b628a5b259a698f86238c8217d68f516e87769c60c0b91a3600080546001600160a01b039092166301000000026301000000600160b81b0319909216919091179055565b60008181526101636020526040812060010154610f99906001600160401b0316600084815261029060205260409020546001600160401b0316614fb7565b606083156140e6575081612041565b6120418383614fcd565b80516020820120600061410e878761410888886141ae565b85612a05565b60008181526101c6602052604090206009810154919250906141a35780546001600160a01b0319166001600160a01b038a16178155875161415890600183019060208b0190615a9c565b50865161416e90600283019060208a0190615afd565b5085516141849060038301906020890190615b38565b50845161419a9060048301906020880190615b8a565b50600981018390555b505050505050505050565b6060600082516001600160401b038111156141cb576141cb615d01565b6040519080825280602002602001820160405280156141fe57816020015b60608152602001906001900390816141e95790505b50905060005b81518110156142d85784818151811061421f5761421f6168ad565b60200260200101515160001461428f57848181518110614241576142416168ad565b602002602001015180519060200120848281518110614262576142626168ad565b602002602001015160405160200161427b929190616c46565b6040516020818303038152906040526142aa565b8381815181106142a1576142a16168ad565b60200260200101515b8282815181106142bc576142bc6168ad565b6020026020010181905250806142d1906168d9565b9050614204565b509392505050565b600063288ace0360e11b6318df743f60e31b63bf26d89760e01b6379dd796f60e01b6001600160e01b0319861682148061432657506001600160e01b0319868116908216145b8061433d57506001600160e01b0319868116908516145b8061435857506001600160e01b03198616630271189760e51b145b80611b3657506301ffc9a760e01b6001600160e01b03198716149695505050505050565b6000610ece614ff7565b6000807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a08311156143bd5750600090506003614441565b6040805160008082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa158015614411573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b03811661443a57600060019250925050614441565b9150600090505b94509492505050565b600081600481111561445e5761445e6162c9565b036144665750565b600181600481111561447a5761447a6162c9565b036144c75760405162461bcd60e51b815260206004820152601860248201527f45434453413a20696e76616c6964207369676e617475726500000000000000006044820152606401610448565b60028160048111156144db576144db6162c9565b036145285760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e677468006044820152606401610448565b600381600481111561453c5761453c6162c9565b036111af5760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b6064820152608401610448565b6000806145a4878787878761506b565b600088815261029060205260409020549091506001600160401b03161580156145d157506145d1876151c1565b15611b365760006145eb61028f546001600160401b031690565b6145f3611fbd565b65ffffffffffff166146059190616c77565b9050614610886128ea565b816001600160401b0316111561465f576040516001600160401b038216815288907f541f725fb9f7c98a30cc9c0ff32fbb14358cd7159c847a3aa20a2bdc442ba5119060200160405180910390a25b600088815261029060205260409020805467ffffffffffffffff19166001600160401b03929092169190911790559695505050505050565b60006001600160e01b038211156139115760405162461bcd60e51b815260206004820152602760248201527f53616665436173743a2076616c756520646f65736e27742066697420696e20326044820152663234206269747360c81b6064820152608401610448565b60008061470e858585615201565b915091505b935093915050565b8154600160801b90819004600f0b6000818152600180860160205260409091209390935583546001600160801b03908116939091011602179055565b61022b5460405163e38335e560e01b81526001600160a01b039091169063e38335e5903490614793908890889088906000908990600401616b04565b6000604051808303818588803b1580156147ac57600080fd5b505af11580156147c0573d6000803e3d6000fd5b50505050505050505050565b600081815261016360205260408120600281015460ff16156147f15750600792915050565b6002810154610100900460ff161561480c5750600292915050565b600083815261016360205260408120546001600160401b0316908190036148755760405162461bcd60e51b815260206004820152601d60248201527f476f7665726e6f723a20756e6b6e6f776e2070726f706f73616c2069640000006044820152606401610448565b600061487f611fbd565b65ffffffffffff16905080821061489b57506000949350505050565b60006148a6866128ea565b90508181106148bb5750600195945050505050565b6148c4866151c1565b80156148e7575060008681526101c6602052604090206006810154600590910154115b156148f85750600495945050505050565b50600395945050505050565b6000611327858585856153a0565b60008160000361492457506000919050565b6000600161493184615456565b901c6001901b9050600181848161494a5761494a6169d9565b048201901c90506001818481614962576149626169d9565b048201901c9050600181848161497a5761497a6169d9565b048201901c90506001818481614992576149926169d9565b048201901c905060018184816149aa576149aa6169d9565b048201901c905060018184816149c2576149c26169d9565b048201901c905060018184816149da576149da6169d9565b048201901c9050612041818285816149f4576149f46169d9565b046154ea565b60005b818310156142d8576000614a1184846154f9565b60008781526020902090915063ffffffff86169082015463ffffffff161115614a3c57809250614a4a565b614a47816001616baa565b93505b506149fd565b600033614a5d8184615514565b614aa95760405162461bcd60e51b815260206004820152601d60248201527f476f7665726e6f723a2070726f706f73657220726573747269637465640000006044820152606401610448565b6000614ab3611fbd565b65ffffffffffff169050614ac56128de565b614ad483610e146001856169c6565b1015614b3c5760405162461bcd60e51b815260206004820152603160248201527f476f7665726e6f723a2070726f706f73657220766f7465732062656c6f7720706044820152701c9bdc1bdcd85b081d1a1c995cda1bdb19607a1b6064820152608401610448565b6000614b518888888880519060200120612a05565b90508651885114614b745760405162461bcd60e51b815260040161044890616c97565b8551885114614b955760405162461bcd60e51b815260040161044890616c97565b6000885111614be65760405162461bcd60e51b815260206004820152601860248201527f476f7665726e6f723a20656d7074792070726f706f73616c00000000000000006044820152606401610448565b600081815261016360205260409020546001600160401b031615614c565760405162461bcd60e51b815260206004820152602160248201527f476f7665726e6f723a2070726f706f73616c20616c72656164792065786973746044820152607360f81b6064820152608401610448565b6000614c626101945490565b614c6c9084616baa565b90506000614c7a6101955490565b614c849083616baa565b90506040518060e00160405280614c9a84615605565b6001600160401b031681526001600160a01b038716602082015260006040820152606001614cc783615605565b6001600160401b03908116825260006020808401829052604080850183905260609485018390528883526101638252918290208551815492870151878501519186166001600160e01b031990941693909317600160401b6001600160a01b039094168402176001600160e01b0316600160e01b60e09290921c91909102178155938501516080860151908416921c0217600183015560a08301516002909201805460c09094015161ffff1990941692151561ff00191692909217610100931515939093029290921790558a517f7d84a6263ae0d98d3329bd7b46bb4e8d6f98cd35a7adb45c274c8b7fd5ebd5e091859188918e918e91811115614dcc57614dcc615d01565b604051908082528060200260200182016040528015614dff57816020015b6060815260200190600190039081614dea5790505b508d88888f604051614e1999989796959493929190616cd8565b60405180910390a1509098975050505050505050565b600054610100900460ff16614e565760405162461bcd60e51b815260040161044890616bdf565b609a614e628382616db6565b50609b614e6f8282616db6565b50506000609881905560995550565b600054610100900460ff16614ea55760405162461bcd60e51b815260040161044890616bdf565b610162614eb28282616db6565b5050565b600054610100900460ff16614edd5760405162461bcd60e51b815260040161044890616bdf565b614ee6836139c8565b614eef82613edb565b613ba781613f7e565b600054610100900460ff16614f1f5760405162461bcd60e51b815260040161044890616bdf565b6101f880546001600160a01b0319166001600160a01b0392909216919091179055565b600054610100900460ff166120f45760405162461bcd60e51b815260040161044890616bdf565b600054610100900460ff166111a65760405162461bcd60e51b815260040161044890616bdf565b600054610100900460ff16612abe5760405162461bcd60e51b815260040161044890616bdf565b6000818311614fc65781612041565b5090919050565b815115614fdd5781518083602001fd5b8060405162461bcd60e51b81526004016104489190615eba565b60007f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f61502261566d565b61502a6156c6565b60408051602081019490945283019190915260608201524660808201523060a082015260c00160405160208183030381529060405280519060200120905090565b600085815261016360205260408120600161508588611751565b6007811115615096576150966162c9565b146150ef5760405162461bcd60e51b815260206004820152602360248201527f476f7665726e6f723a20766f7465206e6f742063757272656e746c792061637460448201526269766560e81b6064820152608401610448565b80546000906151099088906001600160401b031686613d6b565b905061511888888884886156f7565b835160000361516d57866001600160a01b03167fb8e138887d0aa13bab447e82de9d5c1777041ecd21ca36ba824ff1e6c07ddda4898884896040516151609493929190616e75565b60405180910390a2611746565b866001600160a01b03167fe2babfbac5889a709b63bb7f598b324e08bc5a4fb9ec647fb3cbc9ec07eb871289888489896040516151ae959493929190616e9d565b60405180910390a2979650505050505050565b60008181526101c66020526040812060058101546151f8610e8085600090815261016360205260409020546001600160401b031690565b11159392505050565b82546000908190801561534757600061521f876139976001856169c6565b60408051808201909152905463ffffffff808216808452600160201b9092046001600160e01b0316602084015291925090871610156152a05760405162461bcd60e51b815260206004820152601b60248201527f436865636b706f696e743a2064656372656173696e67206b65797300000000006044820152606401610448565b805163ffffffff8088169116036152e857846152c1886139976001866169c6565b80546001600160e01b0392909216600160201b0263ffffffff909216919091179055615337565b6040805180820190915263ffffffff80881682526001600160e01b0380881660208085019182528b54600181018d5560008d81529190912094519151909216600160201b029216919091179101555b6020015192508391506147139050565b50506040805180820190915263ffffffff80851682526001600160e01b0380851660208085019182528854600181018a5560008a815291822095519251909316600160201b029190931617920191909155905081614713565b6000806153af86868686615895565b600081815261022c6020526040902054909150156113275761022b54600082815261022c60205260409081902054905163c4d252f560e01b81526001600160a01b039092169163c4d252f59161540b9160040190815260200190565b600060405180830381600087803b15801561542557600080fd5b505af1158015615439573d6000803e3d6000fd5b505050600082815261022c60205260408120555095945050505050565b600080608083901c1561546b57608092831c92015b604083901c1561547d57604092831c92015b602083901c1561548f57602092831c92015b601083901c156154a157601092831c92015b600883901c156154b357600892831c92015b600483901c156154c557600492831c92015b600283901c156154d757600292831c92015b600183901c15610f995760010192915050565b6000818310614fc65781612041565b600061550860028484186169ef565b61204190848416616baa565b8051600090603481101561552c576001915050610f99565b82810160131901516001600160a01b031981166b046e0e4dee0dee6cae47a60f60a31b1461555f57600192505050610f99565b60008061556d6028856169c6565b90505b838110156155e4576000806155a4888481518110615590576155906168ad565b01602001516001600160f81b0319166159a2565b91509150816155bc5760019650505050505050610f99565b8060ff166004856001600160a01b0316901b1793505050806155dd906168d9565b9050615570565b50856001600160a01b0316816001600160a01b031614935050505092915050565b60006001600160401b038211156139115760405162461bcd60e51b815260206004820152602660248201527f53616665436173743a2076616c756520646f65736e27742066697420696e203660448201526534206269747360d01b6064820152608401610448565b600080615678613ce6565b80519091501561568f578051602090910120919050565b609854801561569e5792915050565b7fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a4709250505090565b6000806156d1613cf5565b8051909150156156e8578051602090910120919050565b609954801561569e5792915050565b60008581526101c6602090815260408083206001600160a01b038816845260088101909252909120805460ff16156157875760405162461bcd60e51b815260206004820152602d60248201527f476f7665726e6f72436f6d7061746962696c697479427261766f3a20766f746560448201526c08185b1c9958591e4818d85cdd609a1b6064820152608401610448565b805460ff86166101000261ffff199091161760011781556157a784615a34565b81546001600160601b039190911662010000026dffffffffffffffffffffffff00001990911617815560ff85166157f757838260060160008282546157ec9190616baa565b909155506129fc9050565b60001960ff86160161581757838260050160008282546157ec9190616baa565b60011960ff86160161583757838260070160008282546157ec9190616baa565b60405162461bcd60e51b815260206004820152602d60248201527f476f7665726e6f72436f6d7061746962696c697479427261766f3a20696e766160448201526c6c696420766f7465207479706560981b6064820152608401610448565b6000806158a486868686612a05565b905060006158b182611751565b905060028160078111156158c7576158c76162c9565b141580156158e7575060068160078111156158e4576158e46162c9565b14155b801561590557506007816007811115615902576159026162c9565b14155b6159515760405162461bcd60e51b815260206004820152601d60248201527f476f7665726e6f723a2070726f706f73616c206e6f74206163746976650000006044820152606401610448565b6000828152610163602052604090819020600201805461ff001916610100179055517f789cf55be980739dad1d0699b93b58e806b51c9d96619bfa8fe0a28abaa7b30c906132109084815260200190565b60008060f883901c602f811180156159bd5750603a8160ff16105b156159d257600194602f199091019350915050565b8060ff1660401080156159e8575060478160ff16105b156159fd576001946036199091019350915050565b8060ff166060108015615a13575060678160ff16105b15615a28576001946056199091019350915050565b50600093849350915050565b60006001600160601b038211156139115760405162461bcd60e51b815260206004820152602660248201527f53616665436173743a2076616c756520646f65736e27742066697420696e203960448201526536206269747360d01b6064820152608401610448565b828054828255906000526020600020908101928215615af1579160200282015b82811115615af157825182546001600160a01b0319166001600160a01b03909116178255602090920191600190910190615abc565b50613911929150615bdc565b828054828255906000526020600020908101928215615af1579160200282015b82811115615af1578251825591602001919060010190615b1d565b828054828255906000526020600020908101928215615b7e579160200282015b82811115615b7e5782518290615b6e9082616db6565b5091602001919060010190615b58565b50613911929150615bf1565b828054828255906000526020600020908101928215615bd0579160200282015b82811115615bd05782518290615bc09082616db6565b5091602001919060010190615baa565b50613911929150615c0e565b5b808211156139115760008155600101615bdd565b80821115613911576000615c058282615c2b565b50600101615bf1565b80821115613911576000615c228282615c2b565b50600101615c0e565b508054615c3790616873565b6000825580601f10615c47575050565b601f0160209004906000526020600020908101906111af9190615bdc565b600060208284031215615c7757600080fd5b5035919050565b600060208284031215615c9057600080fd5b81356001600160e01b03198116811461204157600080fd5b803560ff8116811461193957600080fd5b60008083601f840112615ccb57600080fd5b5081356001600160401b03811115615ce257600080fd5b602083019150836020828501011115615cfa57600080fd5b9250929050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b0381118282101715615d3f57615d3f615d01565b604052919050565b60006001600160401b03821115615d6057615d60615d01565b50601f01601f191660200190565b600082601f830112615d7f57600080fd5b8135615d92615d8d82615d47565b615d17565b818152846020838601011115615da757600080fd5b816020850160208301376000918101602001919091529392505050565b60008060008060008060008060e0898b031215615de057600080fd5b88359750615df060208a01615ca8565b965060408901356001600160401b0380821115615e0c57600080fd5b615e188c838d01615cb9565b909850965060608b0135915080821115615e3157600080fd5b50615e3e8b828c01615d6e565b945050615e4d60808a01615ca8565b925060a0890135915060c089013590509295985092959890939650565b60005b83811015615e85578181015183820152602001615e6d565b50506000910152565b60008151808452615ea6816020860160208601615e6a565b601f01601f19169290920160200192915050565b6020815260006120416020830184615e8e565b6001600160a01b03811681146111af57600080fd5b60008060008060808587031215615ef857600080fd5b8435615f0381615ecd565b93506020850135615f1381615ecd565b92506040850135915060608501356001600160401b03811115615f3557600080fd5b615f4187828801615d6e565b91505092959194509250565b60006001600160401b03821115615f6657615f66615d01565b5060051b60200190565b600082601f830112615f8157600080fd5b81356020615f91615d8d83615f4d565b82815260059290921b84018101918181019086841115615fb057600080fd5b8286015b84811015615fd4578035615fc781615ecd565b8352918301918301615fb4565b509695505050505050565b600082601f830112615ff057600080fd5b81356020616000615d8d83615f4d565b82815260059290921b8401810191818101908684111561601f57600080fd5b8286015b84811015615fd45780358352918301918301616023565b600082601f83011261604b57600080fd5b8135602061605b615d8d83615f4d565b82815260059290921b8401810191818101908684111561607a57600080fd5b8286015b84811015615fd45780356001600160401b0381111561609d5760008081fd5b6160ab8986838b0101615d6e565b84525091830191830161607e565b600080600080608085870312156160cf57600080fd5b84356001600160401b03808211156160e657600080fd5b6160f288838901615f70565b9550602087013591508082111561610857600080fd5b61611488838901615fdf565b9450604087013591508082111561612a57600080fd5b506161378782880161603a565b949793965093946060013593505050565b60006020828403121561615a57600080fd5b813561204181615ecd565b600081518084526020808501945080840160005b8381101561619e5781516001600160a01b031687529582019590820190600101616179565b509495945050505050565b600081518084526020808501945080840160005b8381101561619e578151875295820195908201906001016161bd565b600081518084526020808501808196508360051b8101915082860160005b8581101561622157828403895261620f848351615e8e565b988501989350908401906001016161f7565b5091979650505050505050565b6080815260006162416080830187616165565b828103602084015261625381876161a9565b9050828103604084015261626781866161d9565b9050828103606084015261174681856161d9565b600080600080600060a0868803121561629357600080fd5b853594506162a360208701615ca8565b93506162b160408701615ca8565b94979396509394606081013594506080013592915050565b634e487b7160e01b600052602160045260246000fd5b602081016008831061630157634e487b7160e01b600052602160045260246000fd5b91905290565b6000806040838503121561631a57600080fd5b82359150602083013561632c81615ecd565b809150509250929050565b6000806040838503121561634a57600080fd5b8235915061635a60208401615ca8565b90509250929050565b60008060008060006080868803121561637b57600080fd5b8535945061638b60208701615ca8565b935060408601356001600160401b03808211156163a757600080fd5b6163b389838a01615cb9565b909550935060608801359150808211156163cc57600080fd5b506163d988828901615d6e565b9150509295509295909350565b600080600080606085870312156163fc57600080fd5b8435935061640c60208601615ca8565b925060408501356001600160401b0381111561642757600080fd5b61643387828801615cb9565b95989497509550505050565b6000806000806080858703121561645557600080fd5b84356001600160401b038082111561646c57600080fd5b61647888838901615f70565b9550602087013591508082111561648e57600080fd5b61649a88838901615fdf565b945060408701359150808211156164b057600080fd5b6164bc8883890161603a565b935060608701359150808211156164d257600080fd5b50615f4187828801615d6e565b60ff60f81b8816815260e0602082015260006164fe60e0830189615e8e565b82810360408401526165108189615e8e565b606084018890526001600160a01b038716608085015260a0840186905283810360c0850152905061108981856161a9565b60008060006060848603121561655657600080fd5b833561656181615ecd565b92506020840135915060408401356001600160401b0381111561658357600080fd5b61658f86828701615d6e565b9150509250925092565b600080600080604085870312156165af57600080fd5b84356001600160401b03808211156165c657600080fd5b6165d288838901615cb9565b909650945060208701359150808211156165eb57600080fd5b5061643387828801615cb9565b600080600080600060a0868803121561661057600080fd5b853561661b81615ecd565b9450602086013561662b81615ecd565b935060408601356001600160401b038082111561664757600080fd5b61665389838a01615fdf565b9450606088013591508082111561666957600080fd5b61667589838a01615fdf565b935060808801359150808211156163cc57600080fd5b600080600080606085870312156166a157600080fd5b84356166ac81615ecd565b93506020850135925060408501356001600160401b0381111561642757600080fd5b6000602082840312156166e057600080fd5b81356001600160401b038116811461204157600080fd5b600080600080600060a0868803121561670f57600080fd5b85356001600160401b038082111561672657600080fd5b61673289838a01615f70565b9650602088013591508082111561674857600080fd5b61675489838a01615fdf565b9550604088013591508082111561676a57600080fd5b61677689838a0161603a565b9450606088013591508082111561678c57600080fd5b61667589838a0161603a565b600080604083850312156167ab57600080fd5b82356167b681615ecd565b946020939093013593505050565b600080600080600060a086880312156167dc57600080fd5b85356167e781615ecd565b945060208601356167f781615ecd565b9350604086013592506060860135915060808601356001600160401b0381111561682057600080fd5b6163d988828901615d6e565b8183823760009101908152919050565b60208082526018908201527f476f7665726e6f723a206f6e6c79476f7665726e616e63650000000000000000604082015260600190565b600181811c9082168061688757607f821691505b6020821081036168a757634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b6000600182016168eb576168eb6168c3565b5060010190565b65ffffffffffff828116828216039080821115616911576169116168c3565b5092915050565b60208082526021908201527f476f7665726e6f723a2070726f706f73616c206e6f74207375636365737366756040820152601b60fa1b606082015260800190565b60006020828403121561696b57600080fd5b81516001600160401b0381111561698157600080fd5b8201601f8101841361699257600080fd5b80516169a0615d8d82615d47565b8181528560208385010111156169b557600080fd5b611327826020830160208601615e6a565b81810381811115610f9957610f996168c3565b634e487b7160e01b600052601260045260246000fd5b600082616a0c57634e487b7160e01b600052601260045260246000fd5b500490565b600060208284031215616a2357600080fd5b815165ffffffffffff8116811461204157600080fd5b600060208284031215616a4b57600080fd5b5051919050565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b604081526000616a8f604083018688616a52565b8281036020840152611746818587616a52565b608081526000616ab56080830187616165565b8281036020840152616ac781876161a9565b90508281036040840152616adb81866161d9565b91505082606083015295945050505050565b8082028115828204841417610f9957610f996168c3565b60a081526000616b1760a0830188616165565b8281036020840152616b2981886161a9565b90508281036040840152616b3d81876161d9565b60608401959095525050608001529392505050565b60c081526000616b6560c0830189616165565b8281036020840152616b7781896161a9565b90508281036040840152616b8b81886161d9565b60608401969096525050608081019290925260a0909101529392505050565b80820180821115610f9957610f996168c3565b600060208284031215616bcf57600080fd5b8151801515811461204157600080fd5b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b60008251616c3c818460208701615e6a565b9190910192915050565b6001600160e01b0319831681528151600090616c69816004850160208701615e6a565b919091016004019392505050565b6001600160401b03818116838216019080821115616911576169116168c3565b60208082526021908201527f476f7665726e6f723a20696e76616c69642070726f706f73616c206c656e67746040820152600d60fb1b606082015260800190565b8981526001600160a01b038916602082015261012060408201819052600090616d038382018b616165565b90508281036060840152616d17818a6161a9565b90508281036080840152616d2b81896161d9565b905082810360a0840152616d3f81886161d9565b90508560c08401528460e0840152828103610100840152616d608185615e8e565b9c9b505050505050505050505050565b601f821115613ba757600081815260208120601f850160051c81016020861015616d975750805b601f850160051c820191505b8181101561177f57828155600101616da3565b81516001600160401b03811115616dcf57616dcf615d01565b616de381616ddd8454616873565b84616d70565b602080601f831160018114616e185760008415616e005750858301515b600019600386901b1c1916600185901b17855561177f565b600085815260208120601f198616915b82811015616e4757888601518255948401946001909101908401616e28565b5085821015616e655787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b84815260ff84166020820152826040820152608060608201526000611b366080830184615e8e565b85815260ff8516602082015283604082015260a060608201526000616ec560a0830185615e8e565b8281036080840152611c4f8185615e8e56fe476f7665726e6f723a2072656c617920726576657274656420776974686f7574206d657373616765a164736f6c6343000811000a \ No newline at end of file diff --git a/core/systemcontracts/pascal/rialto/StakeHubContract b/core/systemcontracts/pascal/rialto/StakeHubContract index 729be9428a..5427510249 100644 --- a/core/systemcontracts/pascal/rialto/StakeHubContract +++ b/core/systemcontracts/pascal/rialto/StakeHubContract @@ -1 +1 @@ -608060405260043610620003e75760003560e01c80638456cb591162000203578063cbb04d9d1162000117578063e8f67c3b11620000ad578063f80a34021162000078578063f80a34021462000c3e578063fb50b31f1462000c63578063fc0c5ff11462000c88578063ff69ab611462000ca057600080fd5b8063e8f67c3b1462000bba578063e992aaf51462000bd2578063efdbf0e11462000bea578063f1f74d841462000c2657600080fd5b8063d7c2dfc811620000ee578063d7c2dfc81462000b40578063d8ca511f1462000b65578063daacdb661462000b7d578063dbda7fb31462000b9557600080fd5b8063cbb04d9d1462000ac1578063d115a2061462000b02578063d6ca429d1462000b1b57600080fd5b8063ac4317511162000199578063bff02e201162000164578063bff02e201462000a4e578063c38fbec81462000a84578063c473318f1462000aa9578063c8509d8114620008a257600080fd5b8063ac43175114620009cc578063b187bd2614620009f1578063baa7199e1462000a11578063bdceadf31462000a3657600080fd5b80638cd22b2211620001da5780638cd22b221462000937578063982ef0a7146200095c578063a43569b31462000973578063aad3ec9614620009a757600080fd5b80638456cb5914620008c757806386d5450614620008df5780638a4d3fa8146200091957600080fd5b806349f41a4211620002fb57806364028fbd116200029157806375cc7d89116200025c57806375cc7d89146200084d57806376e7d6d614620008725780638129fc1c146200088a578063831d65d114620008a257600080fd5b806364028fbd1462000788578063663706d3146200079f5780636ec01b2714620007d05780636f8e2fa4146200082857600080fd5b80634e6fd6c411620002d25780634e6fd6c414620006ef5780635949187114620007075780635e7cc1c9146200072c57806363a036b5146200075157600080fd5b806349f41a4214620006805780634a49ac4c14620006a55780634d99dd1614620006ca57600080fd5b80631fa8882b116200037d578063417c73a71162000348578063417c73a714620005cc578063449ecfe614620005f157806345211bfd14620006165780634838d165146200063b57600080fd5b80631fa8882b146200053d5780632b727c8614620005555780632e8e8c71146200057a5780633840998814620005b457600080fd5b8063092193ab11620003be578063092193ab14620004885780630e9fbf51146200049f5780631182b87514620004c457806317b4f35314620004f857600080fd5b8063046f7da21462000407578063059ddd22146200041f5780630661806e146200046157600080fd5b36620004025760345460ff166001146200040057600080fd5b005b600080fd5b3480156200041457600080fd5b506200040062000cb8565b3480156200042c57600080fd5b50620004446200043e3660046200877b565b62000d4a565b6040516001600160a01b0390911681526020015b60405180910390f35b3480156200046e57600080fd5b506200047960365481565b60405190815260200162000458565b62000400620004993660046200877b565b62001172565b348015620004ac57600080fd5b5062000400620004be366004620087dd565b620017c3565b348015620004d157600080fd5b50620004e9620004e336600462008822565b62001aed565b604051620004589190620088d5565b3480156200050557600080fd5b506200044462000517366004620089a7565b80516020818301810180516045825292820191909301209152546001600160a01b031681565b3480156200054a57600080fd5b506200047961025881565b3480156200056257600080fd5b5062000444620005743660046200877b565b62001b85565b3480156200058757600080fd5b5062000444620005993660046200877b565b604d602052600090815260409020546001600160a01b031681565b348015620005c157600080fd5b506200047960375481565b348015620005d957600080fd5b5062000400620005eb3660046200877b565b62001bda565b348015620005fe57600080fd5b5062000400620006103660046200877b565b62001c5c565b3480156200062357600080fd5b5062000400620006353660046200877b565b62001e41565b3480156200064857600080fd5b506200066f6200065a3660046200877b565b60016020526000908152604090205460ff1681565b604051901515815260200162000458565b3480156200068d57600080fd5b50620004006200069f3660046200877b565b62002019565b348015620006b257600080fd5b5062000400620006c43660046200877b565b62002235565b348015620006d757600080fd5b5062000400620006e9366004620089fc565b620022b1565b348015620006fc57600080fd5b506200044461dead81565b3480156200071457600080fd5b50620004006200072636600462008a3a565b620028e1565b3480156200073957600080fd5b50620004006200074b36600462008aa4565b620036da565b3480156200075e57600080fd5b50620007766200077036600462008acb565b62003903565b60405162000458949392919062008b34565b620004006200079936600462008bf0565b62003fa8565b348015620007ac57600080fd5b5062000479620007be3660046200877b565b60446020526000908152604090205481565b348015620007dd57600080fd5b50620007f5620007ef3660046200877b565b620045f7565b6040805182516001600160401b039081168252602080850151821690830152928201519092169082015260600162000458565b3480156200083557600080fd5b50620004e9620008473660046200877b565b6200469c565b3480156200085a57600080fd5b50620004006200086c3660046200877b565b62004ac8565b3480156200087f57600080fd5b5062000479603d5481565b3480156200089757600080fd5b506200040062004c9a565b348015620008af57600080fd5b5062000400620008c136600462008822565b62004e62565b348015620008d457600080fd5b506200040062004ec0565b348015620008ec57600080fd5b5062000444620008fe3660046200877b565b6043602052600090815260409020546001600160a01b031681565b3480156200092657600080fd5b5062000479670de0b6b3a764000081565b3480156200094457600080fd5b506200047962000956366004620089fc565b62004f58565b620004006200096d36600462008cc6565b62005011565b3480156200098057600080fd5b5062000998620009923660046200877b565b620056bf565b60405162000458919062008cfe565b348015620009b457600080fd5b5062000400620009c6366004620089fc565b620059ac565b348015620009d957600080fd5b5062000400620009eb36600462008d7b565b62005a19565b348015620009fe57600080fd5b5060005462010000900460ff166200066f565b34801562000a1e57600080fd5b506200040062000a3036600462008e34565b620068b8565b34801562000a4357600080fd5b5062000479603c5481565b34801562000a5b57600080fd5b5062000a7362000a6d36600462008acb565b62006a85565b604051620004589392919062008e8d565b34801562000a9157600080fd5b506200040062000aa33660046200877b565b62006c61565b34801562000ab657600080fd5b506200047960385481565b34801562000ace57600080fd5b5062000ae662000ae03660046200877b565b62006f21565b6040805193845291151560208401529082015260600162000458565b34801562000b0f57600080fd5b5062000479620186a081565b34801562000b2857600080fd5b506200040062000b3a36600462008eea565b62007364565b34801562000b4d57600080fd5b506200040062000b5f36600462008fd3565b62007589565b34801562000b7257600080fd5b5062000479603b5481565b34801562000b8a57600080fd5b506200047960495481565b34801562000ba257600080fd5b506200044462000bb43660046200877b565b6200767f565b34801562000bc757600080fd5b506200047960355481565b34801562000bdf57600080fd5b5062000479603a5481565b34801562000bf757600080fd5b506200047962000c09366004620089a7565b805160208183018101805160468252928201919093012091525481565b34801562000c3357600080fd5b5062000479603e5481565b34801562000c4b57600080fd5b506200047962000c5d366004620089fc565b62007aa9565b34801562000c7057600080fd5b506200040062000c8236600462008d7b565b62007b1a565b34801562000c9557600080fd5b506200047960395481565b34801562000cad57600080fd5b5062000479604a5481565b600054630100000090046001600160a01b0316331462000ceb576040516306fbb1e360e01b815260040160405180910390fd5b60005462010000900460ff1662000d1557604051636cd6020160e01b815260040160405180910390fd5b6000805462ff0000191681556040517f62451d457bc659158be6e6247f56ec1df424a5c7597f71c20c2bc44e0965c8f99190a1565b6001600160a01b038082166000908152604160209081526040808320815161018081018352815486168152600182015486169381019390935260028101549094169082015260038301546060820152600483018054929384939091608084019162000db59062009039565b80601f016020809104026020016040519081016040528092919081815260200182805462000de39062009039565b801562000e345780601f1062000e085761010080835404028352916020019162000e34565b820191906000526020600020905b81548152906001019060200180831162000e1657829003601f168201915b505050505081526020016005820160405180608001604052908160008201805462000e5f9062009039565b80601f016020809104026020016040519081016040528092919081815260200182805462000e8d9062009039565b801562000ede5780601f1062000eb25761010080835404028352916020019162000ede565b820191906000526020600020905b81548152906001019060200180831162000ec057829003601f168201915b5050505050815260200160018201805462000ef99062009039565b80601f016020809104026020016040519081016040528092919081815260200182805462000f279062009039565b801562000f785780601f1062000f4c5761010080835404028352916020019162000f78565b820191906000526020600020905b81548152906001019060200180831162000f5a57829003601f168201915b5050505050815260200160028201805462000f939062009039565b80601f016020809104026020016040519081016040528092919081815260200182805462000fc19062009039565b8015620010125780601f1062000fe65761010080835404028352916020019162001012565b820191906000526020600020905b81548152906001019060200180831162000ff457829003601f168201915b505050505081526020016003820180546200102d9062009039565b80601f01602080910402602001604051908101604052809291908181526020018280546200105b9062009039565b8015620010ac5780601f106200108057610100808354040283529160200191620010ac565b820191906000526020600020905b8154815290600101906020018083116200108e57829003601f168201915b505050919092525050508152604080516060808201835260098501546001600160401b038082168452600160401b82048116602080860191909152600160801b9092041683850152840191909152600a84015460ff16151582840152600b84015490830152600c8301546080830152600d8301546001600160a01b031660a0830152805161026081019182905260c09092019190600e84019060139082845b8154815260200190600101908083116200114b575050509190925250509051949350505050565b33611000146200119e57604051630f22c43960e41b815261100060048201526024015b60405180910390fd5b6001600160a01b03808216600090815260436020908152604080832054841680845260418352818420825161018081018452815487168152600182015487169481019490945260028101549095169183019190915260038401546060830152600484018054919491608084019190620012179062009039565b80601f0160208091040260200160405190810160405280929190818152602001828054620012459062009039565b8015620012965780601f106200126a5761010080835404028352916020019162001296565b820191906000526020600020905b8154815290600101906020018083116200127857829003601f168201915b5050505050815260200160058201604051806080016040529081600082018054620012c19062009039565b80601f0160208091040260200160405190810160405280929190818152602001828054620012ef9062009039565b8015620013405780601f10620013145761010080835404028352916020019162001340565b820191906000526020600020905b8154815290600101906020018083116200132257829003601f168201915b505050505081526020016001820180546200135b9062009039565b80601f0160208091040260200160405190810160405280929190818152602001828054620013899062009039565b8015620013da5780601f10620013ae57610100808354040283529160200191620013da565b820191906000526020600020905b815481529060010190602001808311620013bc57829003601f168201915b50505050508152602001600282018054620013f59062009039565b80601f0160208091040260200160405190810160405280929190818152602001828054620014239062009039565b8015620014745780601f10620014485761010080835404028352916020019162001474565b820191906000526020600020905b8154815290600101906020018083116200145657829003601f168201915b505050505081526020016003820180546200148f9062009039565b80601f0160208091040260200160405190810160405280929190818152602001828054620014bd9062009039565b80156200150e5780601f10620014e2576101008083540402835291602001916200150e565b820191906000526020600020905b815481529060010190602001808311620014f057829003601f168201915b505050919092525050508152604080516060808201835260098501546001600160401b038082168452600160401b82048116602080860191909152600160801b9092041683850152840191909152600a84015460ff16151582840152600b84015490830152600c8301546080830152600d8301546001600160a01b031660a0830152805161026081019182905260c09092019190600e84019060139082845b815481526020019060010190808311620015ad575050509190925250505060408101519091506001600160a01b03161580620015ea57508060e001515b15620016a757604051611002903490600081818185875af1925050503d806000811462001634576040519150601f19603f3d011682016040523d82523d6000602084013e62001639565b606091505b505050816001600160a01b03167ffc8bff675087dd2da069cc3fb517b9ed001e19750c0865241a5542dba1ba170d6040516200169a9060208082526011908201527024a72b20a624a22fab20a624a220aa27a960791b604082015260600190565b60405180910390a2505050565b60408181015160c0830151519151632f303ebb60e11b81526001600160401b0390921660048301526001600160a01b031690635e607d769034906024016000604051808303818588803b158015620016fe57600080fd5b505af115801562001713573d6000803e3d6000fd5b5050505050816001600160a01b03167fe34918ff1c7084970068b53fd71ad6d8b04e9f15d3886cbf006443e6cdc52ea6346040516200175491815260200190565b60405180910390a26040808201519051633041949b60e01b815261200591633041949b9162001789919086906004016200906f565b600060405180830381600087803b158015620017a457600080fd5b505af1158015620017b9573d6000803e3d6000fd5b5050505050505b50565b3361100114620017eb57604051630f22c43960e41b8152611001600482015260240162001195565b60005462010000900460ff16156200181657604051631785c68160e01b815260040160405180910390fd5b6000604583836040516200182c92919062009089565b908152604051908190036020019020546001600160a01b0316905062001854603f8262007d52565b620018725760405163056e881160e01b815260040160405180910390fd5b6001600160a01b0381166000908152604160205260408120906200189961025842620090af565b604a546000828152604b602052604090205491925011620018cd5760405163bd52fcdb60e01b815260040160405180910390fd5b6000818152604b60205260408120805460019290620018ee908490620090d2565b909155505060405160469062001908908790879062009089565b90815260200160405180910390205460001415801562001958575042610258604687876040516200193b92919062009089565b908152602001604051809103902054620019569190620090d2565b105b156200197757604051631898eb6b60e01b815260040160405180910390fd5b6000806200198785600262007d75565b9150915081620019aa57604051631b919bb160e11b815260040160405180910390fd5b6002840154603c5460405163045bc4d160e41b815260048101919091526000916001600160a01b0316906345bc4d10906024016020604051808303816000875af1158015620019fd573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001a239190620090e8565b905062001a31858362007dff565b856001600160a01b03167f6e9a2ee7aee95665e3a774a212eb11441b217e3e4656ab9563793094689aabb28383600260405162001a719392919062009102565b60405180910390a26002850154604051633041949b60e01b815261200591633041949b9162001aaf916001600160a01b0316908a906004016200906f565b600060405180830381600087803b15801562001aca57600080fd5b505af115801562001adf573d6000803e3d6000fd5b505050505050505050505050565b6060336120001462001b1757604051630f22c43960e41b8152612000600482015260240162001195565b60005462010000900460ff161562001b4257604051631785c68160e01b815260040160405180910390fd5b6034805460ff1916600117905560405162461bcd60e51b815260206004820152600a60248201526919195c1c9958d85d195960b21b604482015260640162001195565b60008162001b95603f8262007d52565b62001bb35760405163056e881160e01b815260040160405180910390fd5b6001600160a01b038084166000908152604160205260409020600d01541691505b50919050565b600054630100000090046001600160a01b0316331462001c0d576040516306fbb1e360e01b815260040160405180910390fd5b6001600160a01b0381166000818152600160208190526040808320805460ff1916909217909155517f7fd26be6fc92aff63f1f4409b2b2ddeb272a888031d7f55ec830485ec61941869190a250565b60005462010000900460ff161562001c8757604051631785c68160e01b815260040160405180910390fd5b3360009081526001602052604090205460ff161562001cb95760405163b1d02c3d60e01b815260040160405180910390fd5b8062001cc7603f8262007d52565b62001ce55760405163056e881160e01b815260040160405180910390fd5b6001600160a01b0382166000908152604160205260409020600a81015460ff1662001d2357604051634b6b857d60e01b815260040160405180910390fd5b6036546002820154604051630913db4760e01b81526001600160a01b03868116600483015290911690630913db4790602401602060405180830381865afa15801562001d73573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001d999190620090e8565b101562001db9576040516317b204bf60e11b815260040160405180910390fd5b4281600b0154111562001ddf5760405163170cb76760e21b815260040160405180910390fd5b600a8101805460ff19169055604980546001919060009062001e039084906200913d565b90915550506040516001600160a01b038416907f9390b453426557da5ebdc31f19a37753ca04addf656d32f35232211bb2af3f1990600090a2505050565b60005462010000900460ff161562001e6c57604051631785c68160e01b815260040160405180910390fd5b3360009081526001602052604090205460ff161562001e9e5760405163b1d02c3d60e01b815260040160405180910390fd5b62001ea862007ef4565b62001eb5603f8262007d52565b62001ed35760405163056e881160e01b815260040160405180910390fd5b6001600160a01b03821662001efb57604051636520611b60e11b815260040160405180910390fd5b6001600160a01b03828116600090815260436020526040902054161562001f3557604051631e6f587560e11b815260040160405180910390fd5b600062001f4162007ef4565b6001600160a01b0381166000908152604160205260409020600c81015491925090429062001f739061025890620090d2565b111562001f9357604051631f92cdbd60e11b815260040160405180910390fd5b80546001600160a01b039081166000908152604460209081526040808320429081905585548986166001600160a01b031991821681178855600c88019290925581855260439093528184208054958816959093168517909255519092917f6e4e747ca35203f16401c69805c7dd52fff67ef60b0ebc5c7fe16890530f223591a350505050565b3362002027603f8262007d52565b620020455760405163056e881160e01b815260040160405180910390fd5b60005462010000900460ff16156200207057604051631785c68160e01b815260040160405180910390fd5b3360009081526001602052604090205460ff1615620020a25760405163b1d02c3d60e01b815260040160405180910390fd5b6001600160a01b038281166000908152604d60205260409020541615620020dc5760405163bebdc75760e01b815260040160405180910390fd5b620020e9603f8362007d52565b15620021085760405163bebdc75760e01b815260040160405180910390fd5b336000818152604160205260409020600d01546001600160a01b039081169084168103620021495760405163bebdc75760e01b815260040160405180910390fd5b6001600160a01b0381161562002180576001600160a01b0381166000908152604d6020526040902080546001600160a01b03191690555b6001600160a01b038281166000908152604160205260409020600d0180546001600160a01b031916918616918217905515620021e5576001600160a01b038481166000908152604d6020526040902080546001600160a01b0319169184169190911790555b836001600160a01b0316816001600160a01b0316836001600160a01b03167fcbb728765de145e99c00e8ae32a325231e850359b7b8a6da3b84d672ab3f1d0a60405160405180910390a450505050565b600054630100000090046001600160a01b0316331462002268576040516306fbb1e360e01b815260040160405180910390fd5b6001600160a01b038116600081815260016020526040808220805460ff19169055517fe0db3499b7fdc3da4cddff5f45d694549c19835e7f719fb5606d3ad1a5de40119190a250565b60005462010000900460ff1615620022dc57604051631785c68160e01b815260040160405180910390fd5b3360009081526001602052604090205460ff16156200230e5760405163b1d02c3d60e01b815260040160405180910390fd5b816200231c603f8262007d52565b6200233a5760405163056e881160e01b815260040160405180910390fd5b816000036200235c57604051639811e0c760e01b815260040160405180910390fd5b6001600160a01b0380841660009081526041602090815260408083208151610180810183528154861681526001820154861693810193909352600281015490941690820152600383015460608201526004830180543394916080840191620023c49062009039565b80601f0160208091040260200160405190810160405280929190818152602001828054620023f29062009039565b8015620024435780601f10620024175761010080835404028352916020019162002443565b820191906000526020600020905b8154815290600101906020018083116200242557829003601f168201915b50505050508152602001600582016040518060800160405290816000820180546200246e9062009039565b80601f01602080910402602001604051908101604052809291908181526020018280546200249c9062009039565b8015620024ed5780601f10620024c157610100808354040283529160200191620024ed565b820191906000526020600020905b815481529060010190602001808311620024cf57829003601f168201915b50505050508152602001600182018054620025089062009039565b80601f0160208091040260200160405190810160405280929190818152602001828054620025369062009039565b8015620025875780601f106200255b5761010080835404028352916020019162002587565b820191906000526020600020905b8154815290600101906020018083116200256957829003601f168201915b50505050508152602001600282018054620025a29062009039565b80601f0160208091040260200160405190810160405280929190818152602001828054620025d09062009039565b8015620026215780601f10620025f55761010080835404028352916020019162002621565b820191906000526020600020905b8154815290600101906020018083116200260357829003601f168201915b505050505081526020016003820180546200263c9062009039565b80601f01602080910402602001604051908101604052809291908181526020018280546200266a9062009039565b8015620026bb5780601f106200268f57610100808354040283529160200191620026bb565b820191906000526020600020905b8154815290600101906020018083116200269d57829003601f168201915b505050919092525050508152604080516060808201835260098501546001600160401b038082168452600160401b82048116602080860191909152600160801b9092041683850152840191909152600a84015460ff16151582840152600b84015490830152600c8301546080830152600d8301546001600160a01b031660a0830152805161026081019182905260c09092019190600e84019060139082845b8154815260200190600101908083116200275a575050509190925250505060408082015190516326ccee8b60e11b81526001600160a01b0385811660048301526024820188905292935060009290911690634d99dd16906044016020604051808303816000875af1158015620027d4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620027fa9190620090e8565b9050826001600160a01b0316866001600160a01b03167f3aace7340547de7b9156593a7652dc07ee900cea3fd8f82cb6c9d38b4082980287846040516200284b929190918252602082015260400190565b60405180910390a3856001600160a01b0316836001600160a01b0316036200287857620028788662007f35565b6040808301519051633041949b60e01b815261200591633041949b91620028a5919087906004016200906f565b600060405180830381600087803b158015620028c057600080fd5b505af1158015620028d5573d6000803e3d6000fd5b50505050505050505050565b60005462010000900460ff16156200290c57604051631785c68160e01b815260040160405180910390fd5b3360009081526001602052604090205460ff16156200293e5760405163b1d02c3d60e01b815260040160405180910390fd5b836200294c603f8262007d52565b6200296a5760405163056e881160e01b815260040160405180910390fd5b8362002978603f8262007d52565b620029965760405163056e881160e01b815260040160405180910390fd5b6034805460ff191660011790556000849003620029c657604051639811e0c760e01b815260040160405180910390fd5b846001600160a01b0316866001600160a01b031603620029f95760405163f0e3e62960e01b815260040160405180910390fd5b6001600160a01b038087166000908152604160209081526040808320815161018081018352815486168152600182015486169381019390935260028101549094169082015260038301546060820152600483018054339491608084019162002a619062009039565b80601f016020809104026020016040519081016040528092919081815260200182805462002a8f9062009039565b801562002ae05780601f1062002ab45761010080835404028352916020019162002ae0565b820191906000526020600020905b81548152906001019060200180831162002ac257829003601f168201915b505050505081526020016005820160405180608001604052908160008201805462002b0b9062009039565b80601f016020809104026020016040519081016040528092919081815260200182805462002b399062009039565b801562002b8a5780601f1062002b5e5761010080835404028352916020019162002b8a565b820191906000526020600020905b81548152906001019060200180831162002b6c57829003601f168201915b5050505050815260200160018201805462002ba59062009039565b80601f016020809104026020016040519081016040528092919081815260200182805462002bd39062009039565b801562002c245780601f1062002bf85761010080835404028352916020019162002c24565b820191906000526020600020905b81548152906001019060200180831162002c0657829003601f168201915b5050505050815260200160028201805462002c3f9062009039565b80601f016020809104026020016040519081016040528092919081815260200182805462002c6d9062009039565b801562002cbe5780601f1062002c925761010080835404028352916020019162002cbe565b820191906000526020600020905b81548152906001019060200180831162002ca057829003601f168201915b5050505050815260200160038201805462002cd99062009039565b80601f016020809104026020016040519081016040528092919081815260200182805462002d079062009039565b801562002d585780601f1062002d2c5761010080835404028352916020019162002d58565b820191906000526020600020905b81548152906001019060200180831162002d3a57829003601f168201915b505050919092525050508152604080516060808201835260098501546001600160401b038082168452600160401b82048116602080860191909152600160801b9092041683850152840191909152600a84015460ff16151582840152600b84015490830152600c8301546080830152600d8301546001600160a01b031660a0830152805161026081019182905260c09092019190600e84019060139082845b81548152602001906001019080831162002df757505050919092525050506001600160a01b0380891660009081526041602090815260408083208151610180810183528154861681526001820154861693810193909352600281015490941690820152600383015460608201526004830180549495509193909291608084019162002e829062009039565b80601f016020809104026020016040519081016040528092919081815260200182805462002eb09062009039565b801562002f015780601f1062002ed55761010080835404028352916020019162002f01565b820191906000526020600020905b81548152906001019060200180831162002ee357829003601f168201915b505050505081526020016005820160405180608001604052908160008201805462002f2c9062009039565b80601f016020809104026020016040519081016040528092919081815260200182805462002f5a9062009039565b801562002fab5780601f1062002f7f5761010080835404028352916020019162002fab565b820191906000526020600020905b81548152906001019060200180831162002f8d57829003601f168201915b5050505050815260200160018201805462002fc69062009039565b80601f016020809104026020016040519081016040528092919081815260200182805462002ff49062009039565b8015620030455780601f10620030195761010080835404028352916020019162003045565b820191906000526020600020905b8154815290600101906020018083116200302757829003601f168201915b50505050508152602001600282018054620030609062009039565b80601f01602080910402602001604051908101604052809291908181526020018280546200308e9062009039565b8015620030df5780601f10620030b357610100808354040283529160200191620030df565b820191906000526020600020905b815481529060010190602001808311620030c157829003601f168201915b50505050508152602001600382018054620030fa9062009039565b80601f0160208091040260200160405190810160405280929190818152602001828054620031289062009039565b8015620031795780601f106200314d5761010080835404028352916020019162003179565b820191906000526020600020905b8154815290600101906020018083116200315b57829003601f168201915b505050919092525050508152604080516060808201835260098501546001600160401b038082168452600160401b82048116602080860191909152600160801b9092041683850152840191909152600a84015460ff16151582840152600b84015490830152600c8301546080830152600d8301546001600160a01b031660a0830152805161026081019182905260c09092019190600e84019060139082845b815481526020019060010190808311620032185750505050508152505090508060e0015180156200325b5750876001600160a01b0316836001600160a01b031614155b156200327a57604051636468920360e01b815260040160405180910390fd5b60408083015190516352e82ce560e11b81526001600160a01b038581166004830152602482018a9052600092169063a5d059ca906044016020604051808303816000875af1158015620032d1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620032f79190620090e8565b90506037548110156200331d5760405163dc6f0bdd60e01b815260040160405180910390fd5b896001600160a01b0316846001600160a01b0316148015620033b257506036546040808501519051630913db4760e01b81526001600160a01b038d8116600483015290911690630913db4790602401602060405180830381865afa1580156200338a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620033b09190620090e8565b105b15620033d1576040516317b204bf60e11b815260040160405180910390fd5b6000620186a0603a5483620033e7919062009153565b620033f39190620090af565b9050600083604001516001600160a01b03168260405160006040518083038185875af1925050503d806000811462003448576040519150601f19603f3d011682016040523d82523d6000602084013e6200344d565b606091505b505090508062003470576040516312171d8360e31b815260040160405180910390fd5b6200347c82846200913d565b60408086015190516317066a5760e21b81526001600160a01b03898116600483015292955060009290911690635c19a95c90869060240160206040518083038185885af1158015620034d2573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190620034f99190620090e8565b9050866001600160a01b03168c6001600160a01b03168e6001600160a01b03167ffdac6e81913996d95abcc289e90f2d8bd235487ce6fe6f821e7d21002a1915b48e85896040516200355e939291909283526020830191909152604082015260600190565b60405180910390a4604080516002808252606082018352600092602083019080368337019050509050866040015181600081518110620035a257620035a26200916d565b60200260200101906001600160a01b031690816001600160a01b031681525050856040015181600181518110620035dd57620035dd6200916d565b6001600160a01b0390921660209283029190910190910152604051634484077560e01b8152612005906344840775906200361e9084908c9060040162009183565b600060405180830381600087803b1580156200363957600080fd5b505af11580156200364e573d6000803e3d6000fd5b505050508a15620036c0576120056001600160a01b031663e5ed5b1e898f6040518363ffffffff1660e01b81526004016200368b9291906200906f565b600060405180830381600087803b158015620036a657600080fd5b505af1158015620036bb573d6000803e3d6000fd5b505050505b50506034805460ff19169055505050505050505050505050565b60005462010000900460ff16156200370557604051631785c68160e01b815260040160405180910390fd5b3360009081526001602052604090205460ff1615620037375760405163b1d02c3d60e01b815260040160405180910390fd5b6200374162007ef4565b6200374e603f8262007d52565b6200376c5760405163056e881160e01b815260040160405180910390fd5b60006200377862007ef4565b6001600160a01b0381166000908152604160205260409020600c810154919250904290620037aa9061025890620090d2565b1115620037ca57604051631f92cdbd60e11b815260040160405180910390fd5b60098101546001600160401b03600160401b90910481169085161115620038045760405163dc81db8560e01b815260040160405180910390fd5b60098101546000906001600160401b039081169086161015620038425760098201546200383c9086906001600160401b0316620091af565b6200385c565b60098201546200385c906001600160401b031686620091af565b60098301546001600160401b039182169250600160801b900416811115620038975760405163dc81db8560e01b815260040160405180910390fd5b60098201805467ffffffffffffffff19166001600160401b03871690811790915542600c8401556040519081526001600160a01b038416907f78cdd96edf59e09cfd4d26ef6ef6c92d166effe6a40970c54821206d541932cb9060200160405180910390a25050505050565b6060806060600062003916603f6200805b565b90508086101562003f9f5784156200392f578462003931565b805b94506000856200394288846200913d565b116200395a576200395487836200913d565b6200395c565b855b9050806001600160401b03811115620039795762003979620088ea565b604051908082528060200260200182016040528015620039a3578160200160208202803683370190505b509450806001600160401b03811115620039c157620039c1620088ea565b604051908082528060200260200182016040528015620039eb578160200160208202803683370190505b509350806001600160401b0381111562003a095762003a09620088ea565b60405190808252806020026020018201604052801562003a3e57816020015b606081526020019060019003908162003a285790505b50925060005b8181101562003f9c57600062003a6862003a5f838b620090d2565b603f9062008066565b6001600160a01b0380821660009081526041602090815260408083208151610180810183528154861681526001820154861693810193909352600281015490941690820152600383015460608201526004830180549495509193909291608084019162003ad59062009039565b80601f016020809104026020016040519081016040528092919081815260200182805462003b039062009039565b801562003b545780601f1062003b285761010080835404028352916020019162003b54565b820191906000526020600020905b81548152906001019060200180831162003b3657829003601f168201915b505050505081526020016005820160405180608001604052908160008201805462003b7f9062009039565b80601f016020809104026020016040519081016040528092919081815260200182805462003bad9062009039565b801562003bfe5780601f1062003bd25761010080835404028352916020019162003bfe565b820191906000526020600020905b81548152906001019060200180831162003be057829003601f168201915b5050505050815260200160018201805462003c199062009039565b80601f016020809104026020016040519081016040528092919081815260200182805462003c479062009039565b801562003c985780601f1062003c6c5761010080835404028352916020019162003c98565b820191906000526020600020905b81548152906001019060200180831162003c7a57829003601f168201915b5050505050815260200160028201805462003cb39062009039565b80601f016020809104026020016040519081016040528092919081815260200182805462003ce19062009039565b801562003d325780601f1062003d065761010080835404028352916020019162003d32565b820191906000526020600020905b81548152906001019060200180831162003d1457829003601f168201915b5050505050815260200160038201805462003d4d9062009039565b80601f016020809104026020016040519081016040528092919081815260200182805462003d7b9062009039565b801562003dcc5780601f1062003da05761010080835404028352916020019162003dcc565b820191906000526020600020905b81548152906001019060200180831162003dae57829003601f168201915b505050919092525050508152604080516060808201835260098501546001600160401b038082168452600160401b82048116602080860191909152600160801b9092041683850152840191909152600a84015460ff16151582840152600b84015490830152600c8301546080830152600d8301546001600160a01b031660a0830152805161026081019182905260c09092019190600e84019060139082845b81548152602001906001019080831162003e6b575050505050815250509050806000015188848151811062003ea45762003ea46200916d565b60200260200101906001600160a01b031690816001600160a01b0316815250508060e0015162003f3d5780604001516001600160a01b03166315d1f8986040518163ffffffff1660e01b8152600401602060405180830381865afa15801562003f11573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062003f379190620090e8565b62003f40565b60005b87848151811062003f555762003f556200916d565b602002602001018181525050806080015186848151811062003f7b5762003f7b6200916d565b602002602001018190525050508062003f9490620091d9565b905062003a44565b50505b92959194509250565b60005462010000900460ff161562003fd357604051631785c68160e01b815260040160405180910390fd5b3360009081526001602052604090205460ff1615620040055760405163b1d02c3d60e01b815260040160405180910390fd5b3362004013603f8262007d52565b156200403257604051635f28f62b60e01b815260040160405180910390fd5b6001600160a01b038181166000908152604d602052604090205416156200406c57604051631a0a9b9f60e21b815260040160405180910390fd5b6001600160a01b038881166000908152604360205260409020541615620040a657604051631e6f587560e11b815260040160405180910390fd5b60006001600160a01b031660458888604051620040c592919062009089565b908152604051908190036020019020546001600160a01b031614620040fd576040516311fdb94760e01b815260040160405180910390fd5b60006200410b8380620091f5565b6040516020016200411e92919062009089565b60408051601f1981840301815291815281516020928301206000818152604290935291205490915060ff1615620041685760405163c0bf414360e01b815260040160405180910390fd5b60006200417e670de0b6b3a7640000346200913d565b9050603654811015620041a4576040516317b204bf60e11b815260040160405180910390fd5b6001600160a01b038a16620041cc57604051636520611b60e11b815260040160405180910390fd5b611388620041e1604087016020880162008aa4565b6001600160401b0316118062004227575062004204604086016020870162008aa4565b6001600160401b03166200421c602087018762008aa4565b6001600160401b0316115b8062004266575062004240604086016020870162008aa4565b6001600160401b03166200425b606087016040880162008aa4565b6001600160401b0316115b15620042855760405163dc81db8560e01b815260040160405180910390fd5b620042d0620042958580620091f5565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506200807492505050565b620042ee57604051635dba5ad760e01b815260040160405180910390fd5b620042fd838a8a8a8a62008216565b6200431b57604051631647e3cb60e11b815260040160405180910390fd5b600062004369846200432e8780620091f5565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506200834692505050565b905062004378603f8562008447565b506000838152604260209081526040808320805460ff191660019081179091556001600160a01b0380891680865260419094529190932080548f83166001600160a01b031991821617825593810180548516909317909255600282018054918516919093161790915542600382015560048101620043f88b8d836200929d565b5085600582016200440a828262009365565b50879050600982016200441e82826200949e565b505042600c8201556001600160a01b038c81166000908152604360205260409081902080546001600160a01b031916928816929092179091555185906045906200446c908e908e9062009089565b908152602001604051809103902060006101000a8154816001600160a01b0302191690836001600160a01b03160217905550816001600160a01b0316856001600160a01b03168d6001600160a01b03167faecd9fb95e79c75a3a1de93362c6be5fe6ab65770d8614be583884161cd8228d8e8e604051620044ef9291906200956e565b60405180910390a460408051848152602081018590526001600160a01b0387169182917f24d7bda8602b916d64417f0dbfe2e2e88ec9b1157bd9f596dfdb91ba26624e04910160405180910390a360408051670de0b6b3a7640000808252602082015261dead916001600160a01b038816917f24d7bda8602b916d64417f0dbfe2e2e88ec9b1157bd9f596dfdb91ba26624e04910160405180910390a3604051633041949b60e01b815261200590633041949b90620045b590859089906004016200906f565b600060405180830381600087803b158015620045d057600080fd5b505af1158015620045e5573d6000803e3d6000fd5b50505050505050505050505050505050565b60408051606081018252600080825260208201819052918101919091528162004622603f8262007d52565b620046405760405163056e881160e01b815260040160405180910390fd5b50506001600160a01b031660009081526041602090815260409182902082516060810184526009909101546001600160401b038082168352600160401b8204811693830193909352600160801b90049091169181019190915290565b6001600160a01b03808216600090815260416020908152604080832081516101808101835281548616815260018201548616938101939093526002810154909416908201526003830154606082810191909152600484018054919491608084019190620047099062009039565b80601f0160208091040260200160405190810160405280929190818152602001828054620047379062009039565b8015620047885780601f106200475c5761010080835404028352916020019162004788565b820191906000526020600020905b8154815290600101906020018083116200476a57829003601f168201915b5050505050815260200160058201604051806080016040529081600082018054620047b39062009039565b80601f0160208091040260200160405190810160405280929190818152602001828054620047e19062009039565b8015620048325780601f10620048065761010080835404028352916020019162004832565b820191906000526020600020905b8154815290600101906020018083116200481457829003601f168201915b505050505081526020016001820180546200484d9062009039565b80601f01602080910402602001604051908101604052809291908181526020018280546200487b9062009039565b8015620048cc5780601f10620048a057610100808354040283529160200191620048cc565b820191906000526020600020905b815481529060010190602001808311620048ae57829003601f168201915b50505050508152602001600282018054620048e79062009039565b80601f0160208091040260200160405190810160405280929190818152602001828054620049159062009039565b8015620049665780601f106200493a5761010080835404028352916020019162004966565b820191906000526020600020905b8154815290600101906020018083116200494857829003601f168201915b50505050508152602001600382018054620049819062009039565b80601f0160208091040260200160405190810160405280929190818152602001828054620049af9062009039565b801562004a005780601f10620049d45761010080835404028352916020019162004a00565b820191906000526020600020905b815481529060010190602001808311620049e257829003601f168201915b505050919092525050508152604080516060808201835260098501546001600160401b038082168452600160401b82048116602080860191909152600160801b9092041683850152840191909152600a84015460ff16151582840152600b84015490830152600c8301546080830152600d8301546001600160a01b031660a0830152805161026081019182905260c09092019190600e84019060139082845b81548152602001906001019080831162004a9f5750505091909252505050608001519392505050565b336110011462004af057604051630f22c43960e41b8152611001600482015260240162001195565b6001600160a01b038082166000908152604360205260409020541662004b18603f8262007d52565b62004b365760405163056e881160e01b815260040160405180910390fd5b6001600160a01b038181166000908152604160205260408082206002810154603b54925163045bc4d160e41b81526004810193909352909316906345bc4d10906024016020604051808303816000875af115801562004b99573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062004bbf9190620090e8565b90506000603d544262004bd39190620090d2565b905062004be1838262007dff565b836001600160a01b03167f6e9a2ee7aee95665e3a774a212eb11441b217e3e4656ab9563793094689aabb28284600160405162004c219392919062009102565b60405180910390a26002830154604051633041949b60e01b815261200591633041949b9162004c5f916001600160a01b03169088906004016200906f565b600060405180830381600087803b15801562004c7a57600080fd5b505af115801562004c8f573d6000803e3d6000fd5b505050505050505050565b600054610100900460ff161580801562004cbb5750600054600160ff909116105b8062004cd75750303b15801562004cd7575060005460ff166001145b62004d3c5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b606482015260840162001195565b6000805460ff19166001179055801562004d60576000805461ff0019166101001790555b33411462004d815760405163022d8c9560e31b815260040160405180910390fd5b3a1562004da1576040516383f1b1d360e01b815260040160405180910390fd5b611388603555686c6b935b8bbd400000603655670de0b6b3a7640000603755602d603855607860398190556002603a819055678ac7230489e80000603b55680ad78ebc5ac6200000603c55603d9190915560b4603e55604a5562004e197304d63abcd2b9b1baa327f2dda0f873f197ccd1866200845e565b8015620017c0576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a150565b336120001462004e8a57604051630f22c43960e41b8152612000600482015260240162001195565b60405162461bcd60e51b815260206004820152600a60248201526919195c1c9958d85d195960b21b604482015260640162001195565b600054630100000090046001600160a01b0316331462004ef3576040516306fbb1e360e01b815260040160405180910390fd5b60005462010000900460ff161562004f1e57604051631785c68160e01b815260040160405180910390fd5b6000805462ff00001916620100001781556040517f9e87fac88ff661f02d44f95383c817fece4bce600a3dab7a54406878b965e7529190a1565b600062004f67603f8462007d52565b62004f855760405163056e881160e01b815260040160405180910390fd5b6001600160a01b0383811660009081526041602052604090819020600201549051636bbf224960e01b815260048101859052911690636bbf2249906024015b602060405180830381865afa15801562004fe2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620050089190620090e8565b90505b92915050565b60005462010000900460ff16156200503c57604051631785c68160e01b815260040160405180910390fd5b3360009081526001602052604090205460ff16156200506e5760405163b1d02c3d60e01b815260040160405180910390fd5b816200507c603f8262007d52565b6200509a5760405163056e881160e01b815260040160405180910390fd5b6037543490811015620050c05760405163dc6f0bdd60e01b815260040160405180910390fd5b6001600160a01b0380851660009081526041602090815260408083208151610180810183528154861681526001820154861693810193909352600281015490941690820152600383015460608201526004830180543394916080840191620051289062009039565b80601f0160208091040260200160405190810160405280929190818152602001828054620051569062009039565b8015620051a75780601f106200517b57610100808354040283529160200191620051a7565b820191906000526020600020905b8154815290600101906020018083116200518957829003601f168201915b5050505050815260200160058201604051806080016040529081600082018054620051d29062009039565b80601f0160208091040260200160405190810160405280929190818152602001828054620052009062009039565b8015620052515780601f10620052255761010080835404028352916020019162005251565b820191906000526020600020905b8154815290600101906020018083116200523357829003601f168201915b505050505081526020016001820180546200526c9062009039565b80601f01602080910402602001604051908101604052809291908181526020018280546200529a9062009039565b8015620052eb5780601f10620052bf57610100808354040283529160200191620052eb565b820191906000526020600020905b815481529060010190602001808311620052cd57829003601f168201915b50505050508152602001600282018054620053069062009039565b80601f0160208091040260200160405190810160405280929190818152602001828054620053349062009039565b8015620053855780601f10620053595761010080835404028352916020019162005385565b820191906000526020600020905b8154815290600101906020018083116200536757829003601f168201915b50505050508152602001600382018054620053a09062009039565b80601f0160208091040260200160405190810160405280929190818152602001828054620053ce9062009039565b80156200541f5780601f10620053f3576101008083540402835291602001916200541f565b820191906000526020600020905b8154815290600101906020018083116200540157829003601f168201915b505050919092525050508152604080516060808201835260098501546001600160401b038082168452600160401b82048116602080860191909152600160801b9092041683850152840191909152600a84015460ff16151582840152600b84015490830152600c8301546080830152600d8301546001600160a01b031660a0830152805161026081019182905260c09092019190600e84019060139082845b815481526020019060010190808311620054be5750505050508152505090508060e001518015620055015750856001600160a01b0316826001600160a01b031614155b156200552057604051636468920360e01b815260040160405180910390fd5b60408082015190516317066a5760e21b81526001600160a01b0384811660048301526000921690635c19a95c90869060240160206040518083038185885af115801562005571573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190620055989190620090e8565b9050826001600160a01b0316876001600160a01b03167f24d7bda8602b916d64417f0dbfe2e2e88ec9b1157bd9f596dfdb91ba26624e048387604051620055e9929190918252602082015260400190565b60405180910390a36040808301519051633041949b60e01b815261200591633041949b916200561e919087906004016200906f565b600060405180830381600087803b1580156200563957600080fd5b505af11580156200564e573d6000803e3d6000fd5b505050508515620017b9576040516372f6ad8f60e11b81526120059063e5ed5b1e90620056829086908b906004016200906f565b600060405180830381600087803b1580156200569d57600080fd5b505af1158015620056b2573d6000803e3d6000fd5b5050505050505050505050565b620056eb6040518060800160405280606081526020016060815260200160608152602001606081525090565b81620056f9603f8262007d52565b620057175760405163056e881160e01b815260040160405180910390fd5b6001600160a01b038316600090815260416020526040908190208151608081019092526005018054829082906200574e9062009039565b80601f01602080910402602001604051908101604052809291908181526020018280546200577c9062009039565b8015620057cd5780601f10620057a157610100808354040283529160200191620057cd565b820191906000526020600020905b815481529060010190602001808311620057af57829003601f168201915b50505050508152602001600182018054620057e89062009039565b80601f0160208091040260200160405190810160405280929190818152602001828054620058169062009039565b8015620058675780601f106200583b5761010080835404028352916020019162005867565b820191906000526020600020905b8154815290600101906020018083116200584957829003601f168201915b50505050508152602001600282018054620058829062009039565b80601f0160208091040260200160405190810160405280929190818152602001828054620058b09062009039565b8015620059015780601f10620058d55761010080835404028352916020019162005901565b820191906000526020600020905b815481529060010190602001808311620058e357829003601f168201915b505050505081526020016003820180546200591c9062009039565b80601f01602080910402602001604051908101604052809291908181526020018280546200594a9062009039565b80156200599b5780601f106200596f576101008083540402835291602001916200599b565b820191906000526020600020905b8154815290600101906020018083116200597d57829003601f168201915b505050505081525050915050919050565b60005462010000900460ff1615620059d757604051631785c68160e01b815260040160405180910390fd5b3360009081526001602052604090205460ff161562005a095760405163b1d02c3d60e01b815260040160405180910390fd5b62005a158282620084f7565b5050565b336110071462005a4157604051630f22c43960e41b8152611007600482015260240162001195565b62005aae6040518060400160405280601081526020016f1d1c985b9cd9995c91d85cd31a5b5a5d60821b81525085858080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509293925050620086039050565b1562005b69576020811462005ae05783838383604051630a5a604160e01b815260040162001195949392919062009584565b604080516020601f840181900481028201810190925282815260009162005b23918585808385018382808284376000920191909152509293925050620086609050565b90506108fc81108062005b37575061271081115b1562005b605784848484604051630a5a604160e01b815260040162001195949392919062009584565b60355562006873565b62005bda6040518060400160405280601481526020017336b4b729b2b6332232b632b3b0ba34b7b721272160611b81525085858080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509293925050620086039050565b1562005ca4576020811462005c0c5783838383604051630a5a604160e01b815260040162001195949392919062009584565b604080516020601f840181900481028201810190925282815260009162005c4f918585808385018382808284376000920191909152509293925050620086609050565b9050683635c9adc5dea0000081108062005c72575069152d02c7e14af680000081115b1562005c9b5784848484604051630a5a604160e01b815260040162001195949392919062009584565b60365562006873565b62005d17604051806040016040528060168152602001756d696e44656c65676174696f6e424e424368616e676560501b81525085858080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509293925050620086039050565b1562005dde576020811462005d495783838383604051630a5a604160e01b815260040162001195949392919062009584565b604080516020601f840181900481028201810190925282815260009162005d8c918585808385018382808284376000920191909152509293925050620086609050565b905067016345785d8a000081108062005dac5750678ac7230489e8000081115b1562005dd55784848484604051630a5a604160e01b815260040162001195949392919062009584565b60375562006873565b62005e4f604051806040016040528060148152602001736d6178456c656374656456616c696461746f727360601b81525085858080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509293925050620086039050565b1562005f07576020811462005e815783838383604051630a5a604160e01b815260040162001195949392919062009584565b604080516020601f840181900481028201810190925282815260009162005ec4918585808385018382808284376000920191909152509293925050620086609050565b905080158062005ed557506101f481115b1562005efe5784848484604051630a5a604160e01b815260040162001195949392919062009584565b60385562006873565b62005f706040518060400160405280600c81526020016b1d5b989bdb9914195c9a5bd960a21b81525085858080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509293925050620086039050565b156200602d576020811462005fa25783838383604051630a5a604160e01b815260040162001195949392919062009584565b604080516020601f840181900481028201810190925282815260009162005fe5918585808385018382808284376000920191909152509293925050620086609050565b90506203f48081108062005ffb575062278d0081115b15620060245784848484604051630a5a604160e01b815260040162001195949392919062009584565b60395562006873565b6200609b60405180604001604052806011815260200170726564656c65676174654665655261746560781b81525085858080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509293925050620086039050565b15620061485760208114620060cd5783838383604051630a5a604160e01b815260040162001195949392919062009584565b604080516020601f840181900481028201810190925282815260009162006110918585808385018382808284376000920191909152509293925050620086609050565b905060648111156200613f5784848484604051630a5a604160e01b815260040162001195949392919062009584565b603a5562006873565b620061b860405180604001604052806013815260200172191bdddb9d1a5b5954db185cda105b5bdd5b9d606a1b81525085858080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509293925050620086039050565b15620062795760208114620061ea5783838383604051630a5a604160e01b815260040162001195949392919062009584565b604080516020601f84018190048102820181019092528281526000916200622d918585808385018382808284376000920191909152509293925050620086609050565b9050674563918244f40000811080620062475750603c5481115b15620062705784848484604051630a5a604160e01b815260040162001195949392919062009584565b603b5562006873565b620062e76040518060400160405280601181526020017019995b1bdb9e54db185cda105b5bdd5b9d607a1b81525085858080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509293925050620086039050565b15620063aa5760208114620063195783838383604051630a5a604160e01b815260040162001195949392919062009584565b604080516020601f84018190048102820181019092528281526000916200635c918585808385018382808284376000920191909152509293925050620086609050565b905068056bc75e2d63100000811080620063785750603b548111155b15620063a15784848484604051630a5a604160e01b815260040162001195949392919062009584565b603c5562006873565b620064176040518060400160405280601081526020016f646f776e74696d654a61696c54696d6560801b81525085858080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509293925050620086039050565b15620064d45760208114620064495783838383604051630a5a604160e01b815260040162001195949392919062009584565b604080516020601f84018190048102820181019092528281526000916200648c918585808385018382808284376000920191909152509293925050620086609050565b90506202a300811080620064a25750603e548110155b15620064cb5784848484604051630a5a604160e01b815260040162001195949392919062009584565b603d5562006873565b6200653f6040518060400160405280600e81526020016d66656c6f6e794a61696c54696d6560901b81525085858080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509293925050620086039050565b15620065fc5760208114620065715783838383604051630a5a604160e01b815260040162001195949392919062009584565b604080516020601f8401819004810282018101909252828152600091620065b4918585808385018382808284376000920191909152509293925050620086609050565b9050620d2f00811080620065ca5750603d548111155b15620065f35784848484604051630a5a604160e01b815260040162001195949392919062009584565b603e5562006873565b620066766040518060400160405280601c81526020017f6d617846656c6f6e794265747765656e42726561746865426c6f636b0000000081525085858080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509293925050620086039050565b15620067225760208114620066a85783838383604051630a5a604160e01b815260040162001195949392919062009584565b604080516020601f8401819004810282018101909252828152600091620066eb918585808385018382808284376000920191909152509293925050620086609050565b905080600003620067195784848484604051630a5a604160e01b815260040162001195949392919062009584565b604a5562006873565b620067906040518060400160405280601181526020017039ba30b5b2a43ab1283937ba32b1ba37b960791b81525085858080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509293925050620086039050565b15620068505760148114620067c25783838383604051630a5a604160e01b815260040162001195949392919062009584565b60006200680a601484848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509293925050620086609050565b90506001600160a01b0381166200683e5784848484604051630a5a604160e01b815260040162001195949392919062009584565b620068498162008665565b5062006873565b838383836040516325ee20d560e21b815260040162001195949392919062009584565b7ff1ce9b2cbf50eeb05769a29e2543fd350cab46894a7dd9978a12d534bb20e63384848484604051620068aa949392919062009584565b60405180910390a150505050565b60005462010000900460ff1615620068e357604051631785c68160e01b815260040160405180910390fd5b3360009081526001602052604090205460ff1615620069155760405163b1d02c3d60e01b815260040160405180910390fd5b816000816001600160401b03811115620069335762006933620088ea565b6040519080825280602002602001820160405280156200695d578160200160208202803683370190505b5090506000805b8381101562006a5b57620069a68787838181106200698657620069866200916d565b90506020020160208101906200699d91906200877b565b603f9062007d52565b620069c45760405163056e881160e01b815260040160405180910390fd5b60416000888884818110620069dd57620069dd6200916d565b9050602002016020810190620069f491906200877b565b6001600160a01b039081168252602082019290925260400160002060020154845191169250829084908390811062006a305762006a306200916d565b6001600160a01b039092166020928302919091019091015262006a5381620091d9565b905062006964565b50604051634484077560e01b815261200590634484077590620028a5908590889060040162009183565b606080600062006a96603f6200805b565b90508085101562006c5a57831562006aaf578362006ab1565b805b935060008462006ac287846200913d565b1162006ada5762006ad486836200913d565b62006adc565b845b9050806001600160401b0381111562006af95762006af9620088ea565b60405190808252806020026020018201604052801562006b23578160200160208202803683370190505b509350806001600160401b0381111562006b415762006b41620088ea565b60405190808252806020026020018201604052801562006b6b578160200160208202803683370190505b50925060005b8181101562006c575762006b8a62003a5f8289620090d2565b85828151811062006b9f5762006b9f6200916d565b60200260200101906001600160a01b031690816001600160a01b0316815250506041600086838151811062006bd85762006bd86200916d565b60200260200101516001600160a01b03166001600160a01b0316815260200190815260200160002060020160009054906101000a90046001600160a01b031684828151811062006c2c5762006c2c6200916d565b6001600160a01b039092166020928302919091019091015262006c4f81620091d9565b905062006b71565b50505b9250925092565b336110011462006c8957604051630f22c43960e41b8152611001600482015260240162001195565b60005462010000900460ff161562006cb457604051631785c68160e01b815260040160405180910390fd5b6001600160a01b038082166000908152604360205260409020541662006cdc603f8262007d52565b62006cfa5760405163056e881160e01b815260040160405180910390fd5b6001600160a01b03811660009081526041602052604081209062006d2161025842620090af565b604a546000828152604b60205260409020549192501162006d555760405163bd52fcdb60e01b815260040160405180910390fd5b6000818152604b6020526040812080546001929062006d76908490620090d2565b90915550506001600160a01b0384166000908152604460205260409020541580159062006dca57506001600160a01b038416600090815260446020526040902054429062006dc89061025890620090d2565b105b1562006de9576040516330abb81d60e21b815260040160405180910390fd5b60008062006df985600062007d75565b915091508162006e1c57604051631b919bb160e11b815260040160405180910390fd5b6002840154603c5460405163045bc4d160e41b815260048101919091526000916001600160a01b0316906345bc4d10906024016020604051808303816000875af115801562006e6f573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062006e959190620090e8565b905062006ea3858362007dff565b856001600160a01b03167f6e9a2ee7aee95665e3a774a212eb11441b217e3e4656ab9563793094689aabb28383600060405162006ee39392919062009102565b60405180910390a26002850154604051633041949b60e01b815261200591633041949b9162005682916001600160a01b0316908a906004016200906f565b6001600160a01b038082166000908152604160209081526040808320815161018081018352815486168152600182015486169381019390935260028101549094169082015260038301546060820152600483018054929384938493849390929160808401919062006f929062009039565b80601f016020809104026020016040519081016040528092919081815260200182805462006fc09062009039565b8015620070115780601f1062006fe55761010080835404028352916020019162007011565b820191906000526020600020905b81548152906001019060200180831162006ff357829003601f168201915b50505050508152602001600582016040518060800160405290816000820180546200703c9062009039565b80601f01602080910402602001604051908101604052809291908181526020018280546200706a9062009039565b8015620070bb5780601f106200708f57610100808354040283529160200191620070bb565b820191906000526020600020905b8154815290600101906020018083116200709d57829003601f168201915b50505050508152602001600182018054620070d69062009039565b80601f0160208091040260200160405190810160405280929190818152602001828054620071049062009039565b8015620071555780601f10620071295761010080835404028352916020019162007155565b820191906000526020600020905b8154815290600101906020018083116200713757829003601f168201915b50505050508152602001600282018054620071709062009039565b80601f01602080910402602001604051908101604052809291908181526020018280546200719e9062009039565b8015620071ef5780601f10620071c357610100808354040283529160200191620071ef565b820191906000526020600020905b815481529060010190602001808311620071d157829003601f168201915b505050505081526020016003820180546200720a9062009039565b80601f0160208091040260200160405190810160405280929190818152602001828054620072389062009039565b8015620072895780601f106200725d5761010080835404028352916020019162007289565b820191906000526020600020905b8154815290600101906020018083116200726b57829003601f168201915b505050919092525050508152604080516060808201835260098501546001600160401b038082168452600160401b82048116602080860191909152600160801b9092041683850152840191909152600a84015460ff16151582840152600b84015490830152600c8301546080830152600d8301546001600160a01b031660a0830152805161026081019182905260c09092019190600e84019060139082845b815481526020019060010190808311620073285750505091909252505050606081015160e0820151610100909201519097919650945092505050565b60005462010000900460ff16156200738f57604051631785c68160e01b815260040160405180910390fd5b3360009081526001602052604090205460ff1615620073c15760405163b1d02c3d60e01b815260040160405180910390fd5b620073cb62007ef4565b620073d8603f8262007d52565b620073f65760405163056e881160e01b815260040160405180910390fd5b60006200740262007ef4565b6001600160a01b0381166000908152604160205260409020600c810154919250904290620074349061025890620090d2565b11156200745457604051631f92cdbd60e11b815260040160405180910390fd5b600581018054620074659062009039565b80601f0160208091040260200160405190810160405280929190818152602001828054620074939062009039565b8015620074e45780601f10620074b857610100808354040283529160200191620074e4565b820191906000526020600020905b815481529060010190602001808311620074c657829003601f168201915b5050508287525085916005840191508190620075019082620095ba565b5060208201516001820190620075189082620095ba565b50604082015160028201906200752f9082620095ba565b5060608201516003820190620075469082620095ba565b505042600c830155506040516001600160a01b038316907f85d6366b336ade7f106987ec7a8eac1e8799e508aeab045a39d2f63e0dc969d990600090a250505050565b60005462010000900460ff1615620075b457604051631785c68160e01b815260040160405180910390fd5b3360009081526001602052604090205460ff1615620075e65760405163b1d02c3d60e01b815260040160405180910390fd5b82811462007607576040516341abc80160e01b815260040160405180910390fd5b60005b838110156200767857620076658585838181106200762c576200762c6200916d565b90506020020160208101906200764391906200877b565b8484848181106200765857620076586200916d565b90506020020135620084f7565b6200767081620091d9565b90506200760a565b5050505050565b6001600160a01b0380821660009081526041602090815260408083208151610180810183528154861681526001820154861693810193909352600281015490941690820152600383015460608201526004830180549293849390916080840191620076ea9062009039565b80601f0160208091040260200160405190810160405280929190818152602001828054620077189062009039565b8015620077695780601f106200773d5761010080835404028352916020019162007769565b820191906000526020600020905b8154815290600101906020018083116200774b57829003601f168201915b5050505050815260200160058201604051806080016040529081600082018054620077949062009039565b80601f0160208091040260200160405190810160405280929190818152602001828054620077c29062009039565b8015620078135780601f10620077e75761010080835404028352916020019162007813565b820191906000526020600020905b815481529060010190602001808311620077f557829003601f168201915b505050505081526020016001820180546200782e9062009039565b80601f01602080910402602001604051908101604052809291908181526020018280546200785c9062009039565b8015620078ad5780601f106200788157610100808354040283529160200191620078ad565b820191906000526020600020905b8154815290600101906020018083116200788f57829003601f168201915b50505050508152602001600282018054620078c89062009039565b80601f0160208091040260200160405190810160405280929190818152602001828054620078f69062009039565b8015620079475780601f106200791b5761010080835404028352916020019162007947565b820191906000526020600020905b8154815290600101906020018083116200792957829003601f168201915b50505050508152602001600382018054620079629062009039565b80601f0160208091040260200160405190810160405280929190818152602001828054620079909062009039565b8015620079e15780601f10620079b557610100808354040283529160200191620079e1565b820191906000526020600020905b815481529060010190602001808311620079c357829003601f168201915b505050919092525050508152604080516060808201835260098501546001600160401b038082168452600160401b82048116602080860191909152600160801b9092041683850152840191909152600a84015460ff16151582840152600b84015490830152600c8301546080830152600d8301546001600160a01b031660a0830152805161026081019182905260c09092019190600e84019060139082845b81548152602001906001019080831162007a805750505091909252505050604001519392505050565b600062007ab8603f8462007d52565b62007ad65760405163056e881160e01b815260040160405180910390fd5b6001600160a01b038381166000908152604160205260409081902060020154905163aa1966cd60e01b81526004810185905291169063aa1966cd9060240162004fc4565b60005462010000900460ff161562007b4557604051631785c68160e01b815260040160405180910390fd5b3360009081526001602052604090205460ff161562007b775760405163b1d02c3d60e01b815260040160405180910390fd5b62007b8162007ef4565b62007b8e603f8262007d52565b62007bac5760405163056e881160e01b815260040160405180910390fd5b600062007bb862007ef4565b905062007bc9818787878762008216565b62007be757604051631647e3cb60e11b815260040160405180910390fd5b60006001600160a01b03166045878760405162007c0692919062009089565b908152604051908190036020019020546001600160a01b03161462007c3e576040516311fdb94760e01b815260040160405180910390fd5b6001600160a01b0381166000908152604160205260409020600c810154429062007c6c9061025890620090d2565b111562007c8c57604051631f92cdbd60e11b815260040160405180910390fd5b4260468260040160405162007ca2919062009682565b908152604051908190036020019020556004810162007cc38789836200929d565b5042600c820155604051829060459062007ce1908a908a9062009089565b90815260405190819003602001812080546001600160a01b039384166001600160a01b0319909116179055908316907f783156582145bd0ff7924fae6953ba054cf1233eb60739a200ddb10de068ff0d9062007d41908a908a906200956e565b60405180910390a250505050505050565b6001600160a01b0381166000908152600183016020526040812054151562005008565b6000806000848460405160200162007d8f92919062009700565b60408051601f1981840301815291815281516020928301206000818152604c9093529120549091504281111562007dcf5760008093509350505062007df8565b603e5462007dde9042620090d2565b6000928352604c6020526040909220829055506001925090505b9250929050565b6000600162007e0f603f6200805b565b62007e1b91906200913d565b604954108015915062007e675760018301546040516001600160a01b03909116907f2afdc18061ac21cff7d9f11527ab9c8dec6fabd4edf6f894ed634bebd6a20d4590600090a2505050565b82600b015482111562007e7c57600b83018290555b600a83015460ff1662007eef57600a8301805460ff191660019081179091556049805460009062007eaf908490620090d2565b909155505060018301546040516001600160a01b03909116907f4905ac32602da3fb8b4b7b00c285e5fc4c6c2308cc908b4a1e4e9625a29c90a390600090a25b505050565b336000908152604d60205260408120546001600160a01b03161562007f305750336000908152604d60205260409020546001600160a01b031690565b503390565b6001600160a01b0381166000908152604160205260409020600a81015460ff161562007f5f575050565b6036546002820154604051630913db4760e01b81526001600160a01b03858116600483015290911690630913db4790602401602060405180830381865afa15801562007faf573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062007fd59190620090e8565b101562005a155762007ff781603d544262007ff19190620090d2565b62007dff565b80546040516335409f7f60e01b81526001600160a01b039091166004820152611000906335409f7f90602401600060405180830381600087803b1580156200803e57600080fd5b505af115801562008053573d6000803e3d6000fd5b505050505050565b60006200500b825490565b6000620050088383620086d1565b6000808290506003815110806200808c575060098151115b156200809b5750600092915050565b604181600081518110620080b357620080b36200916d565b016020015160f81c1080620080e55750605a81600081518110620080db57620080db6200916d565b016020015160f81c115b15620080f45750600092915050565b60015b81518110156200820c5760308282815181106200811857620081186200916d565b016020015160f81c108062008149575060398282815181106200813f576200813f6200916d565b016020015160f81c115b801562008199575060418282815181106200816857620081686200916d565b016020015160f81c1080620081995750605a8282815181106200818f576200818f6200916d565b016020015160f81c115b8015620081e957506061828281518110620081b857620081b86200916d565b016020015160f81c1080620081e95750607a828281518110620081df57620081df6200916d565b016020015160f81c115b15620081f9575060009392505050565b6200820481620091d9565b9050620080f7565b5060019392505050565b60006030841415806200822a575060608214155b1562008239575060006200833d565b6000868686466040516020016200825494939291906200974a565b60408051808303601f1901815282825280516020918201208184528383019092529092506000919060208201818036833701905050905081602082015260008186868a8a604051602001620082ae95949392919062009777565b60408051808303601f190181526001808452838301909252925060009190602082018180368337019050509050815160016020830182602086016066600019fa620082f857600080fd5b506000816000815181106200831157620083116200916d565b016020015160f81c90506001811462008333576000955050505050506200833d565b6001955050505050505b95945050505050565b60008061200361dead6040516200835d9062008750565b6001600160a01b03928316815291166020820152606060408201819052600090820152608001604051809103906000f080158015620083a0573d6000803e3d6000fd5b509050806001600160a01b031663f399e22e3486866040518463ffffffff1660e01b8152600401620083d4929190620097af565b6000604051808303818588803b158015620083ee57600080fd5b505af115801562008403573d6000803e3d6000fd5b50506040516001600160a01b038086169450881692507fd481492e4e93bb36b4c12a5af93f03be3bf04b454dfbc35dd2663fa26f44d5b09150600090a39392505050565b600062005008836001600160a01b038416620086fe565b600054610100900460ff16620084cb5760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b606482015260840162001195565b600080546001600160a01b039092166301000000026301000000600160b81b0319909216919091179055565b8162008505603f8262007d52565b620085235760405163056e881160e01b815260040160405180910390fd5b6001600160a01b03838116600090815260416020526040808220600201549051635569f64b60e11b8152336004820152602481018690529192169063aad3ec96906044016020604051808303816000875af115801562008587573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620085ad9190620090e8565b9050336001600160a01b0316846001600160a01b03167ff7a40077ff7a04c7e61f6f26fb13774259ddf1b6bce9ecf26a8276cdd399268383604051620085f591815260200190565b60405180910390a350505050565b600081604051602001620086189190620097d5565b6040516020818303038152906040528051906020012083604051602001620086419190620097d5565b6040516020818303038152906040528051906020012014905092915050565b015190565b600080546040516001600160a01b0380851693630100000090930416917f44fc1b38a4abaa91ebd1b628a5b259a698f86238c8217d68f516e87769c60c0b91a3600080546001600160a01b039092166301000000026301000000600160b81b0319909216919091179055565b6000826000018281548110620086eb57620086eb6200916d565b9060005260206000200154905092915050565b600081815260018301602052604081205462008747575081546001818101845560008481526020808220909301849055845484825282860190935260409020919091556200500b565b5060006200500b565b610e9680620097f483390190565b80356001600160a01b03811681146200877657600080fd5b919050565b6000602082840312156200878e57600080fd5b62005008826200875e565b60008083601f840112620087ac57600080fd5b5081356001600160401b03811115620087c457600080fd5b60208301915083602082850101111562007df857600080fd5b60008060208385031215620087f157600080fd5b82356001600160401b038111156200880857600080fd5b620088168582860162008799565b90969095509350505050565b6000806000604084860312156200883857600080fd5b833560ff811681146200884a57600080fd5b925060208401356001600160401b038111156200886657600080fd5b620088748682870162008799565b9497909650939450505050565b60005b838110156200889e57818101518382015260200162008884565b50506000910152565b60008151808452620088c181602086016020860162008881565b601f01601f19169290920160200192915050565b602081526000620050086020830184620088a7565b634e487b7160e01b600052604160045260246000fd5b604051608081016001600160401b0381118282101715620089255762008925620088ea565b60405290565b60006001600160401b0380841115620089485762008948620088ea565b604051601f8501601f19908116603f01168101908282118183101715620089735762008973620088ea565b816040528093508581528686860111156200898d57600080fd5b858560208301376000602087830101525050509392505050565b600060208284031215620089ba57600080fd5b81356001600160401b03811115620089d157600080fd5b8201601f81018413620089e357600080fd5b620089f4848235602084016200892b565b949350505050565b6000806040838503121562008a1057600080fd5b62008a1b836200875e565b946020939093013593505050565b803580151581146200877657600080fd5b6000806000806080858703121562008a5157600080fd5b62008a5c856200875e565b935062008a6c602086016200875e565b92506040850135915062008a836060860162008a29565b905092959194509250565b6001600160401b0381168114620017c057600080fd5b60006020828403121562008ab757600080fd5b813562008ac48162008a8e565b9392505050565b6000806040838503121562008adf57600080fd5b50508035926020909101359150565b600081518084526020808501945080840160005b8381101562008b295781516001600160a01b03168752958201959082019060010162008b02565b509495945050505050565b60808152600062008b49608083018762008aee565b82810360208481019190915286518083528782019282019060005b8181101562008b825784518352938301939183019160010162008b64565b5050848103604086015286518082528282019350600581901b8201830183890160005b8381101562008bd757601f1985840301875262008bc4838351620088a7565b9686019692509085019060010162008ba5565b5050809550505050505082606083015295945050505050565b600080600080600080600087890360e081121562008c0d57600080fd5b62008c18896200875e565b975060208901356001600160401b038082111562008c3557600080fd5b62008c438c838d0162008799565b909950975060408b013591508082111562008c5d57600080fd5b62008c6b8c838d0162008799565b90975095508591506060605f198401121562008c8657600080fd5b60608b01945060c08b013592508083111562008ca157600080fd5b505088016080818b03121562008cb657600080fd5b8091505092959891949750929550565b6000806040838503121562008cda57600080fd5b62008ce5836200875e565b915062008cf56020840162008a29565b90509250929050565b60208152600082516080602084015262008d1c60a0840182620088a7565b90506020840151601f198085840301604086015262008d3c8383620088a7565b9250604086015191508085840301606086015262008d5b8383620088a7565b92506060860151915080858403016080860152506200833d8282620088a7565b6000806000806040858703121562008d9257600080fd5b84356001600160401b038082111562008daa57600080fd5b62008db88883890162008799565b9096509450602087013591508082111562008dd257600080fd5b5062008de18782880162008799565b95989497509550505050565b60008083601f84011262008e0057600080fd5b5081356001600160401b0381111562008e1857600080fd5b6020830191508360208260051b850101111562007df857600080fd5b60008060006040848603121562008e4a57600080fd5b83356001600160401b0381111562008e6157600080fd5b62008e6f8682870162008ded565b909450925062008e849050602085016200875e565b90509250925092565b60608152600062008ea2606083018662008aee565b828103602084015262008eb6818662008aee565b915050826040830152949350505050565b600082601f83011262008ed957600080fd5b62005008838335602085016200892b565b60006020828403121562008efd57600080fd5b81356001600160401b038082111562008f1557600080fd5b908301906080828603121562008f2a57600080fd5b62008f3462008900565b82358281111562008f4457600080fd5b62008f528782860162008ec7565b82525060208301358281111562008f6857600080fd5b62008f768782860162008ec7565b60208301525060408301358281111562008f8f57600080fd5b62008f9d8782860162008ec7565b60408301525060608301358281111562008fb657600080fd5b62008fc48782860162008ec7565b60608301525095945050505050565b6000806000806040858703121562008fea57600080fd5b84356001600160401b03808211156200900257600080fd5b620090108883890162008ded565b909650945060208701359150808211156200902a57600080fd5b5062008de18782880162008ded565b600181811c908216806200904e57607f821691505b60208210810362001bd457634e487b7160e01b600052602260045260246000fd5b6001600160a01b0392831681529116602082015260400190565b8183823760009101908152919050565b634e487b7160e01b600052601160045260246000fd5b600082620090cd57634e487b7160e01b600052601260045260246000fd5b500490565b808201808211156200500b576200500b62009099565b600060208284031215620090fb57600080fd5b5051919050565b8381526020810183905260608101600383106200912f57634e487b7160e01b600052602160045260246000fd5b826040830152949350505050565b818103818111156200500b576200500b62009099565b80820281158282048414176200500b576200500b62009099565b634e487b7160e01b600052603260045260246000fd5b60408152600062009198604083018562008aee565b905060018060a01b03831660208301529392505050565b6001600160401b03828116828216039080821115620091d257620091d262009099565b5092915050565b600060018201620091ee57620091ee62009099565b5060010190565b6000808335601e198436030181126200920d57600080fd5b8301803591506001600160401b038211156200922857600080fd5b60200191503681900382131562007df857600080fd5b601f82111562007eef57600081815260208120601f850160051c81016020861015620092675750805b601f850160051c820191505b81811015620080535782815560010162009273565b600019600383901b1c191660019190911b1790565b6001600160401b03831115620092b757620092b7620088ea565b620092cf83620092c8835462009039565b836200923e565b6000601f841160018114620093025760008515620092ed5750838201355b620092f9868262009288565b84555062007678565b600083815260209020601f19861690835b8281101562009335578685013582556020948501946001909201910162009313565b5086821015620093535760001960f88860031b161c19848701351681555b505060018560011b0183555050505050565b620093718283620091f5565b6001600160401b038111156200938b576200938b620088ea565b620093a3816200939c855462009039565b856200923e565b6000601f821160018114620093d65760008315620093c15750838201355b620093cd848262009288565b86555062009433565b600085815260209020601f19841690835b82811015620094095786850135825560209485019460019092019101620093e7565b5084821015620094275760001960f88660031b161c19848701351681555b505060018360011b0185555b50505050620094466020830183620091f5565b620094568183600186016200929d565b5050620094676040830183620091f5565b620094778183600286016200929d565b5050620094886060830183620091f5565b620094988183600386016200929d565b50505050565b8135620094ab8162008a8e565b6001600160401b03811690508154816001600160401b031982161783556020840135620094d88162008a8e565b6fffffffffffffffff0000000000000000604091821b166fffffffffffffffffffffffffffffffff19831684178117855590850135620095188162008a8e565b6001600160c01b0319929092169092179190911760809190911b67ffffffffffffffff60801b1617905550565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b602081526000620089f460208301848662009545565b6040815260006200959a60408301868862009545565b8281036020840152620095af81858762009545565b979650505050505050565b81516001600160401b03811115620095d657620095d6620088ea565b620095ee81620095e7845462009039565b846200923e565b602080601f8311600181146200962257600084156200960d5750858301515b62009619858262009288565b86555062008053565b600085815260208120601f198616915b82811015620096535788860151825594840194600190910190840162009632565b5085821015620096725787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b6000808354620096928162009039565b60018281168015620096ad5760018114620096c357620096f4565b60ff1984168752821515830287019450620096f4565b8760005260208060002060005b85811015620096eb5781548a820152908401908201620096d0565b50505082870194505b50929695505050505050565b6bffffffffffffffffffffffff198360601b1681526000600383106200973657634e487b7160e01b600052602160045260246000fd5b5060f89190911b6014820152601501919050565b6bffffffffffffffffffffffff198560601b16815282846014830137601492019182015260340192915050565b600086516200978b818460208b0162008881565b82018587823760009086019081528385823760009301928352509095945050505050565b6001600160a01b0383168152604060208201819052600090620089f490830184620088a7565b60008251620097e981846020870162008881565b919091019291505056fe608060405260405162000e9638038062000e96833981016040819052620000269162000497565b828162000036828260006200004d565b50620000449050826200008a565b505050620005ca565b6200005883620000e5565b600082511180620000665750805b1562000085576200008383836200012760201b620001691760201c565b505b505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f620000b562000156565b604080516001600160a01b03928316815291841660208301520160405180910390a1620000e2816200018f565b50565b620000f08162000244565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b60606200014f838360405180606001604052806027815260200162000e6f60279139620002f8565b9392505050565b60006200018060008051602062000e4f83398151915260001b6200037760201b620001951760201c565b546001600160a01b0316919050565b6001600160a01b038116620001fa5760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b60648201526084015b60405180910390fd5b806200022360008051602062000e4f83398151915260001b6200037760201b620001951760201c565b80546001600160a01b0319166001600160a01b039290921691909117905550565b6200025a816200037a60201b620001981760201c565b620002be5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b6064820152608401620001f1565b80620002237f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc60001b6200037760201b620001951760201c565b6060600080856001600160a01b03168560405162000317919062000577565b600060405180830381855af49150503d806000811462000354576040519150601f19603f3d011682016040523d82523d6000602084013e62000359565b606091505b5090925090506200036d8683838762000389565b9695505050505050565b90565b6001600160a01b03163b151590565b60608315620003fd578251600003620003f5576001600160a01b0385163b620003f55760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401620001f1565b508162000409565b62000409838362000411565b949350505050565b815115620004225781518083602001fd5b8060405162461bcd60e51b8152600401620001f1919062000595565b80516001600160a01b03811681146200045657600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b60005b838110156200048e57818101518382015260200162000474565b50506000910152565b600080600060608486031215620004ad57600080fd5b620004b8846200043e565b9250620004c8602085016200043e565b60408501519092506001600160401b0380821115620004e657600080fd5b818601915086601f830112620004fb57600080fd5b8151818111156200051057620005106200045b565b604051601f8201601f19908116603f011681019083821181831017156200053b576200053b6200045b565b816040528281528960208487010111156200055557600080fd5b6200056883602083016020880162000471565b80955050505050509250925092565b600082516200058b81846020870162000471565b9190910192915050565b6020815260008251806020840152620005b681604085016020870162000471565b601f01601f19169190910160400192915050565b61087580620005da6000396000f3fe60806040523661001357610011610017565b005b6100115b61001f6101a7565b6001600160a01b0316330361015f5760606001600160e01b0319600035166364d3180d60e11b810161005a576100536101da565b9150610157565b63587086bd60e11b6001600160e01b031982160161007a57610053610231565b63070d7c6960e41b6001600160e01b031982160161009a57610053610277565b621eb96f60e61b6001600160e01b03198216016100b9576100536102a8565b63a39f25e560e01b6001600160e01b03198216016100d9576100536102e8565b60405162461bcd60e51b815260206004820152604260248201527f5472616e73706172656e745570677261646561626c6550726f78793a2061646d60448201527f696e2063616e6e6f742066616c6c6261636b20746f2070726f78792074617267606482015261195d60f21b608482015260a4015b60405180910390fd5b815160208301f35b6101676102fc565b565b606061018e83836040518060600160405280602781526020016108426027913961030c565b9392505050565b90565b6001600160a01b03163b151590565b60007fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b546001600160a01b0316919050565b60606101e4610384565b60006101f33660048184610695565b81019061020091906106db565b905061021d8160405180602001604052806000815250600061038f565b505060408051602081019091526000815290565b60606000806102433660048184610695565b810190610250919061070c565b915091506102608282600161038f565b604051806020016040528060008152509250505090565b6060610281610384565b60006102903660048184610695565b81019061029d91906106db565b905061021d816103bb565b60606102b2610384565b60006102bc6101a7565b604080516001600160a01b03831660208201529192500160405160208183030381529060405291505090565b60606102f2610384565b60006102bc610412565b610167610307610412565b610421565b6060600080856001600160a01b03168560405161032991906107f2565b600060405180830381855af49150503d8060008114610364576040519150601f19603f3d011682016040523d82523d6000602084013e610369565b606091505b509150915061037a86838387610445565b9695505050505050565b341561016757600080fd5b610398836104c6565b6000825111806103a55750805b156103b6576103b48383610169565b505b505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f6103e46101a7565b604080516001600160a01b03928316815291841660208301520160405180910390a161040f81610506565b50565b600061041c6105af565b905090565b3660008037600080366000845af43d6000803e808015610440573d6000f35b3d6000fd5b606083156104b45782516000036104ad576001600160a01b0385163b6104ad5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015260640161014e565b50816104be565b6104be83836105d7565b949350505050565b6104cf81610601565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b6001600160a01b03811661056b5760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b606482015260840161014e565b807fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b80546001600160a01b0319166001600160a01b039290921691909117905550565b60007f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc6101cb565b8151156105e75781518083602001fd5b8060405162461bcd60e51b815260040161014e919061080e565b6001600160a01b0381163b61066e5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b606482015260840161014e565b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc61058e565b600080858511156106a557600080fd5b838611156106b257600080fd5b5050820193919092039150565b80356001600160a01b03811681146106d657600080fd5b919050565b6000602082840312156106ed57600080fd5b61018e826106bf565b634e487b7160e01b600052604160045260246000fd5b6000806040838503121561071f57600080fd5b610728836106bf565b9150602083013567ffffffffffffffff8082111561074557600080fd5b818501915085601f83011261075957600080fd5b81358181111561076b5761076b6106f6565b604051601f8201601f19908116603f01168101908382118183101715610793576107936106f6565b816040528281528860208487010111156107ac57600080fd5b8260208601602083013760006020848301015280955050505050509250929050565b60005b838110156107e95781810151838201526020016107d1565b50506000910152565b600082516108048184602087016107ce565b9190910192915050565b602081526000825180602084015261082d8160408501602087016107ce565b601f01601f1916919091016040019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a164736f6c6343000811000ab53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a164736f6c6343000811000a \ No newline at end of file +608060405260043610620003ff5760003560e01c806386d54506116200020f578063cbb04d9d1162000123578063e8f67c3b11620000ad578063f80a34021162000078578063f80a34021462000ca2578063fb50b31f1462000cc7578063fc0c5ff11462000cec578063ff69ab611462000d0457600080fd5b8063e8f67c3b1462000c1e578063e992aaf51462000c36578063efdbf0e11462000c4e578063f1f74d841462000c8a57600080fd5b8063d8ca511f11620000ee578063d8ca511f1462000ba2578063daacdb661462000bba578063dbda7fb31462000bd2578063dd42a1dd1462000bf757600080fd5b8063cbb04d9d1462000afe578063d115a2061462000b3f578063d6ca429d1462000b58578063d7c2dfc81462000b7d57600080fd5b8063b187bd2611620001a5578063bfff04751162000170578063bfff04751462000a9c578063c38fbec81462000ac1578063c473318f1462000ae6578063c8509d8114620008ba57600080fd5b8063b187bd261462000a09578063baa7199e1462000a29578063bdceadf31462000a4e578063bff02e201462000a6657600080fd5b8063982ef0a711620001e6578063982ef0a71462000974578063a43569b3146200098b578063aad3ec9614620009bf578063ac43175114620009e457600080fd5b806386d5450614620008f75780638a4d3fa814620009315780638cd22b22146200094f57600080fd5b806349f41a421162000313578063663706d3116200029d57806376e7d6d6116200026857806376e7d6d6146200088a5780638129fc1c14620008a2578063831d65d114620008ba5780638456cb5914620008df57600080fd5b8063663706d314620007b75780636ec01b2714620007e85780636f8e2fa4146200084057806375cc7d89146200086557600080fd5b80635949187111620002de57806359491871146200071f5780635e7cc1c9146200074457806363a036b5146200076957806364028fbd14620007a057600080fd5b806349f41a4214620006985780634a49ac4c14620006bd5780634d99dd1614620006e25780634e6fd6c4146200070757600080fd5b80631fa8882b1162000395578063417c73a71162000360578063417c73a714620005e4578063449ecfe6146200060957806345211bfd146200062e5780634838d165146200065357600080fd5b80631fa8882b14620005555780632b727c86146200056d5780632e8e8c7114620005925780633840998814620005cc57600080fd5b8063092193ab11620003d6578063092193ab14620004a05780630e9fbf5114620004b75780631182b87514620004dc57806317b4f353146200051057600080fd5b8063046f7da2146200041f578063059ddd2214620004375780630661806e146200047957600080fd5b366200041a5760345460ff166001146200041857600080fd5b005b600080fd5b3480156200042c57600080fd5b506200041862000d1c565b3480156200044457600080fd5b506200045c620004563660046200882d565b62000dae565b6040516001600160a01b0390911681526020015b60405180910390f35b3480156200048657600080fd5b506200049160365481565b60405190815260200162000470565b62000418620004b13660046200882d565b620011d6565b348015620004c457600080fd5b5062000418620004d63660046200888f565b62001827565b348015620004e957600080fd5b5062000501620004fb366004620088d4565b62001b51565b60405162000470919062008987565b3480156200051d57600080fd5b506200045c6200052f36600462008a59565b80516020818301810180516045825292820191909301209152546001600160a01b031681565b3480156200056257600080fd5b506200049161025881565b3480156200057a57600080fd5b506200045c6200058c3660046200882d565b62001be9565b3480156200059f57600080fd5b506200045c620005b13660046200882d565b604d602052600090815260409020546001600160a01b031681565b348015620005d957600080fd5b506200049160375481565b348015620005f157600080fd5b5062000418620006033660046200882d565b62001c3e565b3480156200061657600080fd5b5062000418620006283660046200882d565b62001cc0565b3480156200063b57600080fd5b50620004186200064d3660046200882d565b62001ea5565b3480156200066057600080fd5b5062000687620006723660046200882d565b60016020526000908152604090205460ff1681565b604051901515815260200162000470565b348015620006a557600080fd5b5062000418620006b73660046200882d565b6200207d565b348015620006ca57600080fd5b5062000418620006dc3660046200882d565b62002299565b348015620006ef57600080fd5b50620004186200070136600462008aae565b62002315565b3480156200071457600080fd5b506200045c61dead81565b3480156200072c57600080fd5b50620004186200073e36600462008aec565b62002945565b3480156200075157600080fd5b50620004186200076336600462008b56565b6200373e565b3480156200077657600080fd5b506200078e6200078836600462008b7d565b62003967565b60405162000470949392919062008be6565b62000418620007b136600462008ca2565b6200400c565b348015620007c457600080fd5b5062000491620007d63660046200882d565b60446020526000908152604090205481565b348015620007f557600080fd5b506200080d620008073660046200882d565b6200465b565b6040805182516001600160401b039081168252602080850151821690830152928201519092169082015260600162000470565b3480156200084d57600080fd5b50620005016200085f3660046200882d565b62004700565b3480156200087257600080fd5b5062000418620008843660046200882d565b62004b2c565b3480156200089757600080fd5b5062000491603d5481565b348015620008af57600080fd5b506200041862004cfe565b348015620008c757600080fd5b5062000418620008d9366004620088d4565b62004ec6565b348015620008ec57600080fd5b506200041862004f24565b3480156200090457600080fd5b506200045c620009163660046200882d565b6043602052600090815260409020546001600160a01b031681565b3480156200093e57600080fd5b5062000491670de0b6b3a764000081565b3480156200095c57600080fd5b50620004916200096e36600462008aae565b62004fbc565b620004186200098536600462008d78565b62005075565b3480156200099857600080fd5b50620009b0620009aa3660046200882d565b62005723565b60405162000470919062008db0565b348015620009cc57600080fd5b5062000418620009de36600462008aae565b62005a10565b348015620009f157600080fd5b506200041862000a0336600462008e2d565b62005a7d565b34801562000a1657600080fd5b5060005462010000900460ff1662000687565b34801562000a3657600080fd5b506200041862000a4836600462008ee6565b6200691c565b34801562000a5b57600080fd5b5062000491603c5481565b34801562000a7357600080fd5b5062000a8b62000a8536600462008b7d565b62006ae9565b604051620004709392919062008f3f565b34801562000aa957600080fd5b506200049162000abb3660046200882d565b62006cc5565b34801562000ace57600080fd5b506200041862000ae03660046200882d565b62006d13565b34801562000af357600080fd5b506200049160385481565b34801562000b0b57600080fd5b5062000b2362000b1d3660046200882d565b62006fd3565b6040805193845291151560208401529082015260600162000470565b34801562000b4c57600080fd5b5062000491620186a081565b34801562000b6557600080fd5b506200041862000b7736600462008f9c565b62007416565b34801562000b8a57600080fd5b506200041862000b9c36600462009085565b6200763b565b34801562000baf57600080fd5b5062000491603b5481565b34801562000bc757600080fd5b506200049160495481565b34801562000bdf57600080fd5b506200045c62000bf13660046200882d565b62007731565b34801562000c0457600080fd5b50600054630100000090046001600160a01b03166200045c565b34801562000c2b57600080fd5b506200049160355481565b34801562000c4357600080fd5b5062000491603a5481565b34801562000c5b57600080fd5b506200049162000c6d36600462008a59565b805160208183018101805160468252928201919093012091525481565b34801562000c9757600080fd5b5062000491603e5481565b34801562000caf57600080fd5b506200049162000cc136600462008aae565b62007b5b565b34801562000cd457600080fd5b506200041862000ce636600462008e2d565b62007bcc565b34801562000cf957600080fd5b506200049160395481565b34801562000d1157600080fd5b5062000491604a5481565b600054630100000090046001600160a01b0316331462000d4f576040516306fbb1e360e01b815260040160405180910390fd5b60005462010000900460ff1662000d7957604051636cd6020160e01b815260040160405180910390fd5b6000805462ff0000191681556040517f62451d457bc659158be6e6247f56ec1df424a5c7597f71c20c2bc44e0965c8f99190a1565b6001600160a01b038082166000908152604160209081526040808320815161018081018352815486168152600182015486169381019390935260028101549094169082015260038301546060820152600483018054929384939091608084019162000e1990620090eb565b80601f016020809104026020016040519081016040528092919081815260200182805462000e4790620090eb565b801562000e985780601f1062000e6c5761010080835404028352916020019162000e98565b820191906000526020600020905b81548152906001019060200180831162000e7a57829003601f168201915b505050505081526020016005820160405180608001604052908160008201805462000ec390620090eb565b80601f016020809104026020016040519081016040528092919081815260200182805462000ef190620090eb565b801562000f425780601f1062000f165761010080835404028352916020019162000f42565b820191906000526020600020905b81548152906001019060200180831162000f2457829003601f168201915b5050505050815260200160018201805462000f5d90620090eb565b80601f016020809104026020016040519081016040528092919081815260200182805462000f8b90620090eb565b801562000fdc5780601f1062000fb05761010080835404028352916020019162000fdc565b820191906000526020600020905b81548152906001019060200180831162000fbe57829003601f168201915b5050505050815260200160028201805462000ff790620090eb565b80601f01602080910402602001604051908101604052809291908181526020018280546200102590620090eb565b8015620010765780601f106200104a5761010080835404028352916020019162001076565b820191906000526020600020905b8154815290600101906020018083116200105857829003601f168201915b505050505081526020016003820180546200109190620090eb565b80601f0160208091040260200160405190810160405280929190818152602001828054620010bf90620090eb565b8015620011105780601f10620010e45761010080835404028352916020019162001110565b820191906000526020600020905b815481529060010190602001808311620010f257829003601f168201915b505050919092525050508152604080516060808201835260098501546001600160401b038082168452600160401b82048116602080860191909152600160801b9092041683850152840191909152600a84015460ff16151582840152600b84015490830152600c8301546080830152600d8301546001600160a01b031660a0830152805161026081019182905260c09092019190600e84019060139082845b815481526020019060010190808311620011af575050509190925250509051949350505050565b33611000146200120257604051630f22c43960e41b815261100060048201526024015b60405180910390fd5b6001600160a01b038082166000908152604360209081526040808320548416808452604183528184208251610180810184528154871681526001820154871694810194909452600281015490951691830191909152600384015460608301526004840180549194916080840191906200127b90620090eb565b80601f0160208091040260200160405190810160405280929190818152602001828054620012a990620090eb565b8015620012fa5780601f10620012ce57610100808354040283529160200191620012fa565b820191906000526020600020905b815481529060010190602001808311620012dc57829003601f168201915b50505050508152602001600582016040518060800160405290816000820180546200132590620090eb565b80601f01602080910402602001604051908101604052809291908181526020018280546200135390620090eb565b8015620013a45780601f106200137857610100808354040283529160200191620013a4565b820191906000526020600020905b8154815290600101906020018083116200138657829003601f168201915b50505050508152602001600182018054620013bf90620090eb565b80601f0160208091040260200160405190810160405280929190818152602001828054620013ed90620090eb565b80156200143e5780601f1062001412576101008083540402835291602001916200143e565b820191906000526020600020905b8154815290600101906020018083116200142057829003601f168201915b505050505081526020016002820180546200145990620090eb565b80601f01602080910402602001604051908101604052809291908181526020018280546200148790620090eb565b8015620014d85780601f10620014ac57610100808354040283529160200191620014d8565b820191906000526020600020905b815481529060010190602001808311620014ba57829003601f168201915b50505050508152602001600382018054620014f390620090eb565b80601f01602080910402602001604051908101604052809291908181526020018280546200152190620090eb565b8015620015725780601f10620015465761010080835404028352916020019162001572565b820191906000526020600020905b8154815290600101906020018083116200155457829003601f168201915b505050919092525050508152604080516060808201835260098501546001600160401b038082168452600160401b82048116602080860191909152600160801b9092041683850152840191909152600a84015460ff16151582840152600b84015490830152600c8301546080830152600d8301546001600160a01b031660a0830152805161026081019182905260c09092019190600e84019060139082845b81548152602001906001019080831162001611575050509190925250505060408101519091506001600160a01b031615806200164e57508060e001515b156200170b57604051611002903490600081818185875af1925050503d806000811462001698576040519150601f19603f3d011682016040523d82523d6000602084013e6200169d565b606091505b505050816001600160a01b03167ffc8bff675087dd2da069cc3fb517b9ed001e19750c0865241a5542dba1ba170d604051620016fe9060208082526011908201527024a72b20a624a22fab20a624a220aa27a960791b604082015260600190565b60405180910390a2505050565b60408181015160c0830151519151632f303ebb60e11b81526001600160401b0390921660048301526001600160a01b031690635e607d769034906024016000604051808303818588803b1580156200176257600080fd5b505af115801562001777573d6000803e3d6000fd5b5050505050816001600160a01b03167fe34918ff1c7084970068b53fd71ad6d8b04e9f15d3886cbf006443e6cdc52ea634604051620017b891815260200190565b60405180910390a26040808201519051633041949b60e01b815261200591633041949b91620017ed9190869060040162009121565b600060405180830381600087803b1580156200180857600080fd5b505af11580156200181d573d6000803e3d6000fd5b5050505050505b50565b33611001146200184f57604051630f22c43960e41b81526110016004820152602401620011f9565b60005462010000900460ff16156200187a57604051631785c68160e01b815260040160405180910390fd5b600060458383604051620018909291906200913b565b908152604051908190036020019020546001600160a01b03169050620018b8603f8262007e04565b620018d65760405163056e881160e01b815260040160405180910390fd5b6001600160a01b038116600090815260416020526040812090620018fd6102584262009161565b604a546000828152604b602052604090205491925011620019315760405163bd52fcdb60e01b815260040160405180910390fd5b6000818152604b602052604081208054600192906200195290849062009184565b90915550506040516046906200196c90879087906200913b565b908152602001604051809103902054600014158015620019bc575042610258604687876040516200199f9291906200913b565b908152602001604051809103902054620019ba919062009184565b105b15620019db57604051631898eb6b60e01b815260040160405180910390fd5b600080620019eb85600262007e27565b915091508162001a0e57604051631b919bb160e11b815260040160405180910390fd5b6002840154603c5460405163045bc4d160e41b815260048101919091526000916001600160a01b0316906345bc4d10906024016020604051808303816000875af115801562001a61573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001a8791906200919a565b905062001a95858362007eb1565b856001600160a01b03167f6e9a2ee7aee95665e3a774a212eb11441b217e3e4656ab9563793094689aabb28383600260405162001ad593929190620091b4565b60405180910390a26002850154604051633041949b60e01b815261200591633041949b9162001b13916001600160a01b0316908a9060040162009121565b600060405180830381600087803b15801562001b2e57600080fd5b505af115801562001b43573d6000803e3d6000fd5b505050505050505050505050565b6060336120001462001b7b57604051630f22c43960e41b81526120006004820152602401620011f9565b60005462010000900460ff161562001ba657604051631785c68160e01b815260040160405180910390fd5b6034805460ff1916600117905560405162461bcd60e51b815260206004820152600a60248201526919195c1c9958d85d195960b21b6044820152606401620011f9565b60008162001bf9603f8262007e04565b62001c175760405163056e881160e01b815260040160405180910390fd5b6001600160a01b038084166000908152604160205260409020600d01541691505b50919050565b600054630100000090046001600160a01b0316331462001c71576040516306fbb1e360e01b815260040160405180910390fd5b6001600160a01b0381166000818152600160208190526040808320805460ff1916909217909155517f7fd26be6fc92aff63f1f4409b2b2ddeb272a888031d7f55ec830485ec61941869190a250565b60005462010000900460ff161562001ceb57604051631785c68160e01b815260040160405180910390fd5b3360009081526001602052604090205460ff161562001d1d5760405163b1d02c3d60e01b815260040160405180910390fd5b8062001d2b603f8262007e04565b62001d495760405163056e881160e01b815260040160405180910390fd5b6001600160a01b0382166000908152604160205260409020600a81015460ff1662001d8757604051634b6b857d60e01b815260040160405180910390fd5b6036546002820154604051630913db4760e01b81526001600160a01b03868116600483015290911690630913db4790602401602060405180830381865afa15801562001dd7573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001dfd91906200919a565b101562001e1d576040516317b204bf60e11b815260040160405180910390fd5b4281600b0154111562001e435760405163170cb76760e21b815260040160405180910390fd5b600a8101805460ff19169055604980546001919060009062001e67908490620091ef565b90915550506040516001600160a01b038416907f9390b453426557da5ebdc31f19a37753ca04addf656d32f35232211bb2af3f1990600090a2505050565b60005462010000900460ff161562001ed057604051631785c68160e01b815260040160405180910390fd5b3360009081526001602052604090205460ff161562001f025760405163b1d02c3d60e01b815260040160405180910390fd5b62001f0c62007fa6565b62001f19603f8262007e04565b62001f375760405163056e881160e01b815260040160405180910390fd5b6001600160a01b03821662001f5f57604051636520611b60e11b815260040160405180910390fd5b6001600160a01b03828116600090815260436020526040902054161562001f9957604051631e6f587560e11b815260040160405180910390fd5b600062001fa562007fa6565b6001600160a01b0381166000908152604160205260409020600c81015491925090429062001fd7906102589062009184565b111562001ff757604051631f92cdbd60e11b815260040160405180910390fd5b80546001600160a01b039081166000908152604460209081526040808320429081905585548986166001600160a01b031991821681178855600c88019290925581855260439093528184208054958816959093168517909255519092917f6e4e747ca35203f16401c69805c7dd52fff67ef60b0ebc5c7fe16890530f223591a350505050565b336200208b603f8262007e04565b620020a95760405163056e881160e01b815260040160405180910390fd5b60005462010000900460ff1615620020d457604051631785c68160e01b815260040160405180910390fd5b3360009081526001602052604090205460ff1615620021065760405163b1d02c3d60e01b815260040160405180910390fd5b6001600160a01b038281166000908152604d60205260409020541615620021405760405163bebdc75760e01b815260040160405180910390fd5b6200214d603f8362007e04565b156200216c5760405163bebdc75760e01b815260040160405180910390fd5b336000818152604160205260409020600d01546001600160a01b039081169084168103620021ad5760405163bebdc75760e01b815260040160405180910390fd5b6001600160a01b03811615620021e4576001600160a01b0381166000908152604d6020526040902080546001600160a01b03191690555b6001600160a01b038281166000908152604160205260409020600d0180546001600160a01b03191691861691821790551562002249576001600160a01b038481166000908152604d6020526040902080546001600160a01b0319169184169190911790555b836001600160a01b0316816001600160a01b0316836001600160a01b03167fcbb728765de145e99c00e8ae32a325231e850359b7b8a6da3b84d672ab3f1d0a60405160405180910390a450505050565b600054630100000090046001600160a01b03163314620022cc576040516306fbb1e360e01b815260040160405180910390fd5b6001600160a01b038116600081815260016020526040808220805460ff19169055517fe0db3499b7fdc3da4cddff5f45d694549c19835e7f719fb5606d3ad1a5de40119190a250565b60005462010000900460ff16156200234057604051631785c68160e01b815260040160405180910390fd5b3360009081526001602052604090205460ff1615620023725760405163b1d02c3d60e01b815260040160405180910390fd5b8162002380603f8262007e04565b6200239e5760405163056e881160e01b815260040160405180910390fd5b81600003620023c057604051639811e0c760e01b815260040160405180910390fd5b6001600160a01b03808416600090815260416020908152604080832081516101808101835281548616815260018201548616938101939093526002810154909416908201526003830154606082015260048301805433949160808401916200242890620090eb565b80601f01602080910402602001604051908101604052809291908181526020018280546200245690620090eb565b8015620024a75780601f106200247b57610100808354040283529160200191620024a7565b820191906000526020600020905b8154815290600101906020018083116200248957829003601f168201915b5050505050815260200160058201604051806080016040529081600082018054620024d290620090eb565b80601f01602080910402602001604051908101604052809291908181526020018280546200250090620090eb565b8015620025515780601f10620025255761010080835404028352916020019162002551565b820191906000526020600020905b8154815290600101906020018083116200253357829003601f168201915b505050505081526020016001820180546200256c90620090eb565b80601f01602080910402602001604051908101604052809291908181526020018280546200259a90620090eb565b8015620025eb5780601f10620025bf57610100808354040283529160200191620025eb565b820191906000526020600020905b815481529060010190602001808311620025cd57829003601f168201915b505050505081526020016002820180546200260690620090eb565b80601f01602080910402602001604051908101604052809291908181526020018280546200263490620090eb565b8015620026855780601f10620026595761010080835404028352916020019162002685565b820191906000526020600020905b8154815290600101906020018083116200266757829003601f168201915b50505050508152602001600382018054620026a090620090eb565b80601f0160208091040260200160405190810160405280929190818152602001828054620026ce90620090eb565b80156200271f5780601f10620026f3576101008083540402835291602001916200271f565b820191906000526020600020905b8154815290600101906020018083116200270157829003601f168201915b505050919092525050508152604080516060808201835260098501546001600160401b038082168452600160401b82048116602080860191909152600160801b9092041683850152840191909152600a84015460ff16151582840152600b84015490830152600c8301546080830152600d8301546001600160a01b031660a0830152805161026081019182905260c09092019190600e84019060139082845b815481526020019060010190808311620027be575050509190925250505060408082015190516326ccee8b60e11b81526001600160a01b0385811660048301526024820188905292935060009290911690634d99dd16906044016020604051808303816000875af115801562002838573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200285e91906200919a565b9050826001600160a01b0316866001600160a01b03167f3aace7340547de7b9156593a7652dc07ee900cea3fd8f82cb6c9d38b408298028784604051620028af929190918252602082015260400190565b60405180910390a3856001600160a01b0316836001600160a01b031603620028dc57620028dc8662007fe7565b6040808301519051633041949b60e01b815261200591633041949b91620029099190879060040162009121565b600060405180830381600087803b1580156200292457600080fd5b505af115801562002939573d6000803e3d6000fd5b50505050505050505050565b60005462010000900460ff16156200297057604051631785c68160e01b815260040160405180910390fd5b3360009081526001602052604090205460ff1615620029a25760405163b1d02c3d60e01b815260040160405180910390fd5b83620029b0603f8262007e04565b620029ce5760405163056e881160e01b815260040160405180910390fd5b83620029dc603f8262007e04565b620029fa5760405163056e881160e01b815260040160405180910390fd5b6034805460ff19166001179055600084900362002a2a57604051639811e0c760e01b815260040160405180910390fd5b846001600160a01b0316866001600160a01b03160362002a5d5760405163f0e3e62960e01b815260040160405180910390fd5b6001600160a01b038087166000908152604160209081526040808320815161018081018352815486168152600182015486169381019390935260028101549094169082015260038301546060820152600483018054339491608084019162002ac590620090eb565b80601f016020809104026020016040519081016040528092919081815260200182805462002af390620090eb565b801562002b445780601f1062002b185761010080835404028352916020019162002b44565b820191906000526020600020905b81548152906001019060200180831162002b2657829003601f168201915b505050505081526020016005820160405180608001604052908160008201805462002b6f90620090eb565b80601f016020809104026020016040519081016040528092919081815260200182805462002b9d90620090eb565b801562002bee5780601f1062002bc25761010080835404028352916020019162002bee565b820191906000526020600020905b81548152906001019060200180831162002bd057829003601f168201915b5050505050815260200160018201805462002c0990620090eb565b80601f016020809104026020016040519081016040528092919081815260200182805462002c3790620090eb565b801562002c885780601f1062002c5c5761010080835404028352916020019162002c88565b820191906000526020600020905b81548152906001019060200180831162002c6a57829003601f168201915b5050505050815260200160028201805462002ca390620090eb565b80601f016020809104026020016040519081016040528092919081815260200182805462002cd190620090eb565b801562002d225780601f1062002cf65761010080835404028352916020019162002d22565b820191906000526020600020905b81548152906001019060200180831162002d0457829003601f168201915b5050505050815260200160038201805462002d3d90620090eb565b80601f016020809104026020016040519081016040528092919081815260200182805462002d6b90620090eb565b801562002dbc5780601f1062002d905761010080835404028352916020019162002dbc565b820191906000526020600020905b81548152906001019060200180831162002d9e57829003601f168201915b505050919092525050508152604080516060808201835260098501546001600160401b038082168452600160401b82048116602080860191909152600160801b9092041683850152840191909152600a84015460ff16151582840152600b84015490830152600c8301546080830152600d8301546001600160a01b031660a0830152805161026081019182905260c09092019190600e84019060139082845b81548152602001906001019080831162002e5b57505050919092525050506001600160a01b0380891660009081526041602090815260408083208151610180810183528154861681526001820154861693810193909352600281015490941690820152600383015460608201526004830180549495509193909291608084019162002ee690620090eb565b80601f016020809104026020016040519081016040528092919081815260200182805462002f1490620090eb565b801562002f655780601f1062002f395761010080835404028352916020019162002f65565b820191906000526020600020905b81548152906001019060200180831162002f4757829003601f168201915b505050505081526020016005820160405180608001604052908160008201805462002f9090620090eb565b80601f016020809104026020016040519081016040528092919081815260200182805462002fbe90620090eb565b80156200300f5780601f1062002fe3576101008083540402835291602001916200300f565b820191906000526020600020905b81548152906001019060200180831162002ff157829003601f168201915b505050505081526020016001820180546200302a90620090eb565b80601f01602080910402602001604051908101604052809291908181526020018280546200305890620090eb565b8015620030a95780601f106200307d57610100808354040283529160200191620030a9565b820191906000526020600020905b8154815290600101906020018083116200308b57829003601f168201915b50505050508152602001600282018054620030c490620090eb565b80601f0160208091040260200160405190810160405280929190818152602001828054620030f290620090eb565b8015620031435780601f10620031175761010080835404028352916020019162003143565b820191906000526020600020905b8154815290600101906020018083116200312557829003601f168201915b505050505081526020016003820180546200315e90620090eb565b80601f01602080910402602001604051908101604052809291908181526020018280546200318c90620090eb565b8015620031dd5780601f10620031b157610100808354040283529160200191620031dd565b820191906000526020600020905b815481529060010190602001808311620031bf57829003601f168201915b505050919092525050508152604080516060808201835260098501546001600160401b038082168452600160401b82048116602080860191909152600160801b9092041683850152840191909152600a84015460ff16151582840152600b84015490830152600c8301546080830152600d8301546001600160a01b031660a0830152805161026081019182905260c09092019190600e84019060139082845b8154815260200190600101908083116200327c5750505050508152505090508060e001518015620032bf5750876001600160a01b0316836001600160a01b031614155b15620032de57604051636468920360e01b815260040160405180910390fd5b60408083015190516352e82ce560e11b81526001600160a01b038581166004830152602482018a9052600092169063a5d059ca906044016020604051808303816000875af115801562003335573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200335b91906200919a565b9050603754811015620033815760405163dc6f0bdd60e01b815260040160405180910390fd5b896001600160a01b0316846001600160a01b03161480156200341657506036546040808501519051630913db4760e01b81526001600160a01b038d8116600483015290911690630913db4790602401602060405180830381865afa158015620033ee573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200341491906200919a565b105b1562003435576040516317b204bf60e11b815260040160405180910390fd5b6000620186a0603a54836200344b919062009205565b62003457919062009161565b9050600083604001516001600160a01b03168260405160006040518083038185875af1925050503d8060008114620034ac576040519150601f19603f3d011682016040523d82523d6000602084013e620034b1565b606091505b5050905080620034d4576040516312171d8360e31b815260040160405180910390fd5b620034e08284620091ef565b60408086015190516317066a5760e21b81526001600160a01b03898116600483015292955060009290911690635c19a95c90869060240160206040518083038185885af115801562003536573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906200355d91906200919a565b9050866001600160a01b03168c6001600160a01b03168e6001600160a01b03167ffdac6e81913996d95abcc289e90f2d8bd235487ce6fe6f821e7d21002a1915b48e8589604051620035c2939291909283526020830191909152604082015260600190565b60405180910390a46040805160028082526060820183526000926020830190803683370190505090508660400151816000815181106200360657620036066200921f565b60200260200101906001600160a01b031690816001600160a01b0316815250508560400151816001815181106200364157620036416200921f565b6001600160a01b0390921660209283029190910190910152604051634484077560e01b815261200590634484077590620036829084908c9060040162009235565b600060405180830381600087803b1580156200369d57600080fd5b505af1158015620036b2573d6000803e3d6000fd5b505050508a1562003724576120056001600160a01b031663e5ed5b1e898f6040518363ffffffff1660e01b8152600401620036ef92919062009121565b600060405180830381600087803b1580156200370a57600080fd5b505af11580156200371f573d6000803e3d6000fd5b505050505b50506034805460ff19169055505050505050505050505050565b60005462010000900460ff16156200376957604051631785c68160e01b815260040160405180910390fd5b3360009081526001602052604090205460ff16156200379b5760405163b1d02c3d60e01b815260040160405180910390fd5b620037a562007fa6565b620037b2603f8262007e04565b620037d05760405163056e881160e01b815260040160405180910390fd5b6000620037dc62007fa6565b6001600160a01b0381166000908152604160205260409020600c8101549192509042906200380e906102589062009184565b11156200382e57604051631f92cdbd60e11b815260040160405180910390fd5b60098101546001600160401b03600160401b90910481169085161115620038685760405163dc81db8560e01b815260040160405180910390fd5b60098101546000906001600160401b039081169086161015620038a6576009820154620038a09086906001600160401b031662009261565b620038c0565b6009820154620038c0906001600160401b03168662009261565b60098301546001600160401b039182169250600160801b900416811115620038fb5760405163dc81db8560e01b815260040160405180910390fd5b60098201805467ffffffffffffffff19166001600160401b03871690811790915542600c8401556040519081526001600160a01b038416907f78cdd96edf59e09cfd4d26ef6ef6c92d166effe6a40970c54821206d541932cb9060200160405180910390a25050505050565b606080606060006200397a603f6200810d565b9050808610156200400357841562003993578462003995565b805b9450600085620039a68884620091ef565b11620039be57620039b88783620091ef565b620039c0565b855b9050806001600160401b03811115620039dd57620039dd6200899c565b60405190808252806020026020018201604052801562003a07578160200160208202803683370190505b509450806001600160401b0381111562003a255762003a256200899c565b60405190808252806020026020018201604052801562003a4f578160200160208202803683370190505b509350806001600160401b0381111562003a6d5762003a6d6200899c565b60405190808252806020026020018201604052801562003aa257816020015b606081526020019060019003908162003a8c5790505b50925060005b818110156200400057600062003acc62003ac3838b62009184565b603f9062008118565b6001600160a01b0380821660009081526041602090815260408083208151610180810183528154861681526001820154861693810193909352600281015490941690820152600383015460608201526004830180549495509193909291608084019162003b3990620090eb565b80601f016020809104026020016040519081016040528092919081815260200182805462003b6790620090eb565b801562003bb85780601f1062003b8c5761010080835404028352916020019162003bb8565b820191906000526020600020905b81548152906001019060200180831162003b9a57829003601f168201915b505050505081526020016005820160405180608001604052908160008201805462003be390620090eb565b80601f016020809104026020016040519081016040528092919081815260200182805462003c1190620090eb565b801562003c625780601f1062003c365761010080835404028352916020019162003c62565b820191906000526020600020905b81548152906001019060200180831162003c4457829003601f168201915b5050505050815260200160018201805462003c7d90620090eb565b80601f016020809104026020016040519081016040528092919081815260200182805462003cab90620090eb565b801562003cfc5780601f1062003cd05761010080835404028352916020019162003cfc565b820191906000526020600020905b81548152906001019060200180831162003cde57829003601f168201915b5050505050815260200160028201805462003d1790620090eb565b80601f016020809104026020016040519081016040528092919081815260200182805462003d4590620090eb565b801562003d965780601f1062003d6a5761010080835404028352916020019162003d96565b820191906000526020600020905b81548152906001019060200180831162003d7857829003601f168201915b5050505050815260200160038201805462003db190620090eb565b80601f016020809104026020016040519081016040528092919081815260200182805462003ddf90620090eb565b801562003e305780601f1062003e045761010080835404028352916020019162003e30565b820191906000526020600020905b81548152906001019060200180831162003e1257829003601f168201915b505050919092525050508152604080516060808201835260098501546001600160401b038082168452600160401b82048116602080860191909152600160801b9092041683850152840191909152600a84015460ff16151582840152600b84015490830152600c8301546080830152600d8301546001600160a01b031660a0830152805161026081019182905260c09092019190600e84019060139082845b81548152602001906001019080831162003ecf575050505050815250509050806000015188848151811062003f085762003f086200921f565b60200260200101906001600160a01b031690816001600160a01b0316815250508060e0015162003fa15780604001516001600160a01b03166315d1f8986040518163ffffffff1660e01b8152600401602060405180830381865afa15801562003f75573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062003f9b91906200919a565b62003fa4565b60005b87848151811062003fb95762003fb96200921f565b602002602001018181525050806080015186848151811062003fdf5762003fdf6200921f565b602002602001018190525050508062003ff8906200928b565b905062003aa8565b50505b92959194509250565b60005462010000900460ff16156200403757604051631785c68160e01b815260040160405180910390fd5b3360009081526001602052604090205460ff1615620040695760405163b1d02c3d60e01b815260040160405180910390fd5b3362004077603f8262007e04565b156200409657604051635f28f62b60e01b815260040160405180910390fd5b6001600160a01b038181166000908152604d60205260409020541615620040d057604051631a0a9b9f60e21b815260040160405180910390fd5b6001600160a01b0388811660009081526043602052604090205416156200410a57604051631e6f587560e11b815260040160405180910390fd5b60006001600160a01b031660458888604051620041299291906200913b565b908152604051908190036020019020546001600160a01b03161462004161576040516311fdb94760e01b815260040160405180910390fd5b60006200416f8380620092a7565b604051602001620041829291906200913b565b60408051601f1981840301815291815281516020928301206000818152604290935291205490915060ff1615620041cc5760405163c0bf414360e01b815260040160405180910390fd5b6000620041e2670de0b6b3a764000034620091ef565b905060365481101562004208576040516317b204bf60e11b815260040160405180910390fd5b6001600160a01b038a166200423057604051636520611b60e11b815260040160405180910390fd5b61138862004245604087016020880162008b56565b6001600160401b031611806200428b575062004268604086016020870162008b56565b6001600160401b031662004280602087018762008b56565b6001600160401b0316115b80620042ca5750620042a4604086016020870162008b56565b6001600160401b0316620042bf606087016040880162008b56565b6001600160401b0316115b15620042e95760405163dc81db8560e01b815260040160405180910390fd5b62004334620042f98580620092a7565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506200812692505050565b6200435257604051635dba5ad760e01b815260040160405180910390fd5b62004361838a8a8a8a620082c8565b6200437f57604051631647e3cb60e11b815260040160405180910390fd5b6000620043cd84620043928780620092a7565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250620083f892505050565b9050620043dc603f85620084f9565b506000838152604260209081526040808320805460ff191660019081179091556001600160a01b0380891680865260419094529190932080548f83166001600160a01b0319918216178255938101805485169093179092556002820180549185169190931617909155426003820155600481016200445c8b8d836200934f565b5085600582016200446e828262009417565b508790506009820162004482828262009550565b505042600c8201556001600160a01b038c81166000908152604360205260409081902080546001600160a01b03191692881692909217909155518590604590620044d0908e908e906200913b565b908152602001604051809103902060006101000a8154816001600160a01b0302191690836001600160a01b03160217905550816001600160a01b0316856001600160a01b03168d6001600160a01b03167faecd9fb95e79c75a3a1de93362c6be5fe6ab65770d8614be583884161cd8228d8e8e6040516200455392919062009620565b60405180910390a460408051848152602081018590526001600160a01b0387169182917f24d7bda8602b916d64417f0dbfe2e2e88ec9b1157bd9f596dfdb91ba26624e04910160405180910390a360408051670de0b6b3a7640000808252602082015261dead916001600160a01b038816917f24d7bda8602b916d64417f0dbfe2e2e88ec9b1157bd9f596dfdb91ba26624e04910160405180910390a3604051633041949b60e01b815261200590633041949b9062004619908590899060040162009121565b600060405180830381600087803b1580156200463457600080fd5b505af115801562004649573d6000803e3d6000fd5b50505050505050505050505050505050565b60408051606081018252600080825260208201819052918101919091528162004686603f8262007e04565b620046a45760405163056e881160e01b815260040160405180910390fd5b50506001600160a01b031660009081526041602090815260409182902082516060810184526009909101546001600160401b038082168352600160401b8204811693830193909352600160801b90049091169181019190915290565b6001600160a01b038082166000908152604160209081526040808320815161018081018352815486168152600182015486169381019390935260028101549094169082015260038301546060828101919091526004840180549194916080840191906200476d90620090eb565b80601f01602080910402602001604051908101604052809291908181526020018280546200479b90620090eb565b8015620047ec5780601f10620047c057610100808354040283529160200191620047ec565b820191906000526020600020905b815481529060010190602001808311620047ce57829003601f168201915b50505050508152602001600582016040518060800160405290816000820180546200481790620090eb565b80601f01602080910402602001604051908101604052809291908181526020018280546200484590620090eb565b8015620048965780601f106200486a5761010080835404028352916020019162004896565b820191906000526020600020905b8154815290600101906020018083116200487857829003601f168201915b50505050508152602001600182018054620048b190620090eb565b80601f0160208091040260200160405190810160405280929190818152602001828054620048df90620090eb565b8015620049305780601f10620049045761010080835404028352916020019162004930565b820191906000526020600020905b8154815290600101906020018083116200491257829003601f168201915b505050505081526020016002820180546200494b90620090eb565b80601f01602080910402602001604051908101604052809291908181526020018280546200497990620090eb565b8015620049ca5780601f106200499e57610100808354040283529160200191620049ca565b820191906000526020600020905b815481529060010190602001808311620049ac57829003601f168201915b50505050508152602001600382018054620049e590620090eb565b80601f016020809104026020016040519081016040528092919081815260200182805462004a1390620090eb565b801562004a645780601f1062004a385761010080835404028352916020019162004a64565b820191906000526020600020905b81548152906001019060200180831162004a4657829003601f168201915b505050919092525050508152604080516060808201835260098501546001600160401b038082168452600160401b82048116602080860191909152600160801b9092041683850152840191909152600a84015460ff16151582840152600b84015490830152600c8301546080830152600d8301546001600160a01b031660a0830152805161026081019182905260c09092019190600e84019060139082845b81548152602001906001019080831162004b035750505091909252505050608001519392505050565b336110011462004b5457604051630f22c43960e41b81526110016004820152602401620011f9565b6001600160a01b038082166000908152604360205260409020541662004b7c603f8262007e04565b62004b9a5760405163056e881160e01b815260040160405180910390fd5b6001600160a01b038181166000908152604160205260408082206002810154603b54925163045bc4d160e41b81526004810193909352909316906345bc4d10906024016020604051808303816000875af115801562004bfd573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062004c2391906200919a565b90506000603d544262004c37919062009184565b905062004c45838262007eb1565b836001600160a01b03167f6e9a2ee7aee95665e3a774a212eb11441b217e3e4656ab9563793094689aabb28284600160405162004c8593929190620091b4565b60405180910390a26002830154604051633041949b60e01b815261200591633041949b9162004cc3916001600160a01b031690889060040162009121565b600060405180830381600087803b15801562004cde57600080fd5b505af115801562004cf3573d6000803e3d6000fd5b505050505050505050565b600054610100900460ff161580801562004d1f5750600054600160ff909116105b8062004d3b5750303b15801562004d3b575060005460ff166001145b62004da05760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608401620011f9565b6000805460ff19166001179055801562004dc4576000805461ff0019166101001790555b33411462004de55760405163022d8c9560e31b815260040160405180910390fd5b3a1562004e05576040516383f1b1d360e01b815260040160405180910390fd5b611388603555686c6b935b8bbd400000603655670de0b6b3a7640000603755602d603855607860398190556002603a819055678ac7230489e80000603b55680ad78ebc5ac6200000603c55603d9190915560b4603e55604a5562004e7d7304d63abcd2b9b1baa327f2dda0f873f197ccd18662008510565b801562001824576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a150565b336120001462004eee57604051630f22c43960e41b81526120006004820152602401620011f9565b60405162461bcd60e51b815260206004820152600a60248201526919195c1c9958d85d195960b21b6044820152606401620011f9565b600054630100000090046001600160a01b0316331462004f57576040516306fbb1e360e01b815260040160405180910390fd5b60005462010000900460ff161562004f8257604051631785c68160e01b815260040160405180910390fd5b6000805462ff00001916620100001781556040517f9e87fac88ff661f02d44f95383c817fece4bce600a3dab7a54406878b965e7529190a1565b600062004fcb603f8462007e04565b62004fe95760405163056e881160e01b815260040160405180910390fd5b6001600160a01b0383811660009081526041602052604090819020600201549051636bbf224960e01b815260048101859052911690636bbf2249906024015b602060405180830381865afa15801562005046573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200506c91906200919a565b90505b92915050565b60005462010000900460ff1615620050a057604051631785c68160e01b815260040160405180910390fd5b3360009081526001602052604090205460ff1615620050d25760405163b1d02c3d60e01b815260040160405180910390fd5b81620050e0603f8262007e04565b620050fe5760405163056e881160e01b815260040160405180910390fd5b6037543490811015620051245760405163dc6f0bdd60e01b815260040160405180910390fd5b6001600160a01b03808516600090815260416020908152604080832081516101808101835281548616815260018201548616938101939093526002810154909416908201526003830154606082015260048301805433949160808401916200518c90620090eb565b80601f0160208091040260200160405190810160405280929190818152602001828054620051ba90620090eb565b80156200520b5780601f10620051df576101008083540402835291602001916200520b565b820191906000526020600020905b815481529060010190602001808311620051ed57829003601f168201915b50505050508152602001600582016040518060800160405290816000820180546200523690620090eb565b80601f01602080910402602001604051908101604052809291908181526020018280546200526490620090eb565b8015620052b55780601f106200528957610100808354040283529160200191620052b5565b820191906000526020600020905b8154815290600101906020018083116200529757829003601f168201915b50505050508152602001600182018054620052d090620090eb565b80601f0160208091040260200160405190810160405280929190818152602001828054620052fe90620090eb565b80156200534f5780601f1062005323576101008083540402835291602001916200534f565b820191906000526020600020905b8154815290600101906020018083116200533157829003601f168201915b505050505081526020016002820180546200536a90620090eb565b80601f01602080910402602001604051908101604052809291908181526020018280546200539890620090eb565b8015620053e95780601f10620053bd57610100808354040283529160200191620053e9565b820191906000526020600020905b815481529060010190602001808311620053cb57829003601f168201915b505050505081526020016003820180546200540490620090eb565b80601f01602080910402602001604051908101604052809291908181526020018280546200543290620090eb565b8015620054835780601f10620054575761010080835404028352916020019162005483565b820191906000526020600020905b8154815290600101906020018083116200546557829003601f168201915b505050919092525050508152604080516060808201835260098501546001600160401b038082168452600160401b82048116602080860191909152600160801b9092041683850152840191909152600a84015460ff16151582840152600b84015490830152600c8301546080830152600d8301546001600160a01b031660a0830152805161026081019182905260c09092019190600e84019060139082845b815481526020019060010190808311620055225750505050508152505090508060e001518015620055655750856001600160a01b0316826001600160a01b031614155b156200558457604051636468920360e01b815260040160405180910390fd5b60408082015190516317066a5760e21b81526001600160a01b0384811660048301526000921690635c19a95c90869060240160206040518083038185885af1158015620055d5573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190620055fc91906200919a565b9050826001600160a01b0316876001600160a01b03167f24d7bda8602b916d64417f0dbfe2e2e88ec9b1157bd9f596dfdb91ba26624e0483876040516200564d929190918252602082015260400190565b60405180910390a36040808301519051633041949b60e01b815261200591633041949b91620056829190879060040162009121565b600060405180830381600087803b1580156200569d57600080fd5b505af1158015620056b2573d6000803e3d6000fd5b5050505085156200181d576040516372f6ad8f60e11b81526120059063e5ed5b1e90620056e69086908b9060040162009121565b600060405180830381600087803b1580156200570157600080fd5b505af115801562005716573d6000803e3d6000fd5b5050505050505050505050565b6200574f6040518060800160405280606081526020016060815260200160608152602001606081525090565b816200575d603f8262007e04565b6200577b5760405163056e881160e01b815260040160405180910390fd5b6001600160a01b03831660009081526041602052604090819020815160808101909252600501805482908290620057b290620090eb565b80601f0160208091040260200160405190810160405280929190818152602001828054620057e090620090eb565b8015620058315780601f10620058055761010080835404028352916020019162005831565b820191906000526020600020905b8154815290600101906020018083116200581357829003601f168201915b505050505081526020016001820180546200584c90620090eb565b80601f01602080910402602001604051908101604052809291908181526020018280546200587a90620090eb565b8015620058cb5780601f106200589f57610100808354040283529160200191620058cb565b820191906000526020600020905b815481529060010190602001808311620058ad57829003601f168201915b50505050508152602001600282018054620058e690620090eb565b80601f01602080910402602001604051908101604052809291908181526020018280546200591490620090eb565b8015620059655780601f10620059395761010080835404028352916020019162005965565b820191906000526020600020905b8154815290600101906020018083116200594757829003601f168201915b505050505081526020016003820180546200598090620090eb565b80601f0160208091040260200160405190810160405280929190818152602001828054620059ae90620090eb565b8015620059ff5780601f10620059d357610100808354040283529160200191620059ff565b820191906000526020600020905b815481529060010190602001808311620059e157829003601f168201915b505050505081525050915050919050565b60005462010000900460ff161562005a3b57604051631785c68160e01b815260040160405180910390fd5b3360009081526001602052604090205460ff161562005a6d5760405163b1d02c3d60e01b815260040160405180910390fd5b62005a798282620085a9565b5050565b336110071462005aa557604051630f22c43960e41b81526110076004820152602401620011f9565b62005b126040518060400160405280601081526020016f1d1c985b9cd9995c91d85cd31a5b5a5d60821b81525085858080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509293925050620086b59050565b1562005bcd576020811462005b445783838383604051630a5a604160e01b8152600401620011f9949392919062009636565b604080516020601f840181900481028201810190925282815260009162005b87918585808385018382808284376000920191909152509293925050620087129050565b90506108fc81108062005b9b575061271081115b1562005bc45784848484604051630a5a604160e01b8152600401620011f9949392919062009636565b603555620068d7565b62005c3e6040518060400160405280601481526020017336b4b729b2b6332232b632b3b0ba34b7b721272160611b81525085858080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509293925050620086b59050565b1562005d08576020811462005c705783838383604051630a5a604160e01b8152600401620011f9949392919062009636565b604080516020601f840181900481028201810190925282815260009162005cb3918585808385018382808284376000920191909152509293925050620087129050565b9050683635c9adc5dea0000081108062005cd6575069152d02c7e14af680000081115b1562005cff5784848484604051630a5a604160e01b8152600401620011f9949392919062009636565b603655620068d7565b62005d7b604051806040016040528060168152602001756d696e44656c65676174696f6e424e424368616e676560501b81525085858080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509293925050620086b59050565b1562005e42576020811462005dad5783838383604051630a5a604160e01b8152600401620011f9949392919062009636565b604080516020601f840181900481028201810190925282815260009162005df0918585808385018382808284376000920191909152509293925050620087129050565b905067016345785d8a000081108062005e105750678ac7230489e8000081115b1562005e395784848484604051630a5a604160e01b8152600401620011f9949392919062009636565b603755620068d7565b62005eb3604051806040016040528060148152602001736d6178456c656374656456616c696461746f727360601b81525085858080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509293925050620086b59050565b1562005f6b576020811462005ee55783838383604051630a5a604160e01b8152600401620011f9949392919062009636565b604080516020601f840181900481028201810190925282815260009162005f28918585808385018382808284376000920191909152509293925050620087129050565b905080158062005f3957506101f481115b1562005f625784848484604051630a5a604160e01b8152600401620011f9949392919062009636565b603855620068d7565b62005fd46040518060400160405280600c81526020016b1d5b989bdb9914195c9a5bd960a21b81525085858080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509293925050620086b59050565b15620060915760208114620060065783838383604051630a5a604160e01b8152600401620011f9949392919062009636565b604080516020601f840181900481028201810190925282815260009162006049918585808385018382808284376000920191909152509293925050620087129050565b90506203f4808110806200605f575062278d0081115b15620060885784848484604051630a5a604160e01b8152600401620011f9949392919062009636565b603955620068d7565b620060ff60405180604001604052806011815260200170726564656c65676174654665655261746560781b81525085858080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509293925050620086b59050565b15620061ac5760208114620061315783838383604051630a5a604160e01b8152600401620011f9949392919062009636565b604080516020601f840181900481028201810190925282815260009162006174918585808385018382808284376000920191909152509293925050620087129050565b90506064811115620061a35784848484604051630a5a604160e01b8152600401620011f9949392919062009636565b603a55620068d7565b6200621c60405180604001604052806013815260200172191bdddb9d1a5b5954db185cda105b5bdd5b9d606a1b81525085858080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509293925050620086b59050565b15620062dd57602081146200624e5783838383604051630a5a604160e01b8152600401620011f9949392919062009636565b604080516020601f840181900481028201810190925282815260009162006291918585808385018382808284376000920191909152509293925050620087129050565b9050674563918244f40000811080620062ab5750603c5481115b15620062d45784848484604051630a5a604160e01b8152600401620011f9949392919062009636565b603b55620068d7565b6200634b6040518060400160405280601181526020017019995b1bdb9e54db185cda105b5bdd5b9d607a1b81525085858080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509293925050620086b59050565b156200640e57602081146200637d5783838383604051630a5a604160e01b8152600401620011f9949392919062009636565b604080516020601f8401819004810282018101909252828152600091620063c0918585808385018382808284376000920191909152509293925050620087129050565b905068056bc75e2d63100000811080620063dc5750603b548111155b15620064055784848484604051630a5a604160e01b8152600401620011f9949392919062009636565b603c55620068d7565b6200647b6040518060400160405280601081526020016f646f776e74696d654a61696c54696d6560801b81525085858080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509293925050620086b59050565b15620065385760208114620064ad5783838383604051630a5a604160e01b8152600401620011f9949392919062009636565b604080516020601f8401819004810282018101909252828152600091620064f0918585808385018382808284376000920191909152509293925050620087129050565b90506202a300811080620065065750603e548110155b156200652f5784848484604051630a5a604160e01b8152600401620011f9949392919062009636565b603d55620068d7565b620065a36040518060400160405280600e81526020016d66656c6f6e794a61696c54696d6560901b81525085858080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509293925050620086b59050565b15620066605760208114620065d55783838383604051630a5a604160e01b8152600401620011f9949392919062009636565b604080516020601f840181900481028201810190925282815260009162006618918585808385018382808284376000920191909152509293925050620087129050565b9050620d2f008110806200662e5750603d548111155b15620066575784848484604051630a5a604160e01b8152600401620011f9949392919062009636565b603e55620068d7565b620066da6040518060400160405280601c81526020017f6d617846656c6f6e794265747765656e42726561746865426c6f636b0000000081525085858080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509293925050620086b59050565b156200678657602081146200670c5783838383604051630a5a604160e01b8152600401620011f9949392919062009636565b604080516020601f84018190048102820181019092528281526000916200674f918585808385018382808284376000920191909152509293925050620087129050565b9050806000036200677d5784848484604051630a5a604160e01b8152600401620011f9949392919062009636565b604a55620068d7565b620067f46040518060400160405280601181526020017039ba30b5b2a43ab1283937ba32b1ba37b960791b81525085858080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509293925050620086b59050565b15620068b45760148114620068265783838383604051630a5a604160e01b8152600401620011f9949392919062009636565b60006200686e601484848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509293925050620087129050565b90506001600160a01b038116620068a25784848484604051630a5a604160e01b8152600401620011f9949392919062009636565b620068ad8162008717565b50620068d7565b838383836040516325ee20d560e21b8152600401620011f9949392919062009636565b7ff1ce9b2cbf50eeb05769a29e2543fd350cab46894a7dd9978a12d534bb20e633848484846040516200690e949392919062009636565b60405180910390a150505050565b60005462010000900460ff16156200694757604051631785c68160e01b815260040160405180910390fd5b3360009081526001602052604090205460ff1615620069795760405163b1d02c3d60e01b815260040160405180910390fd5b816000816001600160401b038111156200699757620069976200899c565b604051908082528060200260200182016040528015620069c1578160200160208202803683370190505b5090506000805b8381101562006abf5762006a0a878783818110620069ea57620069ea6200921f565b905060200201602081019062006a0191906200882d565b603f9062007e04565b62006a285760405163056e881160e01b815260040160405180910390fd5b6041600088888481811062006a415762006a416200921f565b905060200201602081019062006a5891906200882d565b6001600160a01b039081168252602082019290925260400160002060020154845191169250829084908390811062006a945762006a946200921f565b6001600160a01b039092166020928302919091019091015262006ab7816200928b565b9050620069c8565b50604051634484077560e01b81526120059063448407759062002909908590889060040162009235565b606080600062006afa603f6200810d565b90508085101562006cbe57831562006b13578362006b15565b805b935060008462006b268784620091ef565b1162006b3e5762006b388683620091ef565b62006b40565b845b9050806001600160401b0381111562006b5d5762006b5d6200899c565b60405190808252806020026020018201604052801562006b87578160200160208202803683370190505b509350806001600160401b0381111562006ba55762006ba56200899c565b60405190808252806020026020018201604052801562006bcf578160200160208202803683370190505b50925060005b8181101562006cbb5762006bee62003ac3828962009184565b85828151811062006c035762006c036200921f565b60200260200101906001600160a01b031690816001600160a01b0316815250506041600086838151811062006c3c5762006c3c6200921f565b60200260200101516001600160a01b03166001600160a01b0316815260200190815260200160002060020160009054906101000a90046001600160a01b031684828151811062006c905762006c906200921f565b6001600160a01b039092166020928302919091019091015262006cb3816200928b565b905062006bd5565b50505b9250925092565b60008162006cd5603f8262007e04565b62006cf35760405163056e881160e01b815260040160405180910390fd5b50506001600160a01b03166000908152604160205260409020600c015490565b336110011462006d3b57604051630f22c43960e41b81526110016004820152602401620011f9565b60005462010000900460ff161562006d6657604051631785c68160e01b815260040160405180910390fd5b6001600160a01b038082166000908152604360205260409020541662006d8e603f8262007e04565b62006dac5760405163056e881160e01b815260040160405180910390fd5b6001600160a01b03811660009081526041602052604081209062006dd36102584262009161565b604a546000828152604b60205260409020549192501162006e075760405163bd52fcdb60e01b815260040160405180910390fd5b6000818152604b6020526040812080546001929062006e2890849062009184565b90915550506001600160a01b0384166000908152604460205260409020541580159062006e7c57506001600160a01b038416600090815260446020526040902054429062006e7a906102589062009184565b105b1562006e9b576040516330abb81d60e21b815260040160405180910390fd5b60008062006eab85600062007e27565b915091508162006ece57604051631b919bb160e11b815260040160405180910390fd5b6002840154603c5460405163045bc4d160e41b815260048101919091526000916001600160a01b0316906345bc4d10906024016020604051808303816000875af115801562006f21573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062006f4791906200919a565b905062006f55858362007eb1565b856001600160a01b03167f6e9a2ee7aee95665e3a774a212eb11441b217e3e4656ab9563793094689aabb28383600060405162006f9593929190620091b4565b60405180910390a26002850154604051633041949b60e01b815261200591633041949b91620056e6916001600160a01b0316908a9060040162009121565b6001600160a01b03808216600090815260416020908152604080832081516101808101835281548616815260018201548616938101939093526002810154909416908201526003830154606082015260048301805492938493849384939092916080840191906200704490620090eb565b80601f01602080910402602001604051908101604052809291908181526020018280546200707290620090eb565b8015620070c35780601f106200709757610100808354040283529160200191620070c3565b820191906000526020600020905b815481529060010190602001808311620070a557829003601f168201915b5050505050815260200160058201604051806080016040529081600082018054620070ee90620090eb565b80601f01602080910402602001604051908101604052809291908181526020018280546200711c90620090eb565b80156200716d5780601f1062007141576101008083540402835291602001916200716d565b820191906000526020600020905b8154815290600101906020018083116200714f57829003601f168201915b505050505081526020016001820180546200718890620090eb565b80601f0160208091040260200160405190810160405280929190818152602001828054620071b690620090eb565b8015620072075780601f10620071db5761010080835404028352916020019162007207565b820191906000526020600020905b815481529060010190602001808311620071e957829003601f168201915b505050505081526020016002820180546200722290620090eb565b80601f01602080910402602001604051908101604052809291908181526020018280546200725090620090eb565b8015620072a15780601f106200727557610100808354040283529160200191620072a1565b820191906000526020600020905b8154815290600101906020018083116200728357829003601f168201915b50505050508152602001600382018054620072bc90620090eb565b80601f0160208091040260200160405190810160405280929190818152602001828054620072ea90620090eb565b80156200733b5780601f106200730f576101008083540402835291602001916200733b565b820191906000526020600020905b8154815290600101906020018083116200731d57829003601f168201915b505050919092525050508152604080516060808201835260098501546001600160401b038082168452600160401b82048116602080860191909152600160801b9092041683850152840191909152600a84015460ff16151582840152600b84015490830152600c8301546080830152600d8301546001600160a01b031660a0830152805161026081019182905260c09092019190600e84019060139082845b815481526020019060010190808311620073da5750505091909252505050606081015160e0820151610100909201519097919650945092505050565b60005462010000900460ff16156200744157604051631785c68160e01b815260040160405180910390fd5b3360009081526001602052604090205460ff1615620074735760405163b1d02c3d60e01b815260040160405180910390fd5b6200747d62007fa6565b6200748a603f8262007e04565b620074a85760405163056e881160e01b815260040160405180910390fd5b6000620074b462007fa6565b6001600160a01b0381166000908152604160205260409020600c810154919250904290620074e6906102589062009184565b11156200750657604051631f92cdbd60e11b815260040160405180910390fd5b6005810180546200751790620090eb565b80601f01602080910402602001604051908101604052809291908181526020018280546200754590620090eb565b8015620075965780601f106200756a5761010080835404028352916020019162007596565b820191906000526020600020905b8154815290600101906020018083116200757857829003601f168201915b5050508287525085916005840191508190620075b390826200966c565b5060208201516001820190620075ca90826200966c565b5060408201516002820190620075e190826200966c565b5060608201516003820190620075f890826200966c565b505042600c830155506040516001600160a01b038316907f85d6366b336ade7f106987ec7a8eac1e8799e508aeab045a39d2f63e0dc969d990600090a250505050565b60005462010000900460ff16156200766657604051631785c68160e01b815260040160405180910390fd5b3360009081526001602052604090205460ff1615620076985760405163b1d02c3d60e01b815260040160405180910390fd5b828114620076b9576040516341abc80160e01b815260040160405180910390fd5b60005b838110156200772a5762007717858583818110620076de57620076de6200921f565b9050602002016020810190620076f591906200882d565b8484848181106200770a576200770a6200921f565b90506020020135620085a9565b62007722816200928b565b9050620076bc565b5050505050565b6001600160a01b03808216600090815260416020908152604080832081516101808101835281548616815260018201548616938101939093526002810154909416908201526003830154606082015260048301805492938493909160808401916200779c90620090eb565b80601f0160208091040260200160405190810160405280929190818152602001828054620077ca90620090eb565b80156200781b5780601f10620077ef576101008083540402835291602001916200781b565b820191906000526020600020905b815481529060010190602001808311620077fd57829003601f168201915b50505050508152602001600582016040518060800160405290816000820180546200784690620090eb565b80601f01602080910402602001604051908101604052809291908181526020018280546200787490620090eb565b8015620078c55780601f106200789957610100808354040283529160200191620078c5565b820191906000526020600020905b815481529060010190602001808311620078a757829003601f168201915b50505050508152602001600182018054620078e090620090eb565b80601f01602080910402602001604051908101604052809291908181526020018280546200790e90620090eb565b80156200795f5780601f1062007933576101008083540402835291602001916200795f565b820191906000526020600020905b8154815290600101906020018083116200794157829003601f168201915b505050505081526020016002820180546200797a90620090eb565b80601f0160208091040260200160405190810160405280929190818152602001828054620079a890620090eb565b8015620079f95780601f10620079cd57610100808354040283529160200191620079f9565b820191906000526020600020905b815481529060010190602001808311620079db57829003601f168201915b5050505050815260200160038201805462007a1490620090eb565b80601f016020809104026020016040519081016040528092919081815260200182805462007a4290620090eb565b801562007a935780601f1062007a675761010080835404028352916020019162007a93565b820191906000526020600020905b81548152906001019060200180831162007a7557829003601f168201915b505050919092525050508152604080516060808201835260098501546001600160401b038082168452600160401b82048116602080860191909152600160801b9092041683850152840191909152600a84015460ff16151582840152600b84015490830152600c8301546080830152600d8301546001600160a01b031660a0830152805161026081019182905260c09092019190600e84019060139082845b81548152602001906001019080831162007b325750505091909252505050604001519392505050565b600062007b6a603f8462007e04565b62007b885760405163056e881160e01b815260040160405180910390fd5b6001600160a01b038381166000908152604160205260409081902060020154905163aa1966cd60e01b81526004810185905291169063aa1966cd9060240162005028565b60005462010000900460ff161562007bf757604051631785c68160e01b815260040160405180910390fd5b3360009081526001602052604090205460ff161562007c295760405163b1d02c3d60e01b815260040160405180910390fd5b62007c3362007fa6565b62007c40603f8262007e04565b62007c5e5760405163056e881160e01b815260040160405180910390fd5b600062007c6a62007fa6565b905062007c7b8187878787620082c8565b62007c9957604051631647e3cb60e11b815260040160405180910390fd5b60006001600160a01b03166045878760405162007cb89291906200913b565b908152604051908190036020019020546001600160a01b03161462007cf0576040516311fdb94760e01b815260040160405180910390fd5b6001600160a01b0381166000908152604160205260409020600c810154429062007d1e906102589062009184565b111562007d3e57604051631f92cdbd60e11b815260040160405180910390fd5b4260468260040160405162007d54919062009734565b908152604051908190036020019020556004810162007d758789836200934f565b5042600c820155604051829060459062007d93908a908a906200913b565b90815260405190819003602001812080546001600160a01b039384166001600160a01b0319909116179055908316907f783156582145bd0ff7924fae6953ba054cf1233eb60739a200ddb10de068ff0d9062007df3908a908a9062009620565b60405180910390a250505050505050565b6001600160a01b038116600090815260018301602052604081205415156200506c565b6000806000848460405160200162007e41929190620097b2565b60408051601f1981840301815291815281516020928301206000818152604c9093529120549091504281111562007e815760008093509350505062007eaa565b603e5462007e90904262009184565b6000928352604c6020526040909220829055506001925090505b9250929050565b6000600162007ec1603f6200810d565b62007ecd9190620091ef565b604954108015915062007f195760018301546040516001600160a01b03909116907f2afdc18061ac21cff7d9f11527ab9c8dec6fabd4edf6f894ed634bebd6a20d4590600090a2505050565b82600b015482111562007f2e57600b83018290555b600a83015460ff1662007fa157600a8301805460ff191660019081179091556049805460009062007f6190849062009184565b909155505060018301546040516001600160a01b03909116907f4905ac32602da3fb8b4b7b00c285e5fc4c6c2308cc908b4a1e4e9625a29c90a390600090a25b505050565b336000908152604d60205260408120546001600160a01b03161562007fe25750336000908152604d60205260409020546001600160a01b031690565b503390565b6001600160a01b0381166000908152604160205260409020600a81015460ff161562008011575050565b6036546002820154604051630913db4760e01b81526001600160a01b03858116600483015290911690630913db4790602401602060405180830381865afa15801562008061573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200808791906200919a565b101562005a7957620080a981603d5442620080a3919062009184565b62007eb1565b80546040516335409f7f60e01b81526001600160a01b039091166004820152611000906335409f7f90602401600060405180830381600087803b158015620080f057600080fd5b505af115801562008105573d6000803e3d6000fd5b505050505050565b60006200506f825490565b60006200506c838362008783565b6000808290506003815110806200813e575060098151115b156200814d5750600092915050565b6041816000815181106200816557620081656200921f565b016020015160f81c1080620081975750605a816000815181106200818d576200818d6200921f565b016020015160f81c115b15620081a65750600092915050565b60015b8151811015620082be576030828281518110620081ca57620081ca6200921f565b016020015160f81c1080620081fb57506039828281518110620081f157620081f16200921f565b016020015160f81c115b80156200824b575060418282815181106200821a576200821a6200921f565b016020015160f81c10806200824b5750605a8282815181106200824157620082416200921f565b016020015160f81c115b80156200829b575060618282815181106200826a576200826a6200921f565b016020015160f81c10806200829b5750607a8282815181106200829157620082916200921f565b016020015160f81c115b15620082ab575060009392505050565b620082b6816200928b565b9050620081a9565b5060019392505050565b6000603084141580620082dc575060608214155b15620082eb57506000620083ef565b600086868646604051602001620083069493929190620097fc565b60408051808303601f1901815282825280516020918201208184528383019092529092506000919060208201818036833701905050905081602082015260008186868a8a6040516020016200836095949392919062009829565b60408051808303601f190181526001808452838301909252925060009190602082018180368337019050509050815160016020830182602086016066600019fa620083aa57600080fd5b50600081600081518110620083c357620083c36200921f565b016020015160f81c905060018114620083e557600095505050505050620083ef565b6001955050505050505b95945050505050565b60008061200361dead6040516200840f9062008802565b6001600160a01b03928316815291166020820152606060408201819052600090820152608001604051809103906000f08015801562008452573d6000803e3d6000fd5b509050806001600160a01b031663f399e22e3486866040518463ffffffff1660e01b81526004016200848692919062009861565b6000604051808303818588803b158015620084a057600080fd5b505af1158015620084b5573d6000803e3d6000fd5b50506040516001600160a01b038086169450881692507fd481492e4e93bb36b4c12a5af93f03be3bf04b454dfbc35dd2663fa26f44d5b09150600090a39392505050565b60006200506c836001600160a01b038416620087b0565b600054610100900460ff166200857d5760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b6064820152608401620011f9565b600080546001600160a01b039092166301000000026301000000600160b81b0319909216919091179055565b81620085b7603f8262007e04565b620085d55760405163056e881160e01b815260040160405180910390fd5b6001600160a01b03838116600090815260416020526040808220600201549051635569f64b60e11b8152336004820152602481018690529192169063aad3ec96906044016020604051808303816000875af115801562008639573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200865f91906200919a565b9050336001600160a01b0316846001600160a01b03167ff7a40077ff7a04c7e61f6f26fb13774259ddf1b6bce9ecf26a8276cdd399268383604051620086a791815260200190565b60405180910390a350505050565b600081604051602001620086ca919062009887565b6040516020818303038152906040528051906020012083604051602001620086f3919062009887565b6040516020818303038152906040528051906020012014905092915050565b015190565b600080546040516001600160a01b0380851693630100000090930416917f44fc1b38a4abaa91ebd1b628a5b259a698f86238c8217d68f516e87769c60c0b91a3600080546001600160a01b039092166301000000026301000000600160b81b0319909216919091179055565b60008260000182815481106200879d576200879d6200921f565b9060005260206000200154905092915050565b6000818152600183016020526040812054620087f9575081546001818101845560008481526020808220909301849055845484825282860190935260409020919091556200506f565b5060006200506f565b610e9680620098a683390190565b80356001600160a01b03811681146200882857600080fd5b919050565b6000602082840312156200884057600080fd5b6200506c8262008810565b60008083601f8401126200885e57600080fd5b5081356001600160401b038111156200887657600080fd5b60208301915083602082850101111562007eaa57600080fd5b60008060208385031215620088a357600080fd5b82356001600160401b03811115620088ba57600080fd5b620088c8858286016200884b565b90969095509350505050565b600080600060408486031215620088ea57600080fd5b833560ff81168114620088fc57600080fd5b925060208401356001600160401b038111156200891857600080fd5b62008926868287016200884b565b9497909650939450505050565b60005b838110156200895057818101518382015260200162008936565b50506000910152565b600081518084526200897381602086016020860162008933565b601f01601f19169290920160200192915050565b6020815260006200506c602083018462008959565b634e487b7160e01b600052604160045260246000fd5b604051608081016001600160401b0381118282101715620089d757620089d76200899c565b60405290565b60006001600160401b0380841115620089fa57620089fa6200899c565b604051601f8501601f19908116603f0116810190828211818310171562008a255762008a256200899c565b8160405280935085815286868601111562008a3f57600080fd5b858560208301376000602087830101525050509392505050565b60006020828403121562008a6c57600080fd5b81356001600160401b0381111562008a8357600080fd5b8201601f8101841362008a9557600080fd5b62008aa684823560208401620089dd565b949350505050565b6000806040838503121562008ac257600080fd5b62008acd8362008810565b946020939093013593505050565b803580151581146200882857600080fd5b6000806000806080858703121562008b0357600080fd5b62008b0e8562008810565b935062008b1e6020860162008810565b92506040850135915062008b356060860162008adb565b905092959194509250565b6001600160401b03811681146200182457600080fd5b60006020828403121562008b6957600080fd5b813562008b768162008b40565b9392505050565b6000806040838503121562008b9157600080fd5b50508035926020909101359150565b600081518084526020808501945080840160005b8381101562008bdb5781516001600160a01b03168752958201959082019060010162008bb4565b509495945050505050565b60808152600062008bfb608083018762008ba0565b82810360208481019190915286518083528782019282019060005b8181101562008c345784518352938301939183019160010162008c16565b5050848103604086015286518082528282019350600581901b8201830183890160005b8381101562008c8957601f1985840301875262008c7683835162008959565b9686019692509085019060010162008c57565b5050809550505050505082606083015295945050505050565b600080600080600080600087890360e081121562008cbf57600080fd5b62008cca8962008810565b975060208901356001600160401b038082111562008ce757600080fd5b62008cf58c838d016200884b565b909950975060408b013591508082111562008d0f57600080fd5b62008d1d8c838d016200884b565b90975095508591506060605f198401121562008d3857600080fd5b60608b01945060c08b013592508083111562008d5357600080fd5b505088016080818b03121562008d6857600080fd5b8091505092959891949750929550565b6000806040838503121562008d8c57600080fd5b62008d978362008810565b915062008da76020840162008adb565b90509250929050565b60208152600082516080602084015262008dce60a084018262008959565b90506020840151601f198085840301604086015262008dee838362008959565b9250604086015191508085840301606086015262008e0d838362008959565b9250606086015191508085840301608086015250620083ef828262008959565b6000806000806040858703121562008e4457600080fd5b84356001600160401b038082111562008e5c57600080fd5b62008e6a888389016200884b565b9096509450602087013591508082111562008e8457600080fd5b5062008e93878288016200884b565b95989497509550505050565b60008083601f84011262008eb257600080fd5b5081356001600160401b0381111562008eca57600080fd5b6020830191508360208260051b850101111562007eaa57600080fd5b60008060006040848603121562008efc57600080fd5b83356001600160401b0381111562008f1357600080fd5b62008f218682870162008e9f565b909450925062008f3690506020850162008810565b90509250925092565b60608152600062008f54606083018662008ba0565b828103602084015262008f68818662008ba0565b915050826040830152949350505050565b600082601f83011262008f8b57600080fd5b6200506c83833560208501620089dd565b60006020828403121562008faf57600080fd5b81356001600160401b038082111562008fc757600080fd5b908301906080828603121562008fdc57600080fd5b62008fe6620089b2565b82358281111562008ff657600080fd5b620090048782860162008f79565b8252506020830135828111156200901a57600080fd5b620090288782860162008f79565b6020830152506040830135828111156200904157600080fd5b6200904f8782860162008f79565b6040830152506060830135828111156200906857600080fd5b620090768782860162008f79565b60608301525095945050505050565b600080600080604085870312156200909c57600080fd5b84356001600160401b0380821115620090b457600080fd5b620090c28883890162008e9f565b90965094506020870135915080821115620090dc57600080fd5b5062008e938782880162008e9f565b600181811c908216806200910057607f821691505b60208210810362001c3857634e487b7160e01b600052602260045260246000fd5b6001600160a01b0392831681529116602082015260400190565b8183823760009101908152919050565b634e487b7160e01b600052601160045260246000fd5b6000826200917f57634e487b7160e01b600052601260045260246000fd5b500490565b808201808211156200506f576200506f6200914b565b600060208284031215620091ad57600080fd5b5051919050565b838152602081018390526060810160038310620091e157634e487b7160e01b600052602160045260246000fd5b826040830152949350505050565b818103818111156200506f576200506f6200914b565b80820281158282048414176200506f576200506f6200914b565b634e487b7160e01b600052603260045260246000fd5b6040815260006200924a604083018562008ba0565b905060018060a01b03831660208301529392505050565b6001600160401b038281168282160390808211156200928457620092846200914b565b5092915050565b600060018201620092a057620092a06200914b565b5060010190565b6000808335601e19843603018112620092bf57600080fd5b8301803591506001600160401b03821115620092da57600080fd5b60200191503681900382131562007eaa57600080fd5b601f82111562007fa157600081815260208120601f850160051c81016020861015620093195750805b601f850160051c820191505b81811015620081055782815560010162009325565b600019600383901b1c191660019190911b1790565b6001600160401b038311156200936957620093696200899c565b62009381836200937a8354620090eb565b83620092f0565b6000601f841160018114620093b457600085156200939f5750838201355b620093ab86826200933a565b8455506200772a565b600083815260209020601f19861690835b82811015620093e75786850135825560209485019460019092019101620093c5565b5086821015620094055760001960f88860031b161c19848701351681555b505060018560011b0183555050505050565b620094238283620092a7565b6001600160401b038111156200943d576200943d6200899c565b62009455816200944e8554620090eb565b85620092f0565b6000601f821160018114620094885760008315620094735750838201355b6200947f84826200933a565b865550620094e5565b600085815260209020601f19841690835b82811015620094bb578685013582556020948501946001909201910162009499565b5084821015620094d95760001960f88660031b161c19848701351681555b505060018360011b0185555b50505050620094f86020830183620092a7565b620095088183600186016200934f565b5050620095196040830183620092a7565b620095298183600286016200934f565b50506200953a6060830183620092a7565b6200954a8183600386016200934f565b50505050565b81356200955d8162008b40565b6001600160401b03811690508154816001600160401b0319821617835560208401356200958a8162008b40565b6fffffffffffffffff0000000000000000604091821b166fffffffffffffffffffffffffffffffff19831684178117855590850135620095ca8162008b40565b6001600160c01b0319929092169092179190911760809190911b67ffffffffffffffff60801b1617905550565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b60208152600062008aa6602083018486620095f7565b6040815260006200964c604083018688620095f7565b828103602084015262009661818587620095f7565b979650505050505050565b81516001600160401b038111156200968857620096886200899c565b620096a081620096998454620090eb565b84620092f0565b602080601f831160018114620096d45760008415620096bf5750858301515b620096cb85826200933a565b86555062008105565b600085815260208120601f198616915b828110156200970557888601518255948401946001909101908401620096e4565b5085821015620097245787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b60008083546200974481620090eb565b600182811680156200975f57600181146200977557620097a6565b60ff1984168752821515830287019450620097a6565b8760005260208060002060005b858110156200979d5781548a82015290840190820162009782565b50505082870194505b50929695505050505050565b6bffffffffffffffffffffffff198360601b168152600060038310620097e857634e487b7160e01b600052602160045260246000fd5b5060f89190911b6014820152601501919050565b6bffffffffffffffffffffffff198560601b16815282846014830137601492019182015260340192915050565b600086516200983d818460208b0162008933565b82018587823760009086019081528385823760009301928352509095945050505050565b6001600160a01b038316815260406020820181905260009062008aa69083018462008959565b600082516200989b81846020870162008933565b919091019291505056fe608060405260405162000e9638038062000e96833981016040819052620000269162000497565b828162000036828260006200004d565b50620000449050826200008a565b505050620005ca565b6200005883620000e5565b600082511180620000665750805b1562000085576200008383836200012760201b620001691760201c565b505b505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f620000b562000156565b604080516001600160a01b03928316815291841660208301520160405180910390a1620000e2816200018f565b50565b620000f08162000244565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b60606200014f838360405180606001604052806027815260200162000e6f60279139620002f8565b9392505050565b60006200018060008051602062000e4f83398151915260001b6200037760201b620001951760201c565b546001600160a01b0316919050565b6001600160a01b038116620001fa5760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b60648201526084015b60405180910390fd5b806200022360008051602062000e4f83398151915260001b6200037760201b620001951760201c565b80546001600160a01b0319166001600160a01b039290921691909117905550565b6200025a816200037a60201b620001981760201c565b620002be5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b6064820152608401620001f1565b80620002237f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc60001b6200037760201b620001951760201c565b6060600080856001600160a01b03168560405162000317919062000577565b600060405180830381855af49150503d806000811462000354576040519150601f19603f3d011682016040523d82523d6000602084013e62000359565b606091505b5090925090506200036d8683838762000389565b9695505050505050565b90565b6001600160a01b03163b151590565b60608315620003fd578251600003620003f5576001600160a01b0385163b620003f55760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401620001f1565b508162000409565b62000409838362000411565b949350505050565b815115620004225781518083602001fd5b8060405162461bcd60e51b8152600401620001f1919062000595565b80516001600160a01b03811681146200045657600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b60005b838110156200048e57818101518382015260200162000474565b50506000910152565b600080600060608486031215620004ad57600080fd5b620004b8846200043e565b9250620004c8602085016200043e565b60408501519092506001600160401b0380821115620004e657600080fd5b818601915086601f830112620004fb57600080fd5b8151818111156200051057620005106200045b565b604051601f8201601f19908116603f011681019083821181831017156200053b576200053b6200045b565b816040528281528960208487010111156200055557600080fd5b6200056883602083016020880162000471565b80955050505050509250925092565b600082516200058b81846020870162000471565b9190910192915050565b6020815260008251806020840152620005b681604085016020870162000471565b601f01601f19169190910160400192915050565b61087580620005da6000396000f3fe60806040523661001357610011610017565b005b6100115b61001f6101a7565b6001600160a01b0316330361015f5760606001600160e01b0319600035166364d3180d60e11b810161005a576100536101da565b9150610157565b63587086bd60e11b6001600160e01b031982160161007a57610053610231565b63070d7c6960e41b6001600160e01b031982160161009a57610053610277565b621eb96f60e61b6001600160e01b03198216016100b9576100536102a8565b63a39f25e560e01b6001600160e01b03198216016100d9576100536102e8565b60405162461bcd60e51b815260206004820152604260248201527f5472616e73706172656e745570677261646561626c6550726f78793a2061646d60448201527f696e2063616e6e6f742066616c6c6261636b20746f2070726f78792074617267606482015261195d60f21b608482015260a4015b60405180910390fd5b815160208301f35b6101676102fc565b565b606061018e83836040518060600160405280602781526020016108426027913961030c565b9392505050565b90565b6001600160a01b03163b151590565b60007fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b546001600160a01b0316919050565b60606101e4610384565b60006101f33660048184610695565b81019061020091906106db565b905061021d8160405180602001604052806000815250600061038f565b505060408051602081019091526000815290565b60606000806102433660048184610695565b810190610250919061070c565b915091506102608282600161038f565b604051806020016040528060008152509250505090565b6060610281610384565b60006102903660048184610695565b81019061029d91906106db565b905061021d816103bb565b60606102b2610384565b60006102bc6101a7565b604080516001600160a01b03831660208201529192500160405160208183030381529060405291505090565b60606102f2610384565b60006102bc610412565b610167610307610412565b610421565b6060600080856001600160a01b03168560405161032991906107f2565b600060405180830381855af49150503d8060008114610364576040519150601f19603f3d011682016040523d82523d6000602084013e610369565b606091505b509150915061037a86838387610445565b9695505050505050565b341561016757600080fd5b610398836104c6565b6000825111806103a55750805b156103b6576103b48383610169565b505b505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f6103e46101a7565b604080516001600160a01b03928316815291841660208301520160405180910390a161040f81610506565b50565b600061041c6105af565b905090565b3660008037600080366000845af43d6000803e808015610440573d6000f35b3d6000fd5b606083156104b45782516000036104ad576001600160a01b0385163b6104ad5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015260640161014e565b50816104be565b6104be83836105d7565b949350505050565b6104cf81610601565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b6001600160a01b03811661056b5760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b606482015260840161014e565b807fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b80546001600160a01b0319166001600160a01b039290921691909117905550565b60007f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc6101cb565b8151156105e75781518083602001fd5b8060405162461bcd60e51b815260040161014e919061080e565b6001600160a01b0381163b61066e5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b606482015260840161014e565b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc61058e565b600080858511156106a557600080fd5b838611156106b257600080fd5b5050820193919092039150565b80356001600160a01b03811681146106d657600080fd5b919050565b6000602082840312156106ed57600080fd5b61018e826106bf565b634e487b7160e01b600052604160045260246000fd5b6000806040838503121561071f57600080fd5b610728836106bf565b9150602083013567ffffffffffffffff8082111561074557600080fd5b818501915085601f83011261075957600080fd5b81358181111561076b5761076b6106f6565b604051601f8201601f19908116603f01168101908382118183101715610793576107936106f6565b816040528281528860208487010111156107ac57600080fd5b8260208601602083013760006020848301015280955050505050509250929050565b60005b838110156107e95781810151838201526020016107d1565b50506000910152565b600082516108048184602087016107ce565b9190910192915050565b602081526000825180602084015261082d8160408501602087016107ce565b601f01601f1916919091016040019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a164736f6c6343000811000ab53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a164736f6c6343000811000a \ No newline at end of file diff --git a/core/systemcontracts/pascal/rialto/TokenHubContract b/core/systemcontracts/pascal/rialto/TokenHubContract index 4a5cac4f2e..493f665985 100644 --- a/core/systemcontracts/pascal/rialto/TokenHubContract +++ b/core/systemcontracts/pascal/rialto/TokenHubContract @@ -1 +1 @@ -6080604052600436106103395760003560e01c806393ab703f116101ab578063b9fd21e3116100f7578063df8079e911610095578063e8f35cea1161006f578063e8f35cea14610dd9578063f9a2bbc714610e0c578063fc1a598f14610e21578063fd6a687914610e5457610381565b8063df8079e914610d85578063e04c83a714610d9a578063e1c7392a14610dc457610381565b8063c81b1662116100d1578063c81b166214610d20578063c8509d811461092a578063cf41984414610d35578063dc927faf14610d7057610381565b8063b9fd21e314610ca5578063bbface1f14610cba578063bd46646114610ced57610381565b8063a78abc1611610164578063aad560631161013e578063aad5606314610b5e578063ab51bb9614610b73578063ac43175114610ba1578063b99328c514610c6c57610381565b8063a78abc1614610aed578063aa7415f514610b02578063aa82dce114610b4957610381565b806393ab703f14610a275780639509b98014610a3c5780639a854bbd14610a755780639a99b4f014610a8a5780639dc0926214610ac3578063a1a11bf514610ad857610381565b806351e8067211610285578063727be1f8116102235780637e434d54116101fd5780637e434d5414610915578063831d65d11461092a5780638525db03146109af5780638eff336c146109e857610381565b8063727be1f81461089757806375d47a0a146108c1578063799758b9146108d657610381565b8063613684751161025f57806361368475146107165780636e056520146107415780636e47b4821461086d57806371d308631461088257610381565b806351e80672146106c257806359b92789146106d75780635d499b1b1461070157610381565b80633d713223116102f257806343a368b9116102cc57806343a368b914610657578063493279b11461066c57806350432d321461069857806351b4dce3146106ad57610381565b80633d7132231461057c5780633fd8b02f1461062d57806343756e5c1461064257610381565b80630e2374a5146103865780631182b875146103b757806312234582146104b1578063149d14d9146104ec57806328087028146105135780632ae454831461052857610381565b3661038157341561037f576040805133815234602082015281517f6c98249d85d88c3753a04a22230f595e4dc8d3dc86c34af35deeeedc861b89db929181900390910190a15b005b600080fd5b34801561039257600080fd5b5061039b610e69565b604080516001600160a01b039092168252519081900360200190f35b3480156103c357600080fd5b5061043c600480360360408110156103da57600080fd5b60ff8235169190810190604081016020820135600160201b8111156103fe57600080fd5b82018360208201111561041057600080fd5b803590602001918460018302840111600160201b8311171561043157600080fd5b509092509050610e6f565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561047657818101518382015260200161045e565b50505050905090810190601f1680156104a35780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3480156104bd57600080fd5b5061037f600480360360408110156104d457600080fd5b506001600160a01b0381358116916020013516610eb7565b3480156104f857600080fd5b50610501610f31565b60408051918252519081900360200190f35b34801561051f57600080fd5b5061039b610f37565b34801561053457600080fd5b506105636004803603604081101561054b57600080fd5b506001600160a01b0381358116916020013516610f3d565b6040805192835260208301919091528051918290030190f35b34801561058857600080fd5b5061039b6004803603602081101561059f57600080fd5b810190602081018135600160201b8111156105b957600080fd5b8201836020820111156105cb57600080fd5b803590602001918460018302840111600160201b831117156105ec57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550610f61945050505050565b34801561063957600080fd5b50610501610f82565b34801561064e57600080fd5b5061039b610f88565b34801561066357600080fd5b50610501610f8e565b34801561067857600080fd5b50610681610f9a565b6040805161ffff9092168252519081900360200190f35b3480156106a457600080fd5b50610501610fa0565b3480156106b957600080fd5b5061039b610fab565b3480156106ce57600080fd5b5061039b610fb1565b3480156106e357600080fd5b5061039b600480360360208110156106fa57600080fd5b5035610fb7565b34801561070d57600080fd5b50610501610fd2565b34801561072257600080fd5b5061072b610fdb565b6040805160ff9092168252519081900360200190f35b6108596004803603608081101561075757600080fd5b810190602081018135600160201b81111561077157600080fd5b82018360208201111561078357600080fd5b803590602001918460208302840111600160201b831117156107a457600080fd5b919390929091602081019035600160201b8111156107c157600080fd5b8201836020820111156107d357600080fd5b803590602001918460208302840111600160201b831117156107f457600080fd5b919390929091602081019035600160201b81111561081157600080fd5b82018360208201111561082357600080fd5b803590602001918460208302840111600160201b8311171561084457600080fd5b91935091503567ffffffffffffffff16610fe0565b604080519115158252519081900360200190f35b34801561087957600080fd5b5061039b611026565b34801561088e57600080fd5b5061050161102c565b3480156108a357600080fd5b50610859600480360360208110156108ba57600080fd5b5035611032565b3480156108cd57600080fd5b5061039b61106e565b3480156108e257600080fd5b5061037f600480360360608110156108f957600080fd5b508035906001600160a01b036020820135169060400135611074565b34801561092157600080fd5b5061039b611324565b34801561093657600080fd5b5061037f6004803603604081101561094d57600080fd5b60ff8235169190810190604081016020820135600160201b81111561097157600080fd5b82018360208201111561098357600080fd5b803590602001918460018302840111600160201b831117156109a457600080fd5b50909250905061132a565b3480156109bb57600080fd5b5061037f600480360360408110156109d257600080fd5b50803590602001356001600160a01b031661136f565b3480156109f457600080fd5b5061037f60048036036060811015610a0b57600080fd5b508035906001600160a01b0360208201351690604001356114d8565b348015610a3357600080fd5b50610501611518565b348015610a4857600080fd5b5061037f60048036036040811015610a5f57600080fd5b506001600160a01b03813516906020013561151f565b348015610a8157600080fd5b506105016115e1565b348015610a9657600080fd5b5061050160048036036040811015610aad57600080fd5b506001600160a01b0381351690602001356115ed565b348015610acf57600080fd5b5061039b611673565b348015610ae457600080fd5b5061039b611679565b348015610af957600080fd5b5061085961167f565b61085960048036036080811015610b1857600080fd5b5080356001600160a01b03908116916020810135909116906040810135906060013567ffffffffffffffff16610fe0565b348015610b5557600080fd5b5061039b611688565b348015610b6a57600080fd5b5061039b61168e565b348015610b7f57600080fd5b50610b88611694565b6040805163ffffffff9092168252519081900360200190f35b348015610bad57600080fd5b5061037f60048036036040811015610bc457600080fd5b810190602081018135600160201b811115610bde57600080fd5b820183602082011115610bf057600080fd5b803590602001918460018302840111600160201b83111715610c1157600080fd5b919390929091602081019035600160201b811115610c2e57600080fd5b820183602082011115610c4057600080fd5b803590602001918460018302840111600160201b83111715610c6157600080fd5b509092509050611699565b348015610c7857600080fd5b5061037f60048036036040811015610c8f57600080fd5b50803590602001356001600160a01b03166114d8565b348015610cb157600080fd5b506105016116d9565b348015610cc657600080fd5b5061050160048036036020811015610cdd57600080fd5b50356001600160a01b03166116e3565b348015610cf957600080fd5b5061050160048036036020811015610d1057600080fd5b50356001600160a01b03166116f5565b348015610d2c57600080fd5b5061039b611710565b348015610d4157600080fd5b5061037f60048036036040811015610d5857600080fd5b506001600160a01b0381358116916020013516611716565b348015610d7c57600080fd5b5061039b6117a9565b348015610d9157600080fd5b5061039b6117af565b348015610da657600080fd5b5061085960048036036020811015610dbd57600080fd5b50356117b5565b348015610dd057600080fd5b5061037f61180d565b348015610de557600080fd5b5061050160048036036020811015610dfc57600080fd5b50356001600160a01b03166118ad565b348015610e1857600080fd5b5061039b6118bf565b348015610e2d57600080fd5b5061043c60048036036020811015610e4457600080fd5b50356001600160a01b03166118c5565b348015610e6057600080fd5b5061039b6119ec565b61200181565b60005460609060ff16610eb7576040805162461bcd60e51b81526020600482015260196024820152600080516020611d9d833981519152604482015290519081900360640190fd5b3361200014610ef75760405162461bcd60e51b815260040180806020018281038252602f815260200180611d4b602f913960400191505060405180910390fd5b6040805162461bcd60e51b815260206004820152600a60248201526919195c1c9958d85d195960b21b604482015290519081900360640190fd5b60015490565b61200581565b60076020908152600092835260408084209091529082529020805460019091015482565b6020908101516000908152600490915260409020546001600160a01b031690565b60055481565b61100181565b670de0b6b3a764000081565b6102ca81565b66071afd498d000081565b61200681565b61200081565b6000908152600460205260409020546001600160a01b031690565b6402540be40081565b600881565b6000805460ff16610ef7576040805162461bcd60e51b81526020600482015260196024820152600080516020611d9d833981519152604482015290519081900360640190fd5b61100581565b60015481565b6040805162461bcd60e51b815260206004820152600a60248201526919195c1c9958d85d195960b21b6044820152905160009181900360640190fd5b61100881565b60005460ff166110b9576040805162461bcd60e51b81526020600482015260196024820152600080516020611d9d833981519152604482015290519081900360640190fd5b33613000146110f95760405162461bcd60e51b815260040180806020018281038252602b815260200180611cd1602b913960400191505060405180910390fd5b677ce66c50e28400008111156111405760405162461bcd60e51b8152600401808060200182810382526035815260200180611c9c6035913960400191505060405180910390fd5b60006221272160e91b84146112aa576000848152600460205260409020546001600160a01b0316806111b3576040805184815290516001600160a01b0386169187917fc16ee9013bf67c846d37735983debb0acc5b2d1419cb5931c9843ad4689505499181900360200190a3505061131f565b6001600160a01b0381166000908152600260205260409020546111d684826119f2565b604080516370a0823160e01b8152306004820152905191945084916001600160a01b038516916370a08231916024808301926020929190829003018186803b15801561122157600080fd5b505afa158015611235573d6000803e3d6000fd5b505050506040513d602081101561124b57600080fd5b50511015611297576040805162461bcd60e51b8152602060048201526014602482015273696e73756666696369656e742062616c616e636560601b604482015290519081900360640190fd5b6112a386838588611a3b565b505061131d565b6112bf826402540be40063ffffffff611ad516565b90508047101561130d576040805162461bcd60e51b8152602060048201526014602482015273696e73756666696369656e742062616c616e636560601b604482015290519081900360640190fd5b600061131b85828487611a3b565b505b505b505050565b61200381565b60005460ff16610eb7576040805162461bcd60e51b81526020600482015260196024820152600080516020611d9d833981519152604482015290519081900360640190fd5b33613000146113af5760405162461bcd60e51b815260040180806020018281038252602b815260200180611cd1602b913960400191505060405180910390fd5b60006221272160e91b831461141a57506000828152600460205260409020546001600160a01b03168061141a576040805162461bcd60e51b815260206004820152600e60248201526d1a5b9d985b1a59081cde5b589bdb60921b604482015290519081900360640190fd5b6001600160a01b0380821660009081526007602090815260408083209386168352929052208054611485576040805162461bcd60e51b815260206004820152601060248201526f1b9bc81b1bd8dad95908185b5bdd5b9d60821b604482015290519081900360640190fd5b8054600082556040805182815290516001600160a01b03808716929086169188917f8041a9a8704332594e2884f5e0f942281cdd7611854c365b4d0aa70b2295d6b6919081900360200190a45050505050565b3361100814610ef75760405162461bcd60e51b8152600401808060200182810382526023815260200180611d7a6023913960400191505060405180910390fd5b62093a8081565b81806001600160a01b031663893d20e86040518163ffffffff1660e01b815260040160206040518083038186803b15801561155957600080fd5b505afa15801561156d573d6000803e3d6000fd5b505050506040513d602081101561158357600080fd5b50516001600160a01b03163314610ef7576040805162461bcd60e51b815260206004820152601860248201527f6e6f74206f776e6572206f6620424550323020746f6b656e0000000000000000604482015290519081900360640190fd5b677ce66c50e284000081565b6000805460ff16611633576040805162461bcd60e51b81526020600482015260196024820152600080516020611d9d833981519152604482015290519081900360640190fd5b3361100514610ef75760405162461bcd60e51b815260040180806020018281038252602f815260200180611c6d602f913960400191505060405180910390fd5b61100781565b61100681565b60005460ff1681565b61200281565b61300081565b600081565b3361100714610ef75760405162461bcd60e51b815260040180806020018281038252602e815260200180611d1d602e913960400191505060405180910390fd5b6221272160e91b81565b60026020526000908152604090205481565b6001600160a01b031660009081526003602052604090205490565b61100281565b60085460ff1660021415611762576040805162461bcd60e51b815260206004820152600e60248201526d4e6f2072652d656e7472616e637960901b604482015290519081900360640190fd5b6008805460ff191660021790556040805162461bcd60e51b815260206004820152600a60248201526919195c1c9958d85d195960b21b604482015290519081900360640190fd5b61100381565b61200481565b60003361200214610ef7576040805162461bcd60e51b815260206004820152601f60248201527f746865206d73672073656e646572206d757374206265207374616b6548756200604482015290519081900360640190fd5b60005460ff1615611865576040805162461bcd60e51b815260206004820152601960248201527f74686520636f6e747261637420616c726561647920696e697400000000000000604482015290519081900360640190fd5b66071afd498d000060019081556000808052600260205260127fac33ff75c19e70fe83507db0d683fd3465c996598dc972688b7ace676c89077b55805460ff19169091179055565b60066020526000908152604090205481565b61100081565b6001600160a01b03811660009081526003602090815260409182902054825182815280840190935260609290918391906020820181803683375050506020810183905290506000805b60208160ff16101561195557828160ff168151811061192957fe5b01602001516001600160f81b031916156119485781600101915061194d565b611955565b60010161190e565b5060608160ff166040519080825280601f01601f191660200182016040528015611986576020820181803683370190505b50905060005b8260ff168160ff1610156119e257838160ff16815181106119a957fe5b602001015160f81c60f81b828260ff16815181106119c357fe5b60200101906001600160f81b031916908160001a90535060010161198c565b5095945050505050565b61100481565b60006008821115611a1b57611a14836007198401600a0a63ffffffff611ad516565b9050611a35565b611a32836008849003600a0a63ffffffff611b2e16565b90505b92915050565b6001600160a01b0380841660009081526007602090815260408083209385168352929052208054611a72908463ffffffff611b7016565b81554262093a80016001820181905560408051858152602081019290925280516001600160a01b03808616939088169289927f446d1aa056e7b903901f49880e9f252762c1b81dc4301cf28db6dae526497eaa9281900390910190a45050505050565b600082611ae457506000611a35565b82820282848281611af157fe5b0414611a325760405162461bcd60e51b8152600401808060200182810382526021815260200180611cfc6021913960400191505060405180910390fd5b6000611a3283836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250611bca565b600082820183811015611a32576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b60008183611c565760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b83811015611c1b578181015183820152602001611c03565b50505050905090810190601f168015611c485780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b506000838581611c6257fe5b049594505050505056fe746865206d6573736167652073656e646572206d75737420626520696e63656e746976697a6520636f6e7472616374616d6f756e7420697320746f6f206c617267652c20657863656564206d6178696d756d206265703220746f6b656e20616d6f756e74746865206d73672073656e646572206d75737420626520746f6b656e207265636f76657220706f7274616c536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f77746865206d6573736167652073656e646572206d75737420626520676f7665726e616e636520636f6e7472616374746865206d6573736167652073656e646572206d7573742062652063726f737320636861696e20636f6e7472616374746865206d73672073656e646572206d75737420626520746f6b656e4d616e6167657274686520636f6e7472616374206e6f7420696e69742079657400000000000000a164736f6c6343000604000a \ No newline at end of file +60806040526004361061036f5760003560e01c80639509b980116101c6578063bbface1f116100f7578063e04c83a711610095578063f9a2bbc71161006f578063f9a2bbc714610e57578063fa9e915914610e6c578063fc1a598f14610e81578063fd6a687914610eb4576103b7565b8063e04c83a714610de5578063e1c7392a14610e0f578063e8f35cea14610e24576103b7565b8063c8509d81116100d1578063c8509d8114610960578063cf41984414610d80578063dc927faf14610dbb578063df8079e914610dd0576103b7565b8063bbface1f14610d05578063bd46646114610d38578063c81b166214610d6b576103b7565b8063aa82dce111610164578063ac4317511161013e578063ac43175114610bd7578063b99328c514610ca2578063b9fd21e314610cdb578063ba35ead614610cf0576103b7565b8063aa82dce114610b7f578063aad5606314610b94578063ab51bb9614610ba9576103b7565b80639dc09262116101a05780639dc0926214610af9578063a1a11bf514610b0e578063a78abc1614610b23578063aa7415f514610b38576103b7565b80639509b98014610a725780639a854bbd14610aab5780639a99b4f014610ac0576103b7565b806359b92789116102a057806375d47a0a1161023e578063831d65d111610218578063831d65d1146109605780638525db03146109e55780638eff336c14610a1e57806393ab703f14610a5d576103b7565b806375d47a0a146108f7578063799758b91461090c5780637e434d541461094b576103b7565b80636e0565201161027a5780636e056520146107775780636e47b482146108a357806371d30863146108b8578063727be1f8146108cd576103b7565b806359b927891461070d5780635d499b1b14610737578063613684751461074c576103b7565b80633fd8b02f1161030d578063493279b1116102e7578063493279b1146106a257806350432d32146106ce57806351b4dce3146106e357806351e80672146106f8576103b7565b80633fd8b02f1461066357806343756e5c1461067857806343a368b91461068d576103b7565b8063149d14d911610349578063149d14d91461052257806328087028146105495780632ae454831461055e5780633d713223146105b2576103b7565b80630e2374a5146103bc5780631182b875146103ed57806312234582146104e7576103b7565b366103b75734156103b5576040805133815234602082015281517f6c98249d85d88c3753a04a22230f595e4dc8d3dc86c34af35deeeedc861b89db929181900390910190a15b005b600080fd5b3480156103c857600080fd5b506103d1610ec9565b604080516001600160a01b039092168252519081900360200190f35b3480156103f957600080fd5b506104726004803603604081101561041057600080fd5b60ff8235169190810190604081016020820135600160201b81111561043457600080fd5b82018360208201111561044657600080fd5b803590602001918460018302840111600160201b8311171561046757600080fd5b509092509050610ecf565b6040805160208082528351818301528351919283929083019185019080838360005b838110156104ac578181015183820152602001610494565b50505050905090810190601f1680156104d95780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3480156104f357600080fd5b506103b56004803603604081101561050a57600080fd5b506001600160a01b0381358116916020013516610f17565b34801561052e57600080fd5b50610537610f91565b60408051918252519081900360200190f35b34801561055557600080fd5b506103d1610f97565b34801561056a57600080fd5b506105996004803603604081101561058157600080fd5b506001600160a01b0381358116916020013516610f9d565b6040805192835260208301919091528051918290030190f35b3480156105be57600080fd5b506103d1600480360360208110156105d557600080fd5b810190602081018135600160201b8111156105ef57600080fd5b82018360208201111561060157600080fd5b803590602001918460018302840111600160201b8311171561062257600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550610fc1945050505050565b34801561066f57600080fd5b50610537610fe2565b34801561068457600080fd5b506103d1610fe8565b34801561069957600080fd5b50610537610fee565b3480156106ae57600080fd5b506106b7610ffa565b6040805161ffff9092168252519081900360200190f35b3480156106da57600080fd5b50610537611000565b3480156106ef57600080fd5b506103d161100b565b34801561070457600080fd5b506103d1611011565b34801561071957600080fd5b506103d16004803603602081101561073057600080fd5b5035611017565b34801561074357600080fd5b50610537611032565b34801561075857600080fd5b5061076161103b565b6040805160ff9092168252519081900360200190f35b61088f6004803603608081101561078d57600080fd5b810190602081018135600160201b8111156107a757600080fd5b8201836020820111156107b957600080fd5b803590602001918460208302840111600160201b831117156107da57600080fd5b919390929091602081019035600160201b8111156107f757600080fd5b82018360208201111561080957600080fd5b803590602001918460208302840111600160201b8311171561082a57600080fd5b919390929091602081019035600160201b81111561084757600080fd5b82018360208201111561085957600080fd5b803590602001918460208302840111600160201b8311171561087a57600080fd5b91935091503567ffffffffffffffff16611040565b604080519115158252519081900360200190f35b3480156108af57600080fd5b506103d1611086565b3480156108c457600080fd5b5061053761108c565b3480156108d957600080fd5b5061088f600480360360208110156108f057600080fd5b5035611092565b34801561090357600080fd5b506103d16110ce565b34801561091857600080fd5b506103b56004803603606081101561092f57600080fd5b508035906001600160a01b0360208201351690604001356110d4565b34801561095757600080fd5b506103d1611384565b34801561096c57600080fd5b506103b56004803603604081101561098357600080fd5b60ff8235169190810190604081016020820135600160201b8111156109a757600080fd5b8201836020820111156109b957600080fd5b803590602001918460018302840111600160201b831117156109da57600080fd5b50909250905061138a565b3480156109f157600080fd5b506103b560048036036040811015610a0857600080fd5b50803590602001356001600160a01b03166113cf565b348015610a2a57600080fd5b506103b560048036036060811015610a4157600080fd5b508035906001600160a01b036020820135169060400135611538565b348015610a6957600080fd5b50610537611578565b348015610a7e57600080fd5b506103b560048036036040811015610a9557600080fd5b506001600160a01b03813516906020013561157f565b348015610ab757600080fd5b50610537611641565b348015610acc57600080fd5b5061053760048036036040811015610ae357600080fd5b506001600160a01b03813516906020013561164d565b348015610b0557600080fd5b506103d16116d3565b348015610b1a57600080fd5b506103d16116d9565b348015610b2f57600080fd5b5061088f6116df565b61088f60048036036080811015610b4e57600080fd5b5080356001600160a01b03908116916020810135909116906040810135906060013567ffffffffffffffff16611040565b348015610b8b57600080fd5b506103d16116e8565b348015610ba057600080fd5b506103d16116ee565b348015610bb557600080fd5b50610bbe6116f4565b6040805163ffffffff9092168252519081900360200190f35b348015610be357600080fd5b506103b560048036036040811015610bfa57600080fd5b810190602081018135600160201b811115610c1457600080fd5b820183602082011115610c2657600080fd5b803590602001918460018302840111600160201b83111715610c4757600080fd5b919390929091602081019035600160201b811115610c6457600080fd5b820183602082011115610c7657600080fd5b803590602001918460018302840111600160201b83111715610c9757600080fd5b5090925090506116f9565b348015610cae57600080fd5b506103b560048036036040811015610cc557600080fd5b50803590602001356001600160a01b0316611538565b348015610ce757600080fd5b50610537611739565b348015610cfc57600080fd5b50610537611743565b348015610d1157600080fd5b5061053760048036036020811015610d2857600080fd5b50356001600160a01b0316611749565b348015610d4457600080fd5b5061053760048036036020811015610d5b57600080fd5b50356001600160a01b031661175b565b348015610d7757600080fd5b506103d1611776565b348015610d8c57600080fd5b506103b560048036036040811015610da357600080fd5b506001600160a01b038135811691602001351661177c565b348015610dc757600080fd5b506103d1611a50565b348015610ddc57600080fd5b506103d1611a56565b348015610df157600080fd5b5061088f60048036036020811015610e0857600080fd5b5035611a5c565b348015610e1b57600080fd5b506103b5611ab4565b348015610e3057600080fd5b5061053760048036036020811015610e4757600080fd5b50356001600160a01b0316611b54565b348015610e6357600080fd5b506103d1611b66565b348015610e7857600080fd5b50610537611b6c565b348015610e8d57600080fd5b5061047260048036036020811015610ea457600080fd5b50356001600160a01b0316611b72565b348015610ec057600080fd5b506103d1611c99565b61200181565b60005460609060ff16610f17576040805162461bcd60e51b8152602060048201526019602482015260008051602061204a833981519152604482015290519081900360640190fd5b3361200014610f575760405162461bcd60e51b815260040180806020018281038252602f815260200180611ff8602f913960400191505060405180910390fd5b6040805162461bcd60e51b815260206004820152600a60248201526919195c1c9958d85d195960b21b604482015290519081900360640190fd5b60015490565b61200581565b60076020908152600092835260408084209091529082529020805460019091015482565b6020908101516000908152600490915260409020546001600160a01b031690565b60055481565b61100181565b670de0b6b3a764000081565b6102ca81565b66071afd498d000081565b61200681565b61200081565b6000908152600460205260409020546001600160a01b031690565b6402540be40081565b600881565b6000805460ff16610f57576040805162461bcd60e51b8152602060048201526019602482015260008051602061204a833981519152604482015290519081900360640190fd5b61100581565b60015481565b6040805162461bcd60e51b815260206004820152600a60248201526919195c1c9958d85d195960b21b6044820152905160009181900360640190fd5b61100881565b60005460ff16611119576040805162461bcd60e51b8152602060048201526019602482015260008051602061204a833981519152604482015290519081900360640190fd5b33613000146111595760405162461bcd60e51b815260040180806020018281038252602b815260200180611f7e602b913960400191505060405180910390fd5b677ce66c50e28400008111156111a05760405162461bcd60e51b8152600401808060200182810382526035815260200180611f496035913960400191505060405180910390fd5b60006221272160e91b841461130a576000848152600460205260409020546001600160a01b031680611213576040805184815290516001600160a01b0386169187917fc16ee9013bf67c846d37735983debb0acc5b2d1419cb5931c9843ad4689505499181900360200190a3505061137f565b6001600160a01b0381166000908152600260205260409020546112368482611c9f565b604080516370a0823160e01b8152306004820152905191945084916001600160a01b038516916370a08231916024808301926020929190829003018186803b15801561128157600080fd5b505afa158015611295573d6000803e3d6000fd5b505050506040513d60208110156112ab57600080fd5b505110156112f7576040805162461bcd60e51b8152602060048201526014602482015273696e73756666696369656e742062616c616e636560601b604482015290519081900360640190fd5b61130386838588611ce8565b505061137d565b61131f826402540be40063ffffffff611d8216565b90508047101561136d576040805162461bcd60e51b8152602060048201526014602482015273696e73756666696369656e742062616c616e636560601b604482015290519081900360640190fd5b600061137b85828487611ce8565b505b505b505050565b61200381565b60005460ff16610f17576040805162461bcd60e51b8152602060048201526019602482015260008051602061204a833981519152604482015290519081900360640190fd5b336130001461140f5760405162461bcd60e51b815260040180806020018281038252602b815260200180611f7e602b913960400191505060405180910390fd5b60006221272160e91b831461147a57506000828152600460205260409020546001600160a01b03168061147a576040805162461bcd60e51b815260206004820152600e60248201526d1a5b9d985b1a59081cde5b589bdb60921b604482015290519081900360640190fd5b6001600160a01b03808216600090815260076020908152604080832093861683529290522080546114e5576040805162461bcd60e51b815260206004820152601060248201526f1b9bc81b1bd8dad95908185b5bdd5b9d60821b604482015290519081900360640190fd5b8054600082556040805182815290516001600160a01b03808716929086169188917f8041a9a8704332594e2884f5e0f942281cdd7611854c365b4d0aa70b2295d6b6919081900360200190a45050505050565b3361100814610f575760405162461bcd60e51b81526004018080602001828103825260238152602001806120276023913960400191505060405180910390fd5b62093a8081565b81806001600160a01b031663893d20e86040518163ffffffff1660e01b815260040160206040518083038186803b1580156115b957600080fd5b505afa1580156115cd573d6000803e3d6000fd5b505050506040513d60208110156115e357600080fd5b50516001600160a01b03163314610f57576040805162461bcd60e51b815260206004820152601860248201527f6e6f74206f776e6572206f6620424550323020746f6b656e0000000000000000604482015290519081900360640190fd5b677ce66c50e284000081565b6000805460ff16611693576040805162461bcd60e51b8152602060048201526019602482015260008051602061204a833981519152604482015290519081900360640190fd5b3361100514610f575760405162461bcd60e51b815260040180806020018281038252602f815260200180611f1a602f913960400191505060405180910390fd5b61100781565b61100681565b60005460ff1681565b61200281565b61300081565b600081565b3361100714610f575760405162461bcd60e51b815260040180806020018281038252602e815260200180611fca602e913960400191505060405180910390fd5b6221272160e91b81565b61c35081565b60026020526000908152604090205481565b6001600160a01b031660009081526003602052604090205490565b61100281565b60085460ff16600214156117c8576040805162461bcd60e51b815260206004820152600e60248201526d4e6f2072652d656e7472616e637960901b604482015290519081900360640190fd5b6008805460ff191660021790556001600160a01b0380831660009081526007602090815260408083209385168352929052208054611840576040805162461bcd60e51b815260206004820152601060248201526f1b9bc81b1bd8dad95908185b5bdd5b9d60821b604482015290519081900360640190fd5b8060010154421015611899576040805162461bcd60e51b815260206004820152601760248201527f7374696c6c206f6e206c6f636b696e6720706572696f64000000000000000000604482015290519081900360640190fd5b805460008083556001600160a01b03851661190c576040516001600160a01b038516906127109084906000818181858888f193505050503d80600081146118fc576040519150601f19603f3d011682016040523d82523d6000602084013e611901565b606091505b50508091505061199f565b846001600160a01b031663a9059cbb61c35086856040518463ffffffff1660e01b815260040180836001600160a01b03166001600160a01b0316815260200182815260200192505050602060405180830381600088803b15801561196f57600080fd5b5087f1158015611983573d6000803e3d6000fd5b50505050506040513d602081101561199a57600080fd5b505190505b806119f1576040805162461bcd60e51b815260206004820152601e60248201527f776974686472617720756e6c6f636b656420746f6b656e206661696c65640000604482015290519081900360640190fd5b836001600160a01b0316856001600160a01b03167f832fc3e25f2b3e6fb0eb59419a73cba405f2a249fce75f7e31ea5a457a0323f1846040518082815260200191505060405180910390a350506008805460ff19166001179055505050565b61100381565b61200481565b60003361200214610f57576040805162461bcd60e51b815260206004820152601f60248201527f746865206d73672073656e646572206d757374206265207374616b6548756200604482015290519081900360640190fd5b60005460ff1615611b0c576040805162461bcd60e51b815260206004820152601960248201527f74686520636f6e747261637420616c726561647920696e697400000000000000604482015290519081900360640190fd5b66071afd498d000060019081556000808052600260205260127fac33ff75c19e70fe83507db0d683fd3465c996598dc972688b7ace676c89077b55805460ff19169091179055565b60066020526000908152604090205481565b61100081565b61271081565b6001600160a01b03811660009081526003602090815260409182902054825182815280840190935260609290918391906020820181803683375050506020810183905290506000805b60208160ff161015611c0257828160ff1681518110611bd657fe5b01602001516001600160f81b03191615611bf557816001019150611bfa565b611c02565b600101611bbb565b5060608160ff166040519080825280601f01601f191660200182016040528015611c33576020820181803683370190505b50905060005b8260ff168160ff161015611c8f57838160ff1681518110611c5657fe5b602001015160f81c60f81b828260ff1681518110611c7057fe5b60200101906001600160f81b031916908160001a905350600101611c39565b5095945050505050565b61100481565b60006008821115611cc857611cc1836007198401600a0a63ffffffff611d8216565b9050611ce2565b611cdf836008849003600a0a63ffffffff611ddb16565b90505b92915050565b6001600160a01b0380841660009081526007602090815260408083209385168352929052208054611d1f908463ffffffff611e1d16565b81554262093a80016001820181905560408051858152602081019290925280516001600160a01b03808616939088169289927f446d1aa056e7b903901f49880e9f252762c1b81dc4301cf28db6dae526497eaa9281900390910190a45050505050565b600082611d9157506000611ce2565b82820282848281611d9e57fe5b0414611cdf5760405162461bcd60e51b8152600401808060200182810382526021815260200180611fa96021913960400191505060405180910390fd5b6000611cdf83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250611e77565b600082820183811015611cdf576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b60008183611f035760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b83811015611ec8578181015183820152602001611eb0565b50505050905090810190601f168015611ef55780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b506000838581611f0f57fe5b049594505050505056fe746865206d6573736167652073656e646572206d75737420626520696e63656e746976697a6520636f6e7472616374616d6f756e7420697320746f6f206c617267652c20657863656564206d6178696d756d206265703220746f6b656e20616d6f756e74746865206d73672073656e646572206d75737420626520746f6b656e207265636f76657220706f7274616c536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f77746865206d6573736167652073656e646572206d75737420626520676f7665726e616e636520636f6e7472616374746865206d6573736167652073656e646572206d7573742062652063726f737320636861696e20636f6e7472616374746865206d73672073656e646572206d75737420626520746f6b656e4d616e6167657274686520636f6e7472616374206e6f7420696e69742079657400000000000000a164736f6c6343000604000a \ No newline at end of file diff --git a/core/systemcontracts/pascal/rialto/TokenRecoverPortalContract b/core/systemcontracts/pascal/rialto/TokenRecoverPortalContract index 26d5bd070e..d7a7587323 100644 --- a/core/systemcontracts/pascal/rialto/TokenRecoverPortalContract +++ b/core/systemcontracts/pascal/rialto/TokenRecoverPortalContract @@ -1 +1 @@ -608060405234801561001057600080fd5b50600436106100f55760003560e01c80638129fc1c11610097578063b187bd2611610066578063b187bd26146101fc578063bfb5a6a114610207578063e33f8d321461021a578063e842426a1461023d57600080fd5b80638129fc1c146101cc5780638456cb59146101d45780639fcb5012146101dc578063ac431751146101e957600080fd5b80634838d165116100d35780634838d165146101335780634a49ac4c14610166578063572c99801461017957806374be21501461018c57600080fd5b8063046f7da2146100fa5780632eb4a7ab14610104578063417c73a714610120575b600080fd5b610102610268565b005b61010d60685481565b6040519081526020015b60405180910390f35b61010261012e36600461165e565b6102f0565b61015661014136600461165e565b60346020526000908152604090205460ff1681565b6040519015158152602001610117565b61010261017436600461165e565b61036c565b610102610187366004611679565b6103e5565b6101bf6040518060400160405280601481526020017342696e616e63652d436861696e2d47616e67657360601b81525081565b60405161011791906116f5565b61010261047b565b6101026105db565b6069546101569060ff1681565b6101026101f7366004611751565b610667565b60335460ff16610156565b610102610215366004611802565b610a86565b6101566102283660046118dc565b6000908152606a602052604090205460ff1690565b606754610250906001600160a01b031681565b6040516001600160a01b039091168152602001610117565b60335461010090046001600160a01b03163314610298576040516306fbb1e360e01b815260040160405180910390fd5b60335460ff166102bb57604051636cd6020160e01b815260040160405180910390fd5b6033805460ff191690556040517f62451d457bc659158be6e6247f56ec1df424a5c7597f71c20c2bc44e0965c8f990600090a1565b60335461010090046001600160a01b03163314610320576040516306fbb1e360e01b815260040160405180910390fd5b6001600160a01b038116600081815260346020526040808220805460ff19166001179055517f7fd26be6fc92aff63f1f4409b2b2ddeb272a888031d7f55ec830485ec61941869190a250565b60335461010090046001600160a01b0316331461039c576040516306fbb1e360e01b815260040160405180910390fd5b6001600160a01b038116600081815260346020526040808220805460ff19169055517fe0db3499b7fdc3da4cddff5f45d694549c19835e7f719fb5606d3ad1a5de40119190a250565b60335461010090046001600160a01b03163314610415576040516306fbb1e360e01b815260040160405180910390fd5b604051638525db0360e01b8152600481018390526001600160a01b038216602482015261100490638525db0390604401600060405180830381600087803b15801561045f57600080fd5b505af1158015610473573d6000803e3d6000fd5b505050505050565b600054610100900460ff161580801561049b5750600054600160ff909116105b806104b55750303b1580156104b5575060005460ff166001145b61051d5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084015b60405180910390fd5b6000805460ff191660011790558015610540576000805461ff0019166101001790555b3341146105605760405163022d8c9560e31b815260040160405180910390fd5b3a1561057f576040516383f1b1d360e01b815260040160405180910390fd5b610587610de6565b61059261dead610e13565b80156105d8576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b50565b60335461010090046001600160a01b0316331461060b576040516306fbb1e360e01b815260040160405180910390fd5b60335460ff161561062f57604051631785c68160e01b815260040160405180910390fd5b6033805460ff191660011790556040517f9e87fac88ff661f02d44f95383c817fece4bce600a3dab7a54406878b965e75290600090a1565b336110071461068d57604051630f22c43960e41b81526110076004820152602401610514565b6106f76040518060400160405280600f81526020016e617070726f76616c4164647265737360881b81525085858080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509293925050610e629050565b156107c157601481146107255783838383604051630a5a604160e01b8152600401610514949392919061191e565b600061076b601484848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509293925050610ebc9050565b90506001600160a01b03811661079c5784848484604051630a5a604160e01b8152600401610514949392919061191e565b606780546001600160a01b0319166001600160a01b0392909216919091179055610a43565b6108266040518060400160405280600a8152602001691b595c9adb19549bdbdd60b21b81525085858080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509293925050610e629050565b156108f65760695460ff161561084f576040516379b3306f60e11b815260040160405180910390fd5b602081146108785783838383604051630a5a604160e01b8152600401610514949392919061191e565b604080516020601f84018190048102820181019092528281526000916108b9918585808385018382808284376000920191909152509293925050610ebc9050565b9050806108e15784848484604051630a5a604160e01b8152600401610514949392919061191e565b6068556069805460ff19166001179055610a43565b61096e6040518060400160405280601b81526020017f746f6b656e5265636f766572506f7274616c50726f746563746f72000000000081525085858080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509293925050610e629050565b15610a22576014811461099c5783838383604051630a5a604160e01b8152600401610514949392919061191e565b60006109e2601484848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509293925050610ebc9050565b90506001600160a01b038116610a135784848484604051630a5a604160e01b8152600401610514949392919061191e565b610a1c81610ec1565b50610a43565b838383836040516325ee20d560e21b8152600401610514949392919061191e565b7ff1ce9b2cbf50eeb05769a29e2543fd350cab46894a7dd9978a12d534bb20e63384848484604051610a78949392919061191e565b60405180910390a150505050565b60695460ff16610aa95760405163678f619760e11b815260040160405180910390fd5b606854610ac95760405163678f619760e11b815260040160405180910390fd5b6067546001600160a01b0316610af257604051631a1b977b60e31b815260040160405180910390fd5b60335460ff1615610b1657604051631785c68160e01b815260040160405180910390fd5b610b1e610f28565b6000610bac89898080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050604080516020601f8d018190048102820181019092528b815292508b91508a9081908401838280828437600081840152601f19601f82011690508083019250505050505050610ba78e8e33610f81565b6110a2565b90506000818c8c604051602001610bc593929190611950565b604051602081830303815290604052805190602001209050610bf6816000908152606a602052604090205460ff1690565b15610c1357604051623e493160e81b815260040160405180910390fd5b610cbb3389898080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050604080516020601f8d018190048102820181019092528b815292508b91508a908190840183828082843760009201919091525050604080516020808c0282810182019093528b82528994509092508b918b9182919085019084908082843760009201919091525061117a92505050565b610cfc848480806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250506068549150849050611285565b610d19576040516309bde33960e01b815260040160405180910390fd5b6000818152606a602052604090819020805460ff191660011790555163799758b960e01b8152600481018d9052336024820152604481018c90526110049063799758b990606401600060405180830381600087803b158015610d7a57600080fd5b505af1158015610d8e573d6000803e3d6000fd5b505050507f39cc0b7297a0ef9102d75ebc4919ffec0347d50008c2b865eda4125d5812cb64828d338e604051610dc79493929190611977565b60405180910390a15050610dda60018055565b50505050505050505050565b600054610100900460ff16610e0d5760405162461bcd60e51b8152600401610514906119af565b60018055565b600054610100900460ff16610e3a5760405162461bcd60e51b8152600401610514906119af565b603380546001600160a01b0390921661010002610100600160a81b0319909216919091179055565b600081604051602001610e7591906119fa565b6040516020818303038152906040528051906020012083604051602001610e9c91906119fa565b604051602081830303815290604052805190602001201490505b92915050565b015190565b6033546040516001600160a01b0380841692610100900416907f44fc1b38a4abaa91ebd1b628a5b259a698f86238c8217d68f516e87769c60c0b90600090a3603380546001600160a01b0390921661010002610100600160a81b0319909216919091179055565b600260015403610f7a5760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610514565b6002600155565b600060026040518060400160405280601481526020017342696e616e63652d436861696e2d47616e67657360601b815250610fde85604051602001610fc891815260200190565b604051602081830303815290604052600061129b565b6040516bffffffffffffffffffffffff19606087901b16602082015261101790603401604051602081830303815290604052600161129b565b61102d88604051602001610fc891815260200190565b6040516020016110409493929190611a16565b60408051601f198184030181529082905261105a916119fa565b602060405180830381855afa158015611077573d6000803e3d6000fd5b5050506040513d601f19601f8201168201806040525081019061109a9190611b45565b949350505050565b606083516021146110c657604051638152ea1b60e01b815260040160405180910390fd5b82516040146110e857604051635e4bd79760e11b815260040160405180910390fd5b604080516020808252818301909252600091602082018180368337019050509050826020820152600085858360405160200161112693929190611b74565b60408051808303601f190181526014808452838301909252925060009190602082018180368337019050509050815160146020830182602086016069600019fa61116f57600080fd5b509695505050505050565b606060005b82518110156111d8578183828151811061119b5761119b611bb7565b60200260200101516040516020016111b4929190611bcd565b604051602081830303815290604052915080806111d090611c05565b91505061117f565b5060006040518060400160405280601481526020017342696e616e63652d436861696e2d47616e67657360601b8152508787866068548660405160200161122496959493929190611c1e565b60408051601f1981840301815291905280516020909101206067549091506001600160a01b0316611255868361146d565b6001600160a01b03161461127c576040516356b00a4f60e11b815260040160405180910390fd5b50505050505050565b6000826112928584611507565b14949350505050565b60606000835160026112ad9190611c8f565b67ffffffffffffffff8111156112c5576112c5611b5e565b6040519080825280601f01601f1916602001820160405280156112ef576020820181803683370190505b5060408051808201909152601081526f181899199a1a9b1b9c1cb0b131b232b360811b602082015290915060005b85518110156114355781825187838151811061133b5761133b611bb7565b016020015161134d919060f81c611cbc565b8151811061135d5761135d611bb7565b01602001516001600160f81b03191683611378836002611c8f565b8151811061138857611388611bb7565b60200101906001600160f81b031916908160001a9053508182518783815181106113b4576113b4611bb7565b01602001516113c6919060f81c611cd0565b815181106113d6576113d6611bb7565b01602001516001600160f81b031916836113f1836002611c8f565b6113fc906001611ce4565b8151811061140c5761140c611bb7565b60200101906001600160f81b031916908160001a9053508061142d81611c05565b91505061131d565b508315611465578160405160200161144d9190611cf7565b60405160208183030381529060405292505050610eb6565b509392505050565b60008251604114611491576040516356b00a4f60e11b815260040160405180910390fd5b60208301516040840151606085015160001a601b8110156114ba576114b7601b82611d21565b90505b601b8160ff1610806114cf5750601c8160ff16115b156114ed576040516356b00a4f60e11b815260040160405180910390fd5b60006114fb8683868661154c565b50979650505050505050565b600081815b8451811015611465576115388286838151811061152b5761152b611bb7565b6020026020010151611610565b91508061154481611c05565b91505061150c565b6000807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a08311156115835750600090506003611607565b6040805160008082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa1580156115d7573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b03811661160057600060019250925050611607565b9150600090505b94509492505050565b600081831061162c57600082815260208490526040902061163b565b60008381526020839052604090205b9392505050565b80356001600160a01b038116811461165957600080fd5b919050565b60006020828403121561167057600080fd5b61163b82611642565b6000806040838503121561168c57600080fd5b8235915061169c60208401611642565b90509250929050565b60005b838110156116c05781810151838201526020016116a8565b50506000910152565b600081518084526116e18160208601602086016116a5565b601f01601f19169290920160200192915050565b60208152600061163b60208301846116c9565b60008083601f84011261171a57600080fd5b50813567ffffffffffffffff81111561173257600080fd5b60208301915083602082850101111561174a57600080fd5b9250929050565b6000806000806040858703121561176757600080fd5b843567ffffffffffffffff8082111561177f57600080fd5b61178b88838901611708565b909650945060208701359150808211156117a457600080fd5b506117b187828801611708565b95989497509550505050565b60008083601f8401126117cf57600080fd5b50813567ffffffffffffffff8111156117e757600080fd5b6020830191508360208260051b850101111561174a57600080fd5b60008060008060008060008060008060c08b8d03121561182157600080fd5b8a35995060208b0135985060408b013567ffffffffffffffff8082111561184757600080fd5b6118538e838f01611708565b909a50985060608d013591508082111561186c57600080fd5b6118788e838f01611708565b909850965060808d013591508082111561189157600080fd5b61189d8e838f01611708565b909650945060a08d01359150808211156118b657600080fd5b506118c38d828e016117bd565b915080935050809150509295989b9194979a5092959850565b6000602082840312156118ee57600080fd5b5035919050565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b6040815260006119326040830186886118f5565b82810360208401526119458185876118f5565b979650505050505050565b600084516119628184602089016116a5565b91909101928352506020820152604001919050565b60808152600061198a60808301876116c9565b6020830195909552506001600160a01b03929092166040830152606090910152919050565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b60008251611a0c8184602087016116a5565b9190910192915050565b7f7b226163636f756e745f6e756d626572223a2230222c22636861696e5f6964228152611d1160f11b602082015260008551611a59816022850160208a016116a5565b7f222c2264617461223a6e756c6c2c226d656d6f223a22222c226d736773223a5b6022918401918201526a3d9130b6b7bab73a111d1160a91b60428201528551611aaa81604d840160208a016116a5565b6e1116113932b1b4b834b2b73a111d1160891b604d92909101918201528451611ada81605c8401602089016116a5565b711116113a37b5b2b72fb9bcb6b137b6111d1160711b605c92909101918201528351611b0d81606e8401602088016116a5565b7f227d5d2c2273657175656e6365223a2230222c22736f75726365223a2230227d606e9290910191820152608e019695505050505050565b600060208284031215611b5757600080fd5b5051919050565b634e487b7160e01b600052604160045260246000fd5b60008451611b868184602089016116a5565b845190830190611b9a8183602089016116a5565b8451910190611bad8183602088016116a5565b0195945050505050565b634e487b7160e01b600052603260045260246000fd5b60008351611bdf8184602088016116a5565b9190910191825250602001919050565b634e487b7160e01b600052601160045260246000fd5b600060018201611c1757611c17611bef565b5060010190565b60008751611c30818460208c016116a5565b606088901b6bffffffffffffffffffffffff19169083019081528651611c5d816014840160208b016116a5565b0160148101869052603481018590528351611c7f8160548401602088016116a5565b0160540198975050505050505050565b8082028115828204841417610eb657610eb6611bef565b634e487b7160e01b600052601260045260246000fd5b600082611ccb57611ccb611ca6565b500490565b600082611cdf57611cdf611ca6565b500690565b80820180821115610eb657610eb6611bef565b61060f60f31b815260008251611d148160028501602087016116a5565b9190910160020192915050565b60ff8181168382160190811115610eb657610eb6611bef56fea164736f6c6343000811000a \ No newline at end of file +608060405234801561001057600080fd5b50600436106101005760003560e01c80638456cb5911610097578063bfb5a6a111610066578063bfb5a6a114610212578063dd42a1dd14610225578063e33f8d321461024f578063e842426a1461027257600080fd5b80638456cb59146101df5780639fcb5012146101e7578063ac431751146101f4578063b187bd261461020757600080fd5b80634a49ac4c116100d35780634a49ac4c14610171578063572c99801461018457806374be2150146101975780638129fc1c146101d757600080fd5b8063046f7da2146101055780632eb4a7ab1461010f578063417c73a71461012b5780634838d1651461013e575b600080fd5b61010d610285565b005b61011860685481565b6040519081526020015b60405180910390f35b61010d61013936600461167b565b61030d565b61016161014c36600461167b565b60346020526000908152604090205460ff1681565b6040519015158152602001610122565b61010d61017f36600461167b565b610389565b61010d610192366004611696565b610402565b6101ca6040518060400160405280601481526020017342696e616e63652d436861696e2d47616e67657360601b81525081565b6040516101229190611712565b61010d610498565b61010d6105f8565b6069546101619060ff1681565b61010d61020236600461176e565b610684565b60335460ff16610161565b61010d61022036600461181f565b610aa3565b60335461010090046001600160a01b03165b6040516001600160a01b039091168152602001610122565b61016161025d3660046118f9565b6000908152606a602052604090205460ff1690565b606754610237906001600160a01b031681565b60335461010090046001600160a01b031633146102b5576040516306fbb1e360e01b815260040160405180910390fd5b60335460ff166102d857604051636cd6020160e01b815260040160405180910390fd5b6033805460ff191690556040517f62451d457bc659158be6e6247f56ec1df424a5c7597f71c20c2bc44e0965c8f990600090a1565b60335461010090046001600160a01b0316331461033d576040516306fbb1e360e01b815260040160405180910390fd5b6001600160a01b038116600081815260346020526040808220805460ff19166001179055517f7fd26be6fc92aff63f1f4409b2b2ddeb272a888031d7f55ec830485ec61941869190a250565b60335461010090046001600160a01b031633146103b9576040516306fbb1e360e01b815260040160405180910390fd5b6001600160a01b038116600081815260346020526040808220805460ff19169055517fe0db3499b7fdc3da4cddff5f45d694549c19835e7f719fb5606d3ad1a5de40119190a250565b60335461010090046001600160a01b03163314610432576040516306fbb1e360e01b815260040160405180910390fd5b604051638525db0360e01b8152600481018390526001600160a01b038216602482015261100490638525db0390604401600060405180830381600087803b15801561047c57600080fd5b505af1158015610490573d6000803e3d6000fd5b505050505050565b600054610100900460ff16158080156104b85750600054600160ff909116105b806104d25750303b1580156104d2575060005460ff166001145b61053a5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084015b60405180910390fd5b6000805460ff19166001179055801561055d576000805461ff0019166101001790555b33411461057d5760405163022d8c9560e31b815260040160405180910390fd5b3a1561059c576040516383f1b1d360e01b815260040160405180910390fd5b6105a4610e03565b6105af61dead610e30565b80156105f5576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b50565b60335461010090046001600160a01b03163314610628576040516306fbb1e360e01b815260040160405180910390fd5b60335460ff161561064c57604051631785c68160e01b815260040160405180910390fd5b6033805460ff191660011790556040517f9e87fac88ff661f02d44f95383c817fece4bce600a3dab7a54406878b965e75290600090a1565b33611007146106aa57604051630f22c43960e41b81526110076004820152602401610531565b6107146040518060400160405280600f81526020016e617070726f76616c4164647265737360881b81525085858080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509293925050610e7f9050565b156107de57601481146107425783838383604051630a5a604160e01b8152600401610531949392919061193b565b6000610788601484848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509293925050610ed99050565b90506001600160a01b0381166107b95784848484604051630a5a604160e01b8152600401610531949392919061193b565b606780546001600160a01b0319166001600160a01b0392909216919091179055610a60565b6108436040518060400160405280600a8152602001691b595c9adb19549bdbdd60b21b81525085858080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509293925050610e7f9050565b156109135760695460ff161561086c576040516379b3306f60e11b815260040160405180910390fd5b602081146108955783838383604051630a5a604160e01b8152600401610531949392919061193b565b604080516020601f84018190048102820181019092528281526000916108d6918585808385018382808284376000920191909152509293925050610ed99050565b9050806108fe5784848484604051630a5a604160e01b8152600401610531949392919061193b565b6068556069805460ff19166001179055610a60565b61098b6040518060400160405280601b81526020017f746f6b656e5265636f766572506f7274616c50726f746563746f72000000000081525085858080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509293925050610e7f9050565b15610a3f57601481146109b95783838383604051630a5a604160e01b8152600401610531949392919061193b565b60006109ff601484848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509293925050610ed99050565b90506001600160a01b038116610a305784848484604051630a5a604160e01b8152600401610531949392919061193b565b610a3981610ede565b50610a60565b838383836040516325ee20d560e21b8152600401610531949392919061193b565b7ff1ce9b2cbf50eeb05769a29e2543fd350cab46894a7dd9978a12d534bb20e63384848484604051610a95949392919061193b565b60405180910390a150505050565b60695460ff16610ac65760405163678f619760e11b815260040160405180910390fd5b606854610ae65760405163678f619760e11b815260040160405180910390fd5b6067546001600160a01b0316610b0f57604051631a1b977b60e31b815260040160405180910390fd5b60335460ff1615610b3357604051631785c68160e01b815260040160405180910390fd5b610b3b610f45565b6000610bc989898080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050604080516020601f8d018190048102820181019092528b815292508b91508a9081908401838280828437600081840152601f19601f82011690508083019250505050505050610bc48e8e33610f9e565b6110bf565b90506000818c8c604051602001610be29392919061196d565b604051602081830303815290604052805190602001209050610c13816000908152606a602052604090205460ff1690565b15610c3057604051623e493160e81b815260040160405180910390fd5b610cd83389898080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050604080516020601f8d018190048102820181019092528b815292508b91508a908190840183828082843760009201919091525050604080516020808c0282810182019093528b82528994509092508b918b9182919085019084908082843760009201919091525061119792505050565b610d198484808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152505060685491508490506112a2565b610d36576040516309bde33960e01b815260040160405180910390fd5b6000818152606a602052604090819020805460ff191660011790555163799758b960e01b8152600481018d9052336024820152604481018c90526110049063799758b990606401600060405180830381600087803b158015610d9757600080fd5b505af1158015610dab573d6000803e3d6000fd5b505050507f39cc0b7297a0ef9102d75ebc4919ffec0347d50008c2b865eda4125d5812cb64828d338e604051610de49493929190611994565b60405180910390a15050610df760018055565b50505050505050505050565b600054610100900460ff16610e2a5760405162461bcd60e51b8152600401610531906119cc565b60018055565b600054610100900460ff16610e575760405162461bcd60e51b8152600401610531906119cc565b603380546001600160a01b0390921661010002610100600160a81b0319909216919091179055565b600081604051602001610e929190611a17565b6040516020818303038152906040528051906020012083604051602001610eb99190611a17565b604051602081830303815290604052805190602001201490505b92915050565b015190565b6033546040516001600160a01b0380841692610100900416907f44fc1b38a4abaa91ebd1b628a5b259a698f86238c8217d68f516e87769c60c0b90600090a3603380546001600160a01b0390921661010002610100600160a81b0319909216919091179055565b600260015403610f975760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610531565b6002600155565b600060026040518060400160405280601481526020017342696e616e63652d436861696e2d47616e67657360601b815250610ffb85604051602001610fe591815260200190565b60405160208183030381529060405260006112b8565b6040516bffffffffffffffffffffffff19606087901b1660208201526110349060340160405160208183030381529060405260016112b8565b61104a88604051602001610fe591815260200190565b60405160200161105d9493929190611a33565b60408051601f198184030181529082905261107791611a17565b602060405180830381855afa158015611094573d6000803e3d6000fd5b5050506040513d601f19601f820116820180604052508101906110b79190611b62565b949350505050565b606083516021146110e357604051638152ea1b60e01b815260040160405180910390fd5b825160401461110557604051635e4bd79760e11b815260040160405180910390fd5b604080516020808252818301909252600091602082018180368337019050509050826020820152600085858360405160200161114393929190611b91565b60408051808303601f190181526014808452838301909252925060009190602082018180368337019050509050815160146020830182602086016069600019fa61118c57600080fd5b509695505050505050565b606060005b82518110156111f557818382815181106111b8576111b8611bd4565b60200260200101516040516020016111d1929190611bea565b604051602081830303815290604052915080806111ed90611c22565b91505061119c565b5060006040518060400160405280601481526020017342696e616e63652d436861696e2d47616e67657360601b8152508787866068548660405160200161124196959493929190611c3b565b60408051601f1981840301815291905280516020909101206067549091506001600160a01b0316611272868361148a565b6001600160a01b031614611299576040516356b00a4f60e11b815260040160405180910390fd5b50505050505050565b6000826112af8584611524565b14949350505050565b60606000835160026112ca9190611cac565b67ffffffffffffffff8111156112e2576112e2611b7b565b6040519080825280601f01601f19166020018201604052801561130c576020820181803683370190505b5060408051808201909152601081526f181899199a1a9b1b9c1cb0b131b232b360811b602082015290915060005b85518110156114525781825187838151811061135857611358611bd4565b016020015161136a919060f81c611cd9565b8151811061137a5761137a611bd4565b01602001516001600160f81b03191683611395836002611cac565b815181106113a5576113a5611bd4565b60200101906001600160f81b031916908160001a9053508182518783815181106113d1576113d1611bd4565b01602001516113e3919060f81c611ced565b815181106113f3576113f3611bd4565b01602001516001600160f81b0319168361140e836002611cac565b611419906001611d01565b8151811061142957611429611bd4565b60200101906001600160f81b031916908160001a9053508061144a81611c22565b91505061133a565b508315611482578160405160200161146a9190611d14565b60405160208183030381529060405292505050610ed3565b509392505050565b600082516041146114ae576040516356b00a4f60e11b815260040160405180910390fd5b60208301516040840151606085015160001a601b8110156114d7576114d4601b82611d3e565b90505b601b8160ff1610806114ec5750601c8160ff16115b1561150a576040516356b00a4f60e11b815260040160405180910390fd5b600061151886838686611569565b50979650505050505050565b600081815b8451811015611482576115558286838151811061154857611548611bd4565b602002602001015161162d565b91508061156181611c22565b915050611529565b6000807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a08311156115a05750600090506003611624565b6040805160008082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa1580156115f4573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b03811661161d57600060019250925050611624565b9150600090505b94509492505050565b6000818310611649576000828152602084905260409020611658565b60008381526020839052604090205b9392505050565b80356001600160a01b038116811461167657600080fd5b919050565b60006020828403121561168d57600080fd5b6116588261165f565b600080604083850312156116a957600080fd5b823591506116b96020840161165f565b90509250929050565b60005b838110156116dd5781810151838201526020016116c5565b50506000910152565b600081518084526116fe8160208601602086016116c2565b601f01601f19169290920160200192915050565b60208152600061165860208301846116e6565b60008083601f84011261173757600080fd5b50813567ffffffffffffffff81111561174f57600080fd5b60208301915083602082850101111561176757600080fd5b9250929050565b6000806000806040858703121561178457600080fd5b843567ffffffffffffffff8082111561179c57600080fd5b6117a888838901611725565b909650945060208701359150808211156117c157600080fd5b506117ce87828801611725565b95989497509550505050565b60008083601f8401126117ec57600080fd5b50813567ffffffffffffffff81111561180457600080fd5b6020830191508360208260051b850101111561176757600080fd5b60008060008060008060008060008060c08b8d03121561183e57600080fd5b8a35995060208b0135985060408b013567ffffffffffffffff8082111561186457600080fd5b6118708e838f01611725565b909a50985060608d013591508082111561188957600080fd5b6118958e838f01611725565b909850965060808d01359150808211156118ae57600080fd5b6118ba8e838f01611725565b909650945060a08d01359150808211156118d357600080fd5b506118e08d828e016117da565b915080935050809150509295989b9194979a5092959850565b60006020828403121561190b57600080fd5b5035919050565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b60408152600061194f604083018688611912565b8281036020840152611962818587611912565b979650505050505050565b6000845161197f8184602089016116c2565b91909101928352506020820152604001919050565b6080815260006119a760808301876116e6565b6020830195909552506001600160a01b03929092166040830152606090910152919050565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b60008251611a298184602087016116c2565b9190910192915050565b7f7b226163636f756e745f6e756d626572223a2230222c22636861696e5f6964228152611d1160f11b602082015260008551611a76816022850160208a016116c2565b7f222c2264617461223a6e756c6c2c226d656d6f223a22222c226d736773223a5b6022918401918201526a3d9130b6b7bab73a111d1160a91b60428201528551611ac781604d840160208a016116c2565b6e1116113932b1b4b834b2b73a111d1160891b604d92909101918201528451611af781605c8401602089016116c2565b711116113a37b5b2b72fb9bcb6b137b6111d1160711b605c92909101918201528351611b2a81606e8401602088016116c2565b7f227d5d2c2273657175656e6365223a2230222c22736f75726365223a2230227d606e9290910191820152608e019695505050505050565b600060208284031215611b7457600080fd5b5051919050565b634e487b7160e01b600052604160045260246000fd5b60008451611ba38184602089016116c2565b845190830190611bb78183602089016116c2565b8451910190611bca8183602088016116c2565b0195945050505050565b634e487b7160e01b600052603260045260246000fd5b60008351611bfc8184602088016116c2565b9190910191825250602001919050565b634e487b7160e01b600052601160045260246000fd5b600060018201611c3457611c34611c0c565b5060010190565b60008751611c4d818460208c016116c2565b606088901b6bffffffffffffffffffffffff19169083019081528651611c7a816014840160208b016116c2565b0160148101869052603481018590528351611c9c8160548401602088016116c2565b0160540198975050505050505050565b8082028115828204841417610ed357610ed3611c0c565b634e487b7160e01b600052601260045260246000fd5b600082611ce857611ce8611cc3565b500490565b600082611cfc57611cfc611cc3565b500690565b80820180821115610ed357610ed3611c0c565b61060f60f31b815260008251611d318160028501602087016116c2565b9190910160020192915050565b60ff8181168382160190811115610ed357610ed3611c0c56fea164736f6c6343000811000a \ No newline at end of file diff --git a/core/systemcontracts/pascal/rialto/ValidatorContract b/core/systemcontracts/pascal/rialto/ValidatorContract index 81e1548a71..1bc31fd8ba 100644 --- a/core/systemcontracts/pascal/rialto/ValidatorContract +++ b/core/systemcontracts/pascal/rialto/ValidatorContract @@ -1 +1 @@ -6080604052600436106104565760003560e01c80638c5d749d1161023f578063c81b166211610139578063e1c7392a116100b6578063f92eb86b1161007a578063f92eb86b14610b7f578063f9a2bbc714610b94578063fccc281314610ba9578063fd4ad81f14610bbe578063fd6a687914610bed5761045d565b8063e1c7392a14610b02578063e40716a114610b17578063ea321e4914610b2c578063eb57e20214610b4c578063f340fa0114610b6c5761045d565b8063d68fb56a116100fd578063d68fb56a14610a99578063daacdb6614610aae578063dc927faf14610ac3578063df8079e914610ad8578063e086c7b114610aed5761045d565b8063c81b166214610a3a578063c8509d81146107fc578063cb75a59214610a4f578063ce910b0c14610a64578063d58918ae14610a845761045d565b8063aa82dce1116101c7578063aef198a91161018b578063aef198a9146109c4578063b7ab4db5146109d9578063b8cf4ef1146109fb578063c466689d14610a10578063c6d3394514610a255761045d565b8063aa82dce114610938578063aad560631461094d578063ab51bb9614610962578063ac43175114610984578063ad3c9da6146109a45761045d565b80639fe0f8161161020e5780639fe0f816146108cf578063a0dc2758146108e4578063a1a11bf5146108f9578063a5422d5c1461090e578063a78abc16146109235761045d565b80638c5d749d146108705780638d19a410146108855780639369d7de146108a55780639dc09262146108ba5761045d565b80635192c82c1161035057806375d47a0a116102d8578063831d65d11161029c578063831d65d1146107fc578063862498821461081c57806388b32f11146108315780638a7beb01146108465780638b5ad0c91461085b5761045d565b806375d47a0a1461079357806378dfed4a146107a85780637a84ca2a146107bd5780637e434d54146107d2578063820dcaa8146107e75761045d565b8063565c56b31161031f578063565c56b3146106f757806360eba4fe1461071757806362b72cf5146107375780636969a25c1461074c5780636e47b4821461077e5761045d565b80635192c82c1461069857806351b4dce3146106ad57806351e80672146106c257806355614fcc146106d75761045d565b80632a0ffb6e116103de5780633b071dcc116103a25780633b071dcc1461061457806343756e5c1461063757806345cf9daf1461064c578063493279b1146106615780634df6e0c3146106835761045d565b80632a0ffb6e14610574578063300c356714610594578063321d398a146105b45780633365af3a146105d457806335409f7f146105f45761045d565b8063152ad3b811610425578063152ad3b8146104f35780631bd14ed8146105155780631e4c15241461052a5780631ff180691461054a578063280870281461055f5761045d565b806304c4fec61461046257806307a56847146104795780630e2374a5146104a45780631182b875146104c65761045d565b3661045d57005b600080fd5b34801561046e57600080fd5b50610477610c02565b005b34801561048557600080fd5b5061048e610c76565b60405161049b9190616e0c565b60405180910390f35b3480156104b057600080fd5b506104b9610c7c565b60405161049b91906161c2565b3480156104d257600080fd5b506104e66104e13660046160a8565b610c82565b60405161049b91906162e2565b3480156104ff57600080fd5b50610508610d7d565b60405161049b91906162d7565b34801561052157600080fd5b5061048e610d86565b34801561053657600080fd5b50610477610545366004615ed6565b610d8c565b34801561055657600080fd5b5061048e6110c0565b34801561056b57600080fd5b506104b96110c6565b34801561058057600080fd5b5061047761058f366004615e36565b6110cc565b3480156105a057600080fd5b506104776105af366004615e6e565b6110ed565b3480156105c057600080fd5b506105086105cf366004616055565b611436565b3480156105e057600080fd5b506105086105ef366004616055565b611505565b34801561060057600080fd5b5061047761060f366004615e36565b6115b6565b34801561062057600080fd5b5061062961171b565b60405161049b929190616267565b34801561064357600080fd5b506104b96119f7565b34801561065857600080fd5b5061048e6119fd565b34801561066d57600080fd5b50610676611a03565b60405161049b9190616dfd565b34801561068f57600080fd5b50610629611a09565b3480156106a457600080fd5b5061048e611b95565b3480156106b957600080fd5b506104b9611b9b565b3480156106ce57600080fd5b506104b9611ba1565b3480156106e357600080fd5b506105086106f2366004615e36565b611ba7565b34801561070357600080fd5b5061048e610712366004615e36565b611be3565b34801561072357600080fd5b506104e6610732366004616055565b611c34565b34801561074357600080fd5b5061048e611cda565b34801561075857600080fd5b5061076c610767366004616055565b611ce0565b60405161049b969594939291906161ef565b34801561078a57600080fd5b506104b9611d44565b34801561079f57600080fd5b506104b9611d4a565b3480156107b457600080fd5b5061048e611d50565b3480156107c957600080fd5b5061048e611d56565b3480156107de57600080fd5b506104b9611d5c565b3480156107f357600080fd5b5061048e611d62565b34801561080857600080fd5b506104776108173660046160a8565b611d68565b34801561082857600080fd5b5061048e611d89565b34801561083d57600080fd5b5061048e611d8f565b34801561085257600080fd5b50610508611d95565b34801561086757600080fd5b5061048e611d9e565b34801561087c57600080fd5b5061048e611da4565b34801561089157600080fd5b5061048e6108a0366004615e36565b611dc1565b3480156108b157600080fd5b50610477611e01565b3480156108c657600080fd5b506104b9611f15565b3480156108db57600080fd5b5061048e611f1b565b3480156108f057600080fd5b5061048e611f20565b34801561090557600080fd5b506104b9611f25565b34801561091a57600080fd5b506104e6611f2b565b34801561092f57600080fd5b50610508611f47565b34801561094457600080fd5b506104b9611f50565b34801561095957600080fd5b506104b9611f56565b34801561096e57600080fd5b50610977611f5c565b60405161049b9190616e3f565b34801561099057600080fd5b5061047761099f366004615ff9565b611f61565b3480156109b057600080fd5b5061048e6109bf366004615e36565b612953565b3480156109d057600080fd5b5061048e612965565b3480156109e557600080fd5b506109ee612972565b60405161049b9190616254565b348015610a0757600080fd5b5061048e612a5d565b348015610a1c57600080fd5b5061048e612a62565b348015610a3157600080fd5b5061048e612a68565b348015610a4657600080fd5b506104b9612a6d565b348015610a5b57600080fd5b5061048e612a73565b348015610a7057600080fd5b506104e6610a7f366004616055565b612a79565b348015610a9057600080fd5b5061048e612a86565b348015610aa557600080fd5b5061048e612a8c565b348015610aba57600080fd5b5061048e612acb565b348015610acf57600080fd5b506104b9612ad1565b348015610ae457600080fd5b506104b9612ad7565b348015610af957600080fd5b5061048e612add565b348015610b0e57600080fd5b50610477612ae2565b348015610b2357600080fd5b5061048e612d6d565b348015610b3857600080fd5b50610508610b47366004615fba565b612d73565b348015610b5857600080fd5b50610477610b67366004615e36565b612ef9565b610477610b7a366004615e36565b613001565b348015610b8b57600080fd5b5061048e6133b7565b348015610ba057600080fd5b506104b96133bd565b348015610bb557600080fd5b506104b96133c3565b348015610bca57600080fd5b50610bde610bd9366004616055565b6133c9565b60405161049b93929190616e15565b348015610bf957600080fd5b506104b961348b565b6000610c0d33611dc1565b9050600b8181548110610c1c57fe5b600091825260209091206001601690920201015460ff16610c585760405162461bcd60e51b8152600401610c4f90616ab4565b60405180910390fd5b6000610c62612a8c565b9050610c713383836001613491565b505050565b60095481565b61200181565b60005460609060ff16610ca75760405162461bcd60e51b8152600401610c4f9061646a565b600b54610d6557610cb66159e2565b60015460005b81811015610d6157600b80546001810182556000919091528351600080516020616ed78339815191526016909202918201908155602080860151600080516020616f178339815191528401805460ff1916911515919091179055604086015180518794610d3d93600080516020616ef7833981519152909101920190615a11565b506060820151610d539060038301906013615a8b565b505050806001019050610cbc565b5050505b60405162461bcd60e51b8152600401610c4f90616719565b60075460ff1681565b600f5481565b334114610dab5760405162461bcd60e51b8152600401610c4f90616c64565b3a15610dc95760405162461bcd60e51b8152600401610c4f906169f3565b8251604080518281526020808402820101909152606090828015610e0757816020015b610df4615ab8565b815260200190600190039081610dec5790505b50905060005b82811015610eb1576040518060c00160405280878381518110610e2c57fe5b60200260200101516001600160a01b0316815260200160006001600160a01b0316815260200160006001600160a01b03168152602001868381518110610e6e57fe5b60200260200101516001600160401b031681526020016000151581526020016000815250828281518110610e9e57fe5b6020908102919091010152600101610e0d565b50606080610ebf8386613683565b9150915060005b600154811015610fb557600060018281548110610edf57fe5b906000526020600020906004020160030154905080600014610fac57600060018381548110610f0a57fe5b9060005260206000209060040201600301819055506120026001600160a01b031663092193ab8260018581548110610f3e57fe5b60009182526020909120600491820201546040516001600160e01b031960e086901b168152610f79926001600160a01b0390921691016161c2565b6000604051808303818588803b158015610f9257600080fd5b505af1158015610fa6573d6000803e3d6000fd5b50505050505b50600101610ec6565b504715611023577f6ecc855f9440a9282c90913bbc91619fd44f5ec0b462af28d127b116f130aa4d47604051610feb9190616e0c565b60405180910390a1604051611002904780156108fc02916000818181858888f19350505050158015611021573d6000803e3d6000fd5b505b6000600355815115611039576110398282613b6d565b6110016001600160a01b031663fc4333cd6040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561107657600080fd5b505af115801561108a573d6000803e3d6000fd5b50506040517fedd8d7296956dd970ab4de3f2fc03be2b0ffc615d20cd4c72c6e44f928630ebf925060009150a150505050505050565b60035481565b61200581565b3361200214610d655760405162461bcd60e51b8152600401610c4f90616dc6565b33411461110c5760405162461bcd60e51b8152600401610c4f90616c64565b601054431161112d5760405162461bcd60e51b8152600401610c4f90616643565b3a1561114b5760405162461bcd60e51b8152600401610c4f906169f3565b60005460ff1661116d5760405162461bcd60e51b8152600401610c4f9061646a565b60006110023168056bc75e2d631000008111156111a45761119d8168056bc75e2d6310000063ffffffff61435c16565b91506111ab565b505061142c565b6040516309a99b4f60e41b815261100290639a99b4f0906111d290309086906004016161d6565b602060405180830381600087803b1580156111ec57600080fd5b505af1158015611200573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611224919061606d565b91508161123257505061142c565b6000805b848110156112605785858281811061124a57fe5b9050602002013582019150806001019050611236565b508061126e5750505061142c565b6000806000805b89811015611424578489898381811061128a57fe5b9050602002013588028161129a57fe5b0493508a8a828181106112a957fe5b90506020020160208101906112be9190615e36565b6001600160a01b038116600090815260046020526040902054909350915081156113da5760006001808403815481106112f357fe5b9060005260206000209060040201905080600201601c9054906101000a900460ff161561136057836001600160a01b03167fb9c75cbbfde137c4281689580799ef5f52144e78858f776a5979b2b212137d85866040516113539190616e0c565b60405180910390a26113d4565b600354611373908663ffffffff61439e16565b600390815581015461138b908663ffffffff61439e16565b60038201556040516001600160a01b038516907fcb0aad6cf9cd03bdf6137e359f541c42f38b39f007cae8e89e88aa7d8c6617b2906113cb908890616e0c565b60405180910390a25b5061141c565b826001600160a01b03167fb9c75cbbfde137c4281689580799ef5f52144e78858f776a5979b2b212137d85856040516114139190616e0c565b60405180910390a25b600101611275565b505050505050505b5050436010555050565b600154600090821061144a57506000611500565b60006001600160a01b03166001838154811061146257fe5b60009182526020909120600490910201546001600160a01b03161480611492575060085415806114925750600a54155b806114a1575060085460095410155b806114b257506114b082611505565b155b806114db57506000600b83815481106114c757fe5b906000526020600020906016020160000154115b806114ef575060016114eb612972565b5111155b156114fc57506000611500565b5060015b919050565b600154600090821061151957506000611500565b600b548210611556576001828154811061152f57fe5b9060005260206000209060040201600201601c9054906101000a900460ff16159050611500565b6001828154811061156357fe5b9060005260206000209060040201600201601c9054906101000a900460ff161580156115b05750600b828154811061159757fe5b600091825260209091206001601690920201015460ff16155b92915050565b600b54611674576115c56159e2565b60015460005b8181101561167057600b80546001810182556000919091528351600080516020616ed78339815191526016909202918201908155602080860151600080516020616f178339815191528401805460ff191691151591909117905560408601518051879461164c93600080516020616ef7833981519152909101920190615a11565b5060608201516116629060038301906013615a8b565b5050508060010190506115cb565b5050505b336110011480611685575033612002145b6116a15760405162461bcd60e51b8152600401610c4f906164a1565b6001600160a01b038116600090815260046020526040902054806116c55750611718565b6001810390506000600b82815481106116da57fe5b600091825260209091206001601690920201015460ff1690506116fd83836143c3565b80156117065750805b15610c71576009805460001901905550505b50565b60015460609081906000805b8281101561176e576001818154811061173c57fe5b9060005260206000209060040201600201601c9054906101000a900460ff16611766576001909101905b600101611727565b5060608160405190808252806020026020018201604052801561179b578160200160208202803683370190505b5090506060826040519080825280602002602001820160405280156117d457816020015b60608152602001906001900390816117bf5790505b50600b546000945090915084141561194f5760005b8481101561194957600181815481106117fe57fe5b9060005260206000209060040201600201601c9054906101000a900460ff16611941576001818154811061182e57fe5b600091825260209091206004909102015483516001600160a01b039091169084908690811061185957fe5b60200260200101906001600160a01b031690816001600160a01b031681525050600b818154811061188657fe5b600091825260209182902060026016909202018101805460408051601f60001961010060018616150201909316949094049182018590048502840185019052808352919290919083018282801561191e5780601f106118f35761010080835404028352916020019161191e565b820191906000526020600020905b81548152906001019060200180831161190157829003601f168201915b505050505082858151811061192f57fe5b60209081029190910101526001909301925b6001016117e9565b506119eb565b60005b848110156119e9576001818154811061196757fe5b9060005260206000209060040201600201601c9054906101000a900460ff166119e1576001818154811061199757fe5b600091825260209091206004909102015483516001600160a01b03909116908490869081106119c257fe5b6001600160a01b03909216602092830291909101909101526001909301925b600101611952565b505b909450925050505b9091565b61100181565b60085481565b6102ca81565b6060806000600e549050600080600c5411611a25576015611a29565b600c545b90506060611a35612972565b90506060611a4282614786565b905082825111611a595790945092506119f3915050565b83838351031015611a6b578282510393505b8315611aa15760c84304611a8783838388880360008a8a6148f4565b611a9f8383838888038989038a8b8b8b5103016148f4565b505b606083604051908082528060200260200182016040528015611acd578160200160208202803683370190505b509050606084604051908082528060200260200182016040528015611b0657816020015b6060815260200190600190039081611af15790505b50905060005b85811015611b8757848181518110611b2057fe5b6020026020010151838281518110611b3457fe5b60200260200101906001600160a01b031690816001600160a01b031681525050838181518110611b6057fe5b6020026020010151828281518110611b7457fe5b6020908102919091010152600101611b0c565b509096509450505050509091565b60065481565b61200681565b61200081565b6001600160a01b03811660009081526004602052604081205480611bcf576000915050611500565b60001901611bdc81611505565b9392505050565b6001600160a01b03811660009081526004602052604081205480611c0b576000915050611500565b600180820381548110611c1a57fe5b906000526020600020906004020160030154915050919050565b60128181548110611c4157fe5b600091825260209182902001805460408051601f6002600019610100600187161502019094169390930492830185900485028101850190915281815293509091830182828015611cd25780601f10611ca757610100808354040283529160200191611cd2565b820191906000526020600020905b815481529060010190602001808311611cb557829003601f168201915b505050505081565b60105481565b60018181548110611ced57fe5b600091825260209091206004909102018054600182015460028301546003909301546001600160a01b0392831694509082169291821691600160a01b81046001600160401b031691600160e01b90910460ff169086565b61100581565b61100881565b6103e881565b600c5481565b61200381565b61271081565b3361200014610d655760405162461bcd60e51b8152600401610c4f90616c15565b60025481565b60115481565b60145460ff1681565b600a5481565b600060175460001415611db957506001611dbe565b506017545b90565b6001600160a01b03811660009081526004602052604081205480611df75760405162461bcd60e51b8152600401610c4f90616b9d565b6000190192915050565b600b54611ebf57611e106159e2565b60015460005b81811015611ebb57600b80546001810182556000919091528351600080516020616ed78339815191526016909202918201908155602080860151600080516020616f178339815191528401805460ff1916911515919091179055604086015180518794611e9793600080516020616ef7833981519152909101920190615a11565b506060820151611ead9060038301906013615a8b565b505050806001019050611e16565b5050505b600854611ecc5760036008555b600a54611ed9576002600a555b6000611ee433611dc1565b9050611eef81611436565b611f0b5760405162461bcd60e51b8152600401610c4f9061696f565b6117183382614a4b565b61100781565b600381565b60c881565b61100681565b6040518060a0016040528060788152602001616f376078913981565b60005460ff1681565b61200281565b61300081565b600081565b60005460ff16611f835760405162461bcd60e51b8152600401610c4f9061646a565b3361100714611fa45760405162461bcd60e51b8152600401610c4f90616a21565b61200484848080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250506040805180820190915260098152686275726e526174696f60b81b60208201529150614ae39050565b156120b957602081146120295760405162461bcd60e51b8152600401610c4f90616327565b604080516020601f840181900481028201810190925282815260009161206791858580838501838280828437600092019190915250614b3c92505050565b9050612710612093601854612087600f548561439e90919063ffffffff16565b9063ffffffff61439e16565b11156120b15760405162461bcd60e51b8152600401610c4f9061673d565b600655612910565b61212384848080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250506040805180820190915260138152726d61784e756d4f664d61696e7461696e696e6760681b60208201529150614ae39050565b156121bd57602081146121485760405162461bcd60e51b8152600401610c4f9061635e565b604080516020601f840181900481028201810190925282815260009161218691858580838501838280828437600092019190915250614b3c92505050565b600c5490915080612195575060155b8082106121b45760405162461bcd60e51b8152600401610c4f90616685565b50600855612910565b61222684848080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250506040805180820190915260128152716d61696e7461696e536c6173685363616c6560701b60208201529150614ae39050565b156122bf576020811461224b5760405162461bcd60e51b8152600401610c4f906163f0565b604080516020601f840181900481028201810190925282815260009161228991858580838501838280828437600092019190915250614b3c92505050565b905060008111801561229b5750600a81105b6122b75760405162461bcd60e51b8152600401610c4f90616cf9565b600a55612910565b61233384848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505060408051808201909152601981527f6d61784e756d4f66576f726b696e6743616e646964617465730000000000000060208201529150614ae39050565b156123c257602081146123585760405162461bcd60e51b8152600401610c4f906163a4565b604080516020601f840181900481028201810190925282815260009161239691858580838501838280828437600092019190915250614b3c92505050565b9050600d548111156123ba5760405162461bcd60e51b8152600401610c4f90616846565b600e55612910565b61242b84848080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250506040805180820190915260128152716d61784e756d4f6643616e6469646174657360701b60208201529150614ae39050565b156124ad57602081146124505760405162461bcd60e51b8152600401610c4f90616a6f565b604080516020601f840181900481028201810190925282815260009161248e91858580838501838280828437600092019190915250614b3c92505050565b600d819055600e549091508110156124a757600d54600e555b50612910565b61251184848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505060408051808201909152600d81526c6e756d4f66436162696e65747360981b60208201529150614ae39050565b156125bf57602081146125365760405162461bcd60e51b8152600401610c4f90616435565b604080516020601f840181900481028201810190925282815260009161257491858580838501838280828437600092019190915250614b3c92505050565b9050600081116125965760405162461bcd60e51b8152600401610c4f9061659e565b60648111156125b75760405162461bcd60e51b8152600401610c4f906165e6565b600c55612910565b61262b84848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505060408051808201909152601581527473797374656d52657761726442617365526174696f60581b60208201529150614ae39050565b156126d457602081146126505760405162461bcd60e51b8152600401610c4f90616cb1565b604080516020601f840181900481028201810190925282815260009161268e91858580838501838280828437600092019190915250614b3c92505050565b90506127106126ae6018546120876006548561439e90919063ffffffff16565b11156126cc5760405162461bcd60e51b8152600401610c4f9061650f565b600f55612910565b61274884848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505060408051808201909152601881527f73797374656d526577617264416e74694d4556526174696f000000000000000060208201529150614ae39050565b156127f1576020811461276d5760405162461bcd60e51b8152600401610c4f906167cc565b604080516020601f84018190048102820181019092528281526000916127ab91858580838501838280828437600092019190915250614b3c92505050565b90506127106127cb600f546120876006548561439e90919063ffffffff16565b11156127e95760405162461bcd60e51b8152600401610c4f906168e0565b601855612910565b61285284848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505060408051808201909152600a8152690e8eae4dc98cadccee8d60b31b60208201529150614ae39050565b156128f857602081146128775760405162461bcd60e51b8152600401610c4f906166e2565b604080516020601f84018190048102820181019092528281526000916128b591858580838501838280828437600092019190915250614b3c92505050565b9050600381101580156128c9575060098111155b806128d45750806001145b6128f05760405162461bcd60e51b8152600401610c4f90616b17565b601755612910565b60405162461bcd60e51b8152600401610c4f90616d56565b7f6cdb0ac70ab7f2e2d035cca5be60d89906f2dede7648ddbd7402189c1eeed17a8484848460405161294594939291906162f5565b60405180910390a150505050565b60046020526000908152604090205481565b68056bc75e2d6310000081565b6001546060906000805b828110156129a15761298d81611505565b15612999578160010191505b60010161297c565b506060816040519080825280602002602001820160405280156129ce578160200160208202803683370190505b5090506000915060005b83811015612a55576129e981611505565b15612a4d57600181815481106129fb57fe5b600091825260209091206004909102015482516001600160a01b0390911690839085908110612a2657fe5b60200260200101906001600160a01b031690816001600160a01b0316815250508260010192505b6001016129d8565b509250505090565b601581565b61027181565b600281565b61100281565b60175481565b60138181548110611c4157fe5b60185481565b6000612a96612972565b519050600080600c5411612aab576015612aaf565b600c545b905080821115612abd578091505b81612ac757600191505b5090565b60055481565b61100381565b61200481565b606481565b60005460ff1615612b055760405162461bcd60e51b8152600401610c4f90616ae0565b612b0d615aed565b6000612b306040518060a0016040528060788152602001616f3760789139614b41565b9150915080612b515760405162461bcd60e51b8152600401610c4f90616bd4565b612b596159e2565b60005b836020015151811015612d5a57600b80546001810182556000919091528251600080516020616ed78339815191526016909202918201908155602080850151600080516020616f178339815191528401805460ff1916911515919091179055604085015180518694612be293600080516020616ef7833981519152909101920190615a11565b506060820151612bf89060038301906013615a8b565b50505083604001518181518110612c0b57fe5b6020026020010151600b8281548110612c2057fe5b90600052602060002090601602016002019080519060200190612c44929190615a11565b50600184602001518281518110612c5757fe5b60209081029190910181015182546001818101855560009485528385208351600493840290910180546001600160a01b039283166001600160a01b03199182161782558587015182850180549185169183169190911790556040860151600283018054606089015160808a01511515600160e01b0260ff60e01b196001600160401b03909216600160a01b0267ffffffffffffffff60a01b199590981692909516919091179290921694909417161790915560a090930151600390930192909255918701518051918501939185908110612d2d57fe5b602090810291909101810151516001600160a01b0316825281019190915260400160002055600101612b5c565b50506000805460ff191660011790555050565b600d5481565b601354600090815b81811015612e7c57612e6485858080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050601380549092508591508110612dcc57fe5b600091825260209182902001805460408051601f6002600019610100600187161502019094169390930492830185900485028101850190915281815292830182828015612e5a5780601f10612e2f57610100808354040283529160200191612e5a565b820191906000526020600020905b815481529060010190602001808311612e3d57829003601f168201915b5050505050614cfd565b15612e74576001925050506115b0565b600101612d7b565b5060125460005b81811015612eed57612ed486868080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050601280549092508591508110612dcc57fe5b15612ee557600193505050506115b0565b600101612e83565b50600095945050505050565b3361100114612f1a5760405162461bcd60e51b8152600401610c4f90616d7d565b600b54612fd857612f296159e2565b60015460005b81811015612fd457600b80546001810182556000919091528351600080516020616ed78339815191526016909202918201908155602080860151600080516020616f178339815191528401805460ff1916911515919091179055604086015180518794612fb093600080516020616ef7833981519152909101920190615a11565b506060820151612fc69060038301906013615a8b565b505050806001019050612f2f565b5050505b6000612fe382614d61565b9050612fee81611436565b15612ffd57612ffd8282614a4b565b5050565b3341146130205760405162461bcd60e51b8152600401610c4f90616c64565b60005460ff166130425760405162461bcd60e51b8152600401610c4f9061646a565b600034116130625760405162461bcd60e51b8152600401610c4f90616817565b3a156130805760405162461bcd60e51b8152600401610c4f906169f3565b6001600160a01b03811660009081526004602052604090205460145434919060ff166130c057610271600f556103e86006556014805460ff191660011790555b600f5460175460011080156130d757506000601854115b156130fc5760016017540360175443816130ed57fe5b0660185402816130f957fe5b04015b60008311801561310c5750600081115b156131b9576000613135612710613129348563ffffffff614ee416565b9063ffffffff614f1e16565b905080156131b7576040516110029082156108fc029083906000818181858888f1935050505015801561316c573d6000803e3d6000fd5b507f6ecc855f9440a9282c90913bbc91619fd44f5ec0b462af28d127b116f130aa4d8160405161319c9190616e0c565b60405180910390a16131b4848263ffffffff61435c16565b93505b505b6000831180156131cb57506000600654115b156132715760006131ed61271061312960065434614ee490919063ffffffff16565b9050801561326f5760405161dead9082156108fc029083906000818181858888f19350505050158015613224573d6000803e3d6000fd5b507f627059660ea01c4733a328effb2294d2f86905bf806da763a89cee254de8bee5816040516132549190616e0c565b60405180910390a161326c848263ffffffff61435c16565b93505b505b811561336f57600060018084038154811061328857fe5b9060005260206000209060040201905080600201601c9054906101000a900460ff16156132f557846001600160a01b03167ff177e5d6c5764d79c32883ed824111d9b13f5668cf6ab1cc12dd36791dd955b4856040516132e89190616e0c565b60405180910390a2613369565b600354613308908563ffffffff61439e16565b6003908155810154613320908563ffffffff61439e16565b60038201556040516001600160a01b038616907f93a090ecc682c002995fad3c85b30c5651d7fd29b0be5da9d784a3302aedc05590613360908790616e0c565b60405180910390a25b506133b1565b836001600160a01b03167ff177e5d6c5764d79c32883ed824111d9b13f5668cf6ab1cc12dd36791dd955b4846040516133a89190616e0c565b60405180910390a25b50505050565b600e5481565b61100081565b61dead81565b600b81815481106133d657fe5b6000918252602091829020601691909102018054600180830154600280850180546040805161010096831615969096026000190190911692909204601f810188900488028501880190925281845293965060ff909116949192918301828280156134815780601f1061345657610100808354040283529160200191613481565b820191906000526020600020905b81548152906001019060200180831161346457829003601f168201915b5050505050905083565b61100481565b6000600a54600014806134a2575082155b806134ad5750600954155b156134ba5750600061367b565b60096000815460019003919050819055506000613505600a5461312986613129600b8a815481106134e757fe5b6000918252602090912060169091020154439063ffffffff61435c16565b90506000600b868154811061351657fe5b906000526020600020906016020160010160006101000a81548160ff0219169083151502179055506000806110016001600160a01b0316638256ace66040518163ffffffff1660e01b8152600401604080518083038186803b15801561357b57600080fd5b505afa15801561358f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906135b39190616085565b9150915060009350808310613631576135cc88886143c3565b506040516328aa02b160e01b8152611001906328aa02b1906135f6908b9087908a90600401616231565b600060405180830381600087803b15801561361057600080fd5b505af1158015613624573d6000803e3d6000fd5b5050505060019350613643565b8183106136435761364188614d61565b505b6040516001600160a01b038916907fb9d38178dc641ff1817967a63c9078cbcd955a9f1fcd75e0e3636de615d44d3b90600090a25050505b949350505050565b606080600080808080613694612a8c565b6001549091505b80156138c657600181039250600b83815481106136b457fe5b600091825260209091206001601690920201015460ff166136d4576138bd565b600183815481106136e157fe5b600091825260208220600490910201546001600160a01b0316955061370b90869085908590613491565b935083613717576138bd565b60405163436aa28360e11b81526000908190612002906386d5450690613741908a906004016161c2565b60206040518083038186803b15801561375957600080fd5b505afa15801561376d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906137919190615e52565b90506001600160a01b0381161561381a576040516302ceee9160e11b81526120029063059ddd22906137c79084906004016161c2565b60206040518083038186803b1580156137df57600080fd5b505afa1580156137f3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906138179190615e52565b91505b60005b8c518110156138b957876001600160a01b03168d828151811061383c57fe5b6020026020010151600001516001600160a01b031614806138855750826001600160a01b03168d828151811061386e57fe5b6020026020010151600001516001600160a01b0316145b156138b15760018d828151811061389857fe5b60209081029190910101519015156080909101526138b9565b60010161381d565b5050505b6000190161369b565b5060005b8951811015613933578981815181106138df57fe5b6020026020010151608001518061391f575060006001600160a01b03168a828151811061390857fe5b6020026020010151600001516001600160a01b0316145b1561392b578560010195505b6001016138ca565b5088518510613a1b5760408051600180825281830190925290816020015b613959615ab8565b815260200190600190039081613951575050604080516001808252818301909252919850602082015b6060815260200190600190039081613982579050509550886000815181106139a657fe5b6020026020010151876000815181106139bb57fe5b6020026020010181905250876000815181106139d357fe5b6020026020010151866000815181106139e857fe5b6020026020010181905250600087600081518110613a0257fe5b6020908102919091010151901515608090910152613b60565b84895103604051908082528060200260200182016040528015613a5857816020015b613a45615ab8565b815260200190600190039081613a3d5790505b50965084895103604051908082528060200260200182016040528015613a9257816020015b6060815260200190600190039081613a7d5790505b5095506000915060005b8951811015613b5e57898181518110613ab157fe5b602002602001015160800151158015613af4575060006001600160a01b03168a8281518110613adc57fe5b6020026020010151600001516001600160a01b031614155b15613b5657898181518110613b0557fe5b6020026020010151888481518110613b1957fe5b6020026020010181905250888181518110613b3057fe5b6020026020010151878481518110613b4457fe5b60200260200101819052508260010192505b600101613a9c565b505b50505050505b9250929050565b600154825160005b82811015613c8a576001613b87615ab8565b60018381548110613b9457fe5b600091825260208083206040805160c08101825260049490940290910180546001600160a01b0390811685526001820154811693850193909352600281015492831691840191909152600160a01b82046001600160401b03166060840152600160e01b90910460ff16151560808301526003015460a082015291505b84811015613c5e57878181518110613c2457fe5b6020026020010151600001516001600160a01b031682600001516001600160a01b03161415613c565760009250613c5e565b600101613c10565b508115613c805780516001600160a01b03166000908152600460205260408120555b5050600101613b75565b5080821115613d4957805b82811015613d47576001805480613ca857fe5b60008281526020812060046000199093019283020180546001600160a01b0319908116825560018201805490911690556002810180546001600160e81b0319169055600301559055600b805480613cfb57fe5b60008281526020812060166000199093019283020181815560018101805460ff1916905590613d2d6002830182615b11565b613d3b600383016000615b55565b50509055600101613c95565b505b6000818310613d585781613d5a565b825b905060005b818110156140fe57613e0c868281518110613d7657fe5b602002602001015160018381548110613d8b57fe5b60009182526020918290206040805160c08101825260049390930290910180546001600160a01b0390811684526001820154811694840194909452600281015493841691830191909152600160a01b83046001600160401b03166060830152600160e01b90920460ff161515608082015260039091015460a0820152614f60565b613fc0578060010160046000888481518110613e2457fe5b6020026020010151600001516001600160a01b03166001600160a01b0316815260200190815260200160002081905550858181518110613e6057fe5b602002602001015160018281548110613e7557fe5b6000918252602091829020835160049092020180546001600160a01b039283166001600160a01b0319918216178255928401516001820180549184169185169190911790556040840151600282018054606087015160808801511515600160e01b0260ff60e01b196001600160401b03909216600160a01b0267ffffffffffffffff60a01b1995909716929097169190911792909216939093171692909217905560a0909101516003909101558451859082908110613f3057fe5b6020026020010151600b8281548110613f4557fe5b90600052602060002090601602016002019080519060200190613f69929190615a11565b506000600b8281548110613f7957fe5b60009182526020822060169190910201600101805460ff191692151592909217909155600b805483908110613faa57fe5b60009182526020909120601690910201556140f6565b858181518110613fcc57fe5b60200260200101516060015160018281548110613fe557fe5b906000526020600020906004020160020160146101000a8154816001600160401b0302191690836001600160401b031602179055506140ab85828151811061402957fe5b6020026020010151600b838154811061403e57fe5b600091825260209182902060026016909202018101805460408051601f600019610100600186161502019093169490940491820185900485028401850190528083529192909190830182828015612e5a5780601f10612e2f57610100808354040283529160200191612e5a565b6140f6578481815181106140bb57fe5b6020026020010151600b82815481106140d057fe5b906000526020600020906016020160020190805190602001906140f4929190615a11565b505b600101613d5f565b50828211156142d65761410f6159e2565b835b838110156142d35785818151811061412557fe5b60200260200101518260400181905250600187828151811061414357fe5b6020908102919091018101518254600181810185556000948552838520835160049093020180546001600160a01b039384166001600160a01b0319918216178255848601518284018054918616918316919091179055604080860151600284018054606089015160808a01511515600160e01b0260ff60e01b196001600160401b03909216600160a01b0267ffffffffffffffff60a01b1995909a1692909616919091179290921696909617169190911790935560a090930151600390930192909255600b8054928301815590935284516016909102600080516020616ed7833981519152810191825585830151600080516020616f178339815191528201805491151560ff199092169190911790559285015180518694929361427993600080516020616ef783398151915201920190615a11565b50606082015161428f9060038301906013615a8b565b50505080600101600460008984815181106142a657fe5b602090810291909101810151516001600160a01b0316825281019190915260400160002055600101614111565b50505b6142de614fbc565b6142e661519e565b6000600981905560015493505b83811015614354576000600b828154811061430a57fe5b60009182526020822060169190910201600101805460ff191692151592909217909155600b80548390811061433b57fe5b60009182526020909120601690910201556001016142f3565b505050505050565b6000611bdc83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525061538c565b600082820183811015611bdc5760405162461bcd60e51b8152600401610c4f906164d8565b600080600183815481106143d357fe5b906000526020600020906004020160030154905060006001808054905003905060016143fd612972565b51116144325760006001858154811061441257fe5b9060005260206000209060040201600301819055506000925050506115b0565b846001600160a01b03167f3b6f9ef90462b512a1293ecec018670bf7b7f1876fb727590a8a6d7643130a708360405161446b9190616e0c565b60405180910390a26001600160a01b038516600090815260046020526040812055835b6001546000190181101561465857600181600101815481106144ac57fe5b9060005260206000209060040201600182815481106144c757fe5b60009182526020909120825460049092020180546001600160a01b03199081166001600160a01b0393841617825560018085015481840180548416918616919091179055600280860180549185018054909416919095161780835584546001600160401b03600160a01b91829004160267ffffffffffffffff60a01b1990911617808355935460ff600160e01b918290041615150260ff60e01b19909416939093179055600392830154920191909155600b80549091830190811061458857fe5b9060005260206000209060160201600b82815481106145a357fe5b600091825260209091208254601690920201908155600180830154818301805460ff909216151560ff19909216919091179055600280840180546145fa938386019390821615610100026000190190911604615b64565b5061460d60038281019084016013615bd9565b5090505080600101600460006001848154811061462657fe5b600091825260208083206004909202909101546001600160a01b0316835282019290925260400190205560010161448e565b50600180548061466457fe5b60008281526020812060046000199093019283020180546001600160a01b0319908116825560018201805490911690556002810180546001600160e81b0319169055600301559055600b8054806146b757fe5b60008281526020812060166000199093019283020181815560018101805460ff19169055906146e96002830182615b11565b6146f7600383016000615b55565b50509055600081838161470657fe5b049050801561477a5760015460005b818110156147775761474e836001838154811061472e57fe5b90600052602060002090600402016003015461439e90919063ffffffff16565b6001828154811061475b57fe5b6000918252602090912060036004909202010155600101614715565b50505b50600195945050505050565b6001548151604080518281526020808402820101909152606092919083908280156147c557816020015b60608152602001906001900390816147b05790505b50600b5490915083146147dc579250611500915050565b60005b828110156148eb57600b6001600460008985815181106147fb57fe5b60200260200101516001600160a01b03166001600160a01b0316815260200190815260200160002054038154811061482f57fe5b600091825260209182902060026016909202018101805460408051601f6000196101006001861615020190931694909404918201859004850284018501905280835291929091908301828280156148c75780601f1061489c576101008083540402835291602001916148c7565b820191906000526020600020905b8154815290600101906020018083116148aa57829003601f168201915b50505050508282815181106148d857fe5b60209081029190910101526001016147df565b50949350505050565b60005b82811015614a4157600082878388016040516020016149179291906161b4565b6040516020818303038152906040528051906020012060001c8161493757fe5b06905080850182870114614a38576000898388018151811061495557fe5b602002602001015190506060898489018151811061496f57fe5b602002602001015190508a8388018151811061498757fe5b60200260200101518b858a018151811061499d57fe5b60200260200101906001600160a01b031690816001600160a01b031681525050818b848901815181106149cc57fe5b60200260200101906001600160a01b031690816001600160a01b03168152505089838801815181106149fa57fe5b60200260200101518a858a0181518110614a1057fe5b6020026020010181905250808a84890181518110614a2a57fe5b602002602001018190525050505b506001016148f7565b5050505050505050565b600980546001908101909155600b805483908110614a6557fe5b906000526020600020906016020160010160006101000a81548160ff02191690831515021790555043600b8281548110614a9b57fe5b600091825260208220601690910201919091556040516001600160a01b038416917ff62981a567ec3cec866c6fa93c55bcdf841d6292d18b8d522ececa769375d82d91a25050565b600081604051602001614af69190616198565b6040516020818303038152906040528051906020012083604051602001614b1d9190616198565b6040516020818303038152906040528051906020012014905092915050565b015190565b614b49615aed565b6000614b53615aed565b614b5b615c03565b614b6c614b67866153b8565b6153dd565b90506000805b614b7b83615427565b15614cef5780614ba057614b96614b9184615448565b615496565b60ff168452614ce7565b8060011415614ce2576060614bbc614bb785615448565b615516565b90508051604051908082528060200260200182016040528015614bf957816020015b614be6615ab8565b815260200190600190039081614bde5790505b5085602001819052508051604051908082528060200260200182016040528015614c3757816020015b6060815260200190600190039081614c225790505b50604086015260005b8151811015614cd757614c51615ab8565b60606000614c71858581518110614c6457fe5b60200260200101516155e7565b92509250925080614c91578860009a509a50505050505050505050614cf8565b8289602001518581518110614ca257fe5b60200260200101819052508189604001518581518110614cbe57fe5b6020026020010181905250505050806001019050614c40565b506001925050614ce7565b614cef565b600101614b72565b50919350909150505b915091565b815181516000916001918114808314614d195760009250614d57565b600160208701838101602088015b600284838510011415614d52578051835114614d465760009650600093505b60209283019201614d27565b505050505b5090949350505050565b6001600160a01b03811660009081526004602052604081205480614d8a57506000199050611500565b600181039050600060018281548110614d9f57fe5b9060005260206000209060040201600301549050600060018381548110614dc257fe5b6000918252602090912060036004909202010155600154604051600019909101906001600160a01b038616907f8cd4e147d8af98a9e3b6724021b8bf6aed2e5dac71c38f2dce8161b82585b25d90614e1b908590616e0c565b60405180910390a280614e3357829350505050611500565b6000818381614e3e57fe5b0490508015614eda5760005b84811015614e8c57614e63826001838154811061472e57fe5b60018281548110614e7057fe5b6000918252602090912060036004909202010155600101614e4a565b50600180549085015b81811015614ed757614eae836001838154811061472e57fe5b60018281548110614ebb57fe5b6000918252602090912060036004909202010155600101614e95565b50505b5091949350505050565b600082614ef3575060006115b0565b82820282848281614f0057fe5b0414611bdc5760405162461bcd60e51b8152600401610c4f906169b2565b6000611bdc83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250615701565b805182516000916001600160a01b039182169116148015614f9a575081602001516001600160a01b031683602001516001600160a01b0316145b8015611bdc5750506040908101519101516001600160a01b0390811691161490565b6012546013548082111561500757805b82811015615005576012805480614fdf57fe5b600190038181906000526020600020016000614ffb9190615b11565b9055600101614fcc565b505b60008183106150165781615018565b825b905060005b81811015615130576150d56012828154811061503557fe5b600091825260209182902001805460408051601f60026000196101006001871615020190941693909304928301859004850281018501909152818152928301828280156150c35780601f10615098576101008083540402835291602001916150c3565b820191906000526020600020905b8154815290600101906020018083116150a657829003601f168201915b505050505060138381548110612dcc57fe5b61512857601381815481106150e657fe5b90600052602060002001601282815481106150fd57fe5b906000526020600020019080546001816001161561010002031660029004615126929190615b64565b505b60010161501d565b5082821115610c7157825b828110156133b15760126013828154811061515257fe5b6000918252602080832084546001818101875595855291909320929091018054615195949390920192909160026101009282161592909202600019011604615b64565b5060010161513b565b601354600b54808211156151e957805b828110156151e75760138054806151c157fe5b6001900381819060005260206000200160006151dd9190615b11565b90556001016151ae565b505b60008183106151f857816151fa565b825b905060005b81811015615319576152b76013828154811061521757fe5b600091825260209182902001805460408051601f60026000196101006001871615020190941693909304928301859004850281018501909152818152928301828280156152a55780601f1061527a576101008083540402835291602001916152a5565b820191906000526020600020905b81548152906001019060200180831161528857829003601f168201915b5050505050600b838154811061403e57fe5b61531157600b81815481106152c857fe5b9060005260206000209060160201600201601382815481106152e657fe5b90600052602060002001908054600181600116156101000203166002900461530f929190615b64565b505b6001016151ff565b5082821115610c7157825b828110156133b1576013600b828154811061533b57fe5b60009182526020808320845460018082018755958552919093206016929092029092016002908101805461538395939094019390926000199082161561010002011604615b64565b50600101615324565b600081848411156153b05760405162461bcd60e51b8152600401610c4f91906162e2565b505050900390565b6153c0615c23565b506040805180820190915281518152602082810190820152919050565b6153e5615c03565b6153ee82615738565b6153f757600080fd5b60006154068360200151615772565b60208085015160408051808201909152868152920190820152915050919050565b6000615431615c23565b505080518051602091820151919092015191011190565b615450615c23565b61545982615427565b61546257600080fd5b60208201516000615472826157d5565b80830160209586015260408051808201909152908152938401919091525090919050565b8051600090158015906154ab57508151602110155b6154b457600080fd5b60006154c38360200151615772565b905080836000015110156154e95760405162461bcd60e51b8152600401610c4f90616b66565b8251602080850151830180519284900392918310156148eb57506020919091036101000a90049392505050565b606061552182615738565b61552a57600080fd5b6000615535836158b6565b905060608160405190808252806020026020018201604052801561557357816020015b615560615c23565b8152602001906001900390816155585790505b50905060006155858560200151615772565b60208601510190506000805b848110156155dc576155a2836157d5565b91506040518060400160405280838152602001848152508482815181106155c557fe5b602090810291909101015291810191600101615591565b509195945050505050565b6155ef615ab8565b606060006155fb615ab8565b6060615605615c03565b61560e876153dd565b90506000805b61561d83615427565b156156f257806156485761563861563384615448565b615912565b6001600160a01b031685526156ea565b80600114156156705761565d61563384615448565b6001600160a01b031660208601526156ea565b80600214156156985761568561563384615448565b6001600160a01b031660408601526156ea565b80600314156156c4576156ad614b9184615448565b6001600160401b03166060860152600191506156ea565b80600414156156e5576156de6156d984615448565b61592c565b93506156ea565b6156f2565b600101615614565b50929791965091945092505050565b600081836157225760405162461bcd60e51b8152600401610c4f91906162e2565b50600083858161572e57fe5b0495945050505050565b805160009061574957506000611500565b6020820151805160001a9060c082101561576857600092505050611500565b5060019392505050565b8051600090811a608081101561578c576000915050611500565b60b88110806157a7575060c081108015906157a7575060f881105b156157b6576001915050611500565b60c08110156157ca5760b519019050611500565b60f519019050611500565b80516000908190811a60808110156157f057600191506158af565b60b881101561580557607e19810191506158af565b60c081101561585657600060b78203600186019550806020036101000a8651049150600181018201935050808310156158505760405162461bcd60e51b8152600401610c4f906168b5565b506158af565b60f881101561586b5760be19810191506158af565b600060f78203600186019550806020036101000a8651049150600181018201935050808310156158ad5760405162461bcd60e51b8152600401610c4f906168b5565b505b5092915050565b80516000906158c757506000611500565b600080905060006158db8460200151615772565b602085015185519181019250015b80821015615909576158fa826157d5565b820191508260010192506158e9565b50909392505050565b805160009060151461592357600080fd5b6115b082615496565b805160609061593a57600080fd5b60006159498360200151615772565b83516040805191839003808352601f19601f8201168301602001909152919250606090828015615980576020820181803683370190505b50905060008160200190506148eb848760200151018285806159a157610c71565b5b602081106159c1578251825260209283019290910190601f19016159a2565b915181516020939093036101000a6000190180199091169216919091179052565b60405180608001604052806000815260200160001515815260200160608152602001615a0c615c3d565b905290565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10615a5257805160ff1916838001178555615a7f565b82800160010185558215615a7f579182015b82811115615a7f578251825591602001919060010190615a64565b50612ac7929150615c5c565b8260138101928215615a7f5791602002820182811115615a7f578251825591602001919060010190615a64565b6040805160c081018252600080825260208201819052918101829052606081018290526080810182905260a081019190915290565b6040518060600160405280600060ff16815260200160608152602001606081525090565b50805460018160011615610100020316600290046000825580601f10615b375750611718565b601f0160209004906000526020600020908101906117189190615c5c565b50611718906013810190615c5c565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10615b9d5780548555615a7f565b82800160010185558215615a7f57600052602060002091601f016020900482015b82811115615a7f578254825591600101919060010190615bbe565b8260138101928215615a7f5791820182811115615a7f578254825591600101919060010190615bbe565b6040518060400160405280615c16615c23565b8152602001600081525090565b604051806040016040528060008152602001600081525090565b6040518061026001604052806013906020820280368337509192915050565b611dbe91905b80821115612ac75760008155600101615c62565b80356115b081616ec1565b60008083601f840112615c92578182fd5b5081356001600160401b03811115615ca8578182fd5b6020830191508360208083028501011115613b6657600080fd5b6000601f8381840112615cd3578182fd5b8235615ce6615ce182616e76565b616e50565b818152925060208084019085810160005b84811015615d78578135880189603f820112615d1257600080fd5b838101356001600160401b03811115615d2a57600080fd5b615d3b818901601f19168601616e50565b81815260408c81848601011115615d5157600080fd5b82818501888401375060009181018601919091528552509282019290820190600101615cf7565b50505050505092915050565b600082601f830112615d94578081fd5b8135615da2615ce182616e76565b818152915060208083019084810181840286018201871015615dc357600080fd5b6000805b85811015615d785782356001600160401b0381168114615de5578283fd5b85529383019391830191600101615dc7565b60008083601f840112615e08578182fd5b5081356001600160401b03811115615e1e578182fd5b602083019150836020828501011115613b6657600080fd5b600060208284031215615e47578081fd5b8135611bdc81616ec1565b600060208284031215615e63578081fd5b8151611bdc81616ec1565b60008060008060408587031215615e83578283fd5b84356001600160401b0380821115615e99578485fd5b615ea588838901615c81565b90965094506020870135915080821115615ebd578384fd5b50615eca87828801615c81565b95989497509550505050565b600080600060608486031215615eea578283fd5b83356001600160401b0380821115615f00578485fd5b81860187601f820112615f11578586fd5b80359250615f21615ce184616e76565b80848252602080830192508084018b828389028701011115615f4157898afd5b8994505b86851015615f6b57615f578c82615c76565b845260019490940193928101928101615f45565b509097508801359350505080821115615f82578384fd5b615f8e87838801615d84565b93506040860135915080821115615fa3578283fd5b50615fb086828701615cc2565b9150509250925092565b60008060208385031215615fcc578182fd5b82356001600160401b03811115615fe1578283fd5b615fed85828601615df7565b90969095509350505050565b6000806000806040858703121561600e578384fd5b84356001600160401b0380821115616024578586fd5b61603088838901615df7565b90965094506020870135915080821115616048578384fd5b50615eca87828801615df7565b600060208284031215616066578081fd5b5035919050565b60006020828403121561607e578081fd5b5051919050565b60008060408385031215616097578182fd5b505080516020909101519092909150565b6000806000604084860312156160bc578081fd5b833560ff811681146160cc578182fd5b925060208401356001600160401b038111156160e6578182fd5b6160f286828701615df7565b9497909650939450505050565b6000815180845260208085019450808401835b838110156161375781516001600160a01b031687529582019590820190600101616112565b509495945050505050565b60008284528282602086013780602084860101526020601f19601f85011685010190509392505050565b60008151808452616184816020860160208601616e95565b601f01601f19169290920160200192915050565b600082516161aa818460208701616e95565b9190910192915050565b918252602082015260400190565b6001600160a01b0391909116815260200190565b6001600160a01b03929092168252602082015260400190565b6001600160a01b03968716815294861660208601529290941660408401526001600160401b03166060830152911515608082015260a081019190915260c00190565b6001600160a01b0393909316835260208301919091521515604082015260600190565b600060208252611bdc60208301846160ff565b60006040825261627a60408301856160ff565b602083820381850152818551808452828401915082838202850101838801865b838110156162c857601f198784030185526162b683835161616c565b9486019492509085019060010161629a565b50909998505050505050505050565b901515815260200190565b600060208252611bdc602083018461616c565b600060408252616309604083018688616142565b828103602084015261631c818587616142565b979650505050505050565b6020808252601c908201527f6c656e677468206f66206275726e526174696f206d69736d6174636800000000604082015260600190565b60208082526026908201527f6c656e677468206f66206d61784e756d4f664d61696e7461696e696e67206d696040820152650e6dac2e8c6d60d31b606082015260800190565b6020808252602c908201527f6c656e677468206f66206d61784e756d4f66576f726b696e6743616e6469646160408201526b0e8cae640dad2e6dac2e8c6d60a31b606082015260800190565b60208082526025908201527f6c656e677468206f66206d61696e7461696e536c6173685363616c65206d69736040820152640dac2e8c6d60db1b606082015260800190565b6020808252818101527f6c656e677468206f66206e756d4f66436162696e657473206d69736d61746368604082015260600190565b60208082526019908201527f74686520636f6e7472616374206e6f7420696e69742079657400000000000000604082015260600190565b6020808252601f908201527f6f6e6c7920736c617368206f72207374616b6548756220636f6e747261637400604082015260600190565b6020808252601b908201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604082015260600190565b60208082526063908201527f7468652073797374656d52657761726442617365526174696f20706c7573206260408201527f75726e526174696f20616e642073797374656d526577617264416e74694d455660608201527f526174696f206d757374206265206e6f2067726561746572207468616e20313060808201526203030360ec1b60a082015260c00190565b60208082526028908201527f746865206e756d4f66436162696e657473206d75737420626520677265617465604082015267072207468616e20360c41b606082015260800190565b60208082526039908201527f746865206e756d4f66436162696e657473206d757374206265206c657373207460408201527f68616e204d41585f4e554d5f4f465f56414c494441544f525300000000000000606082015260800190565b60208082526022908201527f63616e206e6f7420646f207468697320747769636520696e206f6e6520626c6f604082015261636b60f01b606082015260800190565b60208082526037908201527f746865206d61784e756d4f664d61696e7461696e696e67206d7573742062652060408201527f6c657373207468616e206e756d4f66436162696e657473000000000000000000606082015260800190565b6020808252601d908201527f6c656e677468206f66207475726e4c656e677468206d69736d61746368000000604082015260600190565b6020808252600a908201526919195c1c9958d85d195960b21b604082015260600190565b60208082526063908201527f746865206275726e526174696f20706c75732073797374656d5265776172644260408201527f617365526174696f20616e642073797374656d526577617264416e74694d455660608201527f526174696f206d757374206265206e6f2067726561746572207468616e20313060808201526203030360ec1b60a082015260c00190565b6020808252602b908201527f6c656e677468206f662073797374656d526577617264416e74694d455652617460408201526a0d2de40dad2e6dac2e8c6d60ab1b606082015260800190565b6020808252601590820152746465706f7369742076616c7565206973207a65726f60581b604082015260600190565b60208082526049908201527f746865206d61784e756d4f66576f726b696e6743616e64696461746573206d7560408201527f7374206265206e6f742067726561746572207468616e206d61784e756d4f6643606082015268616e6469646174657360b81b608082015260a00190565b6020808252601190820152706164646974696f6e206f766572666c6f7760781b604082015260600190565b60208082526063908201527f7468652073797374656d526577617264416e74694d4556526174696f20706c7560408201527f73206275726e526174696f20616e642073797374656d5265776172644261736560608201527f526174696f206d757374206265206e6f2067726561746572207468616e20313060808201526203030360ec1b60a082015260c00190565b60208082526023908201527f63616e206e6f7420656e7465722054656d706f72617279204d61696e74656e616040820152626e636560e81b606082015260800190565b60208082526021908201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6040820152607760f81b606082015260800190565b6020808252601490820152736761737072696365206973206e6f74207a65726f60601b604082015260600190565b6020808252602e908201527f746865206d6573736167652073656e646572206d75737420626520676f76657260408201526d1b985b98d94818dbdb9d1c9858dd60921b606082015260800190565b60208082526025908201527f6c656e677468206f66206d61784e756d4f6643616e64696461746573206d69736040820152640dac2e8c6d60db1b606082015260800190565b6020808252601290820152716e6f7420696e206d61696e74656e616e636560701b604082015260600190565b60208082526019908201527f74686520636f6e747261637420616c726561647920696e697400000000000000604082015260600190565b6020808252602f908201527f746865207475726e4c656e6774682073686f756c6420626520696e205b332c3960408201526e5d206f7220657175616c20746f203160881b606082015260800190565b6020808252601a908201527f6c656e677468206973206c657373207468616e206f6666736574000000000000604082015260600190565b60208082526017908201527f6f6e6c792063757272656e742076616c696461746f7273000000000000000000604082015260600190565b60208082526021908201527f6661696c656420746f20706172736520696e69742076616c696461746f7253656040820152601d60fa1b606082015260800190565b6020808252602f908201527f746865206d6573736167652073656e646572206d7573742062652063726f737360408201526e0818da185a5b8818dbdb9d1c9858dd608a1b606082015260800190565b6020808252602d908201527f746865206d6573736167652073656e646572206d75737420626520746865206260408201526c3637b1b590383937b23ab1b2b960991b606082015260800190565b60208082526028908201527f6c656e677468206f662073797374656d52657761726442617365526174696f206040820152670dad2e6dac2e8c6d60c31b606082015260800190565b6020808252603e908201527f746865206d61696e7461696e536c6173685363616c65206d757374206265206760408201527f726561746572207468616e203020616e64206c657373207468616e2031300000606082015260800190565b6020808252600d908201526c756e6b6e6f776e20706172616d60981b604082015260600190565b60208082526029908201527f746865206d6573736167652073656e646572206d75737420626520736c6173686040820152680818dbdb9d1c9858dd60ba1b606082015260800190565b6020808252601f908201527f746865206d73672073656e646572206d757374206265207374616b6548756200604082015260600190565b61ffff91909116815260200190565b90815260200190565b6000848252831515602083015260606040830152616e36606083018461616c565b95945050505050565b63ffffffff91909116815260200190565b6040518181016001600160401b0381118282101715616e6e57600080fd5b604052919050565b60006001600160401b03821115616e8b578081fd5b5060209081020190565b60005b83811015616eb0578181015183820152602001616e98565b838111156133b15750506000910152565b6001600160a01b038116811461171857600080fdfe0175b7a638427703f0dbe7bb9bbf987a2551717b34e79f33b5b1008d1fa01db90175b7a638427703f0dbe7bb9bbf987a2551717b34e79f33b5b1008d1fa01dbb0175b7a638427703f0dbe7bb9bbf987a2551717b34e79f33b5b1008d1fa01dbaf87680f873f871949fb29aac15b9a4b7f17c3385939b007540f4d791949fb29aac15b9a4b7f17c3385939b007540f4d791949fb29aac15b9a4b7f17c3385939b007540f4d79164b085e6972fc98cd3c81d64d40e325acfed44365b97a7567a27939c14dbc7512ddcf54cb1284eb637cfa308ae4e00cb5588a164736f6c6343000604000a \ No newline at end of file +60806040526004361061044b5760003560e01c80638c5d749d11610234578063c81b16621161012e578063e1c7392a116100b6578063f92eb86b1161007a578063f92eb86b14610b5f578063f9a2bbc714610b74578063fccc281314610b89578063fd4ad81f14610b9e578063fd6a687914610bcd57610452565b8063e1c7392a14610ae2578063e40716a114610af7578063ea321e4914610b0c578063eb57e20214610b2c578063f340fa0114610b4c57610452565b8063d58918ae116100fd578063d58918ae14610a79578063d68fb56a14610a8e578063daacdb6614610aa3578063dc927faf14610ab8578063df8079e914610acd57610452565b8063c81b166214610a2f578063c8509d81146107f1578063cb75a59214610a44578063ce910b0c14610a5957610452565b8063aa82dce1116101bc578063aef198a911610180578063aef198a9146109b9578063b7ab4db5146109ce578063b8cf4ef1146109f0578063c466689d14610a05578063c6d3394514610a1a57610452565b8063aa82dce11461092d578063aad5606314610942578063ab51bb9614610957578063ac43175114610979578063ad3c9da61461099957610452565b80639fe0f816116102035780639fe0f816146108c4578063a0dc2758146108d9578063a1a11bf5146108ee578063a5422d5c14610903578063a78abc161461091857610452565b80638c5d749d146108655780638d19a4101461087a5780639369d7de1461089a5780639dc09262146108af57610452565b80635192c82c1161034557806375d47a0a116102cd578063831d65d111610291578063831d65d1146107f1578063862498821461081157806388b32f11146108265780638a7beb011461083b5780638b5ad0c91461085057610452565b806375d47a0a1461078857806378dfed4a1461079d5780637a84ca2a146107b25780637e434d54146107c7578063820dcaa8146107dc57610452565b8063565c56b311610314578063565c56b3146106ec57806360eba4fe1461070c57806362b72cf51461072c5780636969a25c146107415780636e47b4821461077357610452565b80635192c82c1461068d57806351b4dce3146106a257806351e80672146106b757806355614fcc146106cc57610452565b80632a0ffb6e116103d35780633b071dcc116103975780633b071dcc1461060957806343756e5c1461062c57806345cf9daf14610641578063493279b1146106565780634df6e0c31461067857610452565b80632a0ffb6e14610569578063300c356714610589578063321d398a146105a95780633365af3a146105c957806335409f7f146105e957610452565b8063152ad3b81161041a578063152ad3b8146104e85780631bd14ed81461050a5780631e4c15241461051f5780631ff180691461053f578063280870281461055457610452565b806304c4fec61461045757806307a568471461046e5780630e2374a5146104995780631182b875146104bb57610452565b3661045257005b600080fd5b34801561046357600080fd5b5061046c610be2565b005b34801561047a57600080fd5b50610483610c56565b6040516104909190616e5e565b60405180910390f35b3480156104a557600080fd5b506104ae610c5c565b6040516104909190616214565b3480156104c757600080fd5b506104db6104d63660046160fa565b610c62565b6040516104909190616334565b3480156104f457600080fd5b506104fd610d5d565b6040516104909190616329565b34801561051657600080fd5b50610483610d66565b34801561052b57600080fd5b5061046c61053a366004615f28565b610d6c565b34801561054b57600080fd5b506104836110a0565b34801561056057600080fd5b506104ae6110a6565b34801561057557600080fd5b5061046c610584366004615e88565b6110ac565b34801561059557600080fd5b5061046c6105a4366004615ec0565b6110cd565b3480156105b557600080fd5b506104fd6105c43660046160a7565b611416565b3480156105d557600080fd5b506104fd6105e43660046160a7565b6114e5565b3480156105f557600080fd5b5061046c610604366004615e88565b611596565b34801561061557600080fd5b5061061e6116fb565b6040516104909291906162b9565b34801561063857600080fd5b506104ae6119d7565b34801561064d57600080fd5b506104836119dd565b34801561066257600080fd5b5061066b6119e3565b6040516104909190616e4f565b34801561068457600080fd5b5061061e6119e9565b34801561069957600080fd5b50610483611b75565b3480156106ae57600080fd5b506104ae611b7b565b3480156106c357600080fd5b506104ae611b81565b3480156106d857600080fd5b506104fd6106e7366004615e88565b611b87565b3480156106f857600080fd5b50610483610707366004615e88565b611bc3565b34801561071857600080fd5b506104db6107273660046160a7565b611c14565b34801561073857600080fd5b50610483611cba565b34801561074d57600080fd5b5061076161075c3660046160a7565b611cc0565b60405161049096959493929190616241565b34801561077f57600080fd5b506104ae611d24565b34801561079457600080fd5b506104ae611d2a565b3480156107a957600080fd5b50610483611d30565b3480156107be57600080fd5b50610483611d36565b3480156107d357600080fd5b506104ae611d3c565b3480156107e857600080fd5b50610483611d42565b3480156107fd57600080fd5b5061046c61080c3660046160fa565b611d48565b34801561081d57600080fd5b50610483611d69565b34801561083257600080fd5b50610483611d6f565b34801561084757600080fd5b506104fd611d75565b34801561085c57600080fd5b50610483611d7e565b34801561087157600080fd5b50610483611d84565b34801561088657600080fd5b50610483610895366004615e88565b611da1565b3480156108a657600080fd5b5061046c611de1565b3480156108bb57600080fd5b506104ae611ef5565b3480156108d057600080fd5b50610483611efb565b3480156108e557600080fd5b50610483611f00565b3480156108fa57600080fd5b506104ae611f05565b34801561090f57600080fd5b506104db611f0b565b34801561092457600080fd5b506104fd611f27565b34801561093957600080fd5b506104ae611f30565b34801561094e57600080fd5b506104ae611f36565b34801561096357600080fd5b5061096c611f3c565b6040516104909190616e91565b34801561098557600080fd5b5061046c61099436600461604b565b611f41565b3480156109a557600080fd5b506104836109b4366004615e88565b6129aa565b3480156109c557600080fd5b506104836129bc565b3480156109da57600080fd5b506109e36129c9565b60405161049091906162a6565b3480156109fc57600080fd5b50610483612ab4565b348015610a1157600080fd5b50610483612ab9565b348015610a2657600080fd5b50610483612abf565b348015610a3b57600080fd5b506104ae612ac4565b348015610a5057600080fd5b50610483612aca565b348015610a6557600080fd5b506104db610a743660046160a7565b612ad0565b348015610a8557600080fd5b50610483612add565b348015610a9a57600080fd5b50610483612ae3565b348015610aaf57600080fd5b50610483612b22565b348015610ac457600080fd5b506104ae612b28565b348015610ad957600080fd5b506104ae612b2e565b348015610aee57600080fd5b5061046c612b34565b348015610b0357600080fd5b50610483612dbf565b348015610b1857600080fd5b506104fd610b2736600461600c565b612dc5565b348015610b3857600080fd5b5061046c610b47366004615e88565b612f4b565b61046c610b5a366004615e88565b613053565b348015610b6b57600080fd5b50610483613409565b348015610b8057600080fd5b506104ae61340f565b348015610b9557600080fd5b506104ae613415565b348015610baa57600080fd5b50610bbe610bb93660046160a7565b61341b565b60405161049093929190616e67565b348015610bd957600080fd5b506104ae6134dd565b6000610bed33611da1565b9050600b8181548110610bfc57fe5b600091825260209091206001601690920201015460ff16610c385760405162461bcd60e51b8152600401610c2f90616b06565b60405180910390fd5b6000610c42612ae3565b9050610c5133838360016134e3565b505050565b60095481565b61200181565b60005460609060ff16610c875760405162461bcd60e51b8152600401610c2f90616519565b600b54610d4557610c96615a34565b60015460005b81811015610d4157600b80546001810182556000919091528351600080516020616f298339815191526016909202918201908155602080860151600080516020616f698339815191528401805460ff1916911515919091179055604086015180518794610d1d93600080516020616f49833981519152909101920190615a63565b506060820151610d339060038301906013615add565b505050806001019050610c9c565b5050505b60405162461bcd60e51b8152600401610c2f9061676b565b60075460ff1681565b600f5481565b334114610d8b5760405162461bcd60e51b8152600401610c2f90616cb6565b3a15610da95760405162461bcd60e51b8152600401610c2f90616a45565b8251604080518281526020808402820101909152606090828015610de757816020015b610dd4615b0a565b815260200190600190039081610dcc5790505b50905060005b82811015610e91576040518060c00160405280878381518110610e0c57fe5b60200260200101516001600160a01b0316815260200160006001600160a01b0316815260200160006001600160a01b03168152602001868381518110610e4e57fe5b60200260200101516001600160401b031681526020016000151581526020016000815250828281518110610e7e57fe5b6020908102919091010152600101610ded565b50606080610e9f83866136d5565b9150915060005b600154811015610f9557600060018281548110610ebf57fe5b906000526020600020906004020160030154905080600014610f8c57600060018381548110610eea57fe5b9060005260206000209060040201600301819055506120026001600160a01b031663092193ab8260018581548110610f1e57fe5b60009182526020909120600491820201546040516001600160e01b031960e086901b168152610f59926001600160a01b039092169101616214565b6000604051808303818588803b158015610f7257600080fd5b505af1158015610f86573d6000803e3d6000fd5b50505050505b50600101610ea6565b504715611003577f6ecc855f9440a9282c90913bbc91619fd44f5ec0b462af28d127b116f130aa4d47604051610fcb9190616e5e565b60405180910390a1604051611002904780156108fc02916000818181858888f19350505050158015611001573d6000803e3d6000fd5b505b6000600355815115611019576110198282613bbf565b6110016001600160a01b031663fc4333cd6040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561105657600080fd5b505af115801561106a573d6000803e3d6000fd5b50506040517fedd8d7296956dd970ab4de3f2fc03be2b0ffc615d20cd4c72c6e44f928630ebf925060009150a150505050505050565b60035481565b61200581565b3361200214610d455760405162461bcd60e51b8152600401610c2f90616e18565b3341146110ec5760405162461bcd60e51b8152600401610c2f90616cb6565b601054431161110d5760405162461bcd60e51b8152600401610c2f90616695565b3a1561112b5760405162461bcd60e51b8152600401610c2f90616a45565b60005460ff1661114d5760405162461bcd60e51b8152600401610c2f90616519565b60006110023168056bc75e2d631000008111156111845761117d8168056bc75e2d6310000063ffffffff6143ae16565b915061118b565b505061140c565b6040516309a99b4f60e41b815261100290639a99b4f0906111b29030908690600401616228565b602060405180830381600087803b1580156111cc57600080fd5b505af11580156111e0573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061120491906160bf565b91508161121257505061140c565b6000805b848110156112405785858281811061122a57fe5b9050602002013582019150806001019050611216565b508061124e5750505061140c565b6000806000805b89811015611404578489898381811061126a57fe5b9050602002013588028161127a57fe5b0493508a8a8281811061128957fe5b905060200201602081019061129e9190615e88565b6001600160a01b038116600090815260046020526040902054909350915081156113ba5760006001808403815481106112d357fe5b9060005260206000209060040201905080600201601c9054906101000a900460ff161561134057836001600160a01b03167fb9c75cbbfde137c4281689580799ef5f52144e78858f776a5979b2b212137d85866040516113339190616e5e565b60405180910390a26113b4565b600354611353908663ffffffff6143f016565b600390815581015461136b908663ffffffff6143f016565b60038201556040516001600160a01b038516907fcb0aad6cf9cd03bdf6137e359f541c42f38b39f007cae8e89e88aa7d8c6617b2906113ab908890616e5e565b60405180910390a25b506113fc565b826001600160a01b03167fb9c75cbbfde137c4281689580799ef5f52144e78858f776a5979b2b212137d85856040516113f39190616e5e565b60405180910390a25b600101611255565b505050505050505b5050436010555050565b600154600090821061142a575060006114e0565b60006001600160a01b03166001838154811061144257fe5b60009182526020909120600490910201546001600160a01b03161480611472575060085415806114725750600a54155b80611481575060085460095410155b806114925750611490826114e5565b155b806114bb57506000600b83815481106114a757fe5b906000526020600020906016020160000154115b806114cf575060016114cb6129c9565b5111155b156114dc575060006114e0565b5060015b919050565b60015460009082106114f9575060006114e0565b600b548210611536576001828154811061150f57fe5b9060005260206000209060040201600201601c9054906101000a900460ff161590506114e0565b6001828154811061154357fe5b9060005260206000209060040201600201601c9054906101000a900460ff161580156115905750600b828154811061157757fe5b600091825260209091206001601690920201015460ff16155b92915050565b600b54611654576115a5615a34565b60015460005b8181101561165057600b80546001810182556000919091528351600080516020616f298339815191526016909202918201908155602080860151600080516020616f698339815191528401805460ff191691151591909117905560408601518051879461162c93600080516020616f49833981519152909101920190615a63565b5060608201516116429060038301906013615add565b5050508060010190506115ab565b5050505b336110011480611665575033612002145b6116815760405162461bcd60e51b8152600401610c2f90616550565b6001600160a01b038116600090815260046020526040902054806116a557506116f8565b6001810390506000600b82815481106116ba57fe5b600091825260209091206001601690920201015460ff1690506116dd8383614415565b80156116e65750805b15610c51576009805460001901905550505b50565b60015460609081906000805b8281101561174e576001818154811061171c57fe5b9060005260206000209060040201600201601c9054906101000a900460ff16611746576001909101905b600101611707565b5060608160405190808252806020026020018201604052801561177b578160200160208202803683370190505b5090506060826040519080825280602002602001820160405280156117b457816020015b606081526020019060019003908161179f5790505b50600b546000945090915084141561192f5760005b8481101561192957600181815481106117de57fe5b9060005260206000209060040201600201601c9054906101000a900460ff16611921576001818154811061180e57fe5b600091825260209091206004909102015483516001600160a01b039091169084908690811061183957fe5b60200260200101906001600160a01b031690816001600160a01b031681525050600b818154811061186657fe5b600091825260209182902060026016909202018101805460408051601f6000196101006001861615020190931694909404918201859004850284018501905280835291929091908301828280156118fe5780601f106118d3576101008083540402835291602001916118fe565b820191906000526020600020905b8154815290600101906020018083116118e157829003601f168201915b505050505082858151811061190f57fe5b60209081029190910101526001909301925b6001016117c9565b506119cb565b60005b848110156119c9576001818154811061194757fe5b9060005260206000209060040201600201601c9054906101000a900460ff166119c1576001818154811061197757fe5b600091825260209091206004909102015483516001600160a01b03909116908490869081106119a257fe5b6001600160a01b03909216602092830291909101909101526001909301925b600101611932565b505b909450925050505b9091565b61100181565b60085481565b6102ca81565b6060806000600e549050600080600c5411611a05576015611a09565b600c545b90506060611a156129c9565b90506060611a22826147d8565b905082825111611a395790945092506119d3915050565b83838351031015611a4b578282510393505b8315611a815760c84304611a6783838388880360008a8a614946565b611a7f8383838888038989038a8b8b8b510301614946565b505b606083604051908082528060200260200182016040528015611aad578160200160208202803683370190505b509050606084604051908082528060200260200182016040528015611ae657816020015b6060815260200190600190039081611ad15790505b50905060005b85811015611b6757848181518110611b0057fe5b6020026020010151838281518110611b1457fe5b60200260200101906001600160a01b031690816001600160a01b031681525050838181518110611b4057fe5b6020026020010151828281518110611b5457fe5b6020908102919091010152600101611aec565b509096509450505050509091565b60065481565b61200681565b61200081565b6001600160a01b03811660009081526004602052604081205480611baf5760009150506114e0565b60001901611bbc816114e5565b9392505050565b6001600160a01b03811660009081526004602052604081205480611beb5760009150506114e0565b600180820381548110611bfa57fe5b906000526020600020906004020160030154915050919050565b60128181548110611c2157fe5b600091825260209182902001805460408051601f6002600019610100600187161502019094169390930492830185900485028101850190915281815293509091830182828015611cb25780601f10611c8757610100808354040283529160200191611cb2565b820191906000526020600020905b815481529060010190602001808311611c9557829003601f168201915b505050505081565b60105481565b60018181548110611ccd57fe5b600091825260209091206004909102018054600182015460028301546003909301546001600160a01b0392831694509082169291821691600160a01b81046001600160401b031691600160e01b90910460ff169086565b61100581565b61100881565b6103e881565b600c5481565b61200381565b61271081565b3361200014610d455760405162461bcd60e51b8152600401610c2f90616c67565b60025481565b60115481565b60145460ff1681565b600a5481565b600060175460001415611d9957506001611d9e565b506017545b90565b6001600160a01b03811660009081526004602052604081205480611dd75760405162461bcd60e51b8152600401610c2f90616bef565b6000190192915050565b600b54611e9f57611df0615a34565b60015460005b81811015611e9b57600b80546001810182556000919091528351600080516020616f298339815191526016909202918201908155602080860151600080516020616f698339815191528401805460ff1916911515919091179055604086015180518794611e7793600080516020616f49833981519152909101920190615a63565b506060820151611e8d9060038301906013615add565b505050806001019050611df6565b5050505b600854611eac5760036008555b600a54611eb9576002600a555b6000611ec433611da1565b9050611ecf81611416565b611eeb5760405162461bcd60e51b8152600401610c2f906169c1565b6116f83382614a9d565b61100781565b600381565b60c881565b61100681565b6040518060a0016040528060788152602001616f896078913981565b60005460ff1681565b61200281565b61300081565b600081565b60005460ff16611f635760405162461bcd60e51b8152600401610c2f90616519565b3361100714611f845760405162461bcd60e51b8152600401610c2f90616a73565b611fe484848080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250506040805180820190915260098152686275726e526174696f60b81b60208201529150614b359050565b1561209957602081146120095760405162461bcd60e51b8152600401610c2f90616379565b604080516020601f840181900481028201810190925282815260009161204791858580838501838280828437600092019190915250614b8e92505050565b9050612710612073601854612067600f54856143f090919063ffffffff16565b9063ffffffff6143f016565b11156120915760405162461bcd60e51b8152600401610c2f9061678f565b600655612967565b61210384848080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250506040805180820190915260138152726d61784e756d4f664d61696e7461696e696e6760681b60208201529150614b359050565b1561219d57602081146121285760405162461bcd60e51b8152600401610c2f906163b0565b604080516020601f840181900481028201810190925282815260009161216691858580838501838280828437600092019190915250614b8e92505050565b600c5490915080612175575060155b8082106121945760405162461bcd60e51b8152600401610c2f906166d7565b50600855612967565b61220684848080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250506040805180820190915260128152716d61696e7461696e536c6173685363616c6560701b60208201529150614b359050565b1561229f576020811461222b5760405162461bcd60e51b8152600401610c2f9061649f565b604080516020601f840181900481028201810190925282815260009161226991858580838501838280828437600092019190915250614b8e92505050565b905060008111801561227b5750600a81105b6122975760405162461bcd60e51b8152600401610c2f90616d4b565b600a55612967565b61231384848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505060408051808201909152601981527f6d61784e756d4f66576f726b696e6743616e646964617465730000000000000060208201529150614b359050565b156123a257602081146123385760405162461bcd60e51b8152600401610c2f90616453565b604080516020601f840181900481028201810190925282815260009161237691858580838501838280828437600092019190915250614b8e92505050565b9050600d5481111561239a5760405162461bcd60e51b8152600401610c2f90616898565b600e55612967565b61240b84848080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250506040805180820190915260128152716d61784e756d4f6643616e6469646174657360701b60208201529150614b359050565b1561248d57602081146124305760405162461bcd60e51b8152600401610c2f90616ac1565b604080516020601f840181900481028201810190925282815260009161246e91858580838501838280828437600092019190915250614b8e92505050565b600d819055600e5490915081101561248757600d54600e555b50612967565b6124f184848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505060408051808201909152600d81526c6e756d4f66436162696e65747360981b60208201529150614b359050565b1561261657602081146125165760405162461bcd60e51b8152600401610c2f906164e4565b604080516020601f840181900481028201810190925282815260009161255491858580838501838280828437600092019190915250614b8e92505050565b9050600081116125765760405162461bcd60e51b8152600401610c2f9061664d565b60006120026001600160a01b031663c473318f6040518163ffffffff1660e01b815260040160206040518083038186803b1580156125b357600080fd5b505afa1580156125c7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125eb91906160bf565b90508082111561260d5760405162461bcd60e51b8152600401610c2f906163f6565b50600c55612967565b61268284848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505060408051808201909152601581527473797374656d52657761726442617365526174696f60581b60208201529150614b359050565b1561272b57602081146126a75760405162461bcd60e51b8152600401610c2f90616d03565b604080516020601f84018190048102820181019092528281526000916126e591858580838501838280828437600092019190915250614b8e92505050565b9050612710612705601854612067600654856143f090919063ffffffff16565b11156127235760405162461bcd60e51b8152600401610c2f906165be565b600f55612967565b61279f84848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505060408051808201909152601881527f73797374656d526577617264416e74694d4556526174696f000000000000000060208201529150614b359050565b1561284857602081146127c45760405162461bcd60e51b8152600401610c2f9061681e565b604080516020601f840181900481028201810190925282815260009161280291858580838501838280828437600092019190915250614b8e92505050565b9050612710612822600f54612067600654856143f090919063ffffffff16565b11156128405760405162461bcd60e51b8152600401610c2f90616932565b601855612967565b6128a984848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505060408051808201909152600a8152690e8eae4dc98cadccee8d60b31b60208201529150614b359050565b1561294f57602081146128ce5760405162461bcd60e51b8152600401610c2f90616734565b604080516020601f840181900481028201810190925282815260009161290c91858580838501838280828437600092019190915250614b8e92505050565b905060038110158015612920575060098111155b8061292b5750806001145b6129475760405162461bcd60e51b8152600401610c2f90616b69565b601755612967565b60405162461bcd60e51b8152600401610c2f90616da8565b7f6cdb0ac70ab7f2e2d035cca5be60d89906f2dede7648ddbd7402189c1eeed17a8484848460405161299c9493929190616347565b60405180910390a150505050565b60046020526000908152604090205481565b68056bc75e2d6310000081565b6001546060906000805b828110156129f8576129e4816114e5565b156129f0578160010191505b6001016129d3565b50606081604051908082528060200260200182016040528015612a25578160200160208202803683370190505b5090506000915060005b83811015612aac57612a40816114e5565b15612aa45760018181548110612a5257fe5b600091825260209091206004909102015482516001600160a01b0390911690839085908110612a7d57fe5b60200260200101906001600160a01b031690816001600160a01b0316815250508260010192505b600101612a2f565b509250505090565b601581565b61027181565b600281565b61100281565b60175481565b60138181548110611c2157fe5b60185481565b6000612aed6129c9565b519050600080600c5411612b02576015612b06565b600c545b905080821115612b14578091505b81612b1e57600191505b5090565b60055481565b61100381565b61200481565b60005460ff1615612b575760405162461bcd60e51b8152600401610c2f90616b32565b612b5f615b3f565b6000612b826040518060a0016040528060788152602001616f8960789139614b93565b9150915080612ba35760405162461bcd60e51b8152600401610c2f90616c26565b612bab615a34565b60005b836020015151811015612dac57600b80546001810182556000919091528251600080516020616f298339815191526016909202918201908155602080850151600080516020616f698339815191528401805460ff1916911515919091179055604085015180518694612c3493600080516020616f49833981519152909101920190615a63565b506060820151612c4a9060038301906013615add565b50505083604001518181518110612c5d57fe5b6020026020010151600b8281548110612c7257fe5b90600052602060002090601602016002019080519060200190612c96929190615a63565b50600184602001518281518110612ca957fe5b60209081029190910181015182546001818101855560009485528385208351600493840290910180546001600160a01b039283166001600160a01b03199182161782558587015182850180549185169183169190911790556040860151600283018054606089015160808a01511515600160e01b0260ff60e01b196001600160401b03909216600160a01b0267ffffffffffffffff60a01b199590981692909516919091179290921694909417161790915560a090930151600390930192909255918701518051918501939185908110612d7f57fe5b602090810291909101810151516001600160a01b0316825281019190915260400160002055600101612bae565b50506000805460ff191660011790555050565b600d5481565b601354600090815b81811015612ece57612eb685858080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050601380549092508591508110612e1e57fe5b600091825260209182902001805460408051601f6002600019610100600187161502019094169390930492830185900485028101850190915281815292830182828015612eac5780601f10612e8157610100808354040283529160200191612eac565b820191906000526020600020905b815481529060010190602001808311612e8f57829003601f168201915b5050505050614d4f565b15612ec657600192505050611590565b600101612dcd565b5060125460005b81811015612f3f57612f2686868080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050601280549092508591508110612e1e57fe5b15612f375760019350505050611590565b600101612ed5565b50600095945050505050565b3361100114612f6c5760405162461bcd60e51b8152600401610c2f90616dcf565b600b5461302a57612f7b615a34565b60015460005b8181101561302657600b80546001810182556000919091528351600080516020616f298339815191526016909202918201908155602080860151600080516020616f698339815191528401805460ff191691151591909117905560408601518051879461300293600080516020616f49833981519152909101920190615a63565b5060608201516130189060038301906013615add565b505050806001019050612f81565b5050505b600061303582614db3565b905061304081611416565b1561304f5761304f8282614a9d565b5050565b3341146130725760405162461bcd60e51b8152600401610c2f90616cb6565b60005460ff166130945760405162461bcd60e51b8152600401610c2f90616519565b600034116130b45760405162461bcd60e51b8152600401610c2f90616869565b3a156130d25760405162461bcd60e51b8152600401610c2f90616a45565b6001600160a01b03811660009081526004602052604090205460145434919060ff1661311257610271600f556103e86006556014805460ff191660011790555b600f54601754600110801561312957506000601854115b1561314e57600160175403601754438161313f57fe5b06601854028161314b57fe5b04015b60008311801561315e5750600081115b1561320b57600061318761271061317b348563ffffffff614f3616565b9063ffffffff614f7016565b90508015613209576040516110029082156108fc029083906000818181858888f193505050501580156131be573d6000803e3d6000fd5b507f6ecc855f9440a9282c90913bbc91619fd44f5ec0b462af28d127b116f130aa4d816040516131ee9190616e5e565b60405180910390a1613206848263ffffffff6143ae16565b93505b505b60008311801561321d57506000600654115b156132c357600061323f61271061317b60065434614f3690919063ffffffff16565b905080156132c15760405161dead9082156108fc029083906000818181858888f19350505050158015613276573d6000803e3d6000fd5b507f627059660ea01c4733a328effb2294d2f86905bf806da763a89cee254de8bee5816040516132a69190616e5e565b60405180910390a16132be848263ffffffff6143ae16565b93505b505b81156133c15760006001808403815481106132da57fe5b9060005260206000209060040201905080600201601c9054906101000a900460ff161561334757846001600160a01b03167ff177e5d6c5764d79c32883ed824111d9b13f5668cf6ab1cc12dd36791dd955b48560405161333a9190616e5e565b60405180910390a26133bb565b60035461335a908563ffffffff6143f016565b6003908155810154613372908563ffffffff6143f016565b60038201556040516001600160a01b038616907f93a090ecc682c002995fad3c85b30c5651d7fd29b0be5da9d784a3302aedc055906133b2908790616e5e565b60405180910390a25b50613403565b836001600160a01b03167ff177e5d6c5764d79c32883ed824111d9b13f5668cf6ab1cc12dd36791dd955b4846040516133fa9190616e5e565b60405180910390a25b50505050565b600e5481565b61100081565b61dead81565b600b818154811061342857fe5b6000918252602091829020601691909102018054600180830154600280850180546040805161010096831615969096026000190190911692909204601f810188900488028501880190925281845293965060ff909116949192918301828280156134d35780601f106134a8576101008083540402835291602001916134d3565b820191906000526020600020905b8154815290600101906020018083116134b657829003601f168201915b5050505050905083565b61100481565b6000600a54600014806134f4575082155b806134ff5750600954155b1561350c575060006136cd565b60096000815460019003919050819055506000613557600a5461317b8661317b600b8a8154811061353957fe5b6000918252602090912060169091020154439063ffffffff6143ae16565b90506000600b868154811061356857fe5b906000526020600020906016020160010160006101000a81548160ff0219169083151502179055506000806110016001600160a01b0316638256ace66040518163ffffffff1660e01b8152600401604080518083038186803b1580156135cd57600080fd5b505afa1580156135e1573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061360591906160d7565b91509150600093508083106136835761361e8888614415565b506040516328aa02b160e01b8152611001906328aa02b190613648908b9087908a90600401616283565b600060405180830381600087803b15801561366257600080fd5b505af1158015613676573d6000803e3d6000fd5b5050505060019350613695565b8183106136955761369388614db3565b505b6040516001600160a01b038916907fb9d38178dc641ff1817967a63c9078cbcd955a9f1fcd75e0e3636de615d44d3b90600090a25050505b949350505050565b6060806000808080806136e6612ae3565b6001549091505b801561391857600181039250600b838154811061370657fe5b600091825260209091206001601690920201015460ff166137265761390f565b6001838154811061373357fe5b600091825260208220600490910201546001600160a01b0316955061375d908690859085906134e3565b9350836137695761390f565b60405163436aa28360e11b81526000908190612002906386d5450690613793908a90600401616214565b60206040518083038186803b1580156137ab57600080fd5b505afa1580156137bf573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906137e39190615ea4565b90506001600160a01b0381161561386c576040516302ceee9160e11b81526120029063059ddd2290613819908490600401616214565b60206040518083038186803b15801561383157600080fd5b505afa158015613845573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906138699190615ea4565b91505b60005b8c5181101561390b57876001600160a01b03168d828151811061388e57fe5b6020026020010151600001516001600160a01b031614806138d75750826001600160a01b03168d82815181106138c057fe5b6020026020010151600001516001600160a01b0316145b156139035760018d82815181106138ea57fe5b602090810291909101015190151560809091015261390b565b60010161386f565b5050505b600019016136ed565b5060005b89518110156139855789818151811061393157fe5b60200260200101516080015180613971575060006001600160a01b03168a828151811061395a57fe5b6020026020010151600001516001600160a01b0316145b1561397d578560010195505b60010161391c565b5088518510613a6d5760408051600180825281830190925290816020015b6139ab615b0a565b8152602001906001900390816139a3575050604080516001808252818301909252919850602082015b60608152602001906001900390816139d4579050509550886000815181106139f857fe5b602002602001015187600081518110613a0d57fe5b602002602001018190525087600081518110613a2557fe5b602002602001015186600081518110613a3a57fe5b6020026020010181905250600087600081518110613a5457fe5b6020908102919091010151901515608090910152613bb2565b84895103604051908082528060200260200182016040528015613aaa57816020015b613a97615b0a565b815260200190600190039081613a8f5790505b50965084895103604051908082528060200260200182016040528015613ae457816020015b6060815260200190600190039081613acf5790505b5095506000915060005b8951811015613bb057898181518110613b0357fe5b602002602001015160800151158015613b46575060006001600160a01b03168a8281518110613b2e57fe5b6020026020010151600001516001600160a01b031614155b15613ba857898181518110613b5757fe5b6020026020010151888481518110613b6b57fe5b6020026020010181905250888181518110613b8257fe5b6020026020010151878481518110613b9657fe5b60200260200101819052508260010192505b600101613aee565b505b50505050505b9250929050565b600154825160005b82811015613cdc576001613bd9615b0a565b60018381548110613be657fe5b600091825260208083206040805160c08101825260049490940290910180546001600160a01b0390811685526001820154811693850193909352600281015492831691840191909152600160a01b82046001600160401b03166060840152600160e01b90910460ff16151560808301526003015460a082015291505b84811015613cb057878181518110613c7657fe5b6020026020010151600001516001600160a01b031682600001516001600160a01b03161415613ca85760009250613cb0565b600101613c62565b508115613cd25780516001600160a01b03166000908152600460205260408120555b5050600101613bc7565b5080821115613d9b57805b82811015613d99576001805480613cfa57fe5b60008281526020812060046000199093019283020180546001600160a01b0319908116825560018201805490911690556002810180546001600160e81b0319169055600301559055600b805480613d4d57fe5b60008281526020812060166000199093019283020181815560018101805460ff1916905590613d7f6002830182615b63565b613d8d600383016000615ba7565b50509055600101613ce7565b505b6000818310613daa5781613dac565b825b905060005b8181101561415057613e5e868281518110613dc857fe5b602002602001015160018381548110613ddd57fe5b60009182526020918290206040805160c08101825260049390930290910180546001600160a01b0390811684526001820154811694840194909452600281015493841691830191909152600160a01b83046001600160401b03166060830152600160e01b90920460ff161515608082015260039091015460a0820152614fb2565b614012578060010160046000888481518110613e7657fe5b6020026020010151600001516001600160a01b03166001600160a01b0316815260200190815260200160002081905550858181518110613eb257fe5b602002602001015160018281548110613ec757fe5b6000918252602091829020835160049092020180546001600160a01b039283166001600160a01b0319918216178255928401516001820180549184169185169190911790556040840151600282018054606087015160808801511515600160e01b0260ff60e01b196001600160401b03909216600160a01b0267ffffffffffffffff60a01b1995909716929097169190911792909216939093171692909217905560a0909101516003909101558451859082908110613f8257fe5b6020026020010151600b8281548110613f9757fe5b90600052602060002090601602016002019080519060200190613fbb929190615a63565b506000600b8281548110613fcb57fe5b60009182526020822060169190910201600101805460ff191692151592909217909155600b805483908110613ffc57fe5b6000918252602090912060169091020155614148565b85818151811061401e57fe5b6020026020010151606001516001828154811061403757fe5b906000526020600020906004020160020160146101000a8154816001600160401b0302191690836001600160401b031602179055506140fd85828151811061407b57fe5b6020026020010151600b838154811061409057fe5b600091825260209182902060026016909202018101805460408051601f600019610100600186161502019093169490940491820185900485028401850190528083529192909190830182828015612eac5780601f10612e8157610100808354040283529160200191612eac565b6141485784818151811061410d57fe5b6020026020010151600b828154811061412257fe5b90600052602060002090601602016002019080519060200190614146929190615a63565b505b600101613db1565b508282111561432857614161615a34565b835b838110156143255785818151811061417757fe5b60200260200101518260400181905250600187828151811061419557fe5b6020908102919091018101518254600181810185556000948552838520835160049093020180546001600160a01b039384166001600160a01b0319918216178255848601518284018054918616918316919091179055604080860151600284018054606089015160808a01511515600160e01b0260ff60e01b196001600160401b03909216600160a01b0267ffffffffffffffff60a01b1995909a1692909616919091179290921696909617169190911790935560a090930151600390930192909255600b8054928301815590935284516016909102600080516020616f29833981519152810191825585830151600080516020616f698339815191528201805491151560ff19909216919091179055928501518051869492936142cb93600080516020616f4983398151915201920190615a63565b5060608201516142e19060038301906013615add565b50505080600101600460008984815181106142f857fe5b602090810291909101810151516001600160a01b0316825281019190915260400160002055600101614163565b50505b61433061500e565b6143386151f0565b6000600981905560015493505b838110156143a6576000600b828154811061435c57fe5b60009182526020822060169190910201600101805460ff191692151592909217909155600b80548390811061438d57fe5b6000918252602090912060169091020155600101614345565b505050505050565b6000611bbc83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506153de565b600082820183811015611bbc5760405162461bcd60e51b8152600401610c2f90616587565b6000806001838154811061442557fe5b9060005260206000209060040201600301549050600060018080549050039050600161444f6129c9565b51116144845760006001858154811061446457fe5b906000526020600020906004020160030181905550600092505050611590565b846001600160a01b03167f3b6f9ef90462b512a1293ecec018670bf7b7f1876fb727590a8a6d7643130a70836040516144bd9190616e5e565b60405180910390a26001600160a01b038516600090815260046020526040812055835b600154600019018110156146aa57600181600101815481106144fe57fe5b90600052602060002090600402016001828154811061451957fe5b60009182526020909120825460049092020180546001600160a01b03199081166001600160a01b0393841617825560018085015481840180548416918616919091179055600280860180549185018054909416919095161780835584546001600160401b03600160a01b91829004160267ffffffffffffffff60a01b1990911617808355935460ff600160e01b918290041615150260ff60e01b19909416939093179055600392830154920191909155600b8054909183019081106145da57fe5b9060005260206000209060160201600b82815481106145f557fe5b600091825260209091208254601690920201908155600180830154818301805460ff909216151560ff199092169190911790556002808401805461464c938386019390821615610100026000190190911604615bb6565b5061465f60038281019084016013615c2b565b5090505080600101600460006001848154811061467857fe5b600091825260208083206004909202909101546001600160a01b031683528201929092526040019020556001016144e0565b5060018054806146b657fe5b60008281526020812060046000199093019283020180546001600160a01b0319908116825560018201805490911690556002810180546001600160e81b0319169055600301559055600b80548061470957fe5b60008281526020812060166000199093019283020181815560018101805460ff191690559061473b6002830182615b63565b614749600383016000615ba7565b50509055600081838161475857fe5b04905080156147cc5760015460005b818110156147c9576147a0836001838154811061478057fe5b9060005260206000209060040201600301546143f090919063ffffffff16565b600182815481106147ad57fe5b6000918252602090912060036004909202010155600101614767565b50505b50600195945050505050565b60015481516040805182815260208084028201019091526060929190839082801561481757816020015b60608152602001906001900390816148025790505b50600b54909150831461482e5792506114e0915050565b60005b8281101561493d57600b60016004600089858151811061484d57fe5b60200260200101516001600160a01b03166001600160a01b0316815260200190815260200160002054038154811061488157fe5b600091825260209182902060026016909202018101805460408051601f6000196101006001861615020190931694909404918201859004850284018501905280835291929091908301828280156149195780601f106148ee57610100808354040283529160200191614919565b820191906000526020600020905b8154815290600101906020018083116148fc57829003601f168201915b505050505082828151811061492a57fe5b6020908102919091010152600101614831565b50949350505050565b60005b82811015614a935760008287838801604051602001614969929190616206565b6040516020818303038152906040528051906020012060001c8161498957fe5b06905080850182870114614a8a57600089838801815181106149a757fe5b60200260200101519050606089848901815181106149c157fe5b602002602001015190508a838801815181106149d957fe5b60200260200101518b858a01815181106149ef57fe5b60200260200101906001600160a01b031690816001600160a01b031681525050818b84890181518110614a1e57fe5b60200260200101906001600160a01b031690816001600160a01b0316815250508983880181518110614a4c57fe5b60200260200101518a858a0181518110614a6257fe5b6020026020010181905250808a84890181518110614a7c57fe5b602002602001018190525050505b50600101614949565b5050505050505050565b600980546001908101909155600b805483908110614ab757fe5b906000526020600020906016020160010160006101000a81548160ff02191690831515021790555043600b8281548110614aed57fe5b600091825260208220601690910201919091556040516001600160a01b038416917ff62981a567ec3cec866c6fa93c55bcdf841d6292d18b8d522ececa769375d82d91a25050565b600081604051602001614b4891906161ea565b6040516020818303038152906040528051906020012083604051602001614b6f91906161ea565b6040516020818303038152906040528051906020012014905092915050565b015190565b614b9b615b3f565b6000614ba5615b3f565b614bad615c55565b614bbe614bb98661540a565b61542f565b90506000805b614bcd83615479565b15614d415780614bf257614be8614be38461549a565b6154e8565b60ff168452614d39565b8060011415614d34576060614c0e614c098561549a565b615568565b90508051604051908082528060200260200182016040528015614c4b57816020015b614c38615b0a565b815260200190600190039081614c305790505b5085602001819052508051604051908082528060200260200182016040528015614c8957816020015b6060815260200190600190039081614c745790505b50604086015260005b8151811015614d2957614ca3615b0a565b60606000614cc3858581518110614cb657fe5b6020026020010151615639565b92509250925080614ce3578860009a509a50505050505050505050614d4a565b8289602001518581518110614cf457fe5b60200260200101819052508189604001518581518110614d1057fe5b6020026020010181905250505050806001019050614c92565b506001925050614d39565b614d41565b600101614bc4565b50919350909150505b915091565b815181516000916001918114808314614d6b5760009250614da9565b600160208701838101602088015b600284838510011415614da4578051835114614d985760009650600093505b60209283019201614d79565b505050505b5090949350505050565b6001600160a01b03811660009081526004602052604081205480614ddc575060001990506114e0565b600181039050600060018281548110614df157fe5b9060005260206000209060040201600301549050600060018381548110614e1457fe5b6000918252602090912060036004909202010155600154604051600019909101906001600160a01b038616907f8cd4e147d8af98a9e3b6724021b8bf6aed2e5dac71c38f2dce8161b82585b25d90614e6d908590616e5e565b60405180910390a280614e85578293505050506114e0565b6000818381614e9057fe5b0490508015614f2c5760005b84811015614ede57614eb5826001838154811061478057fe5b60018281548110614ec257fe5b6000918252602090912060036004909202010155600101614e9c565b50600180549085015b81811015614f2957614f00836001838154811061478057fe5b60018281548110614f0d57fe5b6000918252602090912060036004909202010155600101614ee7565b50505b5091949350505050565b600082614f4557506000611590565b82820282848281614f5257fe5b0414611bbc5760405162461bcd60e51b8152600401610c2f90616a04565b6000611bbc83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250615753565b805182516000916001600160a01b039182169116148015614fec575081602001516001600160a01b031683602001516001600160a01b0316145b8015611bbc5750506040908101519101516001600160a01b0390811691161490565b6012546013548082111561505957805b8281101561505757601280548061503157fe5b60019003818190600052602060002001600061504d9190615b63565b905560010161501e565b505b6000818310615068578161506a565b825b905060005b81811015615182576151276012828154811061508757fe5b600091825260209182902001805460408051601f60026000196101006001871615020190941693909304928301859004850281018501909152818152928301828280156151155780601f106150ea57610100808354040283529160200191615115565b820191906000526020600020905b8154815290600101906020018083116150f857829003601f168201915b505050505060138381548110612e1e57fe5b61517a576013818154811061513857fe5b906000526020600020016012828154811061514f57fe5b906000526020600020019080546001816001161561010002031660029004615178929190615bb6565b505b60010161506f565b5082821115610c5157825b82811015613403576012601382815481106151a457fe5b60009182526020808320845460018181018755958552919093209290910180546151e7949390920192909160026101009282161592909202600019011604615bb6565b5060010161518d565b601354600b548082111561523b57805b8281101561523957601380548061521357fe5b60019003818190600052602060002001600061522f9190615b63565b9055600101615200565b505b600081831061524a578161524c565b825b905060005b8181101561536b576153096013828154811061526957fe5b600091825260209182902001805460408051601f60026000196101006001871615020190941693909304928301859004850281018501909152818152928301828280156152f75780601f106152cc576101008083540402835291602001916152f7565b820191906000526020600020905b8154815290600101906020018083116152da57829003601f168201915b5050505050600b838154811061409057fe5b61536357600b818154811061531a57fe5b90600052602060002090601602016002016013828154811061533857fe5b906000526020600020019080546001816001161561010002031660029004615361929190615bb6565b505b600101615251565b5082821115610c5157825b82811015613403576013600b828154811061538d57fe5b6000918252602080832084546001808201875595855291909320601692909202909201600290810180546153d595939094019390926000199082161561010002011604615bb6565b50600101615376565b600081848411156154025760405162461bcd60e51b8152600401610c2f9190616334565b505050900390565b615412615c75565b506040805180820190915281518152602082810190820152919050565b615437615c55565b6154408261578a565b61544957600080fd5b600061545883602001516157c4565b60208085015160408051808201909152868152920190820152915050919050565b6000615483615c75565b505080518051602091820151919092015191011190565b6154a2615c75565b6154ab82615479565b6154b457600080fd5b602082015160006154c482615827565b80830160209586015260408051808201909152908152938401919091525090919050565b8051600090158015906154fd57508151602110155b61550657600080fd5b600061551583602001516157c4565b9050808360000151101561553b5760405162461bcd60e51b8152600401610c2f90616bb8565b82516020808501518301805192849003929183101561493d57506020919091036101000a90049392505050565b60606155738261578a565b61557c57600080fd5b600061558783615908565b90506060816040519080825280602002602001820160405280156155c557816020015b6155b2615c75565b8152602001906001900390816155aa5790505b50905060006155d785602001516157c4565b60208601510190506000805b8481101561562e576155f483615827565b915060405180604001604052808381526020018481525084828151811061561757fe5b6020908102919091010152918101916001016155e3565b509195945050505050565b615641615b0a565b6060600061564d615b0a565b6060615657615c55565b6156608761542f565b90506000805b61566f83615479565b15615744578061569a5761568a6156858461549a565b615964565b6001600160a01b0316855261573c565b80600114156156c2576156af6156858461549a565b6001600160a01b0316602086015261573c565b80600214156156ea576156d76156858461549a565b6001600160a01b0316604086015261573c565b8060031415615716576156ff614be38461549a565b6001600160401b031660608601526001915061573c565b80600414156157375761573061572b8461549a565b61597e565b935061573c565b615744565b600101615666565b50929791965091945092505050565b600081836157745760405162461bcd60e51b8152600401610c2f9190616334565b50600083858161578057fe5b0495945050505050565b805160009061579b575060006114e0565b6020820151805160001a9060c08210156157ba576000925050506114e0565b5060019392505050565b8051600090811a60808110156157de5760009150506114e0565b60b88110806157f9575060c081108015906157f9575060f881105b156158085760019150506114e0565b60c081101561581c5760b5190190506114e0565b60f5190190506114e0565b80516000908190811a60808110156158425760019150615901565b60b881101561585757607e1981019150615901565b60c08110156158a857600060b78203600186019550806020036101000a8651049150600181018201935050808310156158a25760405162461bcd60e51b8152600401610c2f90616907565b50615901565b60f88110156158bd5760be1981019150615901565b600060f78203600186019550806020036101000a8651049150600181018201935050808310156158ff5760405162461bcd60e51b8152600401610c2f90616907565b505b5092915050565b8051600090615919575060006114e0565b6000809050600061592d84602001516157c4565b602085015185519181019250015b8082101561595b5761594c82615827565b8201915082600101925061593b565b50909392505050565b805160009060151461597557600080fd5b611590826154e8565b805160609061598c57600080fd5b600061599b83602001516157c4565b83516040805191839003808352601f19601f82011683016020019091529192506060908280156159d2576020820181803683370190505b509050600081602001905061493d848760200151018285806159f357610c51565b5b60208110615a13578251825260209283019290910190601f19016159f4565b915181516020939093036101000a6000190180199091169216919091179052565b60405180608001604052806000815260200160001515815260200160608152602001615a5e615c8f565b905290565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10615aa457805160ff1916838001178555615ad1565b82800160010185558215615ad1579182015b82811115615ad1578251825591602001919060010190615ab6565b50612b1e929150615cae565b8260138101928215615ad15791602002820182811115615ad1578251825591602001919060010190615ab6565b6040805160c081018252600080825260208201819052918101829052606081018290526080810182905260a081019190915290565b6040518060600160405280600060ff16815260200160608152602001606081525090565b50805460018160011615610100020316600290046000825580601f10615b8957506116f8565b601f0160209004906000526020600020908101906116f89190615cae565b506116f8906013810190615cae565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10615bef5780548555615ad1565b82800160010185558215615ad157600052602060002091601f016020900482015b82811115615ad1578254825591600101919060010190615c10565b8260138101928215615ad15791820182811115615ad1578254825591600101919060010190615c10565b6040518060400160405280615c68615c75565b8152602001600081525090565b604051806040016040528060008152602001600081525090565b6040518061026001604052806013906020820280368337509192915050565b611d9e91905b80821115612b1e5760008155600101615cb4565b803561159081616f13565b60008083601f840112615ce4578182fd5b5081356001600160401b03811115615cfa578182fd5b6020830191508360208083028501011115613bb857600080fd5b6000601f8381840112615d25578182fd5b8235615d38615d3382616ec8565b616ea2565b818152925060208084019085810160005b84811015615dca578135880189603f820112615d6457600080fd5b838101356001600160401b03811115615d7c57600080fd5b615d8d818901601f19168601616ea2565b81815260408c81848601011115615da357600080fd5b82818501888401375060009181018601919091528552509282019290820190600101615d49565b50505050505092915050565b600082601f830112615de6578081fd5b8135615df4615d3382616ec8565b818152915060208083019084810181840286018201871015615e1557600080fd5b6000805b85811015615dca5782356001600160401b0381168114615e37578283fd5b85529383019391830191600101615e19565b60008083601f840112615e5a578182fd5b5081356001600160401b03811115615e70578182fd5b602083019150836020828501011115613bb857600080fd5b600060208284031215615e99578081fd5b8135611bbc81616f13565b600060208284031215615eb5578081fd5b8151611bbc81616f13565b60008060008060408587031215615ed5578283fd5b84356001600160401b0380821115615eeb578485fd5b615ef788838901615cd3565b90965094506020870135915080821115615f0f578384fd5b50615f1c87828801615cd3565b95989497509550505050565b600080600060608486031215615f3c578283fd5b83356001600160401b0380821115615f52578485fd5b81860187601f820112615f63578586fd5b80359250615f73615d3384616ec8565b80848252602080830192508084018b828389028701011115615f9357898afd5b8994505b86851015615fbd57615fa98c82615cc8565b845260019490940193928101928101615f97565b509097508801359350505080821115615fd4578384fd5b615fe087838801615dd6565b93506040860135915080821115615ff5578283fd5b5061600286828701615d14565b9150509250925092565b6000806020838503121561601e578182fd5b82356001600160401b03811115616033578283fd5b61603f85828601615e49565b90969095509350505050565b60008060008060408587031215616060578384fd5b84356001600160401b0380821115616076578586fd5b61608288838901615e49565b9096509450602087013591508082111561609a578384fd5b50615f1c87828801615e49565b6000602082840312156160b8578081fd5b5035919050565b6000602082840312156160d0578081fd5b5051919050565b600080604083850312156160e9578182fd5b505080516020909101519092909150565b60008060006040848603121561610e578081fd5b833560ff8116811461611e578182fd5b925060208401356001600160401b03811115616138578182fd5b61614486828701615e49565b9497909650939450505050565b6000815180845260208085019450808401835b838110156161895781516001600160a01b031687529582019590820190600101616164565b509495945050505050565b60008284528282602086013780602084860101526020601f19601f85011685010190509392505050565b600081518084526161d6816020860160208601616ee7565b601f01601f19169290920160200192915050565b600082516161fc818460208701616ee7565b9190910192915050565b918252602082015260400190565b6001600160a01b0391909116815260200190565b6001600160a01b03929092168252602082015260400190565b6001600160a01b03968716815294861660208601529290941660408401526001600160401b03166060830152911515608082015260a081019190915260c00190565b6001600160a01b0393909316835260208301919091521515604082015260600190565b600060208252611bbc6020830184616151565b6000604082526162cc6040830185616151565b602083820381850152818551808452828401915082838202850101838801865b8381101561631a57601f198784030185526163088383516161be565b948601949250908501906001016162ec565b50909998505050505050505050565b901515815260200190565b600060208252611bbc60208301846161be565b60006040825261635b604083018688616194565b828103602084015261636e818587616194565b979650505050505050565b6020808252601c908201527f6c656e677468206f66206275726e526174696f206d69736d6174636800000000604082015260600190565b60208082526026908201527f6c656e677468206f66206d61784e756d4f664d61696e7461696e696e67206d696040820152650e6dac2e8c6d60d31b606082015260800190565b60208082526038908201527f746865206e756d4f66436162696e657473206d757374206265206c657373207460408201527f68616e206d6178456c656374656456616c696461746f72730000000000000000606082015260800190565b6020808252602c908201527f6c656e677468206f66206d61784e756d4f66576f726b696e6743616e6469646160408201526b0e8cae640dad2e6dac2e8c6d60a31b606082015260800190565b60208082526025908201527f6c656e677468206f66206d61696e7461696e536c6173685363616c65206d69736040820152640dac2e8c6d60db1b606082015260800190565b6020808252818101527f6c656e677468206f66206e756d4f66436162696e657473206d69736d61746368604082015260600190565b60208082526019908201527f74686520636f6e7472616374206e6f7420696e69742079657400000000000000604082015260600190565b6020808252601f908201527f6f6e6c7920736c617368206f72207374616b6548756220636f6e747261637400604082015260600190565b6020808252601b908201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604082015260600190565b60208082526063908201527f7468652073797374656d52657761726442617365526174696f20706c7573206260408201527f75726e526174696f20616e642073797374656d526577617264416e74694d455660608201527f526174696f206d757374206265206e6f2067726561746572207468616e20313060808201526203030360ec1b60a082015260c00190565b60208082526028908201527f746865206e756d4f66436162696e657473206d75737420626520677265617465604082015267072207468616e20360c41b606082015260800190565b60208082526022908201527f63616e206e6f7420646f207468697320747769636520696e206f6e6520626c6f604082015261636b60f01b606082015260800190565b60208082526037908201527f746865206d61784e756d4f664d61696e7461696e696e67206d7573742062652060408201527f6c657373207468616e206e756d4f66436162696e657473000000000000000000606082015260800190565b6020808252601d908201527f6c656e677468206f66207475726e4c656e677468206d69736d61746368000000604082015260600190565b6020808252600a908201526919195c1c9958d85d195960b21b604082015260600190565b60208082526063908201527f746865206275726e526174696f20706c75732073797374656d5265776172644260408201527f617365526174696f20616e642073797374656d526577617264416e74694d455660608201527f526174696f206d757374206265206e6f2067726561746572207468616e20313060808201526203030360ec1b60a082015260c00190565b6020808252602b908201527f6c656e677468206f662073797374656d526577617264416e74694d455652617460408201526a0d2de40dad2e6dac2e8c6d60ab1b606082015260800190565b6020808252601590820152746465706f7369742076616c7565206973207a65726f60581b604082015260600190565b60208082526049908201527f746865206d61784e756d4f66576f726b696e6743616e64696461746573206d7560408201527f7374206265206e6f742067726561746572207468616e206d61784e756d4f6643606082015268616e6469646174657360b81b608082015260a00190565b6020808252601190820152706164646974696f6e206f766572666c6f7760781b604082015260600190565b60208082526063908201527f7468652073797374656d526577617264416e74694d4556526174696f20706c7560408201527f73206275726e526174696f20616e642073797374656d5265776172644261736560608201527f526174696f206d757374206265206e6f2067726561746572207468616e20313060808201526203030360ec1b60a082015260c00190565b60208082526023908201527f63616e206e6f7420656e7465722054656d706f72617279204d61696e74656e616040820152626e636560e81b606082015260800190565b60208082526021908201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6040820152607760f81b606082015260800190565b6020808252601490820152736761737072696365206973206e6f74207a65726f60601b604082015260600190565b6020808252602e908201527f746865206d6573736167652073656e646572206d75737420626520676f76657260408201526d1b985b98d94818dbdb9d1c9858dd60921b606082015260800190565b60208082526025908201527f6c656e677468206f66206d61784e756d4f6643616e64696461746573206d69736040820152640dac2e8c6d60db1b606082015260800190565b6020808252601290820152716e6f7420696e206d61696e74656e616e636560701b604082015260600190565b60208082526019908201527f74686520636f6e747261637420616c726561647920696e697400000000000000604082015260600190565b6020808252602f908201527f746865207475726e4c656e6774682073686f756c6420626520696e205b332c3960408201526e5d206f7220657175616c20746f203160881b606082015260800190565b6020808252601a908201527f6c656e677468206973206c657373207468616e206f6666736574000000000000604082015260600190565b60208082526017908201527f6f6e6c792063757272656e742076616c696461746f7273000000000000000000604082015260600190565b60208082526021908201527f6661696c656420746f20706172736520696e69742076616c696461746f7253656040820152601d60fa1b606082015260800190565b6020808252602f908201527f746865206d6573736167652073656e646572206d7573742062652063726f737360408201526e0818da185a5b8818dbdb9d1c9858dd608a1b606082015260800190565b6020808252602d908201527f746865206d6573736167652073656e646572206d75737420626520746865206260408201526c3637b1b590383937b23ab1b2b960991b606082015260800190565b60208082526028908201527f6c656e677468206f662073797374656d52657761726442617365526174696f206040820152670dad2e6dac2e8c6d60c31b606082015260800190565b6020808252603e908201527f746865206d61696e7461696e536c6173685363616c65206d757374206265206760408201527f726561746572207468616e203020616e64206c657373207468616e2031300000606082015260800190565b6020808252600d908201526c756e6b6e6f776e20706172616d60981b604082015260600190565b60208082526029908201527f746865206d6573736167652073656e646572206d75737420626520736c6173686040820152680818dbdb9d1c9858dd60ba1b606082015260800190565b6020808252601f908201527f746865206d73672073656e646572206d757374206265207374616b6548756200604082015260600190565b61ffff91909116815260200190565b90815260200190565b6000848252831515602083015260606040830152616e8860608301846161be565b95945050505050565b63ffffffff91909116815260200190565b6040518181016001600160401b0381118282101715616ec057600080fd5b604052919050565b60006001600160401b03821115616edd578081fd5b5060209081020190565b60005b83811015616f02578181015183820152602001616eea565b838111156134035750506000910152565b6001600160a01b03811681146116f857600080fdfe0175b7a638427703f0dbe7bb9bbf987a2551717b34e79f33b5b1008d1fa01db90175b7a638427703f0dbe7bb9bbf987a2551717b34e79f33b5b1008d1fa01dbb0175b7a638427703f0dbe7bb9bbf987a2551717b34e79f33b5b1008d1fa01dbaf87680f873f871949fb29aac15b9a4b7f17c3385939b007540f4d791949fb29aac15b9a4b7f17c3385939b007540f4d791949fb29aac15b9a4b7f17c3385939b007540f4d79164b085e6972fc98cd3c81d64d40e325acfed44365b97a7567a27939c14dbc7512ddcf54cb1284eb637cfa308ae4e00cb5588a164736f6c6343000604000a \ No newline at end of file diff --git a/core/systemcontracts/upgrade.go b/core/systemcontracts/upgrade.go index 30492342d7..7ba62aaa60 100644 --- a/core/systemcontracts/upgrade.go +++ b/core/systemcontracts/upgrade.go @@ -781,87 +781,87 @@ func init() { Configs: []*UpgradeConfig{ { ContractAddr: common.HexToAddress(ValidatorContract), - CommitUrl: "https://github.com/bnb-chain/bsc-genesis-contract/commit/4c03f8222f8ac13e3b6bd424e1235698282bb28d", + CommitUrl: "https://github.com/bnb-chain/bsc-genesis-contract/commit/d1564095cca3bfbd303a5e3de2ad90e719d12564", Code: pascal.MainnetValidatorContract, }, { ContractAddr: common.HexToAddress(SlashContract), - CommitUrl: "https://github.com/bnb-chain/bsc-genesis-contract/commit/4c03f8222f8ac13e3b6bd424e1235698282bb28d", + CommitUrl: "https://github.com/bnb-chain/bsc-genesis-contract/commit/d1564095cca3bfbd303a5e3de2ad90e719d12564", Code: pascal.MainnetSlashContract, }, { ContractAddr: common.HexToAddress(SystemRewardContract), - CommitUrl: "https://github.com/bnb-chain/bsc-genesis-contract/commit/4c03f8222f8ac13e3b6bd424e1235698282bb28d", + CommitUrl: "https://github.com/bnb-chain/bsc-genesis-contract/commit/d1564095cca3bfbd303a5e3de2ad90e719d12564", Code: pascal.MainnetSystemRewardContract, }, { ContractAddr: common.HexToAddress(LightClientContract), - CommitUrl: "https://github.com/bnb-chain/bsc-genesis-contract/commit/4c03f8222f8ac13e3b6bd424e1235698282bb28d", + CommitUrl: "https://github.com/bnb-chain/bsc-genesis-contract/commit/d1564095cca3bfbd303a5e3de2ad90e719d12564", Code: pascal.MainnetLightClientContract, }, { ContractAddr: common.HexToAddress(TokenHubContract), - CommitUrl: "https://github.com/bnb-chain/bsc-genesis-contract/commit/4c03f8222f8ac13e3b6bd424e1235698282bb28d", + CommitUrl: "https://github.com/bnb-chain/bsc-genesis-contract/commit/d1564095cca3bfbd303a5e3de2ad90e719d12564", Code: pascal.MainnetTokenHubContract, }, { ContractAddr: common.HexToAddress(RelayerIncentivizeContract), - CommitUrl: "https://github.com/bnb-chain/bsc-genesis-contract/commit/4c03f8222f8ac13e3b6bd424e1235698282bb28d", + CommitUrl: "https://github.com/bnb-chain/bsc-genesis-contract/commit/d1564095cca3bfbd303a5e3de2ad90e719d12564", Code: pascal.MainnetRelayerIncentivizeContract, }, { ContractAddr: common.HexToAddress(RelayerHubContract), - CommitUrl: "https://github.com/bnb-chain/bsc-genesis-contract/commit/4c03f8222f8ac13e3b6bd424e1235698282bb28d", + CommitUrl: "https://github.com/bnb-chain/bsc-genesis-contract/commit/d1564095cca3bfbd303a5e3de2ad90e719d12564", Code: pascal.MainnetRelayerHubContract, }, { ContractAddr: common.HexToAddress(GovHubContract), - CommitUrl: "https://github.com/bnb-chain/bsc-genesis-contract/commit/4c03f8222f8ac13e3b6bd424e1235698282bb28d", + CommitUrl: "https://github.com/bnb-chain/bsc-genesis-contract/commit/d1564095cca3bfbd303a5e3de2ad90e719d12564", Code: pascal.MainnetGovHubContract, }, { ContractAddr: common.HexToAddress(TokenManagerContract), - CommitUrl: "https://github.com/bnb-chain/bsc-genesis-contract/commit/4c03f8222f8ac13e3b6bd424e1235698282bb28d", + CommitUrl: "https://github.com/bnb-chain/bsc-genesis-contract/commit/d1564095cca3bfbd303a5e3de2ad90e719d12564", Code: pascal.MainnetTokenManagerContract, }, { ContractAddr: common.HexToAddress(CrossChainContract), - CommitUrl: "https://github.com/bnb-chain/bsc-genesis-contract/commit/4c03f8222f8ac13e3b6bd424e1235698282bb28d", + CommitUrl: "https://github.com/bnb-chain/bsc-genesis-contract/commit/d1564095cca3bfbd303a5e3de2ad90e719d12564", Code: pascal.MainnetCrossChainContract, }, { ContractAddr: common.HexToAddress(StakingContract), - CommitUrl: "https://github.com/bnb-chain/bsc-genesis-contract/commit/4c03f8222f8ac13e3b6bd424e1235698282bb28d", + CommitUrl: "https://github.com/bnb-chain/bsc-genesis-contract/commit/d1564095cca3bfbd303a5e3de2ad90e719d12564", Code: pascal.MainnetStakingContract, }, { ContractAddr: common.HexToAddress(StakeHubContract), - CommitUrl: "https://github.com/bnb-chain/bsc-genesis-contract/commit/4c03f8222f8ac13e3b6bd424e1235698282bb28d", + CommitUrl: "https://github.com/bnb-chain/bsc-genesis-contract/commit/d1564095cca3bfbd303a5e3de2ad90e719d12564", Code: pascal.MainnetStakeHubContract, }, { ContractAddr: common.HexToAddress(StakeCreditContract), - CommitUrl: "https://github.com/bnb-chain/bsc-genesis-contract/commit/4c03f8222f8ac13e3b6bd424e1235698282bb28d", + CommitUrl: "https://github.com/bnb-chain/bsc-genesis-contract/commit/d1564095cca3bfbd303a5e3de2ad90e719d12564", Code: pascal.MainnetStakeCreditContract, }, { ContractAddr: common.HexToAddress(GovernorContract), - CommitUrl: "https://github.com/bnb-chain/bsc-genesis-contract/commit/4c03f8222f8ac13e3b6bd424e1235698282bb28d", + CommitUrl: "https://github.com/bnb-chain/bsc-genesis-contract/commit/d1564095cca3bfbd303a5e3de2ad90e719d12564", Code: pascal.MainnetGovernorContract, }, { ContractAddr: common.HexToAddress(GovTokenContract), - CommitUrl: "https://github.com/bnb-chain/bsc-genesis-contract/commit/4c03f8222f8ac13e3b6bd424e1235698282bb28d", + CommitUrl: "https://github.com/bnb-chain/bsc-genesis-contract/commit/d1564095cca3bfbd303a5e3de2ad90e719d12564", Code: pascal.MainnetGovTokenContract, }, { ContractAddr: common.HexToAddress(TimelockContract), - CommitUrl: "https://github.com/bnb-chain/bsc-genesis-contract/commit/4c03f8222f8ac13e3b6bd424e1235698282bb28d", + CommitUrl: "https://github.com/bnb-chain/bsc-genesis-contract/commit/d1564095cca3bfbd303a5e3de2ad90e719d12564", Code: pascal.MainnetTimelockContract, }, { ContractAddr: common.HexToAddress(TokenRecoverPortalContract), - CommitUrl: "https://github.com/bnb-chain/bsc-genesis-contract/commit/4c03f8222f8ac13e3b6bd424e1235698282bb28d", + CommitUrl: "https://github.com/bnb-chain/bsc-genesis-contract/commit/d1564095cca3bfbd303a5e3de2ad90e719d12564", Code: pascal.MainnetTokenRecoverPortalContract, }, }, @@ -872,87 +872,87 @@ func init() { Configs: []*UpgradeConfig{ { ContractAddr: common.HexToAddress(ValidatorContract), - CommitUrl: "https://github.com/bnb-chain/bsc-genesis-contract/commit/4c03f8222f8ac13e3b6bd424e1235698282bb28d", + CommitUrl: "https://github.com/bnb-chain/bsc-genesis-contract/commit/d1564095cca3bfbd303a5e3de2ad90e719d12564", Code: pascal.ChapelValidatorContract, }, { ContractAddr: common.HexToAddress(SlashContract), - CommitUrl: "https://github.com/bnb-chain/bsc-genesis-contract/commit/4c03f8222f8ac13e3b6bd424e1235698282bb28d", + CommitUrl: "https://github.com/bnb-chain/bsc-genesis-contract/commit/d1564095cca3bfbd303a5e3de2ad90e719d12564", Code: pascal.ChapelSlashContract, }, { ContractAddr: common.HexToAddress(SystemRewardContract), - CommitUrl: "https://github.com/bnb-chain/bsc-genesis-contract/commit/4c03f8222f8ac13e3b6bd424e1235698282bb28d", + CommitUrl: "https://github.com/bnb-chain/bsc-genesis-contract/commit/d1564095cca3bfbd303a5e3de2ad90e719d12564", Code: pascal.ChapelSystemRewardContract, }, { ContractAddr: common.HexToAddress(LightClientContract), - CommitUrl: "https://github.com/bnb-chain/bsc-genesis-contract/commit/4c03f8222f8ac13e3b6bd424e1235698282bb28d", + CommitUrl: "https://github.com/bnb-chain/bsc-genesis-contract/commit/d1564095cca3bfbd303a5e3de2ad90e719d12564", Code: pascal.ChapelLightClientContract, }, { ContractAddr: common.HexToAddress(TokenHubContract), - CommitUrl: "https://github.com/bnb-chain/bsc-genesis-contract/commit/4c03f8222f8ac13e3b6bd424e1235698282bb28d", + CommitUrl: "https://github.com/bnb-chain/bsc-genesis-contract/commit/d1564095cca3bfbd303a5e3de2ad90e719d12564", Code: pascal.ChapelTokenHubContract, }, { ContractAddr: common.HexToAddress(RelayerIncentivizeContract), - CommitUrl: "https://github.com/bnb-chain/bsc-genesis-contract/commit/4c03f8222f8ac13e3b6bd424e1235698282bb28d", + CommitUrl: "https://github.com/bnb-chain/bsc-genesis-contract/commit/d1564095cca3bfbd303a5e3de2ad90e719d12564", Code: pascal.ChapelRelayerIncentivizeContract, }, { ContractAddr: common.HexToAddress(RelayerHubContract), - CommitUrl: "https://github.com/bnb-chain/bsc-genesis-contract/commit/4c03f8222f8ac13e3b6bd424e1235698282bb28d", + CommitUrl: "https://github.com/bnb-chain/bsc-genesis-contract/commit/d1564095cca3bfbd303a5e3de2ad90e719d12564", Code: pascal.ChapelRelayerHubContract, }, { ContractAddr: common.HexToAddress(GovHubContract), - CommitUrl: "https://github.com/bnb-chain/bsc-genesis-contract/commit/4c03f8222f8ac13e3b6bd424e1235698282bb28d", + CommitUrl: "https://github.com/bnb-chain/bsc-genesis-contract/commit/d1564095cca3bfbd303a5e3de2ad90e719d12564", Code: pascal.ChapelGovHubContract, }, { ContractAddr: common.HexToAddress(TokenManagerContract), - CommitUrl: "https://github.com/bnb-chain/bsc-genesis-contract/commit/4c03f8222f8ac13e3b6bd424e1235698282bb28d", + CommitUrl: "https://github.com/bnb-chain/bsc-genesis-contract/commit/d1564095cca3bfbd303a5e3de2ad90e719d12564", Code: pascal.ChapelTokenManagerContract, }, { ContractAddr: common.HexToAddress(CrossChainContract), - CommitUrl: "https://github.com/bnb-chain/bsc-genesis-contract/commit/4c03f8222f8ac13e3b6bd424e1235698282bb28d", + CommitUrl: "https://github.com/bnb-chain/bsc-genesis-contract/commit/d1564095cca3bfbd303a5e3de2ad90e719d12564", Code: pascal.ChapelCrossChainContract, }, { ContractAddr: common.HexToAddress(StakingContract), - CommitUrl: "https://github.com/bnb-chain/bsc-genesis-contract/commit/4c03f8222f8ac13e3b6bd424e1235698282bb28d", + CommitUrl: "https://github.com/bnb-chain/bsc-genesis-contract/commit/d1564095cca3bfbd303a5e3de2ad90e719d12564", Code: pascal.ChapelStakingContract, }, { ContractAddr: common.HexToAddress(StakeHubContract), - CommitUrl: "https://github.com/bnb-chain/bsc-genesis-contract/commit/4c03f8222f8ac13e3b6bd424e1235698282bb28d", + CommitUrl: "https://github.com/bnb-chain/bsc-genesis-contract/commit/d1564095cca3bfbd303a5e3de2ad90e719d12564", Code: pascal.ChapelStakeHubContract, }, { ContractAddr: common.HexToAddress(StakeCreditContract), - CommitUrl: "https://github.com/bnb-chain/bsc-genesis-contract/commit/4c03f8222f8ac13e3b6bd424e1235698282bb28d", + CommitUrl: "https://github.com/bnb-chain/bsc-genesis-contract/commit/d1564095cca3bfbd303a5e3de2ad90e719d12564", Code: pascal.ChapelStakeCreditContract, }, { ContractAddr: common.HexToAddress(GovernorContract), - CommitUrl: "https://github.com/bnb-chain/bsc-genesis-contract/commit/4c03f8222f8ac13e3b6bd424e1235698282bb28d", + CommitUrl: "https://github.com/bnb-chain/bsc-genesis-contract/commit/d1564095cca3bfbd303a5e3de2ad90e719d12564", Code: pascal.ChapelGovernorContract, }, { ContractAddr: common.HexToAddress(GovTokenContract), - CommitUrl: "https://github.com/bnb-chain/bsc-genesis-contract/commit/4c03f8222f8ac13e3b6bd424e1235698282bb28d", + CommitUrl: "https://github.com/bnb-chain/bsc-genesis-contract/commit/d1564095cca3bfbd303a5e3de2ad90e719d12564", Code: pascal.ChapelGovTokenContract, }, { ContractAddr: common.HexToAddress(TimelockContract), - CommitUrl: "https://github.com/bnb-chain/bsc-genesis-contract/commit/4c03f8222f8ac13e3b6bd424e1235698282bb28d", + CommitUrl: "https://github.com/bnb-chain/bsc-genesis-contract/commit/d1564095cca3bfbd303a5e3de2ad90e719d12564", Code: pascal.ChapelTimelockContract, }, { ContractAddr: common.HexToAddress(TokenRecoverPortalContract), - CommitUrl: "https://github.com/bnb-chain/bsc-genesis-contract/commit/4c03f8222f8ac13e3b6bd424e1235698282bb28d", + CommitUrl: "https://github.com/bnb-chain/bsc-genesis-contract/commit/d1564095cca3bfbd303a5e3de2ad90e719d12564", Code: pascal.ChapelTokenRecoverPortalContract, }, }, @@ -963,87 +963,87 @@ func init() { Configs: []*UpgradeConfig{ { ContractAddr: common.HexToAddress(ValidatorContract), - CommitUrl: "https://github.com/bnb-chain/bsc-genesis-contract/commit/4c03f8222f8ac13e3b6bd424e1235698282bb28d", + CommitUrl: "https://github.com/bnb-chain/bsc-genesis-contract/commit/d1564095cca3bfbd303a5e3de2ad90e719d12564", Code: pascal.RialtoValidatorContract, }, { ContractAddr: common.HexToAddress(SlashContract), - CommitUrl: "https://github.com/bnb-chain/bsc-genesis-contract/commit/4c03f8222f8ac13e3b6bd424e1235698282bb28d", + CommitUrl: "https://github.com/bnb-chain/bsc-genesis-contract/commit/d1564095cca3bfbd303a5e3de2ad90e719d12564", Code: pascal.RialtoSlashContract, }, { ContractAddr: common.HexToAddress(SystemRewardContract), - CommitUrl: "https://github.com/bnb-chain/bsc-genesis-contract/commit/4c03f8222f8ac13e3b6bd424e1235698282bb28d", + CommitUrl: "https://github.com/bnb-chain/bsc-genesis-contract/commit/d1564095cca3bfbd303a5e3de2ad90e719d12564", Code: pascal.RialtoSystemRewardContract, }, { ContractAddr: common.HexToAddress(LightClientContract), - CommitUrl: "https://github.com/bnb-chain/bsc-genesis-contract/commit/4c03f8222f8ac13e3b6bd424e1235698282bb28d", + CommitUrl: "https://github.com/bnb-chain/bsc-genesis-contract/commit/d1564095cca3bfbd303a5e3de2ad90e719d12564", Code: pascal.RialtoLightClientContract, }, { ContractAddr: common.HexToAddress(TokenHubContract), - CommitUrl: "https://github.com/bnb-chain/bsc-genesis-contract/commit/4c03f8222f8ac13e3b6bd424e1235698282bb28d", + CommitUrl: "https://github.com/bnb-chain/bsc-genesis-contract/commit/d1564095cca3bfbd303a5e3de2ad90e719d12564", Code: pascal.RialtoTokenHubContract, }, { ContractAddr: common.HexToAddress(RelayerIncentivizeContract), - CommitUrl: "https://github.com/bnb-chain/bsc-genesis-contract/commit/4c03f8222f8ac13e3b6bd424e1235698282bb28d", + CommitUrl: "https://github.com/bnb-chain/bsc-genesis-contract/commit/d1564095cca3bfbd303a5e3de2ad90e719d12564", Code: pascal.RialtoRelayerIncentivizeContract, }, { ContractAddr: common.HexToAddress(RelayerHubContract), - CommitUrl: "https://github.com/bnb-chain/bsc-genesis-contract/commit/4c03f8222f8ac13e3b6bd424e1235698282bb28d", + CommitUrl: "https://github.com/bnb-chain/bsc-genesis-contract/commit/d1564095cca3bfbd303a5e3de2ad90e719d12564", Code: pascal.RialtoRelayerHubContract, }, { ContractAddr: common.HexToAddress(GovHubContract), - CommitUrl: "https://github.com/bnb-chain/bsc-genesis-contract/commit/4c03f8222f8ac13e3b6bd424e1235698282bb28d", + CommitUrl: "https://github.com/bnb-chain/bsc-genesis-contract/commit/d1564095cca3bfbd303a5e3de2ad90e719d12564", Code: pascal.RialtoGovHubContract, }, { ContractAddr: common.HexToAddress(TokenManagerContract), - CommitUrl: "https://github.com/bnb-chain/bsc-genesis-contract/commit/4c03f8222f8ac13e3b6bd424e1235698282bb28d", + CommitUrl: "https://github.com/bnb-chain/bsc-genesis-contract/commit/d1564095cca3bfbd303a5e3de2ad90e719d12564", Code: pascal.RialtoTokenManagerContract, }, { ContractAddr: common.HexToAddress(CrossChainContract), - CommitUrl: "https://github.com/bnb-chain/bsc-genesis-contract/commit/4c03f8222f8ac13e3b6bd424e1235698282bb28d", + CommitUrl: "https://github.com/bnb-chain/bsc-genesis-contract/commit/d1564095cca3bfbd303a5e3de2ad90e719d12564", Code: pascal.RialtoCrossChainContract, }, { ContractAddr: common.HexToAddress(StakingContract), - CommitUrl: "https://github.com/bnb-chain/bsc-genesis-contract/commit/4c03f8222f8ac13e3b6bd424e1235698282bb28d", + CommitUrl: "https://github.com/bnb-chain/bsc-genesis-contract/commit/d1564095cca3bfbd303a5e3de2ad90e719d12564", Code: pascal.RialtoStakingContract, }, { ContractAddr: common.HexToAddress(StakeHubContract), - CommitUrl: "https://github.com/bnb-chain/bsc-genesis-contract/commit/4c03f8222f8ac13e3b6bd424e1235698282bb28d", + CommitUrl: "https://github.com/bnb-chain/bsc-genesis-contract/commit/d1564095cca3bfbd303a5e3de2ad90e719d12564", Code: pascal.RialtoStakeHubContract, }, { ContractAddr: common.HexToAddress(StakeCreditContract), - CommitUrl: "https://github.com/bnb-chain/bsc-genesis-contract/commit/4c03f8222f8ac13e3b6bd424e1235698282bb28d", + CommitUrl: "https://github.com/bnb-chain/bsc-genesis-contract/commit/d1564095cca3bfbd303a5e3de2ad90e719d12564", Code: pascal.RialtoStakeCreditContract, }, { ContractAddr: common.HexToAddress(GovernorContract), - CommitUrl: "https://github.com/bnb-chain/bsc-genesis-contract/commit/4c03f8222f8ac13e3b6bd424e1235698282bb28d", + CommitUrl: "https://github.com/bnb-chain/bsc-genesis-contract/commit/d1564095cca3bfbd303a5e3de2ad90e719d12564", Code: pascal.RialtoGovernorContract, }, { ContractAddr: common.HexToAddress(GovTokenContract), - CommitUrl: "https://github.com/bnb-chain/bsc-genesis-contract/commit/4c03f8222f8ac13e3b6bd424e1235698282bb28d", + CommitUrl: "https://github.com/bnb-chain/bsc-genesis-contract/commit/d1564095cca3bfbd303a5e3de2ad90e719d12564", Code: pascal.RialtoGovTokenContract, }, { ContractAddr: common.HexToAddress(TimelockContract), - CommitUrl: "https://github.com/bnb-chain/bsc-genesis-contract/commit/4c03f8222f8ac13e3b6bd424e1235698282bb28d", + CommitUrl: "https://github.com/bnb-chain/bsc-genesis-contract/commit/d1564095cca3bfbd303a5e3de2ad90e719d12564", Code: pascal.RialtoTimelockContract, }, { ContractAddr: common.HexToAddress(TokenRecoverPortalContract), - CommitUrl: "https://github.com/bnb-chain/bsc-genesis-contract/commit/4c03f8222f8ac13e3b6bd424e1235698282bb28d", + CommitUrl: "https://github.com/bnb-chain/bsc-genesis-contract/commit/d1564095cca3bfbd303a5e3de2ad90e719d12564", Code: pascal.RialtoTokenRecoverPortalContract, }, }, From 3a6dbe4d85ffb8d77bef93461d5ac16f05196d6d Mon Sep 17 00:00:00 2001 From: galaio <12880651+galaio@users.noreply.github.com> Date: Fri, 11 Oct 2024 16:44:50 +0800 Subject: [PATCH 26/27] ethclient: move TransactionOpts to avoid import internal package; (#2736) --- accounts/abi/bind/backend.go | 3 +- accounts/abi/bind/base_test.go | 3 +- .../ethapi => core/types}/gen_tx_opts_json.go | 3 +- core/types/transaction_options.go | 43 ++++++++++++++++++ .../types}/transaction_options_test.go | 33 +++++++------- ethclient/ethclient.go | 3 +- ethclient/ethclient_test.go | 7 ++- ethclient/simulated/backend.go | 3 +- internal/ethapi/api.go | 4 +- ...n_options.go => transaction_opts_utils.go} | 45 ++----------------- 10 files changed, 73 insertions(+), 74 deletions(-) rename {internal/ethapi => core/types}/gen_tx_opts_json.go (99%) create mode 100644 core/types/transaction_options.go rename {internal/ethapi => core/types}/transaction_options_test.go (80%) rename internal/ethapi/{transaction_options.go => transaction_opts_utils.go} (51%) diff --git a/accounts/abi/bind/backend.go b/accounts/abi/bind/backend.go index 153ba46415..f43142d60a 100644 --- a/accounts/abi/bind/backend.go +++ b/accounts/abi/bind/backend.go @@ -24,7 +24,6 @@ import ( "github.com/ethereum/go-ethereum" "github.com/ethereum/go-ethereum/common" "github.com/ethereum/go-ethereum/core/types" - "github.com/ethereum/go-ethereum/internal/ethapi" ) var ( @@ -101,7 +100,7 @@ type ContractTransactor interface { PendingNonceAt(ctx context.Context, account common.Address) (uint64, error) // SendTransactionConditional injects the conditional transaction into the pending pool for execution after verification. - SendTransactionConditional(ctx context.Context, tx *types.Transaction, opts ethapi.TransactionOpts) error + SendTransactionConditional(ctx context.Context, tx *types.Transaction, opts types.TransactionOpts) error } // DeployBackend wraps the operations needed by WaitMined and WaitDeployed. diff --git a/accounts/abi/bind/base_test.go b/accounts/abi/bind/base_test.go index 99621767ff..181cd43753 100644 --- a/accounts/abi/bind/base_test.go +++ b/accounts/abi/bind/base_test.go @@ -31,7 +31,6 @@ import ( "github.com/ethereum/go-ethereum/common/hexutil" "github.com/ethereum/go-ethereum/core/types" "github.com/ethereum/go-ethereum/crypto" - "github.com/ethereum/go-ethereum/internal/ethapi" "github.com/ethereum/go-ethereum/rlp" "github.com/stretchr/testify/assert" ) @@ -76,7 +75,7 @@ func (mt *mockTransactor) SendTransaction(ctx context.Context, tx *types.Transac return nil } -func (mt *mockTransactor) SendTransactionConditional(ctx context.Context, tx *types.Transaction, opts ethapi.TransactionOpts) error { +func (mt *mockTransactor) SendTransactionConditional(ctx context.Context, tx *types.Transaction, opts types.TransactionOpts) error { return nil } diff --git a/internal/ethapi/gen_tx_opts_json.go b/core/types/gen_tx_opts_json.go similarity index 99% rename from internal/ethapi/gen_tx_opts_json.go rename to core/types/gen_tx_opts_json.go index 19832cede1..e5ac99bd2d 100644 --- a/internal/ethapi/gen_tx_opts_json.go +++ b/core/types/gen_tx_opts_json.go @@ -1,10 +1,9 @@ // Code generated by github.com/fjl/gencodec. DO NOT EDIT. -package ethapi +package types import ( "encoding/json" - "github.com/ethereum/go-ethereum/common/hexutil" ) diff --git a/core/types/transaction_options.go b/core/types/transaction_options.go new file mode 100644 index 0000000000..4f0484b3fd --- /dev/null +++ b/core/types/transaction_options.go @@ -0,0 +1,43 @@ +package types + +import ( + "encoding/json" + + "github.com/ethereum/go-ethereum/common" + "github.com/ethereum/go-ethereum/common/hexutil" +) + +type AccountStorage struct { + StorageRoot *common.Hash + StorageSlots map[common.Hash]common.Hash +} + +func (a *AccountStorage) UnmarshalJSON(data []byte) error { + var hash common.Hash + if err := json.Unmarshal(data, &hash); err == nil { + a.StorageRoot = &hash + return nil + } + return json.Unmarshal(data, &a.StorageSlots) +} + +func (a AccountStorage) MarshalJSON() ([]byte, error) { + if a.StorageRoot != nil { + return json.Marshal(*a.StorageRoot) + } + return json.Marshal(a.StorageSlots) +} + +type KnownAccounts map[common.Address]AccountStorage + +// It is known that marshaling is broken +// https://github.com/golang/go/issues/55890 + +//go:generate go run github.com/fjl/gencodec -type TransactionOpts -out gen_tx_opts_json.go +type TransactionOpts struct { + KnownAccounts KnownAccounts `json:"knownAccounts"` + BlockNumberMin *hexutil.Uint64 `json:"blockNumberMin,omitempty"` + BlockNumberMax *hexutil.Uint64 `json:"blockNumberMax,omitempty"` + TimestampMin *hexutil.Uint64 `json:"timestampMin,omitempty"` + TimestampMax *hexutil.Uint64 `json:"timestampMax,omitempty"` +} diff --git a/internal/ethapi/transaction_options_test.go b/core/types/transaction_options_test.go similarity index 80% rename from internal/ethapi/transaction_options_test.go rename to core/types/transaction_options_test.go index 479f46a145..59627c0a36 100644 --- a/internal/ethapi/transaction_options_test.go +++ b/core/types/transaction_options_test.go @@ -1,4 +1,4 @@ -package ethapi_test +package types import ( "encoding/json" @@ -7,7 +7,6 @@ import ( "github.com/ethereum/go-ethereum/common" "github.com/ethereum/go-ethereum/common/hexutil" - "github.com/ethereum/go-ethereum/internal/ethapi" ) func ptr(hash common.Hash) *common.Hash { @@ -23,15 +22,15 @@ func TestTransactionOptsJSONUnMarshalTrip(t *testing.T) { name string input string mustFail bool - expected ethapi.TransactionOpts + expected TransactionOpts }{ { "StateRoot", `{"knownAccounts":{"0x6b3A8798E5Fb9fC5603F3aB5eA2e8136694e55d0":"0x290decd9548b62a8d60345a988386fc84ba6bc95484008f6362f93160ef3e563"}}`, false, - ethapi.TransactionOpts{ - KnownAccounts: map[common.Address]ethapi.AccountStorage{ - common.HexToAddress("0x6b3A8798E5Fb9fC5603F3aB5eA2e8136694e55d0"): ethapi.AccountStorage{ + TransactionOpts{ + KnownAccounts: map[common.Address]AccountStorage{ + common.HexToAddress("0x6b3A8798E5Fb9fC5603F3aB5eA2e8136694e55d0"): AccountStorage{ StorageRoot: ptr(common.HexToHash("0x290decd9548b62a8d60345a988386fc84ba6bc95484008f6362f93160ef3e563")), }, }, @@ -41,9 +40,9 @@ func TestTransactionOptsJSONUnMarshalTrip(t *testing.T) { "StorageSlots", `{"knownAccounts":{"0x6b3A8798E5Fb9fC5603F3aB5eA2e8136694e55d0":{"0xc65a7bb8d6351c1cf70c95a316cc6a92839c986682d98bc35f958f4883f9d2a8":"0x0000000000000000000000000000000000000000000000000000000000000000"}}}`, false, - ethapi.TransactionOpts{ - KnownAccounts: map[common.Address]ethapi.AccountStorage{ - common.HexToAddress("0x6b3A8798E5Fb9fC5603F3aB5eA2e8136694e55d0"): ethapi.AccountStorage{ + TransactionOpts{ + KnownAccounts: map[common.Address]AccountStorage{ + common.HexToAddress("0x6b3A8798E5Fb9fC5603F3aB5eA2e8136694e55d0"): AccountStorage{ StorageRoot: nil, StorageSlots: map[common.Hash]common.Hash{ common.HexToHash("0xc65a7bb8d6351c1cf70c95a316cc6a92839c986682d98bc35f958f4883f9d2a8"): common.HexToHash("0x"), @@ -56,15 +55,15 @@ func TestTransactionOptsJSONUnMarshalTrip(t *testing.T) { "EmptyObject", `{"knownAccounts":{}}`, false, - ethapi.TransactionOpts{ - KnownAccounts: make(map[common.Address]ethapi.AccountStorage), + TransactionOpts{ + KnownAccounts: make(map[common.Address]AccountStorage), }, }, { "EmptyStrings", `{"knownAccounts":{"":""}}`, true, - ethapi.TransactionOpts{ + TransactionOpts{ KnownAccounts: nil, }, }, @@ -72,7 +71,7 @@ func TestTransactionOptsJSONUnMarshalTrip(t *testing.T) { "BlockNumberMin", `{"blockNumberMin":"0x1"}`, false, - ethapi.TransactionOpts{ + TransactionOpts{ BlockNumberMin: u64Ptr(1), }, }, @@ -80,7 +79,7 @@ func TestTransactionOptsJSONUnMarshalTrip(t *testing.T) { "BlockNumberMax", `{"blockNumberMin":"0x1", "blockNumberMax":"0x2"}`, false, - ethapi.TransactionOpts{ + TransactionOpts{ BlockNumberMin: u64Ptr(1), BlockNumberMax: u64Ptr(2), }, @@ -89,7 +88,7 @@ func TestTransactionOptsJSONUnMarshalTrip(t *testing.T) { "TimestampMin", `{"timestampMin":"0xffff"}`, false, - ethapi.TransactionOpts{ + TransactionOpts{ TimestampMin: u64Ptr(0xffff), }, }, @@ -97,7 +96,7 @@ func TestTransactionOptsJSONUnMarshalTrip(t *testing.T) { "TimestampMax", `{"timestampMax":"0xffffff"}`, false, - ethapi.TransactionOpts{ + TransactionOpts{ TimestampMax: u64Ptr(0xffffff), }, }, @@ -105,7 +104,7 @@ func TestTransactionOptsJSONUnMarshalTrip(t *testing.T) { for _, test := range tests { t.Run(test.name, func(t *testing.T) { - var opts ethapi.TransactionOpts + var opts TransactionOpts err := json.Unmarshal([]byte(test.input), &opts) if test.mustFail && err == nil { t.Errorf("Test %s should fail", test.name) diff --git a/ethclient/ethclient.go b/ethclient/ethclient.go index 8cf50eb528..1a586ec039 100644 --- a/ethclient/ethclient.go +++ b/ethclient/ethclient.go @@ -29,7 +29,6 @@ import ( "github.com/ethereum/go-ethereum/common/hexutil" "github.com/ethereum/go-ethereum/core" "github.com/ethereum/go-ethereum/core/types" - "github.com/ethereum/go-ethereum/internal/ethapi" "github.com/ethereum/go-ethereum/rpc" ) @@ -737,7 +736,7 @@ func (ec *Client) SendTransaction(ctx context.Context, tx *types.Transaction) er // // If the transaction was a contract creation use the TransactionReceipt method to get the // contract address after the transaction has been mined. -func (ec *Client) SendTransactionConditional(ctx context.Context, tx *types.Transaction, opts ethapi.TransactionOpts) error { +func (ec *Client) SendTransactionConditional(ctx context.Context, tx *types.Transaction, opts types.TransactionOpts) error { data, err := tx.MarshalBinary() if err != nil { return err diff --git a/ethclient/ethclient_test.go b/ethclient/ethclient_test.go index 54ce597b09..7abc104fd1 100644 --- a/ethclient/ethclient_test.go +++ b/ethclient/ethclient_test.go @@ -34,7 +34,6 @@ import ( "github.com/ethereum/go-ethereum/crypto" "github.com/ethereum/go-ethereum/eth" "github.com/ethereum/go-ethereum/eth/ethconfig" - "github.com/ethereum/go-ethereum/internal/ethapi" "github.com/ethereum/go-ethereum/node" "github.com/ethereum/go-ethereum/params" "github.com/ethereum/go-ethereum/rlp" @@ -770,9 +769,9 @@ func sendTransactionConditional(ec *Client) error { } root := common.HexToHash("0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421") - return ec.SendTransactionConditional(context.Background(), tx, ethapi.TransactionOpts{ - KnownAccounts: map[common.Address]ethapi.AccountStorage{ - testAddr: ethapi.AccountStorage{ + return ec.SendTransactionConditional(context.Background(), tx, types.TransactionOpts{ + KnownAccounts: map[common.Address]types.AccountStorage{ + testAddr: types.AccountStorage{ StorageRoot: &root, }, }, diff --git a/ethclient/simulated/backend.go b/ethclient/simulated/backend.go index 13e7cad586..a577343df3 100644 --- a/ethclient/simulated/backend.go +++ b/ethclient/simulated/backend.go @@ -30,7 +30,6 @@ import ( "github.com/ethereum/go-ethereum/eth/ethconfig" "github.com/ethereum/go-ethereum/eth/filters" "github.com/ethereum/go-ethereum/ethclient" - "github.com/ethereum/go-ethereum/internal/ethapi" "github.com/ethereum/go-ethereum/node" "github.com/ethereum/go-ethereum/p2p" "github.com/ethereum/go-ethereum/params" @@ -39,7 +38,7 @@ import ( // TransactionConditionalSender injects the conditional transaction into the pending pool for execution after verification. type TransactionConditionalSender interface { - SendTransactionConditional(ctx context.Context, tx *types.Transaction, opts ethapi.TransactionOpts) error + SendTransactionConditional(ctx context.Context, tx *types.Transaction, opts types.TransactionOpts) error } // Client exposes the methods provided by the Ethereum RPC client. diff --git a/internal/ethapi/api.go b/internal/ethapi/api.go index 6a2ac19319..0f029a503d 100644 --- a/internal/ethapi/api.go +++ b/internal/ethapi/api.go @@ -2314,7 +2314,7 @@ func (s *TransactionAPI) SendRawTransaction(ctx context.Context, input hexutil.B // SendRawTransactionConditional will add the signed transaction to the transaction pool. // The sender/bundler is responsible for signing the transaction -func (s *TransactionAPI) SendRawTransactionConditional(ctx context.Context, input hexutil.Bytes, opts TransactionOpts) (common.Hash, error) { +func (s *TransactionAPI) SendRawTransactionConditional(ctx context.Context, input hexutil.Bytes, opts types.TransactionOpts) (common.Hash, error) { tx := new(types.Transaction) if err := tx.UnmarshalBinary(input); err != nil { return common.Hash{}, err @@ -2324,7 +2324,7 @@ func (s *TransactionAPI) SendRawTransactionConditional(ctx context.Context, inpu if state == nil || err != nil { return common.Hash{}, err } - if err := opts.Check(header.Number.Uint64(), header.Time, state); err != nil { + if err := TxOptsCheck(opts, header.Number.Uint64(), header.Time, state); err != nil { return common.Hash{}, err } return SubmitTransaction(ctx, s.b, tx) diff --git a/internal/ethapi/transaction_options.go b/internal/ethapi/transaction_opts_utils.go similarity index 51% rename from internal/ethapi/transaction_options.go rename to internal/ethapi/transaction_opts_utils.go index 77b1729037..131ac82e29 100644 --- a/internal/ethapi/transaction_options.go +++ b/internal/ethapi/transaction_opts_utils.go @@ -2,52 +2,15 @@ package ethapi import ( "bytes" - "encoding/json" "errors" - "github.com/ethereum/go-ethereum/common" - "github.com/ethereum/go-ethereum/common/hexutil" "github.com/ethereum/go-ethereum/core/state" + "github.com/ethereum/go-ethereum/core/types" ) -type AccountStorage struct { - StorageRoot *common.Hash - StorageSlots map[common.Hash]common.Hash -} - -func (a *AccountStorage) UnmarshalJSON(data []byte) error { - var hash common.Hash - if err := json.Unmarshal(data, &hash); err == nil { - a.StorageRoot = &hash - return nil - } - return json.Unmarshal(data, &a.StorageSlots) -} - -func (a AccountStorage) MarshalJSON() ([]byte, error) { - if a.StorageRoot != nil { - return json.Marshal(*a.StorageRoot) - } - return json.Marshal(a.StorageSlots) -} - -type KnownAccounts map[common.Address]AccountStorage - -// It is known that marshaling is broken -// https://github.com/golang/go/issues/55890 - -//go:generate go run github.com/fjl/gencodec -type TransactionOpts -out gen_tx_opts_json.go -type TransactionOpts struct { - KnownAccounts KnownAccounts `json:"knownAccounts"` - BlockNumberMin *hexutil.Uint64 `json:"blockNumberMin,omitempty"` - BlockNumberMax *hexutil.Uint64 `json:"blockNumberMax,omitempty"` - TimestampMin *hexutil.Uint64 `json:"timestampMin,omitempty"` - TimestampMax *hexutil.Uint64 `json:"timestampMax,omitempty"` -} - const MaxNumberOfEntries = 1000 -func (o *TransactionOpts) Check(blockNumber uint64, timeStamp uint64, statedb *state.StateDB) error { +func TxOptsCheck(o types.TransactionOpts, blockNumber uint64, timeStamp uint64, statedb *state.StateDB) error { if o.BlockNumberMin != nil && blockNumber < uint64(*o.BlockNumberMin) { return errors.New("BlockNumberMin condition not met") } @@ -71,10 +34,10 @@ func (o *TransactionOpts) Check(blockNumber uint64, timeStamp uint64, statedb *s if counter > MaxNumberOfEntries { return errors.New("knownAccounts too large") } - return o.CheckStorage(statedb) + return TxOptsCheckStorage(o, statedb) } -func (o *TransactionOpts) CheckStorage(statedb *state.StateDB) error { +func TxOptsCheckStorage(o types.TransactionOpts, statedb *state.StateDB) error { for address, accountStorage := range o.KnownAccounts { if accountStorage.StorageRoot != nil { rootHash := statedb.GetRoot(address) From 00a36bb0ccedec0625f6151e328f10e41fe34058 Mon Sep 17 00:00:00 2001 From: Ethan Date: Sat, 12 Oct 2024 09:14:28 +0800 Subject: [PATCH 27/27] feat: modify LOCK_PERIOD_FOR_TOKEN_RECOVER to 300 seconds on BSC Testnet in pascal hardfork (#2737) * feat: modify LOCK_PERIOD_FOR_TOKEN_RECOVER to 300 seconds on BSC Testnet * feat: update commit id in pascal hardfork --- .../pascal/chapel/TokenHubContract | 2 +- core/systemcontracts/upgrade.go | 102 +++++++++--------- 2 files changed, 52 insertions(+), 52 deletions(-) diff --git a/core/systemcontracts/pascal/chapel/TokenHubContract b/core/systemcontracts/pascal/chapel/TokenHubContract index f8ae4da3d4..94d1d827f7 100644 --- a/core/systemcontracts/pascal/chapel/TokenHubContract +++ b/core/systemcontracts/pascal/chapel/TokenHubContract @@ -1 +1 @@ -60806040526004361061036f5760003560e01c80639509b980116101c6578063bbface1f116100f7578063e04c83a711610095578063f9a2bbc71161006f578063f9a2bbc714610e57578063fa9e915914610e6c578063fc1a598f14610e81578063fd6a687914610eb4576103b7565b8063e04c83a714610de5578063e1c7392a14610e0f578063e8f35cea14610e24576103b7565b8063c8509d81116100d1578063c8509d8114610960578063cf41984414610d80578063dc927faf14610dbb578063df8079e914610dd0576103b7565b8063bbface1f14610d05578063bd46646114610d38578063c81b166214610d6b576103b7565b8063aa82dce111610164578063ac4317511161013e578063ac43175114610bd7578063b99328c514610ca2578063b9fd21e314610cdb578063ba35ead614610cf0576103b7565b8063aa82dce114610b7f578063aad5606314610b94578063ab51bb9614610ba9576103b7565b80639dc09262116101a05780639dc0926214610af9578063a1a11bf514610b0e578063a78abc1614610b23578063aa7415f514610b38576103b7565b80639509b98014610a725780639a854bbd14610aab5780639a99b4f014610ac0576103b7565b806359b92789116102a057806375d47a0a1161023e578063831d65d111610218578063831d65d1146109605780638525db03146109e55780638eff336c14610a1e57806393ab703f14610a5d576103b7565b806375d47a0a146108f7578063799758b91461090c5780637e434d541461094b576103b7565b80636e0565201161027a5780636e056520146107775780636e47b482146108a357806371d30863146108b8578063727be1f8146108cd576103b7565b806359b927891461070d5780635d499b1b14610737578063613684751461074c576103b7565b80633fd8b02f1161030d578063493279b1116102e7578063493279b1146106a257806350432d32146106ce57806351b4dce3146106e357806351e80672146106f8576103b7565b80633fd8b02f1461066357806343756e5c1461067857806343a368b91461068d576103b7565b8063149d14d911610349578063149d14d91461052257806328087028146105495780632ae454831461055e5780633d713223146105b2576103b7565b80630e2374a5146103bc5780631182b875146103ed57806312234582146104e7576103b7565b366103b75734156103b5576040805133815234602082015281517f6c98249d85d88c3753a04a22230f595e4dc8d3dc86c34af35deeeedc861b89db929181900390910190a15b005b600080fd5b3480156103c857600080fd5b506103d1610ec9565b604080516001600160a01b039092168252519081900360200190f35b3480156103f957600080fd5b506104726004803603604081101561041057600080fd5b60ff8235169190810190604081016020820135600160201b81111561043457600080fd5b82018360208201111561044657600080fd5b803590602001918460018302840111600160201b8311171561046757600080fd5b509092509050610ecf565b6040805160208082528351818301528351919283929083019185019080838360005b838110156104ac578181015183820152602001610494565b50505050905090810190601f1680156104d95780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3480156104f357600080fd5b506103b56004803603604081101561050a57600080fd5b506001600160a01b0381358116916020013516610f17565b34801561052e57600080fd5b50610537610f91565b60408051918252519081900360200190f35b34801561055557600080fd5b506103d1610f97565b34801561056a57600080fd5b506105996004803603604081101561058157600080fd5b506001600160a01b0381358116916020013516610f9d565b6040805192835260208301919091528051918290030190f35b3480156105be57600080fd5b506103d1600480360360208110156105d557600080fd5b810190602081018135600160201b8111156105ef57600080fd5b82018360208201111561060157600080fd5b803590602001918460018302840111600160201b8311171561062257600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550610fc1945050505050565b34801561066f57600080fd5b50610537610fe2565b34801561068457600080fd5b506103d1610fe8565b34801561069957600080fd5b50610537610fee565b3480156106ae57600080fd5b506106b7610ffa565b6040805161ffff9092168252519081900360200190f35b3480156106da57600080fd5b50610537610fff565b3480156106ef57600080fd5b506103d161100a565b34801561070457600080fd5b506103d1611010565b34801561071957600080fd5b506103d16004803603602081101561073057600080fd5b5035611016565b34801561074357600080fd5b50610537611031565b34801561075857600080fd5b5061076161103a565b6040805160ff9092168252519081900360200190f35b61088f6004803603608081101561078d57600080fd5b810190602081018135600160201b8111156107a757600080fd5b8201836020820111156107b957600080fd5b803590602001918460208302840111600160201b831117156107da57600080fd5b919390929091602081019035600160201b8111156107f757600080fd5b82018360208201111561080957600080fd5b803590602001918460208302840111600160201b8311171561082a57600080fd5b919390929091602081019035600160201b81111561084757600080fd5b82018360208201111561085957600080fd5b803590602001918460208302840111600160201b8311171561087a57600080fd5b91935091503567ffffffffffffffff1661103f565b604080519115158252519081900360200190f35b3480156108af57600080fd5b506103d1611085565b3480156108c457600080fd5b5061053761108b565b3480156108d957600080fd5b5061088f600480360360208110156108f057600080fd5b5035611091565b34801561090357600080fd5b506103d16110cd565b34801561091857600080fd5b506103b56004803603606081101561092f57600080fd5b508035906001600160a01b0360208201351690604001356110d3565b34801561095757600080fd5b506103d1611383565b34801561096c57600080fd5b506103b56004803603604081101561098357600080fd5b60ff8235169190810190604081016020820135600160201b8111156109a757600080fd5b8201836020820111156109b957600080fd5b803590602001918460018302840111600160201b831117156109da57600080fd5b509092509050611389565b3480156109f157600080fd5b506103b560048036036040811015610a0857600080fd5b50803590602001356001600160a01b03166113ce565b348015610a2a57600080fd5b506103b560048036036060811015610a4157600080fd5b508035906001600160a01b036020820135169060400135611537565b348015610a6957600080fd5b50610537611577565b348015610a7e57600080fd5b506103b560048036036040811015610a9557600080fd5b506001600160a01b03813516906020013561157e565b348015610ab757600080fd5b50610537611640565b348015610acc57600080fd5b5061053760048036036040811015610ae357600080fd5b506001600160a01b03813516906020013561164c565b348015610b0557600080fd5b506103d16116d2565b348015610b1a57600080fd5b506103d16116d8565b348015610b2f57600080fd5b5061088f6116de565b61088f60048036036080811015610b4e57600080fd5b5080356001600160a01b03908116916020810135909116906040810135906060013567ffffffffffffffff1661103f565b348015610b8b57600080fd5b506103d16116e7565b348015610ba057600080fd5b506103d16116ed565b348015610bb557600080fd5b50610bbe6116f3565b6040805163ffffffff9092168252519081900360200190f35b348015610be357600080fd5b506103b560048036036040811015610bfa57600080fd5b810190602081018135600160201b811115610c1457600080fd5b820183602082011115610c2657600080fd5b803590602001918460018302840111600160201b83111715610c4757600080fd5b919390929091602081019035600160201b811115610c6457600080fd5b820183602082011115610c7657600080fd5b803590602001918460018302840111600160201b83111715610c9757600080fd5b5090925090506116f8565b348015610cae57600080fd5b506103b560048036036040811015610cc557600080fd5b50803590602001356001600160a01b0316611537565b348015610ce757600080fd5b50610537611738565b348015610cfc57600080fd5b50610537611742565b348015610d1157600080fd5b5061053760048036036020811015610d2857600080fd5b50356001600160a01b0316611748565b348015610d4457600080fd5b5061053760048036036020811015610d5b57600080fd5b50356001600160a01b031661175a565b348015610d7757600080fd5b506103d1611775565b348015610d8c57600080fd5b506103b560048036036040811015610da357600080fd5b506001600160a01b038135811691602001351661177b565b348015610dc757600080fd5b506103d1611a4f565b348015610ddc57600080fd5b506103d1611a55565b348015610df157600080fd5b5061088f60048036036020811015610e0857600080fd5b5035611a5b565b348015610e1b57600080fd5b506103b5611ab3565b348015610e3057600080fd5b5061053760048036036020811015610e4757600080fd5b50356001600160a01b0316611b53565b348015610e6357600080fd5b506103d1611b65565b348015610e7857600080fd5b50610537611b6b565b348015610e8d57600080fd5b5061047260048036036020811015610ea457600080fd5b50356001600160a01b0316611b71565b348015610ec057600080fd5b506103d1611c98565b61200181565b60005460609060ff16610f17576040805162461bcd60e51b81526020600482015260196024820152600080516020612049833981519152604482015290519081900360640190fd5b3361200014610f575760405162461bcd60e51b815260040180806020018281038252602f815260200180611ff7602f913960400191505060405180910390fd5b6040805162461bcd60e51b815260206004820152600a60248201526919195c1c9958d85d195960b21b604482015290519081900360640190fd5b60015490565b61200581565b60076020908152600092835260408084209091529082529020805460019091015482565b6020908101516000908152600490915260409020546001600160a01b031690565b60055481565b61100181565b670de0b6b3a764000081565b606181565b66071afd498d000081565b61200681565b61200081565b6000908152600460205260409020546001600160a01b031690565b6402540be40081565b600881565b6000805460ff16610f57576040805162461bcd60e51b81526020600482015260196024820152600080516020612049833981519152604482015290519081900360640190fd5b61100581565b60015481565b6040805162461bcd60e51b815260206004820152600a60248201526919195c1c9958d85d195960b21b6044820152905160009181900360640190fd5b61100881565b60005460ff16611118576040805162461bcd60e51b81526020600482015260196024820152600080516020612049833981519152604482015290519081900360640190fd5b33613000146111585760405162461bcd60e51b815260040180806020018281038252602b815260200180611f7d602b913960400191505060405180910390fd5b677ce66c50e284000081111561119f5760405162461bcd60e51b8152600401808060200182810382526035815260200180611f486035913960400191505060405180910390fd5b60006221272160e91b8414611309576000848152600460205260409020546001600160a01b031680611212576040805184815290516001600160a01b0386169187917fc16ee9013bf67c846d37735983debb0acc5b2d1419cb5931c9843ad4689505499181900360200190a3505061137e565b6001600160a01b0381166000908152600260205260409020546112358482611c9e565b604080516370a0823160e01b8152306004820152905191945084916001600160a01b038516916370a08231916024808301926020929190829003018186803b15801561128057600080fd5b505afa158015611294573d6000803e3d6000fd5b505050506040513d60208110156112aa57600080fd5b505110156112f6576040805162461bcd60e51b8152602060048201526014602482015273696e73756666696369656e742062616c616e636560601b604482015290519081900360640190fd5b61130286838588611ce7565b505061137c565b61131e826402540be40063ffffffff611d8116565b90508047101561136c576040805162461bcd60e51b8152602060048201526014602482015273696e73756666696369656e742062616c616e636560601b604482015290519081900360640190fd5b600061137a85828487611ce7565b505b505b505050565b61200381565b60005460ff16610f17576040805162461bcd60e51b81526020600482015260196024820152600080516020612049833981519152604482015290519081900360640190fd5b336130001461140e5760405162461bcd60e51b815260040180806020018281038252602b815260200180611f7d602b913960400191505060405180910390fd5b60006221272160e91b831461147957506000828152600460205260409020546001600160a01b031680611479576040805162461bcd60e51b815260206004820152600e60248201526d1a5b9d985b1a59081cde5b589bdb60921b604482015290519081900360640190fd5b6001600160a01b03808216600090815260076020908152604080832093861683529290522080546114e4576040805162461bcd60e51b815260206004820152601060248201526f1b9bc81b1bd8dad95908185b5bdd5b9d60821b604482015290519081900360640190fd5b8054600082556040805182815290516001600160a01b03808716929086169188917f8041a9a8704332594e2884f5e0f942281cdd7611854c365b4d0aa70b2295d6b6919081900360200190a45050505050565b3361100814610f575760405162461bcd60e51b81526004018080602001828103825260238152602001806120266023913960400191505060405180910390fd5b6201518081565b81806001600160a01b031663893d20e86040518163ffffffff1660e01b815260040160206040518083038186803b1580156115b857600080fd5b505afa1580156115cc573d6000803e3d6000fd5b505050506040513d60208110156115e257600080fd5b50516001600160a01b03163314610f57576040805162461bcd60e51b815260206004820152601860248201527f6e6f74206f776e6572206f6620424550323020746f6b656e0000000000000000604482015290519081900360640190fd5b677ce66c50e284000081565b6000805460ff16611692576040805162461bcd60e51b81526020600482015260196024820152600080516020612049833981519152604482015290519081900360640190fd5b3361100514610f575760405162461bcd60e51b815260040180806020018281038252602f815260200180611f19602f913960400191505060405180910390fd5b61100781565b61100681565b60005460ff1681565b61200281565b61300081565b600081565b3361100714610f575760405162461bcd60e51b815260040180806020018281038252602e815260200180611fc9602e913960400191505060405180910390fd5b6221272160e91b81565b61c35081565b60026020526000908152604090205481565b6001600160a01b031660009081526003602052604090205490565b61100281565b60085460ff16600214156117c7576040805162461bcd60e51b815260206004820152600e60248201526d4e6f2072652d656e7472616e637960901b604482015290519081900360640190fd5b6008805460ff191660021790556001600160a01b038083166000908152600760209081526040808320938516835292905220805461183f576040805162461bcd60e51b815260206004820152601060248201526f1b9bc81b1bd8dad95908185b5bdd5b9d60821b604482015290519081900360640190fd5b8060010154421015611898576040805162461bcd60e51b815260206004820152601760248201527f7374696c6c206f6e206c6f636b696e6720706572696f64000000000000000000604482015290519081900360640190fd5b805460008083556001600160a01b03851661190b576040516001600160a01b038516906127109084906000818181858888f193505050503d80600081146118fb576040519150601f19603f3d011682016040523d82523d6000602084013e611900565b606091505b50508091505061199e565b846001600160a01b031663a9059cbb61c35086856040518463ffffffff1660e01b815260040180836001600160a01b03166001600160a01b0316815260200182815260200192505050602060405180830381600088803b15801561196e57600080fd5b5087f1158015611982573d6000803e3d6000fd5b50505050506040513d602081101561199957600080fd5b505190505b806119f0576040805162461bcd60e51b815260206004820152601e60248201527f776974686472617720756e6c6f636b656420746f6b656e206661696c65640000604482015290519081900360640190fd5b836001600160a01b0316856001600160a01b03167f832fc3e25f2b3e6fb0eb59419a73cba405f2a249fce75f7e31ea5a457a0323f1846040518082815260200191505060405180910390a350506008805460ff19166001179055505050565b61100381565b61200481565b60003361200214610f57576040805162461bcd60e51b815260206004820152601f60248201527f746865206d73672073656e646572206d757374206265207374616b6548756200604482015290519081900360640190fd5b60005460ff1615611b0b576040805162461bcd60e51b815260206004820152601960248201527f74686520636f6e747261637420616c726561647920696e697400000000000000604482015290519081900360640190fd5b66071afd498d000060019081556000808052600260205260127fac33ff75c19e70fe83507db0d683fd3465c996598dc972688b7ace676c89077b55805460ff19169091179055565b60066020526000908152604090205481565b61100081565b61271081565b6001600160a01b03811660009081526003602090815260409182902054825182815280840190935260609290918391906020820181803683375050506020810183905290506000805b60208160ff161015611c0157828160ff1681518110611bd557fe5b01602001516001600160f81b03191615611bf457816001019150611bf9565b611c01565b600101611bba565b5060608160ff166040519080825280601f01601f191660200182016040528015611c32576020820181803683370190505b50905060005b8260ff168160ff161015611c8e57838160ff1681518110611c5557fe5b602001015160f81c60f81b828260ff1681518110611c6f57fe5b60200101906001600160f81b031916908160001a905350600101611c38565b5095945050505050565b61100481565b60006008821115611cc757611cc0836007198401600a0a63ffffffff611d8116565b9050611ce1565b611cde836008849003600a0a63ffffffff611dda16565b90505b92915050565b6001600160a01b0380841660009081526007602090815260408083209385168352929052208054611d1e908463ffffffff611e1c16565b81554262015180016001820181905560408051858152602081019290925280516001600160a01b03808616939088169289927f446d1aa056e7b903901f49880e9f252762c1b81dc4301cf28db6dae526497eaa9281900390910190a45050505050565b600082611d9057506000611ce1565b82820282848281611d9d57fe5b0414611cde5760405162461bcd60e51b8152600401808060200182810382526021815260200180611fa86021913960400191505060405180910390fd5b6000611cde83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250611e76565b600082820183811015611cde576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b60008183611f025760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b83811015611ec7578181015183820152602001611eaf565b50505050905090810190601f168015611ef45780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b506000838581611f0e57fe5b049594505050505056fe746865206d6573736167652073656e646572206d75737420626520696e63656e746976697a6520636f6e7472616374616d6f756e7420697320746f6f206c617267652c20657863656564206d6178696d756d206265703220746f6b656e20616d6f756e74746865206d73672073656e646572206d75737420626520746f6b656e207265636f76657220706f7274616c536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f77746865206d6573736167652073656e646572206d75737420626520676f7665726e616e636520636f6e7472616374746865206d6573736167652073656e646572206d7573742062652063726f737320636861696e20636f6e7472616374746865206d73672073656e646572206d75737420626520746f6b656e4d616e6167657274686520636f6e7472616374206e6f7420696e69742079657400000000000000a164736f6c6343000604000a \ No newline at end of file +60806040526004361061036f5760003560e01c80639509b980116101c6578063bbface1f116100f7578063e04c83a711610095578063f9a2bbc71161006f578063f9a2bbc714610e57578063fa9e915914610e6c578063fc1a598f14610e81578063fd6a687914610eb4576103b7565b8063e04c83a714610de5578063e1c7392a14610e0f578063e8f35cea14610e24576103b7565b8063c8509d81116100d1578063c8509d8114610960578063cf41984414610d80578063dc927faf14610dbb578063df8079e914610dd0576103b7565b8063bbface1f14610d05578063bd46646114610d38578063c81b166214610d6b576103b7565b8063aa82dce111610164578063ac4317511161013e578063ac43175114610bd7578063b99328c514610ca2578063b9fd21e314610cdb578063ba35ead614610cf0576103b7565b8063aa82dce114610b7f578063aad5606314610b94578063ab51bb9614610ba9576103b7565b80639dc09262116101a05780639dc0926214610af9578063a1a11bf514610b0e578063a78abc1614610b23578063aa7415f514610b38576103b7565b80639509b98014610a725780639a854bbd14610aab5780639a99b4f014610ac0576103b7565b806359b92789116102a057806375d47a0a1161023e578063831d65d111610218578063831d65d1146109605780638525db03146109e55780638eff336c14610a1e57806393ab703f14610a5d576103b7565b806375d47a0a146108f7578063799758b91461090c5780637e434d541461094b576103b7565b80636e0565201161027a5780636e056520146107775780636e47b482146108a357806371d30863146108b8578063727be1f8146108cd576103b7565b806359b927891461070d5780635d499b1b14610737578063613684751461074c576103b7565b80633fd8b02f1161030d578063493279b1116102e7578063493279b1146106a257806350432d32146106ce57806351b4dce3146106e357806351e80672146106f8576103b7565b80633fd8b02f1461066357806343756e5c1461067857806343a368b91461068d576103b7565b8063149d14d911610349578063149d14d91461052257806328087028146105495780632ae454831461055e5780633d713223146105b2576103b7565b80630e2374a5146103bc5780631182b875146103ed57806312234582146104e7576103b7565b366103b75734156103b5576040805133815234602082015281517f6c98249d85d88c3753a04a22230f595e4dc8d3dc86c34af35deeeedc861b89db929181900390910190a15b005b600080fd5b3480156103c857600080fd5b506103d1610ec9565b604080516001600160a01b039092168252519081900360200190f35b3480156103f957600080fd5b506104726004803603604081101561041057600080fd5b60ff8235169190810190604081016020820135600160201b81111561043457600080fd5b82018360208201111561044657600080fd5b803590602001918460018302840111600160201b8311171561046757600080fd5b509092509050610ecf565b6040805160208082528351818301528351919283929083019185019080838360005b838110156104ac578181015183820152602001610494565b50505050905090810190601f1680156104d95780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3480156104f357600080fd5b506103b56004803603604081101561050a57600080fd5b506001600160a01b0381358116916020013516610f17565b34801561052e57600080fd5b50610537610f91565b60408051918252519081900360200190f35b34801561055557600080fd5b506103d1610f97565b34801561056a57600080fd5b506105996004803603604081101561058157600080fd5b506001600160a01b0381358116916020013516610f9d565b6040805192835260208301919091528051918290030190f35b3480156105be57600080fd5b506103d1600480360360208110156105d557600080fd5b810190602081018135600160201b8111156105ef57600080fd5b82018360208201111561060157600080fd5b803590602001918460018302840111600160201b8311171561062257600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550610fc1945050505050565b34801561066f57600080fd5b50610537610fe2565b34801561068457600080fd5b506103d1610fe8565b34801561069957600080fd5b50610537610fee565b3480156106ae57600080fd5b506106b7610ffa565b6040805161ffff9092168252519081900360200190f35b3480156106da57600080fd5b50610537610fff565b3480156106ef57600080fd5b506103d161100a565b34801561070457600080fd5b506103d1611010565b34801561071957600080fd5b506103d16004803603602081101561073057600080fd5b5035611016565b34801561074357600080fd5b50610537611031565b34801561075857600080fd5b5061076161103a565b6040805160ff9092168252519081900360200190f35b61088f6004803603608081101561078d57600080fd5b810190602081018135600160201b8111156107a757600080fd5b8201836020820111156107b957600080fd5b803590602001918460208302840111600160201b831117156107da57600080fd5b919390929091602081019035600160201b8111156107f757600080fd5b82018360208201111561080957600080fd5b803590602001918460208302840111600160201b8311171561082a57600080fd5b919390929091602081019035600160201b81111561084757600080fd5b82018360208201111561085957600080fd5b803590602001918460208302840111600160201b8311171561087a57600080fd5b91935091503567ffffffffffffffff1661103f565b604080519115158252519081900360200190f35b3480156108af57600080fd5b506103d1611085565b3480156108c457600080fd5b5061053761108b565b3480156108d957600080fd5b5061088f600480360360208110156108f057600080fd5b5035611091565b34801561090357600080fd5b506103d16110cd565b34801561091857600080fd5b506103b56004803603606081101561092f57600080fd5b508035906001600160a01b0360208201351690604001356110d3565b34801561095757600080fd5b506103d1611383565b34801561096c57600080fd5b506103b56004803603604081101561098357600080fd5b60ff8235169190810190604081016020820135600160201b8111156109a757600080fd5b8201836020820111156109b957600080fd5b803590602001918460018302840111600160201b831117156109da57600080fd5b509092509050611389565b3480156109f157600080fd5b506103b560048036036040811015610a0857600080fd5b50803590602001356001600160a01b03166113ce565b348015610a2a57600080fd5b506103b560048036036060811015610a4157600080fd5b508035906001600160a01b036020820135169060400135611537565b348015610a6957600080fd5b50610537611577565b348015610a7e57600080fd5b506103b560048036036040811015610a9557600080fd5b506001600160a01b03813516906020013561157d565b348015610ab757600080fd5b5061053761163f565b348015610acc57600080fd5b5061053760048036036040811015610ae357600080fd5b506001600160a01b03813516906020013561164b565b348015610b0557600080fd5b506103d16116d1565b348015610b1a57600080fd5b506103d16116d7565b348015610b2f57600080fd5b5061088f6116dd565b61088f60048036036080811015610b4e57600080fd5b5080356001600160a01b03908116916020810135909116906040810135906060013567ffffffffffffffff1661103f565b348015610b8b57600080fd5b506103d16116e6565b348015610ba057600080fd5b506103d16116ec565b348015610bb557600080fd5b50610bbe6116f2565b6040805163ffffffff9092168252519081900360200190f35b348015610be357600080fd5b506103b560048036036040811015610bfa57600080fd5b810190602081018135600160201b811115610c1457600080fd5b820183602082011115610c2657600080fd5b803590602001918460018302840111600160201b83111715610c4757600080fd5b919390929091602081019035600160201b811115610c6457600080fd5b820183602082011115610c7657600080fd5b803590602001918460018302840111600160201b83111715610c9757600080fd5b5090925090506116f7565b348015610cae57600080fd5b506103b560048036036040811015610cc557600080fd5b50803590602001356001600160a01b0316611537565b348015610ce757600080fd5b50610537611737565b348015610cfc57600080fd5b50610537611741565b348015610d1157600080fd5b5061053760048036036020811015610d2857600080fd5b50356001600160a01b0316611747565b348015610d4457600080fd5b5061053760048036036020811015610d5b57600080fd5b50356001600160a01b0316611759565b348015610d7757600080fd5b506103d1611774565b348015610d8c57600080fd5b506103b560048036036040811015610da357600080fd5b506001600160a01b038135811691602001351661177a565b348015610dc757600080fd5b506103d1611a4e565b348015610ddc57600080fd5b506103d1611a54565b348015610df157600080fd5b5061088f60048036036020811015610e0857600080fd5b5035611a5a565b348015610e1b57600080fd5b506103b5611ab2565b348015610e3057600080fd5b5061053760048036036020811015610e4757600080fd5b50356001600160a01b0316611b52565b348015610e6357600080fd5b506103d1611b64565b348015610e7857600080fd5b50610537611b6a565b348015610e8d57600080fd5b5061047260048036036020811015610ea457600080fd5b50356001600160a01b0316611b70565b348015610ec057600080fd5b506103d1611c97565b61200181565b60005460609060ff16610f17576040805162461bcd60e51b81526020600482015260196024820152600080516020612047833981519152604482015290519081900360640190fd5b3361200014610f575760405162461bcd60e51b815260040180806020018281038252602f815260200180611ff5602f913960400191505060405180910390fd5b6040805162461bcd60e51b815260206004820152600a60248201526919195c1c9958d85d195960b21b604482015290519081900360640190fd5b60015490565b61200581565b60076020908152600092835260408084209091529082529020805460019091015482565b6020908101516000908152600490915260409020546001600160a01b031690565b60055481565b61100181565b670de0b6b3a764000081565b606181565b66071afd498d000081565b61200681565b61200081565b6000908152600460205260409020546001600160a01b031690565b6402540be40081565b600881565b6000805460ff16610f57576040805162461bcd60e51b81526020600482015260196024820152600080516020612047833981519152604482015290519081900360640190fd5b61100581565b60015481565b6040805162461bcd60e51b815260206004820152600a60248201526919195c1c9958d85d195960b21b6044820152905160009181900360640190fd5b61100881565b60005460ff16611118576040805162461bcd60e51b81526020600482015260196024820152600080516020612047833981519152604482015290519081900360640190fd5b33613000146111585760405162461bcd60e51b815260040180806020018281038252602b815260200180611f7b602b913960400191505060405180910390fd5b677ce66c50e284000081111561119f5760405162461bcd60e51b8152600401808060200182810382526035815260200180611f466035913960400191505060405180910390fd5b60006221272160e91b8414611309576000848152600460205260409020546001600160a01b031680611212576040805184815290516001600160a01b0386169187917fc16ee9013bf67c846d37735983debb0acc5b2d1419cb5931c9843ad4689505499181900360200190a3505061137e565b6001600160a01b0381166000908152600260205260409020546112358482611c9d565b604080516370a0823160e01b8152306004820152905191945084916001600160a01b038516916370a08231916024808301926020929190829003018186803b15801561128057600080fd5b505afa158015611294573d6000803e3d6000fd5b505050506040513d60208110156112aa57600080fd5b505110156112f6576040805162461bcd60e51b8152602060048201526014602482015273696e73756666696369656e742062616c616e636560601b604482015290519081900360640190fd5b61130286838588611ce6565b505061137c565b61131e826402540be40063ffffffff611d7f16565b90508047101561136c576040805162461bcd60e51b8152602060048201526014602482015273696e73756666696369656e742062616c616e636560601b604482015290519081900360640190fd5b600061137a85828487611ce6565b505b505b505050565b61200381565b60005460ff16610f17576040805162461bcd60e51b81526020600482015260196024820152600080516020612047833981519152604482015290519081900360640190fd5b336130001461140e5760405162461bcd60e51b815260040180806020018281038252602b815260200180611f7b602b913960400191505060405180910390fd5b60006221272160e91b831461147957506000828152600460205260409020546001600160a01b031680611479576040805162461bcd60e51b815260206004820152600e60248201526d1a5b9d985b1a59081cde5b589bdb60921b604482015290519081900360640190fd5b6001600160a01b03808216600090815260076020908152604080832093861683529290522080546114e4576040805162461bcd60e51b815260206004820152601060248201526f1b9bc81b1bd8dad95908185b5bdd5b9d60821b604482015290519081900360640190fd5b8054600082556040805182815290516001600160a01b03808716929086169188917f8041a9a8704332594e2884f5e0f942281cdd7611854c365b4d0aa70b2295d6b6919081900360200190a45050505050565b3361100814610f575760405162461bcd60e51b81526004018080602001828103825260238152602001806120246023913960400191505060405180910390fd5b61012c81565b81806001600160a01b031663893d20e86040518163ffffffff1660e01b815260040160206040518083038186803b1580156115b757600080fd5b505afa1580156115cb573d6000803e3d6000fd5b505050506040513d60208110156115e157600080fd5b50516001600160a01b03163314610f57576040805162461bcd60e51b815260206004820152601860248201527f6e6f74206f776e6572206f6620424550323020746f6b656e0000000000000000604482015290519081900360640190fd5b677ce66c50e284000081565b6000805460ff16611691576040805162461bcd60e51b81526020600482015260196024820152600080516020612047833981519152604482015290519081900360640190fd5b3361100514610f575760405162461bcd60e51b815260040180806020018281038252602f815260200180611f17602f913960400191505060405180910390fd5b61100781565b61100681565b60005460ff1681565b61200281565b61300081565b600081565b3361100714610f575760405162461bcd60e51b815260040180806020018281038252602e815260200180611fc7602e913960400191505060405180910390fd5b6221272160e91b81565b61c35081565b60026020526000908152604090205481565b6001600160a01b031660009081526003602052604090205490565b61100281565b60085460ff16600214156117c6576040805162461bcd60e51b815260206004820152600e60248201526d4e6f2072652d656e7472616e637960901b604482015290519081900360640190fd5b6008805460ff191660021790556001600160a01b038083166000908152600760209081526040808320938516835292905220805461183e576040805162461bcd60e51b815260206004820152601060248201526f1b9bc81b1bd8dad95908185b5bdd5b9d60821b604482015290519081900360640190fd5b8060010154421015611897576040805162461bcd60e51b815260206004820152601760248201527f7374696c6c206f6e206c6f636b696e6720706572696f64000000000000000000604482015290519081900360640190fd5b805460008083556001600160a01b03851661190a576040516001600160a01b038516906127109084906000818181858888f193505050503d80600081146118fa576040519150601f19603f3d011682016040523d82523d6000602084013e6118ff565b606091505b50508091505061199d565b846001600160a01b031663a9059cbb61c35086856040518463ffffffff1660e01b815260040180836001600160a01b03166001600160a01b0316815260200182815260200192505050602060405180830381600088803b15801561196d57600080fd5b5087f1158015611981573d6000803e3d6000fd5b50505050506040513d602081101561199857600080fd5b505190505b806119ef576040805162461bcd60e51b815260206004820152601e60248201527f776974686472617720756e6c6f636b656420746f6b656e206661696c65640000604482015290519081900360640190fd5b836001600160a01b0316856001600160a01b03167f832fc3e25f2b3e6fb0eb59419a73cba405f2a249fce75f7e31ea5a457a0323f1846040518082815260200191505060405180910390a350506008805460ff19166001179055505050565b61100381565b61200481565b60003361200214610f57576040805162461bcd60e51b815260206004820152601f60248201527f746865206d73672073656e646572206d757374206265207374616b6548756200604482015290519081900360640190fd5b60005460ff1615611b0a576040805162461bcd60e51b815260206004820152601960248201527f74686520636f6e747261637420616c726561647920696e697400000000000000604482015290519081900360640190fd5b66071afd498d000060019081556000808052600260205260127fac33ff75c19e70fe83507db0d683fd3465c996598dc972688b7ace676c89077b55805460ff19169091179055565b60066020526000908152604090205481565b61100081565b61271081565b6001600160a01b03811660009081526003602090815260409182902054825182815280840190935260609290918391906020820181803683375050506020810183905290506000805b60208160ff161015611c0057828160ff1681518110611bd457fe5b01602001516001600160f81b03191615611bf357816001019150611bf8565b611c00565b600101611bb9565b5060608160ff166040519080825280601f01601f191660200182016040528015611c31576020820181803683370190505b50905060005b8260ff168160ff161015611c8d57838160ff1681518110611c5457fe5b602001015160f81c60f81b828260ff1681518110611c6e57fe5b60200101906001600160f81b031916908160001a905350600101611c37565b5095945050505050565b61100481565b60006008821115611cc657611cbf836007198401600a0a63ffffffff611d7f16565b9050611ce0565b611cdd836008849003600a0a63ffffffff611dd816565b90505b92915050565b6001600160a01b0380841660009081526007602090815260408083209385168352929052208054611d1d908463ffffffff611e1a16565b81554261012c016001820181905560408051858152602081019290925280516001600160a01b03808616939088169289927f446d1aa056e7b903901f49880e9f252762c1b81dc4301cf28db6dae526497eaa9281900390910190a45050505050565b600082611d8e57506000611ce0565b82820282848281611d9b57fe5b0414611cdd5760405162461bcd60e51b8152600401808060200182810382526021815260200180611fa66021913960400191505060405180910390fd5b6000611cdd83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250611e74565b600082820183811015611cdd576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b60008183611f005760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b83811015611ec5578181015183820152602001611ead565b50505050905090810190601f168015611ef25780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b506000838581611f0c57fe5b049594505050505056fe746865206d6573736167652073656e646572206d75737420626520696e63656e746976697a6520636f6e7472616374616d6f756e7420697320746f6f206c617267652c20657863656564206d6178696d756d206265703220746f6b656e20616d6f756e74746865206d73672073656e646572206d75737420626520746f6b656e207265636f76657220706f7274616c536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f77746865206d6573736167652073656e646572206d75737420626520676f7665726e616e636520636f6e7472616374746865206d6573736167652073656e646572206d7573742062652063726f737320636861696e20636f6e7472616374746865206d73672073656e646572206d75737420626520746f6b656e4d616e6167657274686520636f6e7472616374206e6f7420696e69742079657400000000000000a164736f6c6343000604000a \ No newline at end of file diff --git a/core/systemcontracts/upgrade.go b/core/systemcontracts/upgrade.go index 7ba62aaa60..ac5bdfd2be 100644 --- a/core/systemcontracts/upgrade.go +++ b/core/systemcontracts/upgrade.go @@ -781,87 +781,87 @@ func init() { Configs: []*UpgradeConfig{ { ContractAddr: common.HexToAddress(ValidatorContract), - CommitUrl: "https://github.com/bnb-chain/bsc-genesis-contract/commit/d1564095cca3bfbd303a5e3de2ad90e719d12564", + CommitUrl: "https://github.com/bnb-chain/bsc-genesis-contract/commit/020c0459e37d1f9d635c1cff86dd1099ab1383fa", Code: pascal.MainnetValidatorContract, }, { ContractAddr: common.HexToAddress(SlashContract), - CommitUrl: "https://github.com/bnb-chain/bsc-genesis-contract/commit/d1564095cca3bfbd303a5e3de2ad90e719d12564", + CommitUrl: "https://github.com/bnb-chain/bsc-genesis-contract/commit/020c0459e37d1f9d635c1cff86dd1099ab1383fa", Code: pascal.MainnetSlashContract, }, { ContractAddr: common.HexToAddress(SystemRewardContract), - CommitUrl: "https://github.com/bnb-chain/bsc-genesis-contract/commit/d1564095cca3bfbd303a5e3de2ad90e719d12564", + CommitUrl: "https://github.com/bnb-chain/bsc-genesis-contract/commit/020c0459e37d1f9d635c1cff86dd1099ab1383fa", Code: pascal.MainnetSystemRewardContract, }, { ContractAddr: common.HexToAddress(LightClientContract), - CommitUrl: "https://github.com/bnb-chain/bsc-genesis-contract/commit/d1564095cca3bfbd303a5e3de2ad90e719d12564", + CommitUrl: "https://github.com/bnb-chain/bsc-genesis-contract/commit/020c0459e37d1f9d635c1cff86dd1099ab1383fa", Code: pascal.MainnetLightClientContract, }, { ContractAddr: common.HexToAddress(TokenHubContract), - CommitUrl: "https://github.com/bnb-chain/bsc-genesis-contract/commit/d1564095cca3bfbd303a5e3de2ad90e719d12564", + CommitUrl: "https://github.com/bnb-chain/bsc-genesis-contract/commit/020c0459e37d1f9d635c1cff86dd1099ab1383fa", Code: pascal.MainnetTokenHubContract, }, { ContractAddr: common.HexToAddress(RelayerIncentivizeContract), - CommitUrl: "https://github.com/bnb-chain/bsc-genesis-contract/commit/d1564095cca3bfbd303a5e3de2ad90e719d12564", + CommitUrl: "https://github.com/bnb-chain/bsc-genesis-contract/commit/020c0459e37d1f9d635c1cff86dd1099ab1383fa", Code: pascal.MainnetRelayerIncentivizeContract, }, { ContractAddr: common.HexToAddress(RelayerHubContract), - CommitUrl: "https://github.com/bnb-chain/bsc-genesis-contract/commit/d1564095cca3bfbd303a5e3de2ad90e719d12564", + CommitUrl: "https://github.com/bnb-chain/bsc-genesis-contract/commit/020c0459e37d1f9d635c1cff86dd1099ab1383fa", Code: pascal.MainnetRelayerHubContract, }, { ContractAddr: common.HexToAddress(GovHubContract), - CommitUrl: "https://github.com/bnb-chain/bsc-genesis-contract/commit/d1564095cca3bfbd303a5e3de2ad90e719d12564", + CommitUrl: "https://github.com/bnb-chain/bsc-genesis-contract/commit/020c0459e37d1f9d635c1cff86dd1099ab1383fa", Code: pascal.MainnetGovHubContract, }, { ContractAddr: common.HexToAddress(TokenManagerContract), - CommitUrl: "https://github.com/bnb-chain/bsc-genesis-contract/commit/d1564095cca3bfbd303a5e3de2ad90e719d12564", + CommitUrl: "https://github.com/bnb-chain/bsc-genesis-contract/commit/020c0459e37d1f9d635c1cff86dd1099ab1383fa", Code: pascal.MainnetTokenManagerContract, }, { ContractAddr: common.HexToAddress(CrossChainContract), - CommitUrl: "https://github.com/bnb-chain/bsc-genesis-contract/commit/d1564095cca3bfbd303a5e3de2ad90e719d12564", + CommitUrl: "https://github.com/bnb-chain/bsc-genesis-contract/commit/020c0459e37d1f9d635c1cff86dd1099ab1383fa", Code: pascal.MainnetCrossChainContract, }, { ContractAddr: common.HexToAddress(StakingContract), - CommitUrl: "https://github.com/bnb-chain/bsc-genesis-contract/commit/d1564095cca3bfbd303a5e3de2ad90e719d12564", + CommitUrl: "https://github.com/bnb-chain/bsc-genesis-contract/commit/020c0459e37d1f9d635c1cff86dd1099ab1383fa", Code: pascal.MainnetStakingContract, }, { ContractAddr: common.HexToAddress(StakeHubContract), - CommitUrl: "https://github.com/bnb-chain/bsc-genesis-contract/commit/d1564095cca3bfbd303a5e3de2ad90e719d12564", + CommitUrl: "https://github.com/bnb-chain/bsc-genesis-contract/commit/020c0459e37d1f9d635c1cff86dd1099ab1383fa", Code: pascal.MainnetStakeHubContract, }, { ContractAddr: common.HexToAddress(StakeCreditContract), - CommitUrl: "https://github.com/bnb-chain/bsc-genesis-contract/commit/d1564095cca3bfbd303a5e3de2ad90e719d12564", + CommitUrl: "https://github.com/bnb-chain/bsc-genesis-contract/commit/020c0459e37d1f9d635c1cff86dd1099ab1383fa", Code: pascal.MainnetStakeCreditContract, }, { ContractAddr: common.HexToAddress(GovernorContract), - CommitUrl: "https://github.com/bnb-chain/bsc-genesis-contract/commit/d1564095cca3bfbd303a5e3de2ad90e719d12564", + CommitUrl: "https://github.com/bnb-chain/bsc-genesis-contract/commit/020c0459e37d1f9d635c1cff86dd1099ab1383fa", Code: pascal.MainnetGovernorContract, }, { ContractAddr: common.HexToAddress(GovTokenContract), - CommitUrl: "https://github.com/bnb-chain/bsc-genesis-contract/commit/d1564095cca3bfbd303a5e3de2ad90e719d12564", + CommitUrl: "https://github.com/bnb-chain/bsc-genesis-contract/commit/020c0459e37d1f9d635c1cff86dd1099ab1383fa", Code: pascal.MainnetGovTokenContract, }, { ContractAddr: common.HexToAddress(TimelockContract), - CommitUrl: "https://github.com/bnb-chain/bsc-genesis-contract/commit/d1564095cca3bfbd303a5e3de2ad90e719d12564", + CommitUrl: "https://github.com/bnb-chain/bsc-genesis-contract/commit/020c0459e37d1f9d635c1cff86dd1099ab1383fa", Code: pascal.MainnetTimelockContract, }, { ContractAddr: common.HexToAddress(TokenRecoverPortalContract), - CommitUrl: "https://github.com/bnb-chain/bsc-genesis-contract/commit/d1564095cca3bfbd303a5e3de2ad90e719d12564", + CommitUrl: "https://github.com/bnb-chain/bsc-genesis-contract/commit/020c0459e37d1f9d635c1cff86dd1099ab1383fa", Code: pascal.MainnetTokenRecoverPortalContract, }, }, @@ -872,87 +872,87 @@ func init() { Configs: []*UpgradeConfig{ { ContractAddr: common.HexToAddress(ValidatorContract), - CommitUrl: "https://github.com/bnb-chain/bsc-genesis-contract/commit/d1564095cca3bfbd303a5e3de2ad90e719d12564", + CommitUrl: "https://github.com/bnb-chain/bsc-genesis-contract/commit/020c0459e37d1f9d635c1cff86dd1099ab1383fa", Code: pascal.ChapelValidatorContract, }, { ContractAddr: common.HexToAddress(SlashContract), - CommitUrl: "https://github.com/bnb-chain/bsc-genesis-contract/commit/d1564095cca3bfbd303a5e3de2ad90e719d12564", + CommitUrl: "https://github.com/bnb-chain/bsc-genesis-contract/commit/020c0459e37d1f9d635c1cff86dd1099ab1383fa", Code: pascal.ChapelSlashContract, }, { ContractAddr: common.HexToAddress(SystemRewardContract), - CommitUrl: "https://github.com/bnb-chain/bsc-genesis-contract/commit/d1564095cca3bfbd303a5e3de2ad90e719d12564", + CommitUrl: "https://github.com/bnb-chain/bsc-genesis-contract/commit/020c0459e37d1f9d635c1cff86dd1099ab1383fa", Code: pascal.ChapelSystemRewardContract, }, { ContractAddr: common.HexToAddress(LightClientContract), - CommitUrl: "https://github.com/bnb-chain/bsc-genesis-contract/commit/d1564095cca3bfbd303a5e3de2ad90e719d12564", + CommitUrl: "https://github.com/bnb-chain/bsc-genesis-contract/commit/020c0459e37d1f9d635c1cff86dd1099ab1383fa", Code: pascal.ChapelLightClientContract, }, { ContractAddr: common.HexToAddress(TokenHubContract), - CommitUrl: "https://github.com/bnb-chain/bsc-genesis-contract/commit/d1564095cca3bfbd303a5e3de2ad90e719d12564", + CommitUrl: "https://github.com/bnb-chain/bsc-genesis-contract/commit/020c0459e37d1f9d635c1cff86dd1099ab1383fa", Code: pascal.ChapelTokenHubContract, }, { ContractAddr: common.HexToAddress(RelayerIncentivizeContract), - CommitUrl: "https://github.com/bnb-chain/bsc-genesis-contract/commit/d1564095cca3bfbd303a5e3de2ad90e719d12564", + CommitUrl: "https://github.com/bnb-chain/bsc-genesis-contract/commit/020c0459e37d1f9d635c1cff86dd1099ab1383fa", Code: pascal.ChapelRelayerIncentivizeContract, }, { ContractAddr: common.HexToAddress(RelayerHubContract), - CommitUrl: "https://github.com/bnb-chain/bsc-genesis-contract/commit/d1564095cca3bfbd303a5e3de2ad90e719d12564", + CommitUrl: "https://github.com/bnb-chain/bsc-genesis-contract/commit/020c0459e37d1f9d635c1cff86dd1099ab1383fa", Code: pascal.ChapelRelayerHubContract, }, { ContractAddr: common.HexToAddress(GovHubContract), - CommitUrl: "https://github.com/bnb-chain/bsc-genesis-contract/commit/d1564095cca3bfbd303a5e3de2ad90e719d12564", + CommitUrl: "https://github.com/bnb-chain/bsc-genesis-contract/commit/020c0459e37d1f9d635c1cff86dd1099ab1383fa", Code: pascal.ChapelGovHubContract, }, { ContractAddr: common.HexToAddress(TokenManagerContract), - CommitUrl: "https://github.com/bnb-chain/bsc-genesis-contract/commit/d1564095cca3bfbd303a5e3de2ad90e719d12564", + CommitUrl: "https://github.com/bnb-chain/bsc-genesis-contract/commit/020c0459e37d1f9d635c1cff86dd1099ab1383fa", Code: pascal.ChapelTokenManagerContract, }, { ContractAddr: common.HexToAddress(CrossChainContract), - CommitUrl: "https://github.com/bnb-chain/bsc-genesis-contract/commit/d1564095cca3bfbd303a5e3de2ad90e719d12564", + CommitUrl: "https://github.com/bnb-chain/bsc-genesis-contract/commit/020c0459e37d1f9d635c1cff86dd1099ab1383fa", Code: pascal.ChapelCrossChainContract, }, { ContractAddr: common.HexToAddress(StakingContract), - CommitUrl: "https://github.com/bnb-chain/bsc-genesis-contract/commit/d1564095cca3bfbd303a5e3de2ad90e719d12564", + CommitUrl: "https://github.com/bnb-chain/bsc-genesis-contract/commit/020c0459e37d1f9d635c1cff86dd1099ab1383fa", Code: pascal.ChapelStakingContract, }, { ContractAddr: common.HexToAddress(StakeHubContract), - CommitUrl: "https://github.com/bnb-chain/bsc-genesis-contract/commit/d1564095cca3bfbd303a5e3de2ad90e719d12564", + CommitUrl: "https://github.com/bnb-chain/bsc-genesis-contract/commit/020c0459e37d1f9d635c1cff86dd1099ab1383fa", Code: pascal.ChapelStakeHubContract, }, { ContractAddr: common.HexToAddress(StakeCreditContract), - CommitUrl: "https://github.com/bnb-chain/bsc-genesis-contract/commit/d1564095cca3bfbd303a5e3de2ad90e719d12564", + CommitUrl: "https://github.com/bnb-chain/bsc-genesis-contract/commit/020c0459e37d1f9d635c1cff86dd1099ab1383fa", Code: pascal.ChapelStakeCreditContract, }, { ContractAddr: common.HexToAddress(GovernorContract), - CommitUrl: "https://github.com/bnb-chain/bsc-genesis-contract/commit/d1564095cca3bfbd303a5e3de2ad90e719d12564", + CommitUrl: "https://github.com/bnb-chain/bsc-genesis-contract/commit/020c0459e37d1f9d635c1cff86dd1099ab1383fa", Code: pascal.ChapelGovernorContract, }, { ContractAddr: common.HexToAddress(GovTokenContract), - CommitUrl: "https://github.com/bnb-chain/bsc-genesis-contract/commit/d1564095cca3bfbd303a5e3de2ad90e719d12564", + CommitUrl: "https://github.com/bnb-chain/bsc-genesis-contract/commit/020c0459e37d1f9d635c1cff86dd1099ab1383fa", Code: pascal.ChapelGovTokenContract, }, { ContractAddr: common.HexToAddress(TimelockContract), - CommitUrl: "https://github.com/bnb-chain/bsc-genesis-contract/commit/d1564095cca3bfbd303a5e3de2ad90e719d12564", + CommitUrl: "https://github.com/bnb-chain/bsc-genesis-contract/commit/020c0459e37d1f9d635c1cff86dd1099ab1383fa", Code: pascal.ChapelTimelockContract, }, { ContractAddr: common.HexToAddress(TokenRecoverPortalContract), - CommitUrl: "https://github.com/bnb-chain/bsc-genesis-contract/commit/d1564095cca3bfbd303a5e3de2ad90e719d12564", + CommitUrl: "https://github.com/bnb-chain/bsc-genesis-contract/commit/020c0459e37d1f9d635c1cff86dd1099ab1383fa", Code: pascal.ChapelTokenRecoverPortalContract, }, }, @@ -963,87 +963,87 @@ func init() { Configs: []*UpgradeConfig{ { ContractAddr: common.HexToAddress(ValidatorContract), - CommitUrl: "https://github.com/bnb-chain/bsc-genesis-contract/commit/d1564095cca3bfbd303a5e3de2ad90e719d12564", + CommitUrl: "https://github.com/bnb-chain/bsc-genesis-contract/commit/020c0459e37d1f9d635c1cff86dd1099ab1383fa", Code: pascal.RialtoValidatorContract, }, { ContractAddr: common.HexToAddress(SlashContract), - CommitUrl: "https://github.com/bnb-chain/bsc-genesis-contract/commit/d1564095cca3bfbd303a5e3de2ad90e719d12564", + CommitUrl: "https://github.com/bnb-chain/bsc-genesis-contract/commit/020c0459e37d1f9d635c1cff86dd1099ab1383fa", Code: pascal.RialtoSlashContract, }, { ContractAddr: common.HexToAddress(SystemRewardContract), - CommitUrl: "https://github.com/bnb-chain/bsc-genesis-contract/commit/d1564095cca3bfbd303a5e3de2ad90e719d12564", + CommitUrl: "https://github.com/bnb-chain/bsc-genesis-contract/commit/020c0459e37d1f9d635c1cff86dd1099ab1383fa", Code: pascal.RialtoSystemRewardContract, }, { ContractAddr: common.HexToAddress(LightClientContract), - CommitUrl: "https://github.com/bnb-chain/bsc-genesis-contract/commit/d1564095cca3bfbd303a5e3de2ad90e719d12564", + CommitUrl: "https://github.com/bnb-chain/bsc-genesis-contract/commit/020c0459e37d1f9d635c1cff86dd1099ab1383fa", Code: pascal.RialtoLightClientContract, }, { ContractAddr: common.HexToAddress(TokenHubContract), - CommitUrl: "https://github.com/bnb-chain/bsc-genesis-contract/commit/d1564095cca3bfbd303a5e3de2ad90e719d12564", + CommitUrl: "https://github.com/bnb-chain/bsc-genesis-contract/commit/020c0459e37d1f9d635c1cff86dd1099ab1383fa", Code: pascal.RialtoTokenHubContract, }, { ContractAddr: common.HexToAddress(RelayerIncentivizeContract), - CommitUrl: "https://github.com/bnb-chain/bsc-genesis-contract/commit/d1564095cca3bfbd303a5e3de2ad90e719d12564", + CommitUrl: "https://github.com/bnb-chain/bsc-genesis-contract/commit/020c0459e37d1f9d635c1cff86dd1099ab1383fa", Code: pascal.RialtoRelayerIncentivizeContract, }, { ContractAddr: common.HexToAddress(RelayerHubContract), - CommitUrl: "https://github.com/bnb-chain/bsc-genesis-contract/commit/d1564095cca3bfbd303a5e3de2ad90e719d12564", + CommitUrl: "https://github.com/bnb-chain/bsc-genesis-contract/commit/020c0459e37d1f9d635c1cff86dd1099ab1383fa", Code: pascal.RialtoRelayerHubContract, }, { ContractAddr: common.HexToAddress(GovHubContract), - CommitUrl: "https://github.com/bnb-chain/bsc-genesis-contract/commit/d1564095cca3bfbd303a5e3de2ad90e719d12564", + CommitUrl: "https://github.com/bnb-chain/bsc-genesis-contract/commit/020c0459e37d1f9d635c1cff86dd1099ab1383fa", Code: pascal.RialtoGovHubContract, }, { ContractAddr: common.HexToAddress(TokenManagerContract), - CommitUrl: "https://github.com/bnb-chain/bsc-genesis-contract/commit/d1564095cca3bfbd303a5e3de2ad90e719d12564", + CommitUrl: "https://github.com/bnb-chain/bsc-genesis-contract/commit/020c0459e37d1f9d635c1cff86dd1099ab1383fa", Code: pascal.RialtoTokenManagerContract, }, { ContractAddr: common.HexToAddress(CrossChainContract), - CommitUrl: "https://github.com/bnb-chain/bsc-genesis-contract/commit/d1564095cca3bfbd303a5e3de2ad90e719d12564", + CommitUrl: "https://github.com/bnb-chain/bsc-genesis-contract/commit/020c0459e37d1f9d635c1cff86dd1099ab1383fa", Code: pascal.RialtoCrossChainContract, }, { ContractAddr: common.HexToAddress(StakingContract), - CommitUrl: "https://github.com/bnb-chain/bsc-genesis-contract/commit/d1564095cca3bfbd303a5e3de2ad90e719d12564", + CommitUrl: "https://github.com/bnb-chain/bsc-genesis-contract/commit/020c0459e37d1f9d635c1cff86dd1099ab1383fa", Code: pascal.RialtoStakingContract, }, { ContractAddr: common.HexToAddress(StakeHubContract), - CommitUrl: "https://github.com/bnb-chain/bsc-genesis-contract/commit/d1564095cca3bfbd303a5e3de2ad90e719d12564", + CommitUrl: "https://github.com/bnb-chain/bsc-genesis-contract/commit/020c0459e37d1f9d635c1cff86dd1099ab1383fa", Code: pascal.RialtoStakeHubContract, }, { ContractAddr: common.HexToAddress(StakeCreditContract), - CommitUrl: "https://github.com/bnb-chain/bsc-genesis-contract/commit/d1564095cca3bfbd303a5e3de2ad90e719d12564", + CommitUrl: "https://github.com/bnb-chain/bsc-genesis-contract/commit/020c0459e37d1f9d635c1cff86dd1099ab1383fa", Code: pascal.RialtoStakeCreditContract, }, { ContractAddr: common.HexToAddress(GovernorContract), - CommitUrl: "https://github.com/bnb-chain/bsc-genesis-contract/commit/d1564095cca3bfbd303a5e3de2ad90e719d12564", + CommitUrl: "https://github.com/bnb-chain/bsc-genesis-contract/commit/020c0459e37d1f9d635c1cff86dd1099ab1383fa", Code: pascal.RialtoGovernorContract, }, { ContractAddr: common.HexToAddress(GovTokenContract), - CommitUrl: "https://github.com/bnb-chain/bsc-genesis-contract/commit/d1564095cca3bfbd303a5e3de2ad90e719d12564", + CommitUrl: "https://github.com/bnb-chain/bsc-genesis-contract/commit/020c0459e37d1f9d635c1cff86dd1099ab1383fa", Code: pascal.RialtoGovTokenContract, }, { ContractAddr: common.HexToAddress(TimelockContract), - CommitUrl: "https://github.com/bnb-chain/bsc-genesis-contract/commit/d1564095cca3bfbd303a5e3de2ad90e719d12564", + CommitUrl: "https://github.com/bnb-chain/bsc-genesis-contract/commit/020c0459e37d1f9d635c1cff86dd1099ab1383fa", Code: pascal.RialtoTimelockContract, }, { ContractAddr: common.HexToAddress(TokenRecoverPortalContract), - CommitUrl: "https://github.com/bnb-chain/bsc-genesis-contract/commit/d1564095cca3bfbd303a5e3de2ad90e719d12564", + CommitUrl: "https://github.com/bnb-chain/bsc-genesis-contract/commit/020c0459e37d1f9d635c1cff86dd1099ab1383fa", Code: pascal.RialtoTokenRecoverPortalContract, }, },