diff --git a/core/systemcontracts/upgrade.go b/core/systemcontracts/upgrade.go index e378987384..e19ec43236 100644 --- a/core/systemcontracts/upgrade.go +++ b/core/systemcontracts/upgrade.go @@ -49,6 +49,8 @@ var ( gibbsUpgrade = make(map[string]*Upgrade) moranUpgrade = make(map[string]*Upgrade) + + bohrUpgrade = make(map[string]*Upgrade) ) func init() { @@ -474,6 +476,54 @@ func init() { }, }, } + + bohrUpgrade[mainNet] = &Upgrade{ + UpgradeName: "bohr", + Configs: []*UpgradeConfig{ + { + ContractAddr: common.HexToAddress(TokenHubContract), + CommitUrl: "https://github.com/bnb-chain/bsc-genesis-contract/commit/6c5d91c7a089939e1b7234f79b631deb34fb34a8", + Code: "6080604052600436106103c75760003560e01c806396713da9116101f2578063c81b16621161010d578063f0148472116100a0578063fc1a598f1161006f578063fc1a598f14610f25578063fc3e590814610b85578063fd6a687914610f58578063ff9c0027146107fd5761040f565b8063f014847214610ed1578063f9a2bbc714610ee6578063fa9e915914610efb578063fb063e8f14610f105761040f565b8063dc927faf116100dc578063dc927faf14610e5f578063e1c7392a14610e74578063e8f35cea14610e89578063ebf71d5314610ebc5761040f565b8063c81b166214610d8a578063c8509d8114610d9f578063cf41984414610e24578063d9e6dae91461077f5761040f565b8063aa7415f511610185578063b9fd21e311610154578063b9fd21e314610cfa578063ba35ead614610d0f578063bbface1f14610d24578063bd46646114610d575761040f565b8063aa7415f514610b9a578063ab51bb9614610be1578063ac43175114610bf6578063b99328c514610cc15761040f565b8063a1a11bf5116101c1578063a1a11bf514610b46578063a496fba214610b5b578063a78abc1614610b70578063a7c9f02d14610b855761040f565b806396713da914610ace5780639a854bbd14610ae35780639a99b4f014610af85780639dc0926214610b315761040f565b806359b92789116102e257806371d3086311610275578063831d65d111610244578063831d65d1146109d15780638b87b21f146106d45780638eff336c14610a565780639509b98014610a955761040f565b806371d3086314610968578063727be1f81461097d57806375d47a0a146109a75780637942fd05146109bc5761040f565b80636e056520116102b15780636e056520146108125780636e47b4821461093e57806370fd5bad146107fd578063718a8aa8146109535761040f565b806359b92789146107be5780635d499b1b146107e8578063613684751461077f57806366dea52a146107fd5761040f565b80633fd8b02f1161035a5780634a3acdf4116103295780634a3acdf41461076a5780634bf6c8821461077f57806350432d321461079457806351e80672146107a95761040f565b80633fd8b02f146106ff57806343756e5c1461071457806343a368b914610729578063493279b11461073e5761040f565b8063149d14d911610396578063149d14d9146105a85780632ae45483146105cf5780633d713223146106235780633dffc387146106d45761040f565b80630bee7a67146104145780630e2374a5146104425780631182b87514610473578063122345821461056d5761040f565b3661040f57341561040d576040805133815234602082015281517f6c98249d85d88c3753a04a22230f595e4dc8d3dc86c34af35deeeedc861b89db929181900390910190a15b005b600080fd5b34801561042057600080fd5b50610429610f6d565b6040805163ffffffff9092168252519081900360200190f35b34801561044e57600080fd5b50610457610f72565b604080516001600160a01b039092168252519081900360200190f35b34801561047f57600080fd5b506104f86004803603604081101561049657600080fd5b60ff8235169190810190604081016020820135600160201b8111156104ba57600080fd5b8201836020820111156104cc57600080fd5b803590602001918460018302840111600160201b831117156104ed57600080fd5b509092509050610f78565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561053257818101518382015260200161051a565b50505050905090810190601f16801561055f5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561057957600080fd5b5061040d6004803603604081101561059057600080fd5b506001600160a01b03813581169160200135166110a6565b3480156105b457600080fd5b506105bd6111a0565b60408051918252519081900360200190f35b3480156105db57600080fd5b5061060a600480360360408110156105f257600080fd5b506001600160a01b03813581169160200135166111a6565b6040805192835260208301919091528051918290030190f35b34801561062f57600080fd5b506104576004803603602081101561064657600080fd5b810190602081018135600160201b81111561066057600080fd5b82018360208201111561067257600080fd5b803590602001918460018302840111600160201b8311171561069357600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295506111ca945050505050565b3480156106e057600080fd5b506106e96111ee565b6040805160ff9092168252519081900360200190f35b34801561070b57600080fd5b506105bd6111f3565b34801561072057600080fd5b506104576111f9565b34801561073557600080fd5b506105bd6111ff565b34801561074a57600080fd5b5061075361120b565b6040805161ffff9092168252519081900360200190f35b34801561077657600080fd5b506105bd611210565b34801561078b57600080fd5b506106e9611216565b3480156107a057600080fd5b506105bd61121b565b3480156107b557600080fd5b50610457611226565b3480156107ca57600080fd5b50610457600480360360208110156107e157600080fd5b503561122c565b3480156107f457600080fd5b506105bd611247565b34801561080957600080fd5b506106e9611250565b61092a6004803603608081101561082857600080fd5b810190602081018135600160201b81111561084257600080fd5b82018360208201111561085457600080fd5b803590602001918460208302840111600160201b8311171561087557600080fd5b919390929091602081019035600160201b81111561089257600080fd5b8201836020820111156108a457600080fd5b803590602001918460208302840111600160201b831117156108c557600080fd5b919390929091602081019035600160201b8111156108e257600080fd5b8201836020820111156108f457600080fd5b803590602001918460208302840111600160201b8311171561091557600080fd5b91935091503567ffffffffffffffff16611255565b604080519115158252519081900360200190f35b34801561094a57600080fd5b5061045761172a565b34801561095f57600080fd5b506106e9611730565b34801561097457600080fd5b506105bd611735565b34801561098957600080fd5b5061092a600480360360208110156109a057600080fd5b503561173b565b3480156109b357600080fd5b506104576117bc565b3480156109c857600080fd5b506106e96117c2565b3480156109dd57600080fd5b5061040d600480360360408110156109f457600080fd5b60ff8235169190810190604081016020820135600160201b811115610a1857600080fd5b820183602082011115610a2a57600080fd5b803590602001918460018302840111600160201b83111715610a4b57600080fd5b5090925090506117c7565b348015610a6257600080fd5b5061040d60048036036060811015610a7957600080fd5b508035906001600160a01b036020820135169060400135611910565b348015610aa157600080fd5b5061040d60048036036040811015610ab857600080fd5b506001600160a01b038135169060200135611996565b348015610ada57600080fd5b506106e9611b19565b348015610aef57600080fd5b506105bd611b1e565b348015610b0457600080fd5b506105bd60048036036040811015610b1b57600080fd5b506001600160a01b038135169060200135611b2a565b348015610b3d57600080fd5b50610457611c68565b348015610b5257600080fd5b50610457611c6e565b348015610b6757600080fd5b506106e9611c74565b348015610b7c57600080fd5b5061092a611c79565b348015610b9157600080fd5b506106e9611c82565b61092a60048036036080811015610bb057600080fd5b5080356001600160a01b03908116916020810135909116906040810135906060013567ffffffffffffffff16611c87565b348015610bed57600080fd5b50610429611c74565b348015610c0257600080fd5b5061040d60048036036040811015610c1957600080fd5b810190602081018135600160201b811115610c3357600080fd5b820183602082011115610c4557600080fd5b803590602001918460018302840111600160201b83111715610c6657600080fd5b919390929091602081019035600160201b811115610c8357600080fd5b820183602082011115610c9557600080fd5b803590602001918460018302840111600160201b83111715610cb657600080fd5b509092509050612348565b348015610ccd57600080fd5b5061040d60048036036040811015610ce457600080fd5b50803590602001356001600160a01b03166127f0565b348015610d0657600080fd5b506105bd612866565b348015610d1b57600080fd5b506105bd612870565b348015610d3057600080fd5b506105bd60048036036020811015610d4757600080fd5b50356001600160a01b0316612876565b348015610d6357600080fd5b506105bd60048036036020811015610d7a57600080fd5b50356001600160a01b0316612888565b348015610d9657600080fd5b506104576128a3565b348015610dab57600080fd5b5061040d60048036036040811015610dc257600080fd5b60ff8235169190810190604081016020820135600160201b811115610de657600080fd5b820183602082011115610df857600080fd5b803590602001918460018302840111600160201b83111715610e1957600080fd5b5090925090506128a9565b348015610e3057600080fd5b5061040d60048036036040811015610e4757600080fd5b506001600160a01b0381358116916020013516612979565b348015610e6b57600080fd5b50610457612c4d565b348015610e8057600080fd5b5061040d612c53565b348015610e9557600080fd5b506105bd60048036036020811015610eac57600080fd5b50356001600160a01b0316612cf3565b348015610ec857600080fd5b506106e9612d05565b348015610edd57600080fd5b506106e9612d0a565b348015610ef257600080fd5b50610457612d0f565b348015610f0757600080fd5b506105bd612d15565b348015610f1c57600080fd5b506105bd612d1b565b348015610f3157600080fd5b506104f860048036036020811015610f4857600080fd5b50356001600160a01b0316612d29565b348015610f6457600080fd5b50610457612e50565b606481565b61200181565b60005460609060ff16610fc0576040805162461bcd60e51b81526020600482015260196024820152600080516020615548833981519152604482015290519081900360640190fd5b33612000146110005760405162461bcd60e51b815260040180806020018281038252602f8152602001806154f6602f913960400191505060405180910390fd5b60ff8416600214156110525761104b83838080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250612e5692505050565b905061109f565b6040805162461bcd60e51b815260206004820152601860248201527f756e7265636f676e697a65642073796e207061636b6167650000000000000000604482015290519081900360640190fd5b9392505050565b33612000146110e65760405162461bcd60e51b815260040180806020018281038252602f8152602001806154f6602f913960400191505060405180910390fd5b6001600160a01b0380831660009081526007602090815260408083209385168352929052208054611151576040805162461bcd60e51b815260206004820152601060248201526f1b9bc81b1bd8dad95908185b5bdd5b9d60821b604482015290519081900360640190fd5b8054600082556040805182815290516001600160a01b0380861692908716917f152fb15aa5d80f843e1e4bd5f2fc9161714f169945024decec7e84fb910fdd519181900360200190a350505050565b60015490565b60076020908152600092835260408084209091529082529020805460019091015482565b6020818101516000908152600490915260409020546001600160a01b03165b919050565b600181565b60055481565b61100181565b670de0b6b3a764000081565b603881565b61546081565b600881565b66071afd498d000081565b61200081565b6000908152600460205260409020546001600160a01b031690565b6402540be40081565b600281565b6000805460ff1661129b576040805162461bcd60e51b81526020600482015260196024820152600080516020615548833981519152604482015290519081900360640190fd5b8685146112d95760405162461bcd60e51b815260040180806020018281038252603b8152602001806154bb603b913960400191505060405180910390fd5b8683146113175760405162461bcd60e51b815260040180806020018281038252603f81526020018061538e603f913960400191505060405180910390fd5b426078018267ffffffffffffffff1610156113635760405162461bcd60e51b815260040180806020018281038252602481526020018061527e6024913960400191505060405180910390fd5b6402540be4003406156113a75760405162461bcd60e51b81526004018080602001828103825260408152602001806155be6040913960400191505060405180910390fd5b604080518681526020808802820101909152859060009081906060908480156113da578160200160208202803683370190505b50905060005b848110156114b5576402540be4008b8b838181106113fa57fe5b905060200201358161140857fe5b06156114455760405162461bcd60e51b815260040180806020018281038252603c8152602001806153cd603c913960400191505060405180910390fd5b61146a8b8b8381811061145457fe5b9050602002013585612f7a90919063ffffffff16565b93506114966402540be4008c8c8481811061148157fe5b90506020020135612fd490919063ffffffff16565b8282815181106114a257fe5b60209081029190910101526001016113e0565b506001546114da906114cd908663ffffffff61301616565b849063ffffffff612f7a16565b3410156115185760405162461bcd60e51b81526004018080602001828103825260568152602001806155686056913960600191505060405180910390fd5b611528348463ffffffff61306f16565b9150611532615082565b6040518060c001604052806221272160e91b60001b815260200160006001600160a01b031681526020018381526020018e8e808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152505050908252506040805160208c810282810182019093528c82529283019290918d918d91829185019084908082843760009201919091525050509082525067ffffffffffffffff8916602090910152905061200063f7a251d760036115f6846130b1565b61160b876402540be40063ffffffff612fd416565b6040518463ffffffff1660e01b8152600401808460ff1660ff16815260200180602001838152602001828103825284818151815260200191508051906020019080838360005b83811015611669578181015183820152602001611651565b50505050905090810190601f1680156116965780820380516001836020036101000a031916815260200191505b50945050505050600060405180830381600087803b1580156116b757600080fd5b505af11580156116cb573d6000803e3d6000fd5b505060408051600081523360208201528082018890526060810187905290517f74eab09b0e53aefc23f2e1b16da593f95c2dd49c6f5a23720463d10d9c330b2a9350908190036080019150a15060019c9b505050505050505050505050565b61100581565b601081565b60015481565b6000336120011461177d5760405162461bcd60e51b815260040180806020018281038252603381526020018061519c6033913960400191505060405180910390fd5b81156117b4576040516120019083156108fc029084906000818181858888f193505050501580156117b2573d6000803e3d6000fd5b505b506001919050565b61100881565b600b81565b60005460ff1661180c576040805162461bcd60e51b81526020600482015260196024820152600080516020615548833981519152604482015290519081900360640190fd5b336120001461184c5760405162461bcd60e51b815260040180806020018281038252602f8152602001806154f6602f913960400191505060405180910390fd5b60ff83166003141561189c5761189782828080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061336c92505050565b61190b565b7f41ce201247b6ceb957dcdb217d0b8acb50b9ea0e12af9af4f5e7f38902101605838383604051808460ff1660ff168152602001806020018281038252848482818152602001925080828437600083820152604051601f909101601f1916909201829003965090945050505050a15b505050565b33611008146119505760405162461bcd60e51b81526004018080602001828103825260238152602001806155256023913960400191505060405180910390fd5b600083815260046020908152604080832080546001600160a01b039096166001600160a01b03199096168617905593825260038152838220949094556002909352912055565b81806001600160a01b031663893d20e86040518163ffffffff1660e01b815260040160206040518083038186803b1580156119d057600080fd5b505afa1580156119e4573d6000803e3d6000fd5b505050506040513d60208110156119fa57600080fd5b50516001600160a01b03163314611a58576040805162461bcd60e51b815260206004820152601860248201527f6e6f74206f776e6572206f6620424550323020746f6b656e0000000000000000604482015290519081900360640190fd5b60008211611aa6576040805162461bcd60e51b81526020600482015260166024820152751e995c9bc81b1a5b5a5d081b9bdd08185b1b1bddd95960521b604482015290519081900360640190fd5b6001600160a01b038316600090815260036020526040902054611afc576040805162461bcd60e51b81526020600482015260096024820152681b9bdd08189bdd5b9960ba1b604482015290519081900360640190fd5b506001600160a01b03909116600090815260066020526040902055565b600981565b677ce66c50e284000081565b6000805460ff16611b70576040805162461bcd60e51b81526020600482015260196024820152600080516020615548833981519152604482015290519081900360640190fd5b3361100514611bb05760405162461bcd60e51b815260040180806020018281038252602f8152602001806151cf602f913960400191505060405180910390fd5b6000478310611bbf5747611bc1565b825b9050670de0b6b3a7640000811115611bdd576000915050611c62565b8015611c5f576040516001600160a01b0385169082156108fc029083906000818181858888f19350505050158015611c19573d6000803e3d6000fd5b50604080516001600160a01b03861681526020810183905281517ff8b71c64315fc33b2ead2adfa487955065152a8ac33d9d5193aafd7f45dc15a0929181900390910190a15b90505b92915050565b61100781565b61100681565b600081565b60005460ff1681565b600381565b6000805460ff16611ccd576040805162461bcd60e51b81526020600482015260196024820152600080516020615548833981519152604482015290519081900360640190fd5b426078018267ffffffffffffffff161015611d195760405162461bcd60e51b815260040180806020018281038252602481526020018061527e6024913960400191505060405180910390fd5b6402540be400340615611d5d5760405162461bcd60e51b81526004018080602001828103825260408152602001806155be6040913960400191505060405180910390fd5b600080806001600160a01b038816611e3c57600154611d8390879063ffffffff612f7a16565b341015611dc15760405162461bcd60e51b81526004018080602001828103825260618152602001806153086061913960800191505060405180910390fd5b6402540be400860615611e055760405162461bcd60e51b815260040180806020018281038252603c8152602001806153cd603c913960400191505060405180910390fd5b611e15348763ffffffff61306f16565b9050611e2c866402540be40063ffffffff612fd416565b6221272160e91b935091506120df565b6001600160a01b038816600090815260036020526040902054925082611e935760405162461bcd60e51b81526004018080602001828103825260318152602001806152d76031913960400191505060405180910390fd5b600154341015611ed45760405162461bcd60e51b815260040180806020018281038252603f81526020018061542a603f913960400191505060405180910390fd5b506001600160a01b0387166000908152600260205260409020543490600881111580611f1f5750600881118015611f1f5750611f1d876007198301600a0a63ffffffff6133c816565b155b611f5a5760405162461bcd60e51b815260040180806020018281038252603c8152602001806153cd603c913960400191505060405180910390fd5b611f64878261340a565b9250611f6f8461344a565b15611fb7576305f5e100831015611fb75760405162461bcd60e51b815260040180806020018281038252603a815260200180615220603a913960400191505060405180910390fd5b600881101580611fd15750600881108015611fd157508683115b61200c5760405162461bcd60e51b81526004018080602001828103825260258152602001806153696025913960400191505060405180910390fd5b677ce66c50e28400008311156120535760405162461bcd60e51b81526004018080602001828103825260358152602001806152a26035913960400191505060405180910390fd5b604080516323b872dd60e01b81523360048201523060248201526044810189905290516001600160a01b038b16916323b872dd9160648083019260209291908290030181600087803b1580156120a857600080fd5b505af11580156120bc573d6000803e3d6000fd5b505050506040513d60208110156120d257600080fd5b50516120dd57600080fd5b505b6120e7615082565b6040805160c0810182528581526001600160a01b038b166020820152815160018082528184018452919283019181602001602082028036833750505081526040805160018082528183019092526020928301929091908083019080368337505050815260408051600180825281830190925260209283019290919080830190803683370190505081526020018767ffffffffffffffff16815250905082816040015160008151811061219557fe5b6020026020010181815250508781606001516000815181106121b357fe5b60200260200101906001600160a01b031690816001600160a01b0316815250503381608001516000815181106121e557fe5b6001600160a01b039092166020928302919091019091015261200063f7a251d76003612210846130b1565b612225866402540be40063ffffffff612fd416565b6040518463ffffffff1660e01b8152600401808460ff1660ff16815260200180602001838152602001828103825284818151815260200191508051906020019080838360005b8381101561228357818101518382015260200161226b565b50505050905090810190601f1680156122b05780820380516001836020036101000a031916815260200191505b50945050505050600060405180830381600087803b1580156122d157600080fd5b505af11580156122e5573d6000803e3d6000fd5b5050604080516001600160a01b038d1681523360208201528082018b90526060810186905290517f74eab09b0e53aefc23f2e1b16da593f95c2dd49c6f5a23720463d10d9c330b2a9350908190036080019150a150600198975050505050505050565b33611007146123885760405162461bcd60e51b815260040180806020018281038252602e815260200180615469602e913960400191505060405180910390fd5b602081146123dd576040805162461bcd60e51b815260206004820152601b60248201527f65787065637465642076616c7565206c656e6774682069732033320000000000604482015290519081900360640190fd5b606084848080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050604080516020601f8801819004810282018101909252868152939450606093925086915085908190840183828082843760009201919091525050505060208301519091506772656c617946656560c01b8114156124e5576020820151670de0b6b3a7640000811180159061248c57506402540be4008106155b6124dd576040805162461bcd60e51b815260206004820152601960248201527f7468652072656c6179466565206f7574206f662072616e676500000000000000604482015290519081900360640190fd5b60015561275b565b61255987878080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505060408051808201909152601781527f6c617267655472616e736665724c6f636b506572696f64000000000000000000602082015291506135509050565b156125f557604080516020601f870181900481028201810190925285815260009161259c9188888083850183828082843760009201919091525061363792505050565b905062093a808111156125ed576040805162461bcd60e51b81526020600482015260146024820152736c6f636b20706572696f6420746f6f206c6f6e6760601b604482015290519081900360640190fd5b60055561275b565b61266187878080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050604080518082019091526015815274189b9893185c99d9551c985b9cd9995c931a5b5a5d605a1b602082015291506135509050565b1561271e57604080516020601f87018190048102820181019092528581526000916126a49188888083850183828082843760009201919091525061363792505050565b905068056bc75e2d631000008110156126ee5760405162461bcd60e51b81526004018080602001828103825260228152602001806151fe6022913960400191505060405180910390fd5b6000805260066020527f54cdd369e4e8a8515e52ca72ec816c2101831ad1f18bf44102ed171459c9b4f85561275b565b6040805162461bcd60e51b815260206004820152600d60248201526c756e6b6e6f776e20706172616d60981b604482015290519081900360640190fd5b7f6cdb0ac70ab7f2e2d035cca5be60d89906f2dede7648ddbd7402189c1eeed17a878787876040518080602001806020018381038352878782818152602001925080828437600083820152601f01601f191690910184810383528581526020019050858580828437600083820152604051601f909101601f19169092018290039850909650505050505050a150505050505050565b33611008146128305760405162461bcd60e51b81526004018080602001828103825260238152602001806155256023913960400191505060405180910390fd5b600091825260046020908152604080842080546001600160a01b03191690556001600160a01b0392909216835260039052812055565b6221272160e91b81565b61c35081565b60026020526000908152604090205481565b6001600160a01b031660009081526003602052604090205490565b61100281565b60005460ff166128ee576040805162461bcd60e51b81526020600482015260196024820152600080516020615548833981519152604482015290519081900360640190fd5b336120001461292e5760405162461bcd60e51b815260040180806020018281038252602f8152602001806154f6602f913960400191505060405180910390fd5b60ff83166003141561189c5761189782828080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061363c92505050565b60085460ff16600214156129c5576040805162461bcd60e51b815260206004820152600e60248201526d4e6f2072652d656e7472616e637960901b604482015290519081900360640190fd5b6008805460ff191660021790556001600160a01b0380831660009081526007602090815260408083209385168352929052208054612a3d576040805162461bcd60e51b815260206004820152601060248201526f1b9bc81b1bd8dad95908185b5bdd5b9d60821b604482015290519081900360640190fd5b8060010154421015612a96576040805162461bcd60e51b815260206004820152601760248201527f7374696c6c206f6e206c6f636b696e6720706572696f64000000000000000000604482015290519081900360640190fd5b805460008083556001600160a01b038516612b09576040516001600160a01b038516906127109084906000818181858888f193505050503d8060008114612af9576040519150601f19603f3d011682016040523d82523d6000602084013e612afe565b606091505b505080915050612b9c565b846001600160a01b031663a9059cbb61c35086856040518463ffffffff1660e01b815260040180836001600160a01b03166001600160a01b0316815260200182815260200192505050602060405180830381600088803b158015612b6c57600080fd5b5087f1158015612b80573d6000803e3d6000fd5b50505050506040513d6020811015612b9757600080fd5b505190505b80612bee576040805162461bcd60e51b815260206004820152601e60248201527f776974686472617720756e6c6f636b656420746f6b656e206661696c65640000604482015290519081900360640190fd5b836001600160a01b0316856001600160a01b03167f832fc3e25f2b3e6fb0eb59419a73cba405f2a249fce75f7e31ea5a457a0323f1846040518082815260200191505060405180910390a350506008805460ff19166001179055505050565b61100381565b60005460ff1615612cab576040805162461bcd60e51b815260206004820152601960248201527f74686520636f6e747261637420616c726561647920696e697400000000000000604482015290519081900360640190fd5b66071afd498d000060019081556000808052600260205260127fac33ff75c19e70fe83507db0d683fd3465c996598dc972688b7ace676c89077b55805460ff19169091179055565b60066020526000908152604090205481565b600481565b600581565b61100081565b61271081565b69021e19e0c9bab240000081565b6001600160a01b03811660009081526003602090815260409182902054825182815280840190935260609290918391906020820181803683375050506020810183905290506000805b60208160ff161015612db957828160ff1681518110612d8d57fe5b01602001516001600160f81b03191615612dac57600190910190612db1565b612db9565b600101612d72565b5060608160ff166040519080825280601f01601f191660200182016040528015612dea576020820181803683370190505b50905060005b8260ff168160ff161015612e4657838160ff1681518110612e0d57fe5b602001015160f81c60f81b828260ff1681518110612e2757fe5b60200101906001600160f81b031916908160001a905350600101612df0565b5095945050505050565b61100481565b6060612e606150ce565b6000612e6b8461373a565b9150915080612ec1576040805162461bcd60e51b815260206004820152601f60248201527f756e7265636f676e697a6564207472616e73666572496e207061636b61676500604482015290519081900360640190fd5b6000612ecc83613879565b905063ffffffff811615612f60576040808401516020808601516001600160a01b03166000908152600290915291822054612f07919061340a565b9050612f11615103565b60405180608001604052808660000151815260200183815260200186608001516001600160a01b031681526020018463ffffffff168152509050612f5481613bdf565b955050505050506111e9565b505060408051600081526020810190915291506111e99050565b600082820183811015611c5f576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b6000611c5f83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250613cbb565b60008261302557506000611c62565b8282028284828161303257fe5b0414611c5f5760405162461bcd60e51b81526004018080602001828103825260218152602001806154096021913960400191505060405180910390fd5b6000611c5f83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250613d5d565b60408051600680825260e08201909252606091829190816020015b60608152602001906001900390816130cc57505083519091506130ee90613db7565b816000815181106130fb57fe5b602002602001018190525061311c83602001516001600160a01b0316613dca565b8160018151811061312957fe5b60200260200101819052506000836040015151905060608160405190808252806020026020018201604052801561317457816020015b606081526020019060019003908161315f5790505b50905060005b828110156131c1576131a28660400151828151811061319557fe5b6020026020010151613db7565b8282815181106131ae57fe5b602090810291909101015260010161317a565b506131cb81613ded565b836002815181106131d857fe5b602002602001018190525060608260405190808252806020026020018201604052801561321957816020015b60608152602001906001900390816132045790505b50905060005b8381101561326f576132508760600151828151811061323a57fe5b60200260200101516001600160a01b0316613dca565b82828151811061325c57fe5b602090810291909101015260010161321f565b5061327981613ded565b8460038151811061328657fe5b60200260200101819052506060836040519080825280602002602001820160405280156132c757816020015b60608152602001906001900390816132b25790505b50905060005b84811015613307576132e88860800151828151811061323a57fe5b8282815181106132f457fe5b60209081029190910101526001016132cd565b5061331181613ded565b8560048151811061331e57fe5b60200260200101819052506133408760a0015167ffffffffffffffff16613db7565b8560058151811061334d57fe5b602002602001018190525061336185613ded565b979650505050505050565b61337461512a565b600061337f83613e77565b91509150806133bf5760405162461bcd60e51b81526004018080602001828103825260248152602001806154976024913960400191505060405180910390fd5b61190b82614042565b6000611c5f83836040518060400160405280601881526020017f536166654d6174683a206d6f64756c6f206279207a65726f00000000000000008152506144c6565b600060088211156134335761342c836007198401600a0a63ffffffff612fd416565b9050611c62565b611c5f836008849003600a0a63ffffffff61301616565b604080516020808252818301909252600091606091906020820181803683375050506020810184905290506000805b60208160ff1610156134c057828160ff168151811061349457fe5b01602001516001600160f81b031916156134b3576001909101906134b8565b6134c0565b600101613479565b50600760ff821610156134d8576000925050506111e9565b816005820360ff16815181106134ea57fe5b6020910101516001600160f81b031916602d60f81b1461350f576000925050506111e9565b816001820360ff168151811061352157fe5b6020910101516001600160f81b031916604d60f81b14613546576000925050506111e9565b5060019392505050565b6000816040516020018082805190602001908083835b602083106135855780518252601f199092019160209182019101613566565b6001836020036101000a03801982511681845116808217855250505050505090500191505060405160208183030381529060405280519060200120836040516020018082805190602001908083835b602083106135f35780518252601f1990920191602091820191016135d4565b6001836020036101000a0380198251168184511680821785525050505050509050019150506040516020818303038152906040528051906020012014905092915050565b015190565b613644615082565b600061364f83614528565b915091508061368f5760405162461bcd60e51b815260040180806020018281038252602481526020018061525a6024913960400191505060405180910390fd5b61369761512a565b602080840180516001600160a01b0390811684526040808701518585015291511660009081526002909252812054905b846040015151811015613718576136f5856040015182815181106136e757fe5b60200260200101518361478c565b8560400151828151811061370557fe5b60209081029190910101526001016136c7565b50608084015160408301526005606083015261373382614042565b5050505050565b6137426150ce565b600061374c6150ce565b613754615161565b613765613760866147c5565b6147ea565b90506000805b61377483614834565b1561386c57806137965761378f61378a84614855565b6148a3565b8452613864565b80600114156137c3576137b06137ab84614855565b61495a565b6001600160a01b03166020850152613864565b80600214156137e2576137d861378a84614855565b6040850152613864565b806003141561380a576137f76137ab84614855565b6001600160a01b03166060850152613864565b80600414156138325761381f6137ab84614855565b6001600160a01b03166080850152613864565b806005141561385f5761384761378a84614855565b67ffffffffffffffff1660a085015260019150613864565b61386c565b60010161376b565b5091935090915050915091565b60208101516000906001600160a01b03166139bd578160a0015167ffffffffffffffff164211156138ac575060016111e9565b81604001514710156138c0575060036111e9565b6138c982614974565b61393e57606082015160408084015190516000926001600160a01b0316916127109184818181858888f193505050503d8060008114613924576040519150601f19603f3d011682016040523d82523d6000602084013e613929565b606091505b505090508061393c5750600490506111e9565b505b7f471eb9cc1ffe55ffadf15b32595415eb9d80f22e761d24bd6dffc607e1284d5982602001518360600151846040015160405180846001600160a01b03166001600160a01b03168152602001836001600160a01b03166001600160a01b03168152602001828152602001935050505060405180910390a15060006111e9565b8160a0015167ffffffffffffffff164211156139db575060016111e9565b81516020808401516001600160a01b031660009081526003909152604090205414613a08575060026111e9565b602080830151604080516370a0823160e01b815230600482015290516000936001600160a01b03909316926370a082319261c3509260248083019392829003018187803b158015613a5857600080fd5b5086fa158015613a6c573d6000803e3d6000fd5b50505050506040513d6020811015613a8357600080fd5b50516040840151909150811015613a9e5750600390506111e9565b613aa783614974565b613b5e57600083602001516001600160a01b031663a9059cbb61c350866060015187604001516040518463ffffffff1660e01b815260040180836001600160a01b03166001600160a01b0316815260200182815260200192505050602060405180830381600088803b158015613b1c57600080fd5b5087f1158015613b30573d6000803e3d6000fd5b50505050506040513d6020811015613b4757600080fd5b5051905080613b5c5750600591506111e99050565b505b7f471eb9cc1ffe55ffadf15b32595415eb9d80f22e761d24bd6dffc607e1284d5983602001518460600151856040015160405180846001600160a01b03166001600160a01b03168152602001836001600160a01b03166001600160a01b03168152602001828152602001935050505060405180910390a150600090506111e9565b60408051600480825260a08201909252606091829190816020015b6060815260200190600190039081613bfa5750508351909150613c1c90613db7565b81600081518110613c2957fe5b6020026020010181905250613c418360200151613db7565b81600181518110613c4e57fe5b6020026020010181905250613c6f83604001516001600160a01b0316613dca565b81600281518110613c7c57fe5b6020026020010181905250613c9a836060015163ffffffff16613db7565b81600381518110613ca757fe5b602002602001018190525061109f81613ded565b60008183613d475760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b83811015613d0c578181015183820152602001613cf4565b50505050905090810190601f168015613d395780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b506000838581613d5357fe5b0495945050505050565b60008184841115613daf5760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315613d0c578181015183820152602001613cf4565b505050900390565b6060611c62613dc583614ae2565b614bc8565b60408051600560a21b831860148201526034810190915260609061109f81614bc8565b6060815160001415613e0e57506040805160008152602081019091526111e9565b606082600081518110613e1d57fe5b602002602001015190506000600190505b8351811015613e5e57613e5482858381518110613e4757fe5b6020026020010151614c1a565b9150600101613e2e565b5061109f613e71825160c060ff16614c97565b82614c1a565b613e7f61512a565b6000613e8961512a565b613e91615161565b613e9d613760866147c5565b90506000805b613eac83614834565b1561386c5780613ed257613ec26137ab84614855565b6001600160a01b0316845261403a565b8060011415613f73576060613eee613ee985614855565b614d8f565b90508051604051908082528060200260200182016040528015613f1b578160200160208202803683370190505b50602086015260005b8151811015613f6c57613f49828281518110613f3c57fe5b60200260200101516148a3565b86602001518281518110613f5957fe5b6020908102919091010152600101613f24565b505061403a565b8060021415614015576060613f8a613ee985614855565b90508051604051908082528060200260200182016040528015613fb7578160200160208202803683370190505b50604086015260005b8151811015613f6c57613fe5828281518110613fd857fe5b602002602001015161495a565b86604001518281518110613ff557fe5b6001600160a01b0390921660209283029190910190910152600101613fc0565b806003141561385f5761402a61378a84614855565b63ffffffff166060850152600191505b600101613ea3565b80516001600160a01b031661426c5760005b8160200151518110156142665760008260400151828151811061407357fe5b60200260200101516001600160a01b03166127108460200151848151811061409757fe5b60209081029190910101516040516000818181858888f193505050503d80600081146140df576040519150601f19603f3d011682016040523d82523d6000602084013e6140e4565b606091505b50509050806141a7577f203f9f67a785f4f81be4d48b109aa0c498d1bc8097ecc2627063f480cc5fe73e83600001518460400151848151811061412357fe5b60200260200101518560200151858151811061413b57fe5b6020026020010151866060015160405180856001600160a01b03166001600160a01b03168152602001846001600160a01b03166001600160a01b031681526020018381526020018263ffffffff1663ffffffff16815260200194505050505060405180910390a161425d565b7fd468d4fa5e8fb4adc119b29a983fd0785e04af5cb8b7a3a69a47270c54b6901a8360000151846040015184815181106141dd57fe5b6020026020010151856020015185815181106141f557fe5b6020026020010151866060015160405180856001600160a01b03166001600160a01b03168152602001846001600160a01b03166001600160a01b031681526020018381526020018263ffffffff1663ffffffff16815260200194505050505060405180910390a15b50600101614054565b506144c3565b60005b8160200151518110156144c157600082600001516001600160a01b031663a9059cbb61c350856040015185815181106142a457fe5b6020026020010151866020015186815181106142bc57fe5b60200260200101516040518463ffffffff1660e01b815260040180836001600160a01b03166001600160a01b0316815260200182815260200192505050602060405180830381600088803b15801561431357600080fd5b5087f1158015614327573d6000803e3d6000fd5b50505050506040513d602081101561433e57600080fd5b505190508015614402577fd468d4fa5e8fb4adc119b29a983fd0785e04af5cb8b7a3a69a47270c54b6901a83600001518460400151848151811061437e57fe5b60200260200101518560200151858151811061439657fe5b6020026020010151866060015160405180856001600160a01b03166001600160a01b03168152602001846001600160a01b03166001600160a01b031681526020018381526020018263ffffffff1663ffffffff16815260200194505050505060405180910390a16144b8565b7f203f9f67a785f4f81be4d48b109aa0c498d1bc8097ecc2627063f480cc5fe73e83600001518460400151848151811061443857fe5b60200260200101518560200151858151811061445057fe5b6020026020010151866060015160405180856001600160a01b03166001600160a01b03168152602001846001600160a01b03166001600160a01b031681526020018381526020018263ffffffff1663ffffffff16815260200194505050505060405180910390a15b5060010161426f565b505b50565b600081836145155760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315613d0c578181015183820152602001613cf4565b5082848161451f57fe5b06949350505050565b614530615082565b600061453a615082565b614542615161565b61454e613760866147c5565b90506000805b61455d83614834565b1561386c578061457a5761457361378a84614855565b8452614784565b80600114156145a25761458f6137ab84614855565b6001600160a01b03166020850152614784565b80600214156146315760606145b9613ee985614855565b905080516040519080825280602002602001820160405280156145e6578160200160208202803683370190505b50604086015260005b815181101561462a57614607828281518110613f3c57fe5b8660400151828151811061461757fe5b60209081029190910101526001016145ef565b5050614784565b80600314156146c6576060614648613ee985614855565b90508051604051908082528060200260200182016040528015614675578160200160208202803683370190505b50606086015260005b815181101561462a57614696828281518110613fd857fe5b866060015182815181106146a657fe5b6001600160a01b039092166020928302919091019091015260010161467e565b806004141561475b5760606146dd613ee985614855565b9050805160405190808252806020026020018201604052801561470a578160200160208202803683370190505b50608086015260005b815181101561462a5761472b828281518110613fd857fe5b8660800151828151811061473b57fe5b6001600160a01b0390921660209283029190910190910152600101614713565b806005141561385f5761477061378a84614855565b67ffffffffffffffff1660a0850152600191505b600101614554565b600060088211156147ae5761342c836007198401600a0a63ffffffff61301616565b611c5f836008849003600a0a63ffffffff612fd416565b6147cd615181565b506040805180820190915281518152602082810190820152919050565b6147f2615161565b6147fb82614e60565b61480457600080fd5b60006148138360200151614e90565b60208085015160408051808201909152868152920190820152915050919050565b600061483e615181565b505080518051602091820151919092015191011190565b61485d615181565b61486682614834565b61486f57600080fd5b6020820151600061487f82614ef3565b80830160209586015260408051808201909152908152938401919091525090919050565b8051600090158015906148b857508151602110155b6148c157600080fd5b60006148d08360200151614e90565b9050808360000151101561492b576040805162461bcd60e51b815260206004820152601a60248201527f6c656e677468206973206c657373207468616e206f6666736574000000000000604482015290519081900360640190fd5b82516020808501518301805192849003929183101561495157826020036101000a820491505b50949350505050565b805160009060151461496b57600080fd5b611c62826148a3565b600080805260066020527f54cdd369e4e8a8515e52ca72ec816c2101831ad1f18bf44102ed171459c9b4f8541580156149ad5750600554155b156149ef5760008052600660205269021e19e0c9bab24000007f54cdd369e4e8a8515e52ca72ec816c2101831ad1f18bf44102ed171459c9b4f8556154606005555b6020808301516001600160a01b0316600090815260069091526040902054801580614a1d5750808360400151105b15614a2c5760009150506111e9565b6020808401516001600160a01b039081166000908152600783526040808220606088015190931682529190925290819020908401518154614a729163ffffffff612f7a16565b8155600554420160018201819055606085015160208087015160408089015181519081529283019490945283516001600160a01b039384169493909116927f3fb83143cd331170da18fb1e8564d97e8ec39264b6ecb1ba248ea7596ab07258928290030190a35060019392505050565b604080516020808252818301909252606091829190602082018180368337505050602081018490529050600067ffffffffffffffff198416614b2657506018614b4a565b6fffffffffffffffffffffffffffffffff198416614b4657506010614b4a565b5060005b6020811015614b8057818181518110614b5f57fe5b01602001516001600160f81b03191615614b7857614b80565b600101614b4a565b60008160200390506060816040519080825280601f01601f191660200182016040528015614bb5576020820181803683370190505b5080830196909652508452509192915050565b606081516001148015614bfa5750607f60f81b82600081518110614be857fe5b01602001516001600160f81b03191611155b15614c065750806111e9565b611c62614c188351608060ff16614c97565b835b6060806040519050835180825260208201818101602087015b81831015614c4b578051835260209283019201614c33565b50855184518101855292509050808201602086015b81831015614c78578051835260209283019201614c60565b508651929092011591909101601f01601f191660405250905092915050565b6060680100000000000000008310614ce7576040805162461bcd60e51b815260206004820152600e60248201526d696e70757420746f6f206c6f6e6760901b604482015290519081900360640190fd5b60408051600180825281830190925260609160208201818036833701905050905060378411614d415782840160f81b81600081518110614d2357fe5b60200101906001600160f81b031916908160001a9053509050611c62565b6060614d4c85614ae2565b90508381510160370160f81b82600081518110614d6557fe5b60200101906001600160f81b031916908160001a905350614d868282614c1a565b95945050505050565b6060614d9a82614e60565b614da357600080fd5b6000614dae83615026565b9050606081604051908082528060200260200182016040528015614dec57816020015b614dd9615181565b815260200190600190039081614dd15790505b5090506000614dfe8560200151614e90565b60208601510190506000805b84811015614e5557614e1b83614ef3565b9150604051806040016040528083815260200184815250848281518110614e3e57fe5b602090810291909101015291810191600101614e0a565b509195945050505050565b8051600090614e71575060006111e9565b6020820151805160001a9060c0821015613546576000925050506111e9565b8051600090811a6080811015614eaa5760009150506111e9565b60b8811080614ec5575060c08110801590614ec5575060f881105b15614ed45760019150506111e9565b60c0811015614ee85760b5190190506111e9565b60f5190190506111e9565b80516000908190811a6080811015614f0e576001915061501f565b60b8811015614f2357607e198101915061501f565b60c0811015614f9d57600060b78203600186019550806020036101000a865104915060018101820193505080831015614f97576040805162461bcd60e51b81526020600482015260116024820152706164646974696f6e206f766572666c6f7760781b604482015290519081900360640190fd5b5061501f565b60f8811015614fb25760be198101915061501f565b600060f78203600186019550806020036101000a86510491506001810182019350508083101561501d576040805162461bcd60e51b81526020600482015260116024820152706164646974696f6e206f766572666c6f7760781b604482015290519081900360640190fd5b505b5092915050565b8051600090615037575060006111e9565b6000809050600061504b8460200151614e90565b602085015185519181019250015b808210156150795761506a82614ef3565b60019093019290910190615059565b50909392505050565b6040518060c001604052806000801916815260200160006001600160a01b03168152602001606081526020016060815260200160608152602001600067ffffffffffffffff1681525090565b6040805160c081018252600080825260208201819052918101829052606081018290526080810182905260a081019190915290565b60408051608081018252600080825260208201819052918101829052606081019190915290565b604051806080016040528060006001600160a01b031681526020016060815260200160608152602001600063ffffffff1681525090565b6040518060400160405280615174615181565b8152602001600081525090565b60405180604001604052806000815260200160008152509056fe6f6e6c79207374616b696e672073797374656d20636f6e74726163742063616e2063616c6c20746869732066756e6374696f6e746865206d6573736167652073656e646572206d75737420626520696e63656e746976697a6520636f6e7472616374626e62206c61726765207472616e73666572206c696d697420746f6f20736d616c6c466f72206d696e69546f6b656e2c20746865207472616e7366657220616d6f756e74206d757374206e6f74206265206c657373207468616e2031756e7265636f676e697a6564207472616e736665724f75742073796e207061636b61676565787069726554696d65206d7573742062652074776f206d696e75746573206c61746572616d6f756e7420697320746f6f206c617267652c20657863656564206d6178696d756d206265703220746f6b656e20616d6f756e7474686520636f6e747261637420686173206e6f74206265656e20626f756e6420746f20616e79206265703220746f6b656e726563656976656420424e4220616d6f756e742073686f756c64206265206e6f206c657373207468616e207468652073756d206f66207472616e736665724f757420424e4220616d6f756e7420616e64206d696e696d756d2072656c6179466565616d6f756e7420697320746f6f206c617267652c2075696e74323536206f766572666c6f774c656e677468206f6620726563697069656e74416464727320646f65736e277420657175616c20746f206c656e677468206f6620726566756e644164647273696e76616c6964207472616e7366657220616d6f756e743a20707265636973696f6e206c6f737320696e20616d6f756e7420636f6e76657273696f6e536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f77726563656976656420424e4220616d6f756e742073686f756c64206265206e6f206c657373207468616e20746865206d696e696d756d2072656c6179466565746865206d6573736167652073656e646572206d75737420626520676f7665726e616e636520636f6e7472616374756e7265636f676e697a6564207472616e736665724f75742061636b207061636b6167654c656e677468206f6620726563697069656e74416464727320646f65736e277420657175616c20746f206c656e677468206f6620616d6f756e7473746865206d6573736167652073656e646572206d7573742062652063726f737320636861696e20636f6e7472616374746865206d73672073656e646572206d75737420626520746f6b656e4d616e6167657274686520636f6e7472616374206e6f7420696e69742079657400000000000000726563656976656420424e4220616d6f756e742073686f756c64206265206e6f206c657373207468616e207468652073756d206f66207472616e7366657220424e4220616d6f756e7420616e642072656c6179466565696e76616c696420726563656976656420424e4220616d6f756e743a20707265636973696f6e206c6f737320696e20616d6f756e7420636f6e76657273696f6ea2646970667358221220f2c834bf4f436b962ce35ecc6f1c65e720577875f6b35bc3bd6bf4fb9795764564736f6c63430006040033", + }, + { + ContractAddr: common.HexToAddress(CrossChainContract), + CommitUrl: "https://github.com/bnb-chain/bsc-genesis-contract/commit/6c5d91c7a089939e1b7234f79b631deb34fb34a8", + Code: "608060405234801561001057600080fd5b50600436106103995760003560e01c8063718a8aa8116101e9578063c27cdcfb1161010f578063dc927faf116100ad578063f7a251d71161007c578063f7a251d714610b2f578063f9a2bbc714610ba7578063fc3e590814610baf578063fd6a687914610bb757610399565b8063dc927faf14610af7578063e1c7392a14610aff578063e3b0480514610b07578063e6400bbe14610b2757610399565b8063ccc108d7116100e9578063ccc108d714610ab0578063d31f968d14610ab8578063d76a867514610ae7578063dc40433114610aef57610399565b8063c27cdcfb14610a80578063c780e9de14610aa0578063c81b166214610aa857610399565b80638cc8f56111610187578063a78abc1611610156578063a78abc16146109b2578063ab51bb96146109ba578063ac431751146109c2578063b0355f5b1461078157610399565b80638cc8f5611461088757806396713da91461099a5780639dc09262146109a2578063a1a11bf5146109aa57610399565b806375d47a0a116101c357806375d47a0a146108a75780637942fd05146108af57806384013b6a146108b7578063863fe4ab1461099257610399565b8063718a8aa81461088f578063719482d51461089757806374f079b81461089f57610399565b8063422f9050116102ce57806363e1394e1161026c5780636de380bd1161023b5780636de380bd146108575780636e47a51a1461085f5780636e47b4821461087f57806370fd5bad1461088757610399565b806363e1394e146107ff5780636a3cb34d146108075780636bacff2c1461080f5780636c46aa681461080757610399565b80634bf6c882116102a85780634bf6c882146107b957806351e80672146107c15780635692ddd3146107c95780635f832177146107d157610399565b8063422f90501461078957806343756e5c146107a9578063493279b1146107b157610399565b8063299b533d1161033b578063308325f411610315578063308325f4146106155780633a648b151461061d5780633bdc47a6146106595780633dffc3871461078157610399565b8063299b533d146105a35780632af6f399146105d75780632ff32aea146105f457610399565b806314b3023b1161037757806314b3023b146104015780631d1309351461041b5780631e275ae11461043757806322556cdc1461059b57610399565b806305e682581461039e5780630bee7a67146103bc5780630e2374a5146103dd575b600080fd5b6103a6610bbf565b6040805160ff9092168252519081900360200190f35b6103c4610bc4565b6040805163ffffffff9092168252519081900360200190f35b6103e5610bc9565b604080516001600160a01b039092168252519081900360200190f35b610409610bcf565b60408051918252519081900360200190f35b610423610bd5565b604080519115158252519081900360200190f35b610599600480360361010081101561044e57600080fd5b81018160a081016080820135600160201b81111561046b57600080fd5b82018360208201111561047d57600080fd5b803590602001918460018302840111600160201b8311171561049e57600080fd5b919390929091602081019035600160201b8111156104bb57600080fd5b8201836020820111156104cd57600080fd5b803590602001918460018302840111600160201b831117156104ee57600080fd5b919390929091602081019035600160201b81111561050b57600080fd5b82018360208201111561051d57600080fd5b803590602001918460018302840111600160201b8311171561053e57600080fd5b919390929091602081019035600160201b81111561055b57600080fd5b82018360208201111561056d57600080fd5b803590602001918460018302840111600160201b8311171561058e57600080fd5b509092509050610bde565b005b6104096112d0565b6105c0600480360360208110156105b957600080fd5b50356112d5565b6040805161ffff9092168252519081900360200190f35b610423600480360360208110156105ed57600080fd5b50356112eb565b6105fc611300565b60408051600792830b90920b8252519081900360200190f35b610409611309565b61063d6004803603602081101561063357600080fd5b503560ff1661130f565b604080516001600160401b039092168252519081900360200190f35b61070c6004803603606081101561066f57600080fd5b60ff82351691602081013591810190606081016040820135600160201b81111561069857600080fd5b8201836020820111156106aa57600080fd5b803590602001918460018302840111600160201b831117156106cb57600080fd5b91908080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092955061132a945050505050565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561074657818101518382015260200161072e565b50505050905090810190601f1680156107735780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6103a66113a0565b6104236004803603602081101561079f57600080fd5b503560ff166113a5565b6103e56113ba565b6105c06113c0565b6103a66113c5565b6103e56113ca565b6104096113d0565b610599600480360360408110156107e757600080fd5b506001600160a01b0381358116916020013516611400565b61040961161b565b6105c0611643565b61082c6004803603602081101561082557600080fd5b5035611648565b6040805161ffff90941684526001600160801b03909216602084015282820152519081900360600190f35b610409611677565b6103e56004803603602081101561087557600080fd5b503560ff1661169e565b6103e56116b9565b6103a6611643565b6103a66116bf565b6105c06113a0565b6104096116c4565b6103e56116ca565b6103a66116d0565b610599600480360360a08110156108cd57600080fd5b810190602081018135600160201b8111156108e757600080fd5b8201836020820111156108f957600080fd5b803590602001918460018302840111600160201b8311171561091a57600080fd5b919390929091602081019035600160201b81111561093757600080fd5b82018360208201111561094957600080fd5b803590602001918460018302840111600160201b8311171561096a57600080fd5b919350915080356001600160401b03908116916020810135909116906040013560ff166116d5565b610409612a0d565b6103a6612a15565b6103e5612a1a565b6103e5612a20565b610423612a26565b6103c4610bbf565b610599600480360360408110156109d857600080fd5b810190602081018135600160201b8111156109f257600080fd5b820183602082011115610a0457600080fd5b803590602001918460018302840111600160201b83111715610a2557600080fd5b919390929091602081019035600160201b811115610a4257600080fd5b820183602082011115610a5457600080fd5b803590602001918460018302840111600160201b83111715610a7557600080fd5b509092509050612a2f565b61063d60048036036020811015610a9657600080fd5b503560ff166134e4565b6104096134ff565b6103e5613523565b610599613529565b61042360048036036040811015610ace57600080fd5b5080356001600160a01b0316906020013560ff16613738565b61070c613758565b610409613777565b6103e561377d565b610599613783565b61063d60048036036020811015610b1d57600080fd5b503560ff16613b3a565b610599613b55565b61059960048036036060811015610b4557600080fd5b60ff8235169190810190604081016020820135600160201b811115610b6957600080fd5b820183602082011115610b7b57600080fd5b803590602001918460018302840111600160201b83111715610b9c57600080fd5b919350915035613d2f565b6103e5613e80565b6103a6613e86565b6103e5613e8b565b600081565b606481565b61200181565b60015481565b600b5460ff1681565b60005460ff16610c31576040805162461bcd60e51b81526020600482015260196024820152781d1a194818dbdb9d1c9858dd081b9bdd081a5b9a5d081e595d603a1b604482015290519081900360640190fd5b604080516337d7f9c160e21b81526001600160401b038b35166004820181905291516110039163df5fe704916024808301926020929190829003018186803b158015610c7c57600080fd5b505afa158015610c90573d6000803e3d6000fd5b505050506040513d6020811015610ca657600080fd5b5051610ce35760405162461bcd60e51b81526004018080602001828103825260238152602001806149196023913960400191505060405180910390fd5b604080516337d7f9c160e21b815260208c8101356001600160401b03166004830181905292516110039263df5fe704926024808301939192829003018186803b158015610d2f57600080fd5b505afa158015610d43573d6000803e3d6000fd5b505050506040513d6020811015610d5957600080fd5b5051610d965760405162461bcd60e51b81526004018080602001828103825260238152602001806149196023913960400191505060405180910390fd5b60608b013560ff81166000908152600560205260409020546001600160401b03909116906001600160a01b0316610e0f576040805162461bcd60e51b815260206004820152601860248201527718da185b9b995b081a5cc81b9bdd081cdd5c1c1bdc9d195960421b604482015290519081900360640190fd5b600b5460ff1615610e53576040805162461bcd60e51b81526020600482015260096024820152681cdd5cdc195b99195960ba1b604482015290519081900360640190fd5b8888604051808383808284376040519201829003822094508f93508e9250819050838380828437808301925050509250505060405180910390201415610ecf576040805162461bcd60e51b815260206004820152600c60248201526b1cd85b59481c185e5b1bd85960a21b604482015290519081900360640190fd5b60606001600160401b0360408e01358116908e83013516610ef08282613e91565b80516020808301919091206000818152600e9092526040909120549194509060ff1615610f59576040805162461bcd60e51b8152602060048201526012602482015271185b1c9958591e4818da185b1b195b99d95960721b604482015290519081900360640190fd5b6000908152600e60205260408120805460ff191660011790558f8160200201356001600160401b0316905060608f8f8080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f82011690508083019250505050505050905060608c8c8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201829052506040805163cba510a960e01b81526001600160401b038a16600482015290519596509094611003945063cba510a9935060248083019350602092829003018186803b15801561104f57600080fd5b505afa158015611063573d6000803e3d6000fd5b505050506040513d602081101561107957600080fd5b505160408051808201909152600381526269626360e81b60208201529091506110a6908290898686613ed9565b6110ef576040805162461bcd60e51b81526020600482015260156024820152740696e76616c6964206d65726b6c652070726f6f663605c1b604482015290519081900360640190fd5b5050505060008f60016004811061110257fe5b60200201356001600160401b0316905060608d8d8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050604080516020601f8f018190048102820181019092528d815293945060609392508d91508c908190840183828082843760009201829052506040805163cba510a960e01b81526001600160401b038a16600482015290519596509094611003945063cba510a9935060248083019350602092829003018186803b1580156111ce57600080fd5b505afa1580156111e2573d6000803e3d6000fd5b505050506040513d60208110156111f857600080fd5b505160408051808201909152600381526269626360e81b6020820152909150611225908290898686613ed9565b61126e576040805162461bcd60e51b8152602060048201526015602482015274696e76616c6964206d65726b6c652070726f6f663160581b604482015290519081900360640190fd5b5050505061127a613fd6565b604080516001600160401b038416815260ff83166020820152815133927f039eb91179ffd7d3b6e97f8ea106e748e827f910b872375dbc9c14a362319c3c928290030190a2505050505050505050505050505050565b603281565b600d6020526000908152604090205461ffff1681565b600e6020526000908152604090205460ff1681565b60045460070b81565b60025481565b600a602052600090815260409020546001600160401b031681565b60606000825160210190506060816040519080825280601f01601f191660200182016040528015611362576020820181803683370190505b506021810186905260018101879052828152905060418101600061138586614054565b5090506113948183885161405e565b50909695505050505050565b600181565b60096020526000908152604090205460ff1681565b61100181565b603881565b600881565b61200081565b604080517710d05390d15317d514905394d1915497d41493d413d4d05360421b8152905190819003601801902081565b6040805163569e4ed360e11b815233600482015290516000916110009163ad3c9da691602480820192602092909190829003018186803b15801561144357600080fd5b505afa158015611457573d6000803e3d6000fd5b505050506040513d602081101561146d57600080fd5b505160408051633d42651560e11b8152905191925060009161100091637a84ca2a916004808301926020929190829003018186803b1580156114ae57600080fd5b505afa1580156114c2573d6000803e3d6000fd5b505050506040513d60208110156114d857600080fd5b50519050806114e5575060155b6000821180156114f55750808211155b611534576040805162461bcd60e51b815260206004820152600b60248201526a1b9bdd0818d8589a5b995d60aa1b604482015290519081900360640190fd5b604080516001600160a01b038087166020808401919091529086168284015282518083038401815260608301808552815191909201207710d05390d15317d514905394d1915497d41493d413d4d05360421b90915291519081900360780190206000906115a1908361409f565b905080156116135760408051630911a2c160e11b81526001600160a01b03888116600483015287166024820152905161100491631223458291604480830192600092919082900301818387803b1580156115fa57600080fd5b505af115801561160e573d6000803e3d6000fd5b505050505b505050505050565b604080516f14d554d411539117d41493d413d4d05360821b8152905190819003601001902081565b600281565b600c602052600090815260409020805460019091015461ffff8216916201000090046001600160801b03169083565b604080516e149153d4115397d41493d413d4d053608a1b8152905190819003600f01902081565b6005602052600090815260409020546001600160a01b031681565b61100581565b601081565b60035481565b61100881565b600b81565b60005460ff16611728576040805162461bcd60e51b81526020600482015260196024820152781d1a194818dbdb9d1c9858dd081b9bdd081a5b9a5d081e595d603a1b604482015290519081900360640190fd5b60408051630a83aaa960e31b815233600482015290516110069163541d5548916024808301926020929190829003018186803b15801561176757600080fd5b505afa15801561177b573d6000803e3d6000fd5b505050506040513d602081101561179157600080fd5b50516117e4576040805162461bcd60e51b815260206004820152601f60248201527f746865206d73672073656e646572206973206e6f7420612072656c6179657200604482015290519081900360640190fd5b73b005741528b86f5952469d80a8614591e3c5b632331480611819575073446aa6e0dc65690403df3f127750da1322941f3e33145b6118545760405162461bcd60e51b815260040180806020018281038252602a8152602001806148bd602a913960400191505060405180910390fd5b60ff8116600090815260086020526040902054829082906001600160401b0390811690831681146118c4576040805162461bcd60e51b815260206004820152601560248201527439b2b8bab2b731b2903737ba1034b71037b93232b960591b604482015290519081900360640190fd5b60ff8216600090815260086020908152604091829020805467ffffffffffffffff1916600185016001600160401b039081169190911790915582516337d7f9c160e21b81529089166004820152915188926110039263df5fe70492602480840193829003018186803b15801561193957600080fd5b505afa15801561194d573d6000803e3d6000fd5b505050506040513d602081101561196357600080fd5b50516119a05760405162461bcd60e51b81526004018080602001828103825260238152602001806149196023913960400191505060405180910390fd5b60ff851660009081526005602052604090205485906001600160a01b0316611a0a576040805162461bcd60e51b815260206004820152601860248201527718da185b9b995b081a5cc81b9bdd081cdd5c1c1bdc9d195960421b604482015290519081900360640190fd5b60ff86166000908152600a6020526040902054889087906001600160401b039081169083161015611a73576040805162461bcd60e51b815260206004820152600e60248201526d3a37b79037b632103432b0b232b960911b604482015290519081900360640190fd5b60ff81166000908152600a60205260409020546001600160401b03838116911614611ac55760ff81166000908152600a60205260409020805467ffffffffffffffff19166001600160401b0384161790555b600b5460ff1615611b09576040805162461bcd60e51b81526020600482015260096024820152681cdd5cdc195b99195960ba1b604482015290519081900360640190fd5b60608e8e8080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f82011690508083019250505050505050905060608d8d8080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050509050611c4d6110036001600160a01b031663cba510a98e6040518263ffffffff1660e01b815260040180826001600160401b03166001600160401b0316815260200191505060206040518083038186803b158015611bf657600080fd5b505afa158015611c0a573d6000803e3d6000fd5b505050506040513d6020811015611c2057600080fd5b505160408051808201909152600381526269626360e81b6020820152611c468e8e613e91565b8585613ed9565b611c95576040805162461bcd60e51b815260206004820152601460248201527334b73b30b634b21036b2b935b63290383937b7b360611b604482015290519081900360640190fd5b60408051631bb5062960e31b81526001600160401b038e16600482015290516000916110039163dda8314891602480820192602092909190829003018186803b158015611ce157600080fd5b505afa158015611cf5573d6000803e3d6000fd5b505050506040513d6020811015611d0b57600080fd5b505190508b8b600080806060611d208961438a565b935093509350935083611de2578460ff16866001600160401b03167ff7b2e42d694eb1100184aae86d4245d9e46966100b1dc7e723275b98326854ac8b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015611d9a578181015183820152602001611d82565b50505050905090810190601f168015611dc75780820380516001836020036101000a031916815260200191505b509250505060405180910390a35050505050505050506129fd565b6040805160ff85811682529151918716916001600160401b038916917f36afdaf439a8f43fe72135135d804ae620b37a474f0943b5b85f6788312cad40919081900360200190a360ff83166123675760ff85166000818152600560209081526040808320548151631182b87560e01b815260048101958652602481019283528651604482015286516001600160a01b03909216958695631182b875958d958a9593949093606490910192918601918190849084905b83811015611eaf578181015183820152602001611e97565b50505050905090810190601f168015611edc5780820380516001836020036101000a031916815260200191505b509350505050600060405180830381600087803b158015611efc57600080fd5b505af1925050508015611fe057506040513d6000823e601f3d908101601f191682016040526020811015611f2f57600080fd5b8101908080516040519392919084600160201b821115611f4e57600080fd5b908301906020820185811115611f6357600080fd5b8251600160201b811182820188101715611f7c57600080fd5b82525081516020918201929091019080838360005b83811015611fa9578181015183820152602001611f91565b50505050905090810190601f168015611fd65780820380516001836020036101000a031916815260200191505b5060405250505060015b6122f2576040516000815260443d1015611ffc57506000612097565b60046000803e60005160e01c6308c379a0811461201d576000915050612097565b60043d036004833e81513d60248201116001600160401b038211171561204857600092505050612097565b80830180516001600160401b03811115612069576000945050505050612097565b8060208301013d860181111561208757600095505050505050612097565b601f01601f191660405250925050505b806120a257506121b4565b60ff87166000908152600760205260408120546120d9916001600160401b039091169089906120d4906002908861132a565b61443a565b60ff8716600090815260076020908152604080832080546001600160401b038082166001011667ffffffffffffffff19909116179055805182815284518184015284516001600160a01b038716947ff91a8f63e5b3e0e89e5f93e1915a7805f3c52d9a73b3c09769785c2c7bf87acf948794849390840192918601918190849084905b8381101561217457818101518382015260200161215c565b50505050905090810190601f1680156121a15780820380516001836020036101000a031916815260200191505b509250505060405180910390a2506122ed565b3d8080156121de576040519150601f19603f3d011682016040523d82523d6000602084013e6121e3565b606091505b5060ff8716600090815260076020526040812054612216916001600160401b039091169089906120d4906002908861132a565b60ff8716600090815260076020908152604080832080546001600160401b038082166001011667ffffffffffffffff19909116179055805182815284518184015284516001600160a01b038716947f63ac299d6332d1cc4e61b81e59bc00c0ac7c798addadf33840f1307cd2977351948794849390840192918601918190849084905b838110156122b1578181015183820152602001612299565b50505050905090810190601f1680156122de5780820380516001836020036101000a031916815260200191505b509250505060405180910390a2505b612361565b80511561235f5760ff871660009081526007602052604081205461232b916001600160401b039091169089906120d4906001908661132a565b60ff8716600090815260076020526040902080546001600160401b038082166001011667ffffffffffffffff199091161790555b505b50612935565b60ff83166001141561260b5760ff8516600081815260056020908152604080832054815163831d65d160e01b815260048101958652602481019283528651604482015286516001600160a01b0390921695869563831d65d1958d958a9593949093606490910192918601918190849084905b838110156123f15781810151838201526020016123d9565b50505050905090810190601f16801561241e5780820380516001836020036101000a031916815260200191505b509350505050600060405180830381600087803b15801561243e57600080fd5b505af192505050801561244f575060015b612361576040516000815260443d101561246b57506000612506565b60046000803e60005160e01c6308c379a0811461248c576000915050612506565b60043d036004833e81513d60248201116001600160401b03821117156124b757600092505050612506565b80830180516001600160401b038111156124d8576000945050505050612506565b8060208301013d86018111156124f657600095505050505050612506565b601f01601f191660405250925050505b806125115750612576565b60408051602080825283518183015283516001600160a01b038616937ff91a8f63e5b3e0e89e5f93e1915a7805f3c52d9a73b3c09769785c2c7bf87acf938693909283928301918501908083836000831561217457818101518382015260200161215c565b3d8080156125a0576040519150601f19603f3d011682016040523d82523d6000602084013e6125a5565b606091505b5060408051602080825283518183015283516001600160a01b038616937f63ac299d6332d1cc4e61b81e59bc00c0ac7c798addadf33840f1307cd297735193869390928392830191850190808383600083156122b1578181015183820152602001612299565b60ff8316600214156129355760ff8516600081815260056020908152604080832054815163c8509d8160e01b815260048101958652602481019283528651604482015286516001600160a01b0390921695869563c8509d81958d958a9593949093606490910192918601918190849084905b8381101561269557818101518382015260200161267d565b50505050905090810190601f1680156126c25780820380516001836020036101000a031916815260200191505b509350505050600060405180830381600087803b1580156126e257600080fd5b505af19250505080156126f3575060015b612933576040516000815260443d101561270f575060006127aa565b60046000803e60005160e01c6308c379a081146127305760009150506127aa565b60043d036004833e81513d60248201116001600160401b038211171561275b576000925050506127aa565b80830180516001600160401b0381111561277c5760009450505050506127aa565b8060208301013d860181111561279a576000955050505050506127aa565b601f01601f191660405250925050505b806127b5575061285e565b816001600160a01b03167ff91a8f63e5b3e0e89e5f93e1915a7805f3c52d9a73b3c09769785c2c7bf87acf826040518080602001828103825283818151815260200191508051906020019080838360005b8381101561281e578181015183820152602001612806565b50505050905090810190601f16801561284b5780820380516001836020036101000a031916815260200191505b509250505060405180910390a250612933565b3d808015612888576040519150601f19603f3d011682016040523d82523d6000602084013e61288d565b606091505b50816001600160a01b03167f63ac299d6332d1cc4e61b81e59bc00c0ac7c798addadf33840f1307cd2977351826040518080602001828103825283818151815260200191508051906020019080838360005b838110156128f75781810151838201526020016128df565b50505050905090810190601f1680156129245780820380516001836020036101000a031916815260200191505b509250505060405180910390a2505b505b60ff80861660009081526009602052604090205461100591636f93d2e6918a91339187911680612967575060ff881615155b604080516001600160e01b031960e088901b1681526001600160a01b039586166004820152939094166024840152604483019190915215156064820152905160848083019260209291908290030181600087803b1580156129c757600080fd5b505af11580156129db573d6000803e3d6000fd5b505050506040513d60208110156129f157600080fd5b50505050505050505050505b5050505050505050505050505050565b630100380081565b600981565b61100781565b61100681565b60005460ff1681565b3361100714612a6f5760405162461bcd60e51b815260040180806020018281038252602e815260200180614845602e913960400191505060405180910390fd5b600b5460ff1615612ab3576040805162461bcd60e51b81526020600482015260096024820152681cdd5cdc195b99195960ba1b604482015290519081900360640190fd5b612b1c84848080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050604080518082019091526012815271626174636853697a65466f724f7261636c6560701b602082015291506145d49050565b15612bb757604080516020601f8401819004810282018101909252828152600091612b5f918585808385018382808284376000920191909152506146bb92505050565b90506127108111158015612b745750600a8110155b612baf5760405162461bcd60e51b81526004018080602001828103825260328152602001806148e76032913960400191505060405180910390fd5b600155613452565b612c2084848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505060408051808201909152601281527118591913dc955c19185d1950da185b9b995b60721b602082015291506145d49050565b15612da857606082828080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505082519293505060169091149050612ca35760405162461bcd60e51b815260040180806020018281038252605a81526020018061475e605a913960600191505060405180910390fd5b60018101516002820151601683015160ff82161590612cc1816146c0565b612d12576040805162461bcd60e51b815260206004820152601960248201527f61646472657373206973206e6f74206120636f6e747261637400000000000000604482015290519081900360640190fd5b60ff8416600081815260056020908152604080832080546001600160a01b0319166001600160a01b038716908117909155808452600683528184208585528352818420805460ff199081166001179091556009909352818420805490931687151517909255519092917f7e3b6af43092577ee20e60eaa1d9b114a7031305c895ee7dd3ffe17196d2e1e091a35050505050613452565b612e1584848080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050604080518082019091526016815275195b98589b1953dc911a5cd8589b1950da185b9b995b60521b602082015291506145d49050565b15612f4657606082828080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505082519293505060029091149050612e985760405162461bcd60e51b815260040180806020018281038252604a815260200180614873604a913960600191505060405180910390fd5b600181810151600283015160ff80831660009081526005602052604090205492939192908316909114906001600160a01b03168015612f3c576001600160a01b038116600090815260066020908152604080832060ff881680855290835292819020805460ff1916861515908117909155815190815290517fa3132e3f9819fbddc7f0ed6d38d7feef59aa95112090b7c592f5cb5bc4aa4adc929181900390910190a25b5050505050613452565b612faa84848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505060408051808201909152600d81526c73757370656e6451756f72756d60981b602082015291506145d49050565b156130da5760028114612fee5760405162461bcd60e51b815260040180806020018281038252602d8152602001806147ec602d913960400191505060405180910390fd5b604080516020601f840181900481028201810190925282815260009161302c918585808385018382808284376000920191909152506146bb92505050565b905060008161ffff16118015613046575060648161ffff16105b613090576040805162461bcd60e51b8152602060048201526016602482015275696e76616c69642073757370656e642071756f72756d60501b604482015290519081900360640190fd5b604080516f14d554d411539117d41493d413d4d05360821b815281519081900360100190206000908152600d60205220805461ffff90921661ffff19909216919091179055613452565b61313d84848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505060408051808201909152600c81526b72656f70656e51756f72756d60a01b602082015291506145d49050565b1561326b57600281146131815760405162461bcd60e51b815260040180806020018281038252602c815260200180614819602c913960400191505060405180910390fd5b604080516020601f84018190048102820181019092528281526000916131bf918585808385018382808284376000920191909152506146bb92505050565b905060008161ffff161180156131d9575060648161ffff16105b613222576040805162461bcd60e51b8152602060048201526015602482015274696e76616c69642072656f70656e2071756f72756d60581b604482015290519081900360640190fd5b604080516e149153d4115397d41493d413d4d053608a1b8152815190819003600f0190206000908152600d60205220805461ffff90921661ffff19909216919091179055613452565b6132d684848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505060408051808201909152601481527363616e63656c5472616e7366657251756f72756d60601b602082015291506145d49050565b15613415576002811461331a5760405162461bcd60e51b81526004018080602001828103825260348152602001806147b86034913960400191505060405180910390fd5b604080516020601f8401819004810282018101909252828152600091613358918585808385018382808284376000920191909152506146bb92505050565b905060008161ffff16118015613372575060648161ffff16105b6133c3576040805162461bcd60e51b815260206004820152601e60248201527f696e76616c69642063616e63656c207472616e736665722071756f72756d0000604482015290519081900360640190fd5b604080517710d05390d15317d514905394d1915497d41493d413d4d05360421b815281519081900360180190206000908152600d60205220805461ffff90921661ffff19909216919091179055613452565b6040805162461bcd60e51b815260206004820152600d60248201526c756e6b6e6f776e20706172616d60981b604482015290519081900360640190fd5b7f6cdb0ac70ab7f2e2d035cca5be60d89906f2dede7648ddbd7402189c1eeed17a848484846040518080602001806020018381038352878782818152602001925080828437600083820152601f01601f191690910184810383528581526020019050858580828437600083820152604051601f909101601f19169092018290039850909650505050505050a150505050565b6008602052600090815260409020546001600160401b031681565b7fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a47081565b61100281565b6040805163569e4ed360e11b815233600482015290516000916110009163ad3c9da691602480820192602092909190829003018186803b15801561356c57600080fd5b505afa158015613580573d6000803e3d6000fd5b505050506040513d602081101561359657600080fd5b505160408051633d42651560e11b8152905191925060009161100091637a84ca2a916004808301926020929190829003018186803b1580156135d757600080fd5b505afa1580156135eb573d6000803e3d6000fd5b505050506040513d602081101561360157600080fd5b505190508061360e575060155b60008211801561361e5750808211155b61365d576040805162461bcd60e51b815260206004820152600b60248201526a1b9bdd0818d8589a5b995d60aa1b604482015290519081900360640190fd5b600b5460ff166136a4576040805162461bcd60e51b815260206004820152600d60248201526c1b9bdd081cdd5cdc195b991959609a1b604482015290519081900360640190fd5b604080516e149153d4115397d41493d413d4d053608a1b8152905190819003600f0190206000906136f5907fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a47061409f565b9050801561373357600b805460ff1916905560405133907f899fe8c37dc61708a3aaa99c4bf143346c1d1da69af79be9e8920c0a6785b75290600090a25b505050565b600660209081526000928352604080842090915290825290205460ff1681565b6040518060400160405280600381526020016269626360e81b81525081565b610e1081565b61100381565b60005460ff16156137db576040805162461bcd60e51b815260206004820152601960248201527f74686520636f6e747261637420616c726561647920696e697400000000000000604482015290519081900360640190fd5b7f1471eb6eb2c5e789fc3de43f8ce62938c7d1836ec861730447e2ada8fd81017b80546001600160a01b0319908116611008179091557f92e85d02570a8092d09a6e3a57665bc3815a2699a4074001bf1ccabf660f5a36805460ff199081169091557fd8af288fc1c8680b4f4706064cf021e264efb6828fcaf7eb5ca36818eb365bcc8054821660019081179091557f89832631fb3c3307a103ba2c84ab569c64d6182a18893dcd163f0f1c2090733a805484166110049081179091557f6cde3cea4b3a3fb2488b2808bae7556f4a405e50f65e1794383bc026131b13c38054841690557f72e4efa1513b071517c6c74dba31b5934a81aa83cddd400e7081df5529c9943680548416831790557fa9bc9a3a348c357ba16b37005d7e6b3236198c0e939f4af8c5f19b8deeb8ebc08054851690911790557fc575c31fea594a6eb97c8e9d3f9caee4c16218c6ef37e923234c0fe9014a61e78054831690557f4e523af77f034e9810f1c94057f5e931fb3d16a51511a4c3add793617d18610580548316821790557ffb33122aa9f93cc639ebe80a7bc4784c11e6053dde89c6f4f7e268c6a623da1e805484166110001790557fc7694af312c4f286114180fd0ba6a52461fcee8a381636770b19a343af92538a80548316821790557f01112dd68e482ba8d68a7e828cff8b3abcea08eab88941953c180a7e650e9cd480548316821790557fc0a4a8be475dfebc377ebef2d7c4ff47656f572a08dd92b81017efcdba0febe1805484166110071790557f87e8a52529e8ece4ef759037313542a6429ff494a9fab9027fb79db90124eba680548316821790557f4c7666bbcb22d46469f7cc282f70764a7012dca2cce630ff8d83db9a9cdd48f080548316821790557f40f28f99a40bc9f6beea1013afdbc3cdcc689eb76b82c4de06c0acf1e1932ed58054909316611001179092557f0d9cf2cd531699eed8dd34e40ff2884a14a698c4898184fba85194e6f6772d248054821683179055600b60009081527f23f68c9bd22b8a93d06adabe17481c87c016bcbd20adc8bfd707a4d813a572176020527fdf0d5d05428057f5455c2dc8e810dd86d1e9350faa72f16bda8a45443c5b39328054831684179055603283556004805467ffffffffffffffff19166001600160401b031790556002819055600381905580549091169091179055565b6007602052600090815260409020546001600160401b031681565b6040805163569e4ed360e11b815233600482015290516000916110009163ad3c9da691602480820192602092909190829003018186803b158015613b9857600080fd5b505afa158015613bac573d6000803e3d6000fd5b505050506040513d6020811015613bc257600080fd5b505160408051633d42651560e11b8152905191925060009161100091637a84ca2a916004808301926020929190829003018186803b158015613c0357600080fd5b505afa158015613c17573d6000803e3d6000fd5b505050506040513d6020811015613c2d57600080fd5b5051905080613c3a575060155b600082118015613c4a5750808211155b613c89576040805162461bcd60e51b815260206004820152600b60248201526a1b9bdd0818d8589a5b995d60aa1b604482015290519081900360640190fd5b600b5460ff1615613ccd576040805162461bcd60e51b81526020600482015260096024820152681cdd5cdc195b99195960ba1b604482015290519081900360640190fd5b604080516f14d554d411539117d41493d413d4d05360821b81529051908190036010019020600090613d1f907fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a47061409f565b9050801561373357613733613fd6565b60005460ff16613d82576040805162461bcd60e51b81526020600482015260196024820152781d1a194818dbdb9d1c9858dd081b9bdd081a5b9a5d081e595d603a1b604482015290519081900360640190fd5b33600090815260066020908152604080832060ff8089168552925290912054859116613ddf5760405162461bcd60e51b815260040180806020018281038252603181526020018061472d6031913960400191505060405180910390fd5b60ff85166000908152600760209081526040808320548151601f88018490048402810184019092528682526001600160401b031692613e449284928a926120d492909189918c908c908190840183828082843760009201919091525061132a92505050565b60ff959095166000908152600760205260409020805467ffffffffffffffff191660019096016001600160401b03169590951790945550505050565b61100081565b600381565b61100481565b60408051600e808252818301909252606091630100380060ff851617918391602082018180368337505050600e81810187905260068201939093529182525090505b92915050565b600085613ee857506000613fcd565b606082518451865160800101016040519080825280601f01601f191660200182016040528015613f1f576020820181803683370190505b5090506000613f2d826146c6565b602080890151825201905086600080613f4589614054565b8086526020909501949092509050613f5e82858361405e565b92830192613f6b88614054565b8086526020909501949092509050613f8482858361405e565b9283018a815260200192613f9787614054565b9092509050613fa782858361405e565b508351602001613fb56146cc565b60208183886065600019fa5051600114955050505050505b95945050505050565b600b5460ff161561401a576040805162461bcd60e51b81526020600482015260096024820152681cdd5cdc195b99195960ba1b604482015290519081900360640190fd5b600b805460ff1916600117905560405133907f6f123d3d54c84a7960a573b31c221dcd86e13fd849c5adb0c6ca851468cc1ae490600090a2565b8051602090910191565b5b6020811061407e578251825260209283019290910190601f190161405f565b915181516020939093036101000a6000190180199091169216919091179052565b6000828152600d602052604081205461ffff1661416857604080516f14d554d411539117d41493d413d4d05360821b815281519081900360100181206000908152600d6020818152848320805461ffff199081166001179091556e149153d4115397d41493d413d4d053608a1b8552855194859003600f01852084528282528584208054821660029081179091557710d05390d15317d514905394d1915497d41493d413d4d05360421b8652865195869003601801909520845291905292902080549092161790555b6000838152600c6020526040902080546201000090046001600160801b031642101580614199575082816001015414155b15614272576000848152600d6020908152604080832054845461ffff91821661ffff199091161771ffffffffffffffffffffffffffffffff0000191662010000610e1042016001600160801b03908116820292909217875560018088018a905560028801805491820181558752958590209095018054336001600160a01b031990911681179091558654845193811684529590950416928101929092528181018690525186917f9e109f0e55ef32e99e4880be2ec357f1ddb3469c79d0747ef4762da6e89fabe5916060918190039190910190a3614326565b60005b60028201548110156142fd57336001600160a01b031682600201828154811061429a57fe5b6000918252602090912001546001600160a01b031614156142f5576040805162461bcd60e51b815260206004820152601060248201526f185b1c9958591e48185c1c1c9bdd995960821b604482015290519081900360640190fd5b600101614275565b50600281018054600181018255600091825260209091200180546001600160a01b031916331790555b8054600282015461ffff90911611614380576000848152600c60205260408120805471ffffffffffffffffffffffffffffffffffff19168155600181018290559061437460028301826146ea565b50506001915050613ed3565b5060009392505050565b600080600060606021855110156143ba575050604080516000808252602082019092529092508291508190614433565b600185015160218601518651604080516020198301808252601f1960011990940193909316810160200190915260418901939291606091908015614405576020820181803683370190505b509050600061441382614054565b509050614425858260218d510361405e565b506001975091955093509150505b9193509193565b600b5460ff161561447e576040805162461bcd60e51b81526020600482015260096024820152681cdd5cdc195b99195960ba1b604482015290519081900360640190fd5b6002544311156144bd576004805467ffffffffffffffff1981166001600160401b036001600793840b810190930b1617909155600355436002556144fe565b600380546001908101918290555410156144fe576004805467ffffffffffffffff1981166001600160401b036001600793840b810190930b16179091556003555b8160ff16836001600160401b0316600460009054906101000a900460070b6001600160401b03167f3a6e0fc61675aa2a100bcba0568368bb92bcec91c97673391074f11138f0cffe603885604051808361ffff1661ffff16815260200180602001828103825283818151815260200191508051906020019080838360005b8381101561459457818101518382015260200161457c565b50505050905090810190601f1680156145c15780820380516001836020036101000a031916815260200191505b50935050505060405180910390a4505050565b6000816040516020018082805190602001908083835b602083106146095780518252601f1990920191602091820191016145ea565b6001836020036101000a03801982511681845116808217855250505050505090500191505060405160208183030381529060405280519060200120836040516020018082805190602001908083835b602083106146775780518252601f199092019160209182019101614658565b6001836020036101000a0380198251168184511680821785525050505050509050019150506040516020818303038152906040528051906020012014905092915050565b015190565b3b151590565b60200190565b60405180602001604052806001906020820280368337509192915050565b5080546000825590600052602060002090810190614708919061470b565b50565b61472991905b808211156147255760008155600101614711565b5090565b9056fe74686520636f6e747261637420616e64206368616e6e656c2068617665206e6f74206265656e20726567697374657265646c656e677468206f662076616c756520666f72206164644f725570646174654368616e6e656c2073686f756c642062652032322c206368616e6e656c49643a697346726f6d53797374656d3a68616e646c6572416464726573736c656e677468206f662076616c756520666f722063616e63656c5472616e7366657251756f72756d2073686f756c6420626520326c656e677468206f662076616c756520666f722073757370656e6451756f72756d2073686f756c6420626520326c656e677468206f662076616c756520666f722072656f70656e51756f72756d2073686f756c642062652032746865206d6573736167652073656e646572206d75737420626520676f7665726e616e636520636f6e74726163746c656e677468206f662076616c756520666f7220656e61626c654f7244697361626c654368616e6e656c2073686f756c6420626520322c206368616e6e656c49643a6973456e61626c65746865206d73672073656e646572206973206e6f7420612077686974656c6162656c2072656c61796572746865206e6577426174636853697a65466f724f7261636c652073686f756c6420626520696e205b31302c2031303030305d6c6967687420636c69656e74206e6f742073796e632074686520626c6f636b20796574a2646970667358221220240ac6c1b1c549d05a84290ec5d0742c57b7ed4deffd08be20fd5d8b9bea0c9b64736f6c63430006040033", + }, + }, + } + + bohrUpgrade[chapelNet] = &Upgrade{ + UpgradeName: "bohr", + Configs: []*UpgradeConfig{ + { + ContractAddr: common.HexToAddress(TokenHubContract), + CommitUrl: "https://github.com/bnb-chain/bsc-genesis-contract/commit/6c5d91c7a089939e1b7234f79b631deb34fb34a8", + Code: "6080604052600436106103c75760003560e01c806396713da9116101f2578063c81b16621161010d578063f0148472116100a0578063fc1a598f1161006f578063fc1a598f14610f25578063fc3e590814610b85578063fd6a687914610f58578063ff9c0027146107fd5761040f565b8063f014847214610ed1578063f9a2bbc714610ee6578063fa9e915914610efb578063fb063e8f14610f105761040f565b8063dc927faf116100dc578063dc927faf14610e5f578063e1c7392a14610e74578063e8f35cea14610e89578063ebf71d5314610ebc5761040f565b8063c81b166214610d8a578063c8509d8114610d9f578063cf41984414610e24578063d9e6dae91461077f5761040f565b8063aa7415f511610185578063b9fd21e311610154578063b9fd21e314610cfa578063ba35ead614610d0f578063bbface1f14610d24578063bd46646114610d575761040f565b8063aa7415f514610b9a578063ab51bb9614610be1578063ac43175114610bf6578063b99328c514610cc15761040f565b8063a1a11bf5116101c1578063a1a11bf514610b46578063a496fba214610b5b578063a78abc1614610b70578063a7c9f02d14610b855761040f565b806396713da914610ace5780639a854bbd14610ae35780639a99b4f014610af85780639dc0926214610b315761040f565b806359b92789116102e257806371d3086311610275578063831d65d111610244578063831d65d1146109d15780638b87b21f146106d45780638eff336c14610a565780639509b98014610a955761040f565b806371d3086314610968578063727be1f81461097d57806375d47a0a146109a75780637942fd05146109bc5761040f565b80636e056520116102b15780636e056520146108125780636e47b4821461093e57806370fd5bad146107fd578063718a8aa8146109535761040f565b806359b92789146107be5780635d499b1b146107e8578063613684751461077f57806366dea52a146107fd5761040f565b80633fd8b02f1161035a5780634a3acdf4116103295780634a3acdf41461076a5780634bf6c8821461077f57806350432d321461079457806351e80672146107a95761040f565b80633fd8b02f146106ff57806343756e5c1461071457806343a368b914610729578063493279b11461073e5761040f565b8063149d14d911610396578063149d14d9146105a85780632ae45483146105cf5780633d713223146106235780633dffc387146106d45761040f565b80630bee7a67146104145780630e2374a5146104425780631182b87514610473578063122345821461056d5761040f565b3661040f57341561040d576040805133815234602082015281517f6c98249d85d88c3753a04a22230f595e4dc8d3dc86c34af35deeeedc861b89db929181900390910190a15b005b600080fd5b34801561042057600080fd5b50610429610f6d565b6040805163ffffffff9092168252519081900360200190f35b34801561044e57600080fd5b50610457610f72565b604080516001600160a01b039092168252519081900360200190f35b34801561047f57600080fd5b506104f86004803603604081101561049657600080fd5b60ff8235169190810190604081016020820135600160201b8111156104ba57600080fd5b8201836020820111156104cc57600080fd5b803590602001918460018302840111600160201b831117156104ed57600080fd5b509092509050610f78565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561053257818101518382015260200161051a565b50505050905090810190601f16801561055f5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561057957600080fd5b5061040d6004803603604081101561059057600080fd5b506001600160a01b03813581169160200135166110a6565b3480156105b457600080fd5b506105bd6111a0565b60408051918252519081900360200190f35b3480156105db57600080fd5b5061060a600480360360408110156105f257600080fd5b506001600160a01b03813581169160200135166111a6565b6040805192835260208301919091528051918290030190f35b34801561062f57600080fd5b506104576004803603602081101561064657600080fd5b810190602081018135600160201b81111561066057600080fd5b82018360208201111561067257600080fd5b803590602001918460018302840111600160201b8311171561069357600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295506111ca945050505050565b3480156106e057600080fd5b506106e96111ee565b6040805160ff9092168252519081900360200190f35b34801561070b57600080fd5b506105bd6111f3565b34801561072057600080fd5b506104576111f9565b34801561073557600080fd5b506105bd6111ff565b34801561074a57600080fd5b5061075361120b565b6040805161ffff9092168252519081900360200190f35b34801561077657600080fd5b506105bd611210565b34801561078b57600080fd5b506106e9611216565b3480156107a057600080fd5b506105bd61121b565b3480156107b557600080fd5b50610457611226565b3480156107ca57600080fd5b50610457600480360360208110156107e157600080fd5b503561122c565b3480156107f457600080fd5b506105bd611247565b34801561080957600080fd5b506106e9611250565b61092a6004803603608081101561082857600080fd5b810190602081018135600160201b81111561084257600080fd5b82018360208201111561085457600080fd5b803590602001918460208302840111600160201b8311171561087557600080fd5b919390929091602081019035600160201b81111561089257600080fd5b8201836020820111156108a457600080fd5b803590602001918460208302840111600160201b831117156108c557600080fd5b919390929091602081019035600160201b8111156108e257600080fd5b8201836020820111156108f457600080fd5b803590602001918460208302840111600160201b8311171561091557600080fd5b91935091503567ffffffffffffffff16611255565b604080519115158252519081900360200190f35b34801561094a57600080fd5b5061045761172a565b34801561095f57600080fd5b506106e9611730565b34801561097457600080fd5b506105bd611735565b34801561098957600080fd5b5061092a600480360360208110156109a057600080fd5b503561173b565b3480156109b357600080fd5b506104576117bc565b3480156109c857600080fd5b506106e96117c2565b3480156109dd57600080fd5b5061040d600480360360408110156109f457600080fd5b60ff8235169190810190604081016020820135600160201b811115610a1857600080fd5b820183602082011115610a2a57600080fd5b803590602001918460018302840111600160201b83111715610a4b57600080fd5b5090925090506117c7565b348015610a6257600080fd5b5061040d60048036036060811015610a7957600080fd5b508035906001600160a01b036020820135169060400135611910565b348015610aa157600080fd5b5061040d60048036036040811015610ab857600080fd5b506001600160a01b038135169060200135611996565b348015610ada57600080fd5b506106e9611b19565b348015610aef57600080fd5b506105bd611b1e565b348015610b0457600080fd5b506105bd60048036036040811015610b1b57600080fd5b506001600160a01b038135169060200135611b2a565b348015610b3d57600080fd5b50610457611c68565b348015610b5257600080fd5b50610457611c6e565b348015610b6757600080fd5b506106e9611c74565b348015610b7c57600080fd5b5061092a611c79565b348015610b9157600080fd5b506106e9611c82565b61092a60048036036080811015610bb057600080fd5b5080356001600160a01b03908116916020810135909116906040810135906060013567ffffffffffffffff16611c87565b348015610bed57600080fd5b50610429611c74565b348015610c0257600080fd5b5061040d60048036036040811015610c1957600080fd5b810190602081018135600160201b811115610c3357600080fd5b820183602082011115610c4557600080fd5b803590602001918460018302840111600160201b83111715610c6657600080fd5b919390929091602081019035600160201b811115610c8357600080fd5b820183602082011115610c9557600080fd5b803590602001918460018302840111600160201b83111715610cb657600080fd5b509092509050612348565b348015610ccd57600080fd5b5061040d60048036036040811015610ce457600080fd5b50803590602001356001600160a01b03166127f0565b348015610d0657600080fd5b506105bd612866565b348015610d1b57600080fd5b506105bd612870565b348015610d3057600080fd5b506105bd60048036036020811015610d4757600080fd5b50356001600160a01b0316612876565b348015610d6357600080fd5b506105bd60048036036020811015610d7a57600080fd5b50356001600160a01b0316612888565b348015610d9657600080fd5b506104576128a3565b348015610dab57600080fd5b5061040d60048036036040811015610dc257600080fd5b60ff8235169190810190604081016020820135600160201b811115610de657600080fd5b820183602082011115610df857600080fd5b803590602001918460018302840111600160201b83111715610e1957600080fd5b5090925090506128a9565b348015610e3057600080fd5b5061040d60048036036040811015610e4757600080fd5b506001600160a01b0381358116916020013516612979565b348015610e6b57600080fd5b50610457612c4d565b348015610e8057600080fd5b5061040d612c53565b348015610e9557600080fd5b506105bd60048036036020811015610eac57600080fd5b50356001600160a01b0316612cf3565b348015610ec857600080fd5b506106e9612d05565b348015610edd57600080fd5b506106e9612d0a565b348015610ef257600080fd5b50610457612d0f565b348015610f0757600080fd5b506105bd612d15565b348015610f1c57600080fd5b506105bd612d1b565b348015610f3157600080fd5b506104f860048036036020811015610f4857600080fd5b50356001600160a01b0316612d29565b348015610f6457600080fd5b50610457612e50565b606481565b61200181565b60005460609060ff16610fc0576040805162461bcd60e51b81526020600482015260196024820152600080516020615548833981519152604482015290519081900360640190fd5b33612000146110005760405162461bcd60e51b815260040180806020018281038252602f8152602001806154f6602f913960400191505060405180910390fd5b60ff8416600214156110525761104b83838080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250612e5692505050565b905061109f565b6040805162461bcd60e51b815260206004820152601860248201527f756e7265636f676e697a65642073796e207061636b6167650000000000000000604482015290519081900360640190fd5b9392505050565b33612000146110e65760405162461bcd60e51b815260040180806020018281038252602f8152602001806154f6602f913960400191505060405180910390fd5b6001600160a01b0380831660009081526007602090815260408083209385168352929052208054611151576040805162461bcd60e51b815260206004820152601060248201526f1b9bc81b1bd8dad95908185b5bdd5b9d60821b604482015290519081900360640190fd5b8054600082556040805182815290516001600160a01b0380861692908716917f152fb15aa5d80f843e1e4bd5f2fc9161714f169945024decec7e84fb910fdd519181900360200190a350505050565b60015490565b60076020908152600092835260408084209091529082529020805460019091015482565b6020818101516000908152600490915260409020546001600160a01b03165b919050565b600181565b60055481565b61100181565b670de0b6b3a764000081565b606181565b61546081565b600881565b66071afd498d000081565b61200081565b6000908152600460205260409020546001600160a01b031690565b6402540be40081565b600281565b6000805460ff1661129b576040805162461bcd60e51b81526020600482015260196024820152600080516020615548833981519152604482015290519081900360640190fd5b8685146112d95760405162461bcd60e51b815260040180806020018281038252603b8152602001806154bb603b913960400191505060405180910390fd5b8683146113175760405162461bcd60e51b815260040180806020018281038252603f81526020018061538e603f913960400191505060405180910390fd5b426078018267ffffffffffffffff1610156113635760405162461bcd60e51b815260040180806020018281038252602481526020018061527e6024913960400191505060405180910390fd5b6402540be4003406156113a75760405162461bcd60e51b81526004018080602001828103825260408152602001806155be6040913960400191505060405180910390fd5b604080518681526020808802820101909152859060009081906060908480156113da578160200160208202803683370190505b50905060005b848110156114b5576402540be4008b8b838181106113fa57fe5b905060200201358161140857fe5b06156114455760405162461bcd60e51b815260040180806020018281038252603c8152602001806153cd603c913960400191505060405180910390fd5b61146a8b8b8381811061145457fe5b9050602002013585612f7a90919063ffffffff16565b93506114966402540be4008c8c8481811061148157fe5b90506020020135612fd490919063ffffffff16565b8282815181106114a257fe5b60209081029190910101526001016113e0565b506001546114da906114cd908663ffffffff61301616565b849063ffffffff612f7a16565b3410156115185760405162461bcd60e51b81526004018080602001828103825260568152602001806155686056913960600191505060405180910390fd5b611528348463ffffffff61306f16565b9150611532615082565b6040518060c001604052806221272160e91b60001b815260200160006001600160a01b031681526020018381526020018e8e808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152505050908252506040805160208c810282810182019093528c82529283019290918d918d91829185019084908082843760009201919091525050509082525067ffffffffffffffff8916602090910152905061200063f7a251d760036115f6846130b1565b61160b876402540be40063ffffffff612fd416565b6040518463ffffffff1660e01b8152600401808460ff1660ff16815260200180602001838152602001828103825284818151815260200191508051906020019080838360005b83811015611669578181015183820152602001611651565b50505050905090810190601f1680156116965780820380516001836020036101000a031916815260200191505b50945050505050600060405180830381600087803b1580156116b757600080fd5b505af11580156116cb573d6000803e3d6000fd5b505060408051600081523360208201528082018890526060810187905290517f74eab09b0e53aefc23f2e1b16da593f95c2dd49c6f5a23720463d10d9c330b2a9350908190036080019150a15060019c9b505050505050505050505050565b61100581565b601081565b60015481565b6000336120011461177d5760405162461bcd60e51b815260040180806020018281038252603381526020018061519c6033913960400191505060405180910390fd5b81156117b4576040516120019083156108fc029084906000818181858888f193505050501580156117b2573d6000803e3d6000fd5b505b506001919050565b61100881565b600b81565b60005460ff1661180c576040805162461bcd60e51b81526020600482015260196024820152600080516020615548833981519152604482015290519081900360640190fd5b336120001461184c5760405162461bcd60e51b815260040180806020018281038252602f8152602001806154f6602f913960400191505060405180910390fd5b60ff83166003141561189c5761189782828080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061336c92505050565b61190b565b7f41ce201247b6ceb957dcdb217d0b8acb50b9ea0e12af9af4f5e7f38902101605838383604051808460ff1660ff168152602001806020018281038252848482818152602001925080828437600083820152604051601f909101601f1916909201829003965090945050505050a15b505050565b33611008146119505760405162461bcd60e51b81526004018080602001828103825260238152602001806155256023913960400191505060405180910390fd5b600083815260046020908152604080832080546001600160a01b039096166001600160a01b03199096168617905593825260038152838220949094556002909352912055565b81806001600160a01b031663893d20e86040518163ffffffff1660e01b815260040160206040518083038186803b1580156119d057600080fd5b505afa1580156119e4573d6000803e3d6000fd5b505050506040513d60208110156119fa57600080fd5b50516001600160a01b03163314611a58576040805162461bcd60e51b815260206004820152601860248201527f6e6f74206f776e6572206f6620424550323020746f6b656e0000000000000000604482015290519081900360640190fd5b60008211611aa6576040805162461bcd60e51b81526020600482015260166024820152751e995c9bc81b1a5b5a5d081b9bdd08185b1b1bddd95960521b604482015290519081900360640190fd5b6001600160a01b038316600090815260036020526040902054611afc576040805162461bcd60e51b81526020600482015260096024820152681b9bdd08189bdd5b9960ba1b604482015290519081900360640190fd5b506001600160a01b03909116600090815260066020526040902055565b600981565b677ce66c50e284000081565b6000805460ff16611b70576040805162461bcd60e51b81526020600482015260196024820152600080516020615548833981519152604482015290519081900360640190fd5b3361100514611bb05760405162461bcd60e51b815260040180806020018281038252602f8152602001806151cf602f913960400191505060405180910390fd5b6000478310611bbf5747611bc1565b825b9050670de0b6b3a7640000811115611bdd576000915050611c62565b8015611c5f576040516001600160a01b0385169082156108fc029083906000818181858888f19350505050158015611c19573d6000803e3d6000fd5b50604080516001600160a01b03861681526020810183905281517ff8b71c64315fc33b2ead2adfa487955065152a8ac33d9d5193aafd7f45dc15a0929181900390910190a15b90505b92915050565b61100781565b61100681565b600081565b60005460ff1681565b600381565b6000805460ff16611ccd576040805162461bcd60e51b81526020600482015260196024820152600080516020615548833981519152604482015290519081900360640190fd5b426078018267ffffffffffffffff161015611d195760405162461bcd60e51b815260040180806020018281038252602481526020018061527e6024913960400191505060405180910390fd5b6402540be400340615611d5d5760405162461bcd60e51b81526004018080602001828103825260408152602001806155be6040913960400191505060405180910390fd5b600080806001600160a01b038816611e3c57600154611d8390879063ffffffff612f7a16565b341015611dc15760405162461bcd60e51b81526004018080602001828103825260618152602001806153086061913960800191505060405180910390fd5b6402540be400860615611e055760405162461bcd60e51b815260040180806020018281038252603c8152602001806153cd603c913960400191505060405180910390fd5b611e15348763ffffffff61306f16565b9050611e2c866402540be40063ffffffff612fd416565b6221272160e91b935091506120df565b6001600160a01b038816600090815260036020526040902054925082611e935760405162461bcd60e51b81526004018080602001828103825260318152602001806152d76031913960400191505060405180910390fd5b600154341015611ed45760405162461bcd60e51b815260040180806020018281038252603f81526020018061542a603f913960400191505060405180910390fd5b506001600160a01b0387166000908152600260205260409020543490600881111580611f1f5750600881118015611f1f5750611f1d876007198301600a0a63ffffffff6133c816565b155b611f5a5760405162461bcd60e51b815260040180806020018281038252603c8152602001806153cd603c913960400191505060405180910390fd5b611f64878261340a565b9250611f6f8461344a565b15611fb7576305f5e100831015611fb75760405162461bcd60e51b815260040180806020018281038252603a815260200180615220603a913960400191505060405180910390fd5b600881101580611fd15750600881108015611fd157508683115b61200c5760405162461bcd60e51b81526004018080602001828103825260258152602001806153696025913960400191505060405180910390fd5b677ce66c50e28400008311156120535760405162461bcd60e51b81526004018080602001828103825260358152602001806152a26035913960400191505060405180910390fd5b604080516323b872dd60e01b81523360048201523060248201526044810189905290516001600160a01b038b16916323b872dd9160648083019260209291908290030181600087803b1580156120a857600080fd5b505af11580156120bc573d6000803e3d6000fd5b505050506040513d60208110156120d257600080fd5b50516120dd57600080fd5b505b6120e7615082565b6040805160c0810182528581526001600160a01b038b166020820152815160018082528184018452919283019181602001602082028036833750505081526040805160018082528183019092526020928301929091908083019080368337505050815260408051600180825281830190925260209283019290919080830190803683370190505081526020018767ffffffffffffffff16815250905082816040015160008151811061219557fe5b6020026020010181815250508781606001516000815181106121b357fe5b60200260200101906001600160a01b031690816001600160a01b0316815250503381608001516000815181106121e557fe5b6001600160a01b039092166020928302919091019091015261200063f7a251d76003612210846130b1565b612225866402540be40063ffffffff612fd416565b6040518463ffffffff1660e01b8152600401808460ff1660ff16815260200180602001838152602001828103825284818151815260200191508051906020019080838360005b8381101561228357818101518382015260200161226b565b50505050905090810190601f1680156122b05780820380516001836020036101000a031916815260200191505b50945050505050600060405180830381600087803b1580156122d157600080fd5b505af11580156122e5573d6000803e3d6000fd5b5050604080516001600160a01b038d1681523360208201528082018b90526060810186905290517f74eab09b0e53aefc23f2e1b16da593f95c2dd49c6f5a23720463d10d9c330b2a9350908190036080019150a150600198975050505050505050565b33611007146123885760405162461bcd60e51b815260040180806020018281038252602e815260200180615469602e913960400191505060405180910390fd5b602081146123dd576040805162461bcd60e51b815260206004820152601b60248201527f65787065637465642076616c7565206c656e6774682069732033320000000000604482015290519081900360640190fd5b606084848080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050604080516020601f8801819004810282018101909252868152939450606093925086915085908190840183828082843760009201919091525050505060208301519091506772656c617946656560c01b8114156124e5576020820151670de0b6b3a7640000811180159061248c57506402540be4008106155b6124dd576040805162461bcd60e51b815260206004820152601960248201527f7468652072656c6179466565206f7574206f662072616e676500000000000000604482015290519081900360640190fd5b60015561275b565b61255987878080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505060408051808201909152601781527f6c617267655472616e736665724c6f636b506572696f64000000000000000000602082015291506135509050565b156125f557604080516020601f870181900481028201810190925285815260009161259c9188888083850183828082843760009201919091525061363792505050565b905062093a808111156125ed576040805162461bcd60e51b81526020600482015260146024820152736c6f636b20706572696f6420746f6f206c6f6e6760601b604482015290519081900360640190fd5b60055561275b565b61266187878080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050604080518082019091526015815274189b9893185c99d9551c985b9cd9995c931a5b5a5d605a1b602082015291506135509050565b1561271e57604080516020601f87018190048102820181019092528581526000916126a49188888083850183828082843760009201919091525061363792505050565b905068056bc75e2d631000008110156126ee5760405162461bcd60e51b81526004018080602001828103825260228152602001806151fe6022913960400191505060405180910390fd5b6000805260066020527f54cdd369e4e8a8515e52ca72ec816c2101831ad1f18bf44102ed171459c9b4f85561275b565b6040805162461bcd60e51b815260206004820152600d60248201526c756e6b6e6f776e20706172616d60981b604482015290519081900360640190fd5b7f6cdb0ac70ab7f2e2d035cca5be60d89906f2dede7648ddbd7402189c1eeed17a878787876040518080602001806020018381038352878782818152602001925080828437600083820152601f01601f191690910184810383528581526020019050858580828437600083820152604051601f909101601f19169092018290039850909650505050505050a150505050505050565b33611008146128305760405162461bcd60e51b81526004018080602001828103825260238152602001806155256023913960400191505060405180910390fd5b600091825260046020908152604080842080546001600160a01b03191690556001600160a01b0392909216835260039052812055565b6221272160e91b81565b61c35081565b60026020526000908152604090205481565b6001600160a01b031660009081526003602052604090205490565b61100281565b60005460ff166128ee576040805162461bcd60e51b81526020600482015260196024820152600080516020615548833981519152604482015290519081900360640190fd5b336120001461292e5760405162461bcd60e51b815260040180806020018281038252602f8152602001806154f6602f913960400191505060405180910390fd5b60ff83166003141561189c5761189782828080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061363c92505050565b60085460ff16600214156129c5576040805162461bcd60e51b815260206004820152600e60248201526d4e6f2072652d656e7472616e637960901b604482015290519081900360640190fd5b6008805460ff191660021790556001600160a01b0380831660009081526007602090815260408083209385168352929052208054612a3d576040805162461bcd60e51b815260206004820152601060248201526f1b9bc81b1bd8dad95908185b5bdd5b9d60821b604482015290519081900360640190fd5b8060010154421015612a96576040805162461bcd60e51b815260206004820152601760248201527f7374696c6c206f6e206c6f636b696e6720706572696f64000000000000000000604482015290519081900360640190fd5b805460008083556001600160a01b038516612b09576040516001600160a01b038516906127109084906000818181858888f193505050503d8060008114612af9576040519150601f19603f3d011682016040523d82523d6000602084013e612afe565b606091505b505080915050612b9c565b846001600160a01b031663a9059cbb61c35086856040518463ffffffff1660e01b815260040180836001600160a01b03166001600160a01b0316815260200182815260200192505050602060405180830381600088803b158015612b6c57600080fd5b5087f1158015612b80573d6000803e3d6000fd5b50505050506040513d6020811015612b9757600080fd5b505190505b80612bee576040805162461bcd60e51b815260206004820152601e60248201527f776974686472617720756e6c6f636b656420746f6b656e206661696c65640000604482015290519081900360640190fd5b836001600160a01b0316856001600160a01b03167f832fc3e25f2b3e6fb0eb59419a73cba405f2a249fce75f7e31ea5a457a0323f1846040518082815260200191505060405180910390a350506008805460ff19166001179055505050565b61100381565b60005460ff1615612cab576040805162461bcd60e51b815260206004820152601960248201527f74686520636f6e747261637420616c726561647920696e697400000000000000604482015290519081900360640190fd5b66071afd498d000060019081556000808052600260205260127fac33ff75c19e70fe83507db0d683fd3465c996598dc972688b7ace676c89077b55805460ff19169091179055565b60066020526000908152604090205481565b600481565b600581565b61100081565b61271081565b69021e19e0c9bab240000081565b6001600160a01b03811660009081526003602090815260409182902054825182815280840190935260609290918391906020820181803683375050506020810183905290506000805b60208160ff161015612db957828160ff1681518110612d8d57fe5b01602001516001600160f81b03191615612dac57600190910190612db1565b612db9565b600101612d72565b5060608160ff166040519080825280601f01601f191660200182016040528015612dea576020820181803683370190505b50905060005b8260ff168160ff161015612e4657838160ff1681518110612e0d57fe5b602001015160f81c60f81b828260ff1681518110612e2757fe5b60200101906001600160f81b031916908160001a905350600101612df0565b5095945050505050565b61100481565b6060612e606150ce565b6000612e6b8461373a565b9150915080612ec1576040805162461bcd60e51b815260206004820152601f60248201527f756e7265636f676e697a6564207472616e73666572496e207061636b61676500604482015290519081900360640190fd5b6000612ecc83613879565b905063ffffffff811615612f60576040808401516020808601516001600160a01b03166000908152600290915291822054612f07919061340a565b9050612f11615103565b60405180608001604052808660000151815260200183815260200186608001516001600160a01b031681526020018463ffffffff168152509050612f5481613bdf565b955050505050506111e9565b505060408051600081526020810190915291506111e99050565b600082820183811015611c5f576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b6000611c5f83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250613cbb565b60008261302557506000611c62565b8282028284828161303257fe5b0414611c5f5760405162461bcd60e51b81526004018080602001828103825260218152602001806154096021913960400191505060405180910390fd5b6000611c5f83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250613d5d565b60408051600680825260e08201909252606091829190816020015b60608152602001906001900390816130cc57505083519091506130ee90613db7565b816000815181106130fb57fe5b602002602001018190525061311c83602001516001600160a01b0316613dca565b8160018151811061312957fe5b60200260200101819052506000836040015151905060608160405190808252806020026020018201604052801561317457816020015b606081526020019060019003908161315f5790505b50905060005b828110156131c1576131a28660400151828151811061319557fe5b6020026020010151613db7565b8282815181106131ae57fe5b602090810291909101015260010161317a565b506131cb81613ded565b836002815181106131d857fe5b602002602001018190525060608260405190808252806020026020018201604052801561321957816020015b60608152602001906001900390816132045790505b50905060005b8381101561326f576132508760600151828151811061323a57fe5b60200260200101516001600160a01b0316613dca565b82828151811061325c57fe5b602090810291909101015260010161321f565b5061327981613ded565b8460038151811061328657fe5b60200260200101819052506060836040519080825280602002602001820160405280156132c757816020015b60608152602001906001900390816132b25790505b50905060005b84811015613307576132e88860800151828151811061323a57fe5b8282815181106132f457fe5b60209081029190910101526001016132cd565b5061331181613ded565b8560048151811061331e57fe5b60200260200101819052506133408760a0015167ffffffffffffffff16613db7565b8560058151811061334d57fe5b602002602001018190525061336185613ded565b979650505050505050565b61337461512a565b600061337f83613e77565b91509150806133bf5760405162461bcd60e51b81526004018080602001828103825260248152602001806154976024913960400191505060405180910390fd5b61190b82614042565b6000611c5f83836040518060400160405280601881526020017f536166654d6174683a206d6f64756c6f206279207a65726f00000000000000008152506144c6565b600060088211156134335761342c836007198401600a0a63ffffffff612fd416565b9050611c62565b611c5f836008849003600a0a63ffffffff61301616565b604080516020808252818301909252600091606091906020820181803683375050506020810184905290506000805b60208160ff1610156134c057828160ff168151811061349457fe5b01602001516001600160f81b031916156134b3576001909101906134b8565b6134c0565b600101613479565b50600760ff821610156134d8576000925050506111e9565b816005820360ff16815181106134ea57fe5b6020910101516001600160f81b031916602d60f81b1461350f576000925050506111e9565b816001820360ff168151811061352157fe5b6020910101516001600160f81b031916604d60f81b14613546576000925050506111e9565b5060019392505050565b6000816040516020018082805190602001908083835b602083106135855780518252601f199092019160209182019101613566565b6001836020036101000a03801982511681845116808217855250505050505090500191505060405160208183030381529060405280519060200120836040516020018082805190602001908083835b602083106135f35780518252601f1990920191602091820191016135d4565b6001836020036101000a0380198251168184511680821785525050505050509050019150506040516020818303038152906040528051906020012014905092915050565b015190565b613644615082565b600061364f83614528565b915091508061368f5760405162461bcd60e51b815260040180806020018281038252602481526020018061525a6024913960400191505060405180910390fd5b61369761512a565b602080840180516001600160a01b0390811684526040808701518585015291511660009081526002909252812054905b846040015151811015613718576136f5856040015182815181106136e757fe5b60200260200101518361478c565b8560400151828151811061370557fe5b60209081029190910101526001016136c7565b50608084015160408301526005606083015261373382614042565b5050505050565b6137426150ce565b600061374c6150ce565b613754615161565b613765613760866147c5565b6147ea565b90506000805b61377483614834565b1561386c57806137965761378f61378a84614855565b6148a3565b8452613864565b80600114156137c3576137b06137ab84614855565b61495a565b6001600160a01b03166020850152613864565b80600214156137e2576137d861378a84614855565b6040850152613864565b806003141561380a576137f76137ab84614855565b6001600160a01b03166060850152613864565b80600414156138325761381f6137ab84614855565b6001600160a01b03166080850152613864565b806005141561385f5761384761378a84614855565b67ffffffffffffffff1660a085015260019150613864565b61386c565b60010161376b565b5091935090915050915091565b60208101516000906001600160a01b03166139bd578160a0015167ffffffffffffffff164211156138ac575060016111e9565b81604001514710156138c0575060036111e9565b6138c982614974565b61393e57606082015160408084015190516000926001600160a01b0316916127109184818181858888f193505050503d8060008114613924576040519150601f19603f3d011682016040523d82523d6000602084013e613929565b606091505b505090508061393c5750600490506111e9565b505b7f471eb9cc1ffe55ffadf15b32595415eb9d80f22e761d24bd6dffc607e1284d5982602001518360600151846040015160405180846001600160a01b03166001600160a01b03168152602001836001600160a01b03166001600160a01b03168152602001828152602001935050505060405180910390a15060006111e9565b8160a0015167ffffffffffffffff164211156139db575060016111e9565b81516020808401516001600160a01b031660009081526003909152604090205414613a08575060026111e9565b602080830151604080516370a0823160e01b815230600482015290516000936001600160a01b03909316926370a082319261c3509260248083019392829003018187803b158015613a5857600080fd5b5086fa158015613a6c573d6000803e3d6000fd5b50505050506040513d6020811015613a8357600080fd5b50516040840151909150811015613a9e5750600390506111e9565b613aa783614974565b613b5e57600083602001516001600160a01b031663a9059cbb61c350866060015187604001516040518463ffffffff1660e01b815260040180836001600160a01b03166001600160a01b0316815260200182815260200192505050602060405180830381600088803b158015613b1c57600080fd5b5087f1158015613b30573d6000803e3d6000fd5b50505050506040513d6020811015613b4757600080fd5b5051905080613b5c5750600591506111e99050565b505b7f471eb9cc1ffe55ffadf15b32595415eb9d80f22e761d24bd6dffc607e1284d5983602001518460600151856040015160405180846001600160a01b03166001600160a01b03168152602001836001600160a01b03166001600160a01b03168152602001828152602001935050505060405180910390a150600090506111e9565b60408051600480825260a08201909252606091829190816020015b6060815260200190600190039081613bfa5750508351909150613c1c90613db7565b81600081518110613c2957fe5b6020026020010181905250613c418360200151613db7565b81600181518110613c4e57fe5b6020026020010181905250613c6f83604001516001600160a01b0316613dca565b81600281518110613c7c57fe5b6020026020010181905250613c9a836060015163ffffffff16613db7565b81600381518110613ca757fe5b602002602001018190525061109f81613ded565b60008183613d475760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b83811015613d0c578181015183820152602001613cf4565b50505050905090810190601f168015613d395780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b506000838581613d5357fe5b0495945050505050565b60008184841115613daf5760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315613d0c578181015183820152602001613cf4565b505050900390565b6060611c62613dc583614ae2565b614bc8565b60408051600560a21b831860148201526034810190915260609061109f81614bc8565b6060815160001415613e0e57506040805160008152602081019091526111e9565b606082600081518110613e1d57fe5b602002602001015190506000600190505b8351811015613e5e57613e5482858381518110613e4757fe5b6020026020010151614c1a565b9150600101613e2e565b5061109f613e71825160c060ff16614c97565b82614c1a565b613e7f61512a565b6000613e8961512a565b613e91615161565b613e9d613760866147c5565b90506000805b613eac83614834565b1561386c5780613ed257613ec26137ab84614855565b6001600160a01b0316845261403a565b8060011415613f73576060613eee613ee985614855565b614d8f565b90508051604051908082528060200260200182016040528015613f1b578160200160208202803683370190505b50602086015260005b8151811015613f6c57613f49828281518110613f3c57fe5b60200260200101516148a3565b86602001518281518110613f5957fe5b6020908102919091010152600101613f24565b505061403a565b8060021415614015576060613f8a613ee985614855565b90508051604051908082528060200260200182016040528015613fb7578160200160208202803683370190505b50604086015260005b8151811015613f6c57613fe5828281518110613fd857fe5b602002602001015161495a565b86604001518281518110613ff557fe5b6001600160a01b0390921660209283029190910190910152600101613fc0565b806003141561385f5761402a61378a84614855565b63ffffffff166060850152600191505b600101613ea3565b80516001600160a01b031661426c5760005b8160200151518110156142665760008260400151828151811061407357fe5b60200260200101516001600160a01b03166127108460200151848151811061409757fe5b60209081029190910101516040516000818181858888f193505050503d80600081146140df576040519150601f19603f3d011682016040523d82523d6000602084013e6140e4565b606091505b50509050806141a7577f203f9f67a785f4f81be4d48b109aa0c498d1bc8097ecc2627063f480cc5fe73e83600001518460400151848151811061412357fe5b60200260200101518560200151858151811061413b57fe5b6020026020010151866060015160405180856001600160a01b03166001600160a01b03168152602001846001600160a01b03166001600160a01b031681526020018381526020018263ffffffff1663ffffffff16815260200194505050505060405180910390a161425d565b7fd468d4fa5e8fb4adc119b29a983fd0785e04af5cb8b7a3a69a47270c54b6901a8360000151846040015184815181106141dd57fe5b6020026020010151856020015185815181106141f557fe5b6020026020010151866060015160405180856001600160a01b03166001600160a01b03168152602001846001600160a01b03166001600160a01b031681526020018381526020018263ffffffff1663ffffffff16815260200194505050505060405180910390a15b50600101614054565b506144c3565b60005b8160200151518110156144c157600082600001516001600160a01b031663a9059cbb61c350856040015185815181106142a457fe5b6020026020010151866020015186815181106142bc57fe5b60200260200101516040518463ffffffff1660e01b815260040180836001600160a01b03166001600160a01b0316815260200182815260200192505050602060405180830381600088803b15801561431357600080fd5b5087f1158015614327573d6000803e3d6000fd5b50505050506040513d602081101561433e57600080fd5b505190508015614402577fd468d4fa5e8fb4adc119b29a983fd0785e04af5cb8b7a3a69a47270c54b6901a83600001518460400151848151811061437e57fe5b60200260200101518560200151858151811061439657fe5b6020026020010151866060015160405180856001600160a01b03166001600160a01b03168152602001846001600160a01b03166001600160a01b031681526020018381526020018263ffffffff1663ffffffff16815260200194505050505060405180910390a16144b8565b7f203f9f67a785f4f81be4d48b109aa0c498d1bc8097ecc2627063f480cc5fe73e83600001518460400151848151811061443857fe5b60200260200101518560200151858151811061445057fe5b6020026020010151866060015160405180856001600160a01b03166001600160a01b03168152602001846001600160a01b03166001600160a01b031681526020018381526020018263ffffffff1663ffffffff16815260200194505050505060405180910390a15b5060010161426f565b505b50565b600081836145155760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315613d0c578181015183820152602001613cf4565b5082848161451f57fe5b06949350505050565b614530615082565b600061453a615082565b614542615161565b61454e613760866147c5565b90506000805b61455d83614834565b1561386c578061457a5761457361378a84614855565b8452614784565b80600114156145a25761458f6137ab84614855565b6001600160a01b03166020850152614784565b80600214156146315760606145b9613ee985614855565b905080516040519080825280602002602001820160405280156145e6578160200160208202803683370190505b50604086015260005b815181101561462a57614607828281518110613f3c57fe5b8660400151828151811061461757fe5b60209081029190910101526001016145ef565b5050614784565b80600314156146c6576060614648613ee985614855565b90508051604051908082528060200260200182016040528015614675578160200160208202803683370190505b50606086015260005b815181101561462a57614696828281518110613fd857fe5b866060015182815181106146a657fe5b6001600160a01b039092166020928302919091019091015260010161467e565b806004141561475b5760606146dd613ee985614855565b9050805160405190808252806020026020018201604052801561470a578160200160208202803683370190505b50608086015260005b815181101561462a5761472b828281518110613fd857fe5b8660800151828151811061473b57fe5b6001600160a01b0390921660209283029190910190910152600101614713565b806005141561385f5761477061378a84614855565b67ffffffffffffffff1660a0850152600191505b600101614554565b600060088211156147ae5761342c836007198401600a0a63ffffffff61301616565b611c5f836008849003600a0a63ffffffff612fd416565b6147cd615181565b506040805180820190915281518152602082810190820152919050565b6147f2615161565b6147fb82614e60565b61480457600080fd5b60006148138360200151614e90565b60208085015160408051808201909152868152920190820152915050919050565b600061483e615181565b505080518051602091820151919092015191011190565b61485d615181565b61486682614834565b61486f57600080fd5b6020820151600061487f82614ef3565b80830160209586015260408051808201909152908152938401919091525090919050565b8051600090158015906148b857508151602110155b6148c157600080fd5b60006148d08360200151614e90565b9050808360000151101561492b576040805162461bcd60e51b815260206004820152601a60248201527f6c656e677468206973206c657373207468616e206f6666736574000000000000604482015290519081900360640190fd5b82516020808501518301805192849003929183101561495157826020036101000a820491505b50949350505050565b805160009060151461496b57600080fd5b611c62826148a3565b600080805260066020527f54cdd369e4e8a8515e52ca72ec816c2101831ad1f18bf44102ed171459c9b4f8541580156149ad5750600554155b156149ef5760008052600660205269021e19e0c9bab24000007f54cdd369e4e8a8515e52ca72ec816c2101831ad1f18bf44102ed171459c9b4f8556154606005555b6020808301516001600160a01b0316600090815260069091526040902054801580614a1d5750808360400151105b15614a2c5760009150506111e9565b6020808401516001600160a01b039081166000908152600783526040808220606088015190931682529190925290819020908401518154614a729163ffffffff612f7a16565b8155600554420160018201819055606085015160208087015160408089015181519081529283019490945283516001600160a01b039384169493909116927f3fb83143cd331170da18fb1e8564d97e8ec39264b6ecb1ba248ea7596ab07258928290030190a35060019392505050565b604080516020808252818301909252606091829190602082018180368337505050602081018490529050600067ffffffffffffffff198416614b2657506018614b4a565b6fffffffffffffffffffffffffffffffff198416614b4657506010614b4a565b5060005b6020811015614b8057818181518110614b5f57fe5b01602001516001600160f81b03191615614b7857614b80565b600101614b4a565b60008160200390506060816040519080825280601f01601f191660200182016040528015614bb5576020820181803683370190505b5080830196909652508452509192915050565b606081516001148015614bfa5750607f60f81b82600081518110614be857fe5b01602001516001600160f81b03191611155b15614c065750806111e9565b611c62614c188351608060ff16614c97565b835b6060806040519050835180825260208201818101602087015b81831015614c4b578051835260209283019201614c33565b50855184518101855292509050808201602086015b81831015614c78578051835260209283019201614c60565b508651929092011591909101601f01601f191660405250905092915050565b6060680100000000000000008310614ce7576040805162461bcd60e51b815260206004820152600e60248201526d696e70757420746f6f206c6f6e6760901b604482015290519081900360640190fd5b60408051600180825281830190925260609160208201818036833701905050905060378411614d415782840160f81b81600081518110614d2357fe5b60200101906001600160f81b031916908160001a9053509050611c62565b6060614d4c85614ae2565b90508381510160370160f81b82600081518110614d6557fe5b60200101906001600160f81b031916908160001a905350614d868282614c1a565b95945050505050565b6060614d9a82614e60565b614da357600080fd5b6000614dae83615026565b9050606081604051908082528060200260200182016040528015614dec57816020015b614dd9615181565b815260200190600190039081614dd15790505b5090506000614dfe8560200151614e90565b60208601510190506000805b84811015614e5557614e1b83614ef3565b9150604051806040016040528083815260200184815250848281518110614e3e57fe5b602090810291909101015291810191600101614e0a565b509195945050505050565b8051600090614e71575060006111e9565b6020820151805160001a9060c0821015613546576000925050506111e9565b8051600090811a6080811015614eaa5760009150506111e9565b60b8811080614ec5575060c08110801590614ec5575060f881105b15614ed45760019150506111e9565b60c0811015614ee85760b5190190506111e9565b60f5190190506111e9565b80516000908190811a6080811015614f0e576001915061501f565b60b8811015614f2357607e198101915061501f565b60c0811015614f9d57600060b78203600186019550806020036101000a865104915060018101820193505080831015614f97576040805162461bcd60e51b81526020600482015260116024820152706164646974696f6e206f766572666c6f7760781b604482015290519081900360640190fd5b5061501f565b60f8811015614fb25760be198101915061501f565b600060f78203600186019550806020036101000a86510491506001810182019350508083101561501d576040805162461bcd60e51b81526020600482015260116024820152706164646974696f6e206f766572666c6f7760781b604482015290519081900360640190fd5b505b5092915050565b8051600090615037575060006111e9565b6000809050600061504b8460200151614e90565b602085015185519181019250015b808210156150795761506a82614ef3565b60019093019290910190615059565b50909392505050565b6040518060c001604052806000801916815260200160006001600160a01b03168152602001606081526020016060815260200160608152602001600067ffffffffffffffff1681525090565b6040805160c081018252600080825260208201819052918101829052606081018290526080810182905260a081019190915290565b60408051608081018252600080825260208201819052918101829052606081019190915290565b604051806080016040528060006001600160a01b031681526020016060815260200160608152602001600063ffffffff1681525090565b6040518060400160405280615174615181565b8152602001600081525090565b60405180604001604052806000815260200160008152509056fe6f6e6c79207374616b696e672073797374656d20636f6e74726163742063616e2063616c6c20746869732066756e6374696f6e746865206d6573736167652073656e646572206d75737420626520696e63656e746976697a6520636f6e7472616374626e62206c61726765207472616e73666572206c696d697420746f6f20736d616c6c466f72206d696e69546f6b656e2c20746865207472616e7366657220616d6f756e74206d757374206e6f74206265206c657373207468616e2031756e7265636f676e697a6564207472616e736665724f75742073796e207061636b61676565787069726554696d65206d7573742062652074776f206d696e75746573206c61746572616d6f756e7420697320746f6f206c617267652c20657863656564206d6178696d756d206265703220746f6b656e20616d6f756e7474686520636f6e747261637420686173206e6f74206265656e20626f756e6420746f20616e79206265703220746f6b656e726563656976656420424e4220616d6f756e742073686f756c64206265206e6f206c657373207468616e207468652073756d206f66207472616e736665724f757420424e4220616d6f756e7420616e64206d696e696d756d2072656c6179466565616d6f756e7420697320746f6f206c617267652c2075696e74323536206f766572666c6f774c656e677468206f6620726563697069656e74416464727320646f65736e277420657175616c20746f206c656e677468206f6620726566756e644164647273696e76616c6964207472616e7366657220616d6f756e743a20707265636973696f6e206c6f737320696e20616d6f756e7420636f6e76657273696f6e536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f77726563656976656420424e4220616d6f756e742073686f756c64206265206e6f206c657373207468616e20746865206d696e696d756d2072656c6179466565746865206d6573736167652073656e646572206d75737420626520676f7665726e616e636520636f6e7472616374756e7265636f676e697a6564207472616e736665724f75742061636b207061636b6167654c656e677468206f6620726563697069656e74416464727320646f65736e277420657175616c20746f206c656e677468206f6620616d6f756e7473746865206d6573736167652073656e646572206d7573742062652063726f737320636861696e20636f6e7472616374746865206d73672073656e646572206d75737420626520746f6b656e4d616e6167657274686520636f6e7472616374206e6f7420696e69742079657400000000000000726563656976656420424e4220616d6f756e742073686f756c64206265206e6f206c657373207468616e207468652073756d206f66207472616e7366657220424e4220616d6f756e7420616e642072656c6179466565696e76616c696420726563656976656420424e4220616d6f756e743a20707265636973696f6e206c6f737320696e20616d6f756e7420636f6e76657273696f6ea26469706673582212209726a2a60f2d1ca244d55a5f51d27ccf7f8fc785e6a9e83316007edb5cad7eae64736f6c63430006040033", + }, + { + ContractAddr: common.HexToAddress(CrossChainContract), + CommitUrl: "https://github.com/bnb-chain/bsc-genesis-contract/commit/6c5d91c7a089939e1b7234f79b631deb34fb34a8", + Code: "608060405234801561001057600080fd5b50600436106103995760003560e01c8063718a8aa8116101e9578063c27cdcfb1161010f578063dc927faf116100ad578063f7a251d71161007c578063f7a251d714610b2f578063f9a2bbc714610ba7578063fc3e590814610baf578063fd6a687914610bb757610399565b8063dc927faf14610af7578063e1c7392a14610aff578063e3b0480514610b07578063e6400bbe14610b2757610399565b8063ccc108d7116100e9578063ccc108d714610ab0578063d31f968d14610ab8578063d76a867514610ae7578063dc40433114610aef57610399565b8063c27cdcfb14610a80578063c780e9de14610aa0578063c81b166214610aa857610399565b80638cc8f56111610187578063a78abc1611610156578063a78abc16146109b2578063ab51bb96146109ba578063ac431751146109c2578063b0355f5b1461078157610399565b80638cc8f5611461088757806396713da91461099a5780639dc09262146109a2578063a1a11bf5146109aa57610399565b806375d47a0a116101c357806375d47a0a146108a75780637942fd05146108af57806384013b6a146108b7578063863fe4ab1461099257610399565b8063718a8aa81461088f578063719482d51461089757806374f079b81461089f57610399565b8063422f9050116102ce57806363e1394e1161026c5780636de380bd1161023b5780636de380bd146108575780636e47a51a1461085f5780636e47b4821461087f57806370fd5bad1461088757610399565b806363e1394e146107ff5780636a3cb34d146108075780636bacff2c1461080f5780636c46aa681461080757610399565b80634bf6c882116102a85780634bf6c882146107b957806351e80672146107c15780635692ddd3146107c95780635f832177146107d157610399565b8063422f90501461078957806343756e5c146107a9578063493279b1146107b157610399565b8063299b533d1161033b578063308325f411610315578063308325f4146106155780633a648b151461061d5780633bdc47a6146106595780633dffc3871461078157610399565b8063299b533d146105a35780632af6f399146105d75780632ff32aea146105f457610399565b806314b3023b1161037757806314b3023b146104015780631d1309351461041b5780631e275ae11461043757806322556cdc1461059b57610399565b806305e682581461039e5780630bee7a67146103bc5780630e2374a5146103dd575b600080fd5b6103a6610bbf565b6040805160ff9092168252519081900360200190f35b6103c4610bc4565b6040805163ffffffff9092168252519081900360200190f35b6103e5610bc9565b604080516001600160a01b039092168252519081900360200190f35b610409610bcf565b60408051918252519081900360200190f35b610423610bd5565b604080519115158252519081900360200190f35b610599600480360361010081101561044e57600080fd5b81018160a081016080820135600160201b81111561046b57600080fd5b82018360208201111561047d57600080fd5b803590602001918460018302840111600160201b8311171561049e57600080fd5b919390929091602081019035600160201b8111156104bb57600080fd5b8201836020820111156104cd57600080fd5b803590602001918460018302840111600160201b831117156104ee57600080fd5b919390929091602081019035600160201b81111561050b57600080fd5b82018360208201111561051d57600080fd5b803590602001918460018302840111600160201b8311171561053e57600080fd5b919390929091602081019035600160201b81111561055b57600080fd5b82018360208201111561056d57600080fd5b803590602001918460018302840111600160201b8311171561058e57600080fd5b509092509050610bde565b005b6104096112d0565b6105c0600480360360208110156105b957600080fd5b50356112d5565b6040805161ffff9092168252519081900360200190f35b610423600480360360208110156105ed57600080fd5b50356112eb565b6105fc611300565b60408051600792830b90920b8252519081900360200190f35b610409611309565b61063d6004803603602081101561063357600080fd5b503560ff1661130f565b604080516001600160401b039092168252519081900360200190f35b61070c6004803603606081101561066f57600080fd5b60ff82351691602081013591810190606081016040820135600160201b81111561069857600080fd5b8201836020820111156106aa57600080fd5b803590602001918460018302840111600160201b831117156106cb57600080fd5b91908080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092955061132a945050505050565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561074657818101518382015260200161072e565b50505050905090810190601f1680156107735780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6103a66113a0565b6104236004803603602081101561079f57600080fd5b503560ff166113a5565b6103e56113ba565b6105c06113c0565b6103a66113c5565b6103e56113ca565b6104096113d0565b610599600480360360408110156107e757600080fd5b506001600160a01b0381358116916020013516611400565b61040961161b565b6105c0611643565b61082c6004803603602081101561082557600080fd5b5035611648565b6040805161ffff90941684526001600160801b03909216602084015282820152519081900360600190f35b610409611677565b6103e56004803603602081101561087557600080fd5b503560ff1661169e565b6103e56116b9565b6103a6611643565b6103a66116bf565b6105c06113a0565b6104096116c4565b6103e56116ca565b6103a66116d0565b610599600480360360a08110156108cd57600080fd5b810190602081018135600160201b8111156108e757600080fd5b8201836020820111156108f957600080fd5b803590602001918460018302840111600160201b8311171561091a57600080fd5b919390929091602081019035600160201b81111561093757600080fd5b82018360208201111561094957600080fd5b803590602001918460018302840111600160201b8311171561096a57600080fd5b919350915080356001600160401b03908116916020810135909116906040013560ff166116d5565b610409612a0d565b6103a6612a15565b6103e5612a1a565b6103e5612a20565b610423612a26565b6103c4610bbf565b610599600480360360408110156109d857600080fd5b810190602081018135600160201b8111156109f257600080fd5b820183602082011115610a0457600080fd5b803590602001918460018302840111600160201b83111715610a2557600080fd5b919390929091602081019035600160201b811115610a4257600080fd5b820183602082011115610a5457600080fd5b803590602001918460018302840111600160201b83111715610a7557600080fd5b509092509050612a2f565b61063d60048036036020811015610a9657600080fd5b503560ff166134e4565b6104096134ff565b6103e5613523565b610599613529565b61042360048036036040811015610ace57600080fd5b5080356001600160a01b0316906020013560ff16613738565b61070c613758565b610409613777565b6103e561377d565b610599613783565b61063d60048036036020811015610b1d57600080fd5b503560ff16613b3a565b610599613b55565b61059960048036036060811015610b4557600080fd5b60ff8235169190810190604081016020820135600160201b811115610b6957600080fd5b820183602082011115610b7b57600080fd5b803590602001918460018302840111600160201b83111715610b9c57600080fd5b919350915035613d2f565b6103e5613e80565b6103a6613e86565b6103e5613e8b565b600081565b606481565b61200181565b60015481565b600b5460ff1681565b60005460ff16610c31576040805162461bcd60e51b81526020600482015260196024820152781d1a194818dbdb9d1c9858dd081b9bdd081a5b9a5d081e595d603a1b604482015290519081900360640190fd5b604080516337d7f9c160e21b81526001600160401b038b35166004820181905291516110039163df5fe704916024808301926020929190829003018186803b158015610c7c57600080fd5b505afa158015610c90573d6000803e3d6000fd5b505050506040513d6020811015610ca657600080fd5b5051610ce35760405162461bcd60e51b81526004018080602001828103825260238152602001806149196023913960400191505060405180910390fd5b604080516337d7f9c160e21b815260208c8101356001600160401b03166004830181905292516110039263df5fe704926024808301939192829003018186803b158015610d2f57600080fd5b505afa158015610d43573d6000803e3d6000fd5b505050506040513d6020811015610d5957600080fd5b5051610d965760405162461bcd60e51b81526004018080602001828103825260238152602001806149196023913960400191505060405180910390fd5b60608b013560ff81166000908152600560205260409020546001600160401b03909116906001600160a01b0316610e0f576040805162461bcd60e51b815260206004820152601860248201527718da185b9b995b081a5cc81b9bdd081cdd5c1c1bdc9d195960421b604482015290519081900360640190fd5b600b5460ff1615610e53576040805162461bcd60e51b81526020600482015260096024820152681cdd5cdc195b99195960ba1b604482015290519081900360640190fd5b8888604051808383808284376040519201829003822094508f93508e9250819050838380828437808301925050509250505060405180910390201415610ecf576040805162461bcd60e51b815260206004820152600c60248201526b1cd85b59481c185e5b1bd85960a21b604482015290519081900360640190fd5b60606001600160401b0360408e01358116908e83013516610ef08282613e91565b80516020808301919091206000818152600e9092526040909120549194509060ff1615610f59576040805162461bcd60e51b8152602060048201526012602482015271185b1c9958591e4818da185b1b195b99d95960721b604482015290519081900360640190fd5b6000908152600e60205260408120805460ff191660011790558f8160200201356001600160401b0316905060608f8f8080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f82011690508083019250505050505050905060608c8c8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201829052506040805163cba510a960e01b81526001600160401b038a16600482015290519596509094611003945063cba510a9935060248083019350602092829003018186803b15801561104f57600080fd5b505afa158015611063573d6000803e3d6000fd5b505050506040513d602081101561107957600080fd5b505160408051808201909152600381526269626360e81b60208201529091506110a6908290898686613ed9565b6110ef576040805162461bcd60e51b81526020600482015260156024820152740696e76616c6964206d65726b6c652070726f6f663605c1b604482015290519081900360640190fd5b5050505060008f60016004811061110257fe5b60200201356001600160401b0316905060608d8d8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050604080516020601f8f018190048102820181019092528d815293945060609392508d91508c908190840183828082843760009201829052506040805163cba510a960e01b81526001600160401b038a16600482015290519596509094611003945063cba510a9935060248083019350602092829003018186803b1580156111ce57600080fd5b505afa1580156111e2573d6000803e3d6000fd5b505050506040513d60208110156111f857600080fd5b505160408051808201909152600381526269626360e81b6020820152909150611225908290898686613ed9565b61126e576040805162461bcd60e51b8152602060048201526015602482015274696e76616c6964206d65726b6c652070726f6f663160581b604482015290519081900360640190fd5b5050505061127a613fd6565b604080516001600160401b038416815260ff83166020820152815133927f039eb91179ffd7d3b6e97f8ea106e748e827f910b872375dbc9c14a362319c3c928290030190a2505050505050505050505050505050565b603281565b600d6020526000908152604090205461ffff1681565b600e6020526000908152604090205460ff1681565b60045460070b81565b60025481565b600a602052600090815260409020546001600160401b031681565b60606000825160210190506060816040519080825280601f01601f191660200182016040528015611362576020820181803683370190505b506021810186905260018101879052828152905060418101600061138586614054565b5090506113948183885161405e565b50909695505050505050565b600181565b60096020526000908152604090205460ff1681565b61100181565b606181565b600881565b61200081565b604080517710d05390d15317d514905394d1915497d41493d413d4d05360421b8152905190819003601801902081565b6040805163569e4ed360e11b815233600482015290516000916110009163ad3c9da691602480820192602092909190829003018186803b15801561144357600080fd5b505afa158015611457573d6000803e3d6000fd5b505050506040513d602081101561146d57600080fd5b505160408051633d42651560e11b8152905191925060009161100091637a84ca2a916004808301926020929190829003018186803b1580156114ae57600080fd5b505afa1580156114c2573d6000803e3d6000fd5b505050506040513d60208110156114d857600080fd5b50519050806114e5575060155b6000821180156114f55750808211155b611534576040805162461bcd60e51b815260206004820152600b60248201526a1b9bdd0818d8589a5b995d60aa1b604482015290519081900360640190fd5b604080516001600160a01b038087166020808401919091529086168284015282518083038401815260608301808552815191909201207710d05390d15317d514905394d1915497d41493d413d4d05360421b90915291519081900360780190206000906115a1908361409f565b905080156116135760408051630911a2c160e11b81526001600160a01b03888116600483015287166024820152905161100491631223458291604480830192600092919082900301818387803b1580156115fa57600080fd5b505af115801561160e573d6000803e3d6000fd5b505050505b505050505050565b604080516f14d554d411539117d41493d413d4d05360821b8152905190819003601001902081565b600281565b600c602052600090815260409020805460019091015461ffff8216916201000090046001600160801b03169083565b604080516e149153d4115397d41493d413d4d053608a1b8152905190819003600f01902081565b6005602052600090815260409020546001600160a01b031681565b61100581565b601081565b60035481565b61100881565b600b81565b60005460ff16611728576040805162461bcd60e51b81526020600482015260196024820152781d1a194818dbdb9d1c9858dd081b9bdd081a5b9a5d081e595d603a1b604482015290519081900360640190fd5b60408051630a83aaa960e31b815233600482015290516110069163541d5548916024808301926020929190829003018186803b15801561176757600080fd5b505afa15801561177b573d6000803e3d6000fd5b505050506040513d602081101561179157600080fd5b50516117e4576040805162461bcd60e51b815260206004820152601f60248201527f746865206d73672073656e646572206973206e6f7420612072656c6179657200604482015290519081900360640190fd5b739fb29aac15b9a4b7f17c3385939b007540f4d79133148061181957507337b8516a0f88e65d677229b402ec6c1e0e33300433145b6118545760405162461bcd60e51b815260040180806020018281038252602a8152602001806148bd602a913960400191505060405180910390fd5b60ff8116600090815260086020526040902054829082906001600160401b0390811690831681146118c4576040805162461bcd60e51b815260206004820152601560248201527439b2b8bab2b731b2903737ba1034b71037b93232b960591b604482015290519081900360640190fd5b60ff8216600090815260086020908152604091829020805467ffffffffffffffff1916600185016001600160401b039081169190911790915582516337d7f9c160e21b81529089166004820152915188926110039263df5fe70492602480840193829003018186803b15801561193957600080fd5b505afa15801561194d573d6000803e3d6000fd5b505050506040513d602081101561196357600080fd5b50516119a05760405162461bcd60e51b81526004018080602001828103825260238152602001806149196023913960400191505060405180910390fd5b60ff851660009081526005602052604090205485906001600160a01b0316611a0a576040805162461bcd60e51b815260206004820152601860248201527718da185b9b995b081a5cc81b9bdd081cdd5c1c1bdc9d195960421b604482015290519081900360640190fd5b60ff86166000908152600a6020526040902054889087906001600160401b039081169083161015611a73576040805162461bcd60e51b815260206004820152600e60248201526d3a37b79037b632103432b0b232b960911b604482015290519081900360640190fd5b60ff81166000908152600a60205260409020546001600160401b03838116911614611ac55760ff81166000908152600a60205260409020805467ffffffffffffffff19166001600160401b0384161790555b600b5460ff1615611b09576040805162461bcd60e51b81526020600482015260096024820152681cdd5cdc195b99195960ba1b604482015290519081900360640190fd5b60608e8e8080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f82011690508083019250505050505050905060608d8d8080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050509050611c4d6110036001600160a01b031663cba510a98e6040518263ffffffff1660e01b815260040180826001600160401b03166001600160401b0316815260200191505060206040518083038186803b158015611bf657600080fd5b505afa158015611c0a573d6000803e3d6000fd5b505050506040513d6020811015611c2057600080fd5b505160408051808201909152600381526269626360e81b6020820152611c468e8e613e91565b8585613ed9565b611c95576040805162461bcd60e51b815260206004820152601460248201527334b73b30b634b21036b2b935b63290383937b7b360611b604482015290519081900360640190fd5b60408051631bb5062960e31b81526001600160401b038e16600482015290516000916110039163dda8314891602480820192602092909190829003018186803b158015611ce157600080fd5b505afa158015611cf5573d6000803e3d6000fd5b505050506040513d6020811015611d0b57600080fd5b505190508b8b600080806060611d208961438a565b935093509350935083611de2578460ff16866001600160401b03167ff7b2e42d694eb1100184aae86d4245d9e46966100b1dc7e723275b98326854ac8b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015611d9a578181015183820152602001611d82565b50505050905090810190601f168015611dc75780820380516001836020036101000a031916815260200191505b509250505060405180910390a35050505050505050506129fd565b6040805160ff85811682529151918716916001600160401b038916917f36afdaf439a8f43fe72135135d804ae620b37a474f0943b5b85f6788312cad40919081900360200190a360ff83166123675760ff85166000818152600560209081526040808320548151631182b87560e01b815260048101958652602481019283528651604482015286516001600160a01b03909216958695631182b875958d958a9593949093606490910192918601918190849084905b83811015611eaf578181015183820152602001611e97565b50505050905090810190601f168015611edc5780820380516001836020036101000a031916815260200191505b509350505050600060405180830381600087803b158015611efc57600080fd5b505af1925050508015611fe057506040513d6000823e601f3d908101601f191682016040526020811015611f2f57600080fd5b8101908080516040519392919084600160201b821115611f4e57600080fd5b908301906020820185811115611f6357600080fd5b8251600160201b811182820188101715611f7c57600080fd5b82525081516020918201929091019080838360005b83811015611fa9578181015183820152602001611f91565b50505050905090810190601f168015611fd65780820380516001836020036101000a031916815260200191505b5060405250505060015b6122f2576040516000815260443d1015611ffc57506000612097565b60046000803e60005160e01c6308c379a0811461201d576000915050612097565b60043d036004833e81513d60248201116001600160401b038211171561204857600092505050612097565b80830180516001600160401b03811115612069576000945050505050612097565b8060208301013d860181111561208757600095505050505050612097565b601f01601f191660405250925050505b806120a257506121b4565b60ff87166000908152600760205260408120546120d9916001600160401b039091169089906120d4906002908861132a565b61443a565b60ff8716600090815260076020908152604080832080546001600160401b038082166001011667ffffffffffffffff19909116179055805182815284518184015284516001600160a01b038716947ff91a8f63e5b3e0e89e5f93e1915a7805f3c52d9a73b3c09769785c2c7bf87acf948794849390840192918601918190849084905b8381101561217457818101518382015260200161215c565b50505050905090810190601f1680156121a15780820380516001836020036101000a031916815260200191505b509250505060405180910390a2506122ed565b3d8080156121de576040519150601f19603f3d011682016040523d82523d6000602084013e6121e3565b606091505b5060ff8716600090815260076020526040812054612216916001600160401b039091169089906120d4906002908861132a565b60ff8716600090815260076020908152604080832080546001600160401b038082166001011667ffffffffffffffff19909116179055805182815284518184015284516001600160a01b038716947f63ac299d6332d1cc4e61b81e59bc00c0ac7c798addadf33840f1307cd2977351948794849390840192918601918190849084905b838110156122b1578181015183820152602001612299565b50505050905090810190601f1680156122de5780820380516001836020036101000a031916815260200191505b509250505060405180910390a2505b612361565b80511561235f5760ff871660009081526007602052604081205461232b916001600160401b039091169089906120d4906001908661132a565b60ff8716600090815260076020526040902080546001600160401b038082166001011667ffffffffffffffff199091161790555b505b50612935565b60ff83166001141561260b5760ff8516600081815260056020908152604080832054815163831d65d160e01b815260048101958652602481019283528651604482015286516001600160a01b0390921695869563831d65d1958d958a9593949093606490910192918601918190849084905b838110156123f15781810151838201526020016123d9565b50505050905090810190601f16801561241e5780820380516001836020036101000a031916815260200191505b509350505050600060405180830381600087803b15801561243e57600080fd5b505af192505050801561244f575060015b612361576040516000815260443d101561246b57506000612506565b60046000803e60005160e01c6308c379a0811461248c576000915050612506565b60043d036004833e81513d60248201116001600160401b03821117156124b757600092505050612506565b80830180516001600160401b038111156124d8576000945050505050612506565b8060208301013d86018111156124f657600095505050505050612506565b601f01601f191660405250925050505b806125115750612576565b60408051602080825283518183015283516001600160a01b038616937ff91a8f63e5b3e0e89e5f93e1915a7805f3c52d9a73b3c09769785c2c7bf87acf938693909283928301918501908083836000831561217457818101518382015260200161215c565b3d8080156125a0576040519150601f19603f3d011682016040523d82523d6000602084013e6125a5565b606091505b5060408051602080825283518183015283516001600160a01b038616937f63ac299d6332d1cc4e61b81e59bc00c0ac7c798addadf33840f1307cd297735193869390928392830191850190808383600083156122b1578181015183820152602001612299565b60ff8316600214156129355760ff8516600081815260056020908152604080832054815163c8509d8160e01b815260048101958652602481019283528651604482015286516001600160a01b0390921695869563c8509d81958d958a9593949093606490910192918601918190849084905b8381101561269557818101518382015260200161267d565b50505050905090810190601f1680156126c25780820380516001836020036101000a031916815260200191505b509350505050600060405180830381600087803b1580156126e257600080fd5b505af19250505080156126f3575060015b612933576040516000815260443d101561270f575060006127aa565b60046000803e60005160e01c6308c379a081146127305760009150506127aa565b60043d036004833e81513d60248201116001600160401b038211171561275b576000925050506127aa565b80830180516001600160401b0381111561277c5760009450505050506127aa565b8060208301013d860181111561279a576000955050505050506127aa565b601f01601f191660405250925050505b806127b5575061285e565b816001600160a01b03167ff91a8f63e5b3e0e89e5f93e1915a7805f3c52d9a73b3c09769785c2c7bf87acf826040518080602001828103825283818151815260200191508051906020019080838360005b8381101561281e578181015183820152602001612806565b50505050905090810190601f16801561284b5780820380516001836020036101000a031916815260200191505b509250505060405180910390a250612933565b3d808015612888576040519150601f19603f3d011682016040523d82523d6000602084013e61288d565b606091505b50816001600160a01b03167f63ac299d6332d1cc4e61b81e59bc00c0ac7c798addadf33840f1307cd2977351826040518080602001828103825283818151815260200191508051906020019080838360005b838110156128f75781810151838201526020016128df565b50505050905090810190601f1680156129245780820380516001836020036101000a031916815260200191505b509250505060405180910390a2505b505b60ff80861660009081526009602052604090205461100591636f93d2e6918a91339187911680612967575060ff881615155b604080516001600160e01b031960e088901b1681526001600160a01b039586166004820152939094166024840152604483019190915215156064820152905160848083019260209291908290030181600087803b1580156129c757600080fd5b505af11580156129db573d6000803e3d6000fd5b505050506040513d60208110156129f157600080fd5b50505050505050505050505b5050505050505050505050505050565b630100610081565b600981565b61100781565b61100681565b60005460ff1681565b3361100714612a6f5760405162461bcd60e51b815260040180806020018281038252602e815260200180614845602e913960400191505060405180910390fd5b600b5460ff1615612ab3576040805162461bcd60e51b81526020600482015260096024820152681cdd5cdc195b99195960ba1b604482015290519081900360640190fd5b612b1c84848080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050604080518082019091526012815271626174636853697a65466f724f7261636c6560701b602082015291506145d49050565b15612bb757604080516020601f8401819004810282018101909252828152600091612b5f918585808385018382808284376000920191909152506146bb92505050565b90506127108111158015612b745750600a8110155b612baf5760405162461bcd60e51b81526004018080602001828103825260328152602001806148e76032913960400191505060405180910390fd5b600155613452565b612c2084848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505060408051808201909152601281527118591913dc955c19185d1950da185b9b995b60721b602082015291506145d49050565b15612da857606082828080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505082519293505060169091149050612ca35760405162461bcd60e51b815260040180806020018281038252605a81526020018061475e605a913960600191505060405180910390fd5b60018101516002820151601683015160ff82161590612cc1816146c0565b612d12576040805162461bcd60e51b815260206004820152601960248201527f61646472657373206973206e6f74206120636f6e747261637400000000000000604482015290519081900360640190fd5b60ff8416600081815260056020908152604080832080546001600160a01b0319166001600160a01b038716908117909155808452600683528184208585528352818420805460ff199081166001179091556009909352818420805490931687151517909255519092917f7e3b6af43092577ee20e60eaa1d9b114a7031305c895ee7dd3ffe17196d2e1e091a35050505050613452565b612e1584848080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050604080518082019091526016815275195b98589b1953dc911a5cd8589b1950da185b9b995b60521b602082015291506145d49050565b15612f4657606082828080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505082519293505060029091149050612e985760405162461bcd60e51b815260040180806020018281038252604a815260200180614873604a913960600191505060405180910390fd5b600181810151600283015160ff80831660009081526005602052604090205492939192908316909114906001600160a01b03168015612f3c576001600160a01b038116600090815260066020908152604080832060ff881680855290835292819020805460ff1916861515908117909155815190815290517fa3132e3f9819fbddc7f0ed6d38d7feef59aa95112090b7c592f5cb5bc4aa4adc929181900390910190a25b5050505050613452565b612faa84848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505060408051808201909152600d81526c73757370656e6451756f72756d60981b602082015291506145d49050565b156130da5760028114612fee5760405162461bcd60e51b815260040180806020018281038252602d8152602001806147ec602d913960400191505060405180910390fd5b604080516020601f840181900481028201810190925282815260009161302c918585808385018382808284376000920191909152506146bb92505050565b905060008161ffff16118015613046575060648161ffff16105b613090576040805162461bcd60e51b8152602060048201526016602482015275696e76616c69642073757370656e642071756f72756d60501b604482015290519081900360640190fd5b604080516f14d554d411539117d41493d413d4d05360821b815281519081900360100190206000908152600d60205220805461ffff90921661ffff19909216919091179055613452565b61313d84848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505060408051808201909152600c81526b72656f70656e51756f72756d60a01b602082015291506145d49050565b1561326b57600281146131815760405162461bcd60e51b815260040180806020018281038252602c815260200180614819602c913960400191505060405180910390fd5b604080516020601f84018190048102820181019092528281526000916131bf918585808385018382808284376000920191909152506146bb92505050565b905060008161ffff161180156131d9575060648161ffff16105b613222576040805162461bcd60e51b8152602060048201526015602482015274696e76616c69642072656f70656e2071756f72756d60581b604482015290519081900360640190fd5b604080516e149153d4115397d41493d413d4d053608a1b8152815190819003600f0190206000908152600d60205220805461ffff90921661ffff19909216919091179055613452565b6132d684848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505060408051808201909152601481527363616e63656c5472616e7366657251756f72756d60601b602082015291506145d49050565b15613415576002811461331a5760405162461bcd60e51b81526004018080602001828103825260348152602001806147b86034913960400191505060405180910390fd5b604080516020601f8401819004810282018101909252828152600091613358918585808385018382808284376000920191909152506146bb92505050565b905060008161ffff16118015613372575060648161ffff16105b6133c3576040805162461bcd60e51b815260206004820152601e60248201527f696e76616c69642063616e63656c207472616e736665722071756f72756d0000604482015290519081900360640190fd5b604080517710d05390d15317d514905394d1915497d41493d413d4d05360421b815281519081900360180190206000908152600d60205220805461ffff90921661ffff19909216919091179055613452565b6040805162461bcd60e51b815260206004820152600d60248201526c756e6b6e6f776e20706172616d60981b604482015290519081900360640190fd5b7f6cdb0ac70ab7f2e2d035cca5be60d89906f2dede7648ddbd7402189c1eeed17a848484846040518080602001806020018381038352878782818152602001925080828437600083820152601f01601f191690910184810383528581526020019050858580828437600083820152604051601f909101601f19169092018290039850909650505050505050a150505050565b6008602052600090815260409020546001600160401b031681565b7fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a47081565b61100281565b6040805163569e4ed360e11b815233600482015290516000916110009163ad3c9da691602480820192602092909190829003018186803b15801561356c57600080fd5b505afa158015613580573d6000803e3d6000fd5b505050506040513d602081101561359657600080fd5b505160408051633d42651560e11b8152905191925060009161100091637a84ca2a916004808301926020929190829003018186803b1580156135d757600080fd5b505afa1580156135eb573d6000803e3d6000fd5b505050506040513d602081101561360157600080fd5b505190508061360e575060155b60008211801561361e5750808211155b61365d576040805162461bcd60e51b815260206004820152600b60248201526a1b9bdd0818d8589a5b995d60aa1b604482015290519081900360640190fd5b600b5460ff166136a4576040805162461bcd60e51b815260206004820152600d60248201526c1b9bdd081cdd5cdc195b991959609a1b604482015290519081900360640190fd5b604080516e149153d4115397d41493d413d4d053608a1b8152905190819003600f0190206000906136f5907fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a47061409f565b9050801561373357600b805460ff1916905560405133907f899fe8c37dc61708a3aaa99c4bf143346c1d1da69af79be9e8920c0a6785b75290600090a25b505050565b600660209081526000928352604080842090915290825290205460ff1681565b6040518060400160405280600381526020016269626360e81b81525081565b610e1081565b61100381565b60005460ff16156137db576040805162461bcd60e51b815260206004820152601960248201527f74686520636f6e747261637420616c726561647920696e697400000000000000604482015290519081900360640190fd5b7f1471eb6eb2c5e789fc3de43f8ce62938c7d1836ec861730447e2ada8fd81017b80546001600160a01b0319908116611008179091557f92e85d02570a8092d09a6e3a57665bc3815a2699a4074001bf1ccabf660f5a36805460ff199081169091557fd8af288fc1c8680b4f4706064cf021e264efb6828fcaf7eb5ca36818eb365bcc8054821660019081179091557f89832631fb3c3307a103ba2c84ab569c64d6182a18893dcd163f0f1c2090733a805484166110049081179091557f6cde3cea4b3a3fb2488b2808bae7556f4a405e50f65e1794383bc026131b13c38054841690557f72e4efa1513b071517c6c74dba31b5934a81aa83cddd400e7081df5529c9943680548416831790557fa9bc9a3a348c357ba16b37005d7e6b3236198c0e939f4af8c5f19b8deeb8ebc08054851690911790557fc575c31fea594a6eb97c8e9d3f9caee4c16218c6ef37e923234c0fe9014a61e78054831690557f4e523af77f034e9810f1c94057f5e931fb3d16a51511a4c3add793617d18610580548316821790557ffb33122aa9f93cc639ebe80a7bc4784c11e6053dde89c6f4f7e268c6a623da1e805484166110001790557fc7694af312c4f286114180fd0ba6a52461fcee8a381636770b19a343af92538a80548316821790557f01112dd68e482ba8d68a7e828cff8b3abcea08eab88941953c180a7e650e9cd480548316821790557fc0a4a8be475dfebc377ebef2d7c4ff47656f572a08dd92b81017efcdba0febe1805484166110071790557f87e8a52529e8ece4ef759037313542a6429ff494a9fab9027fb79db90124eba680548316821790557f4c7666bbcb22d46469f7cc282f70764a7012dca2cce630ff8d83db9a9cdd48f080548316821790557f40f28f99a40bc9f6beea1013afdbc3cdcc689eb76b82c4de06c0acf1e1932ed58054909316611001179092557f0d9cf2cd531699eed8dd34e40ff2884a14a698c4898184fba85194e6f6772d248054821683179055600b60009081527f23f68c9bd22b8a93d06adabe17481c87c016bcbd20adc8bfd707a4d813a572176020527fdf0d5d05428057f5455c2dc8e810dd86d1e9350faa72f16bda8a45443c5b39328054831684179055603283556004805467ffffffffffffffff19166001600160401b031790556002819055600381905580549091169091179055565b6007602052600090815260409020546001600160401b031681565b6040805163569e4ed360e11b815233600482015290516000916110009163ad3c9da691602480820192602092909190829003018186803b158015613b9857600080fd5b505afa158015613bac573d6000803e3d6000fd5b505050506040513d6020811015613bc257600080fd5b505160408051633d42651560e11b8152905191925060009161100091637a84ca2a916004808301926020929190829003018186803b158015613c0357600080fd5b505afa158015613c17573d6000803e3d6000fd5b505050506040513d6020811015613c2d57600080fd5b5051905080613c3a575060155b600082118015613c4a5750808211155b613c89576040805162461bcd60e51b815260206004820152600b60248201526a1b9bdd0818d8589a5b995d60aa1b604482015290519081900360640190fd5b600b5460ff1615613ccd576040805162461bcd60e51b81526020600482015260096024820152681cdd5cdc195b99195960ba1b604482015290519081900360640190fd5b604080516f14d554d411539117d41493d413d4d05360821b81529051908190036010019020600090613d1f907fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a47061409f565b9050801561373357613733613fd6565b60005460ff16613d82576040805162461bcd60e51b81526020600482015260196024820152781d1a194818dbdb9d1c9858dd081b9bdd081a5b9a5d081e595d603a1b604482015290519081900360640190fd5b33600090815260066020908152604080832060ff8089168552925290912054859116613ddf5760405162461bcd60e51b815260040180806020018281038252603181526020018061472d6031913960400191505060405180910390fd5b60ff85166000908152600760209081526040808320548151601f88018490048402810184019092528682526001600160401b031692613e449284928a926120d492909189918c908c908190840183828082843760009201919091525061132a92505050565b60ff959095166000908152600760205260409020805467ffffffffffffffff191660019096016001600160401b03169590951790945550505050565b61100081565b600381565b61100481565b60408051600e808252818301909252606091630100610060ff851617918391602082018180368337505050600e81810187905260068201939093529182525090505b92915050565b600085613ee857506000613fcd565b606082518451865160800101016040519080825280601f01601f191660200182016040528015613f1f576020820181803683370190505b5090506000613f2d826146c6565b602080890151825201905086600080613f4589614054565b8086526020909501949092509050613f5e82858361405e565b92830192613f6b88614054565b8086526020909501949092509050613f8482858361405e565b9283018a815260200192613f9787614054565b9092509050613fa782858361405e565b508351602001613fb56146cc565b60208183886065600019fa5051600114955050505050505b95945050505050565b600b5460ff161561401a576040805162461bcd60e51b81526020600482015260096024820152681cdd5cdc195b99195960ba1b604482015290519081900360640190fd5b600b805460ff1916600117905560405133907f6f123d3d54c84a7960a573b31c221dcd86e13fd849c5adb0c6ca851468cc1ae490600090a2565b8051602090910191565b5b6020811061407e578251825260209283019290910190601f190161405f565b915181516020939093036101000a6000190180199091169216919091179052565b6000828152600d602052604081205461ffff1661416857604080516f14d554d411539117d41493d413d4d05360821b815281519081900360100181206000908152600d6020818152848320805461ffff199081166001179091556e149153d4115397d41493d413d4d053608a1b8552855194859003600f01852084528282528584208054821660029081179091557710d05390d15317d514905394d1915497d41493d413d4d05360421b8652865195869003601801909520845291905292902080549092161790555b6000838152600c6020526040902080546201000090046001600160801b031642101580614199575082816001015414155b15614272576000848152600d6020908152604080832054845461ffff91821661ffff199091161771ffffffffffffffffffffffffffffffff0000191662010000610e1042016001600160801b03908116820292909217875560018088018a905560028801805491820181558752958590209095018054336001600160a01b031990911681179091558654845193811684529590950416928101929092528181018690525186917f9e109f0e55ef32e99e4880be2ec357f1ddb3469c79d0747ef4762da6e89fabe5916060918190039190910190a3614326565b60005b60028201548110156142fd57336001600160a01b031682600201828154811061429a57fe5b6000918252602090912001546001600160a01b031614156142f5576040805162461bcd60e51b815260206004820152601060248201526f185b1c9958591e48185c1c1c9bdd995960821b604482015290519081900360640190fd5b600101614275565b50600281018054600181018255600091825260209091200180546001600160a01b031916331790555b8054600282015461ffff90911611614380576000848152600c60205260408120805471ffffffffffffffffffffffffffffffffffff19168155600181018290559061437460028301826146ea565b50506001915050613ed3565b5060009392505050565b600080600060606021855110156143ba575050604080516000808252602082019092529092508291508190614433565b600185015160218601518651604080516020198301808252601f1960011990940193909316810160200190915260418901939291606091908015614405576020820181803683370190505b509050600061441382614054565b509050614425858260218d510361405e565b506001975091955093509150505b9193509193565b600b5460ff161561447e576040805162461bcd60e51b81526020600482015260096024820152681cdd5cdc195b99195960ba1b604482015290519081900360640190fd5b6002544311156144bd576004805467ffffffffffffffff1981166001600160401b036001600793840b810190930b1617909155600355436002556144fe565b600380546001908101918290555410156144fe576004805467ffffffffffffffff1981166001600160401b036001600793840b810190930b16179091556003555b8160ff16836001600160401b0316600460009054906101000a900460070b6001600160401b03167f3a6e0fc61675aa2a100bcba0568368bb92bcec91c97673391074f11138f0cffe606185604051808361ffff1661ffff16815260200180602001828103825283818151815260200191508051906020019080838360005b8381101561459457818101518382015260200161457c565b50505050905090810190601f1680156145c15780820380516001836020036101000a031916815260200191505b50935050505060405180910390a4505050565b6000816040516020018082805190602001908083835b602083106146095780518252601f1990920191602091820191016145ea565b6001836020036101000a03801982511681845116808217855250505050505090500191505060405160208183030381529060405280519060200120836040516020018082805190602001908083835b602083106146775780518252601f199092019160209182019101614658565b6001836020036101000a0380198251168184511680821785525050505050509050019150506040516020818303038152906040528051906020012014905092915050565b015190565b3b151590565b60200190565b60405180602001604052806001906020820280368337509192915050565b5080546000825590600052602060002090810190614708919061470b565b50565b61472991905b808211156147255760008155600101614711565b5090565b9056fe74686520636f6e747261637420616e64206368616e6e656c2068617665206e6f74206265656e20726567697374657265646c656e677468206f662076616c756520666f72206164644f725570646174654368616e6e656c2073686f756c642062652032322c206368616e6e656c49643a697346726f6d53797374656d3a68616e646c6572416464726573736c656e677468206f662076616c756520666f722063616e63656c5472616e7366657251756f72756d2073686f756c6420626520326c656e677468206f662076616c756520666f722073757370656e6451756f72756d2073686f756c6420626520326c656e677468206f662076616c756520666f722072656f70656e51756f72756d2073686f756c642062652032746865206d6573736167652073656e646572206d75737420626520676f7665726e616e636520636f6e74726163746c656e677468206f662076616c756520666f7220656e61626c654f7244697361626c654368616e6e656c2073686f756c6420626520322c206368616e6e656c49643a6973456e61626c65746865206d73672073656e646572206973206e6f7420612077686974656c6162656c2072656c61796572746865206e6577426174636853697a65466f724f7261636c652073686f756c6420626520696e205b31302c2031303030305d6c6967687420636c69656e74206e6f742073796e632074686520626c6f636b20796574a2646970667358221220ff0ca947f8ba985b82e860ece7e4d5f504b9aef27e6f5cb7617ddf3685dfeaa564736f6c63430006040033", + }, + }, + } + + bohrUpgrade[rialtoNet] = &Upgrade{ + UpgradeName: "bohr", + Configs: []*UpgradeConfig{ + { + ContractAddr: common.HexToAddress(TokenHubContract), + CommitUrl: "https://github.com/bnb-chain/bsc-genesis-contract/commit/6c5d91c7a089939e1b7234f79b631deb34fb34a8", + Code: "6080604052600436106103c75760003560e01c806396713da9116101f2578063c81b16621161010d578063f0148472116100a0578063fc1a598f1161006f578063fc1a598f14610f25578063fc3e590814610b85578063fd6a687914610f58578063ff9c0027146107fd5761040f565b8063f014847214610ed1578063f9a2bbc714610ee6578063fa9e915914610efb578063fb063e8f14610f105761040f565b8063dc927faf116100dc578063dc927faf14610e5f578063e1c7392a14610e74578063e8f35cea14610e89578063ebf71d5314610ebc5761040f565b8063c81b166214610d8a578063c8509d8114610d9f578063cf41984414610e24578063d9e6dae91461077f5761040f565b8063aa7415f511610185578063b9fd21e311610154578063b9fd21e314610cfa578063ba35ead614610d0f578063bbface1f14610d24578063bd46646114610d575761040f565b8063aa7415f514610b9a578063ab51bb9614610be1578063ac43175114610bf6578063b99328c514610cc15761040f565b8063a1a11bf5116101c1578063a1a11bf514610b46578063a496fba214610b5b578063a78abc1614610b70578063a7c9f02d14610b855761040f565b806396713da914610ace5780639a854bbd14610ae35780639a99b4f014610af85780639dc0926214610b315761040f565b806359b92789116102e257806371d3086311610275578063831d65d111610244578063831d65d1146109d15780638b87b21f146106d45780638eff336c14610a565780639509b98014610a955761040f565b806371d3086314610968578063727be1f81461097d57806375d47a0a146109a75780637942fd05146109bc5761040f565b80636e056520116102b15780636e056520146108125780636e47b4821461093e57806370fd5bad146107fd578063718a8aa8146109535761040f565b806359b92789146107be5780635d499b1b146107e8578063613684751461077f57806366dea52a146107fd5761040f565b80633fd8b02f1161035a5780634a3acdf4116103295780634a3acdf41461076a5780634bf6c8821461077f57806350432d321461079457806351e80672146107a95761040f565b80633fd8b02f146106ff57806343756e5c1461071457806343a368b914610729578063493279b11461073e5761040f565b8063149d14d911610396578063149d14d9146105a85780632ae45483146105cf5780633d713223146106235780633dffc387146106d45761040f565b80630bee7a67146104145780630e2374a5146104425780631182b87514610473578063122345821461056d5761040f565b3661040f57341561040d576040805133815234602082015281517f6c98249d85d88c3753a04a22230f595e4dc8d3dc86c34af35deeeedc861b89db929181900390910190a15b005b600080fd5b34801561042057600080fd5b50610429610f6d565b6040805163ffffffff9092168252519081900360200190f35b34801561044e57600080fd5b50610457610f72565b604080516001600160a01b039092168252519081900360200190f35b34801561047f57600080fd5b506104f86004803603604081101561049657600080fd5b60ff8235169190810190604081016020820135600160201b8111156104ba57600080fd5b8201836020820111156104cc57600080fd5b803590602001918460018302840111600160201b831117156104ed57600080fd5b509092509050610f78565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561053257818101518382015260200161051a565b50505050905090810190601f16801561055f5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561057957600080fd5b5061040d6004803603604081101561059057600080fd5b506001600160a01b03813581169160200135166110a6565b3480156105b457600080fd5b506105bd6111a0565b60408051918252519081900360200190f35b3480156105db57600080fd5b5061060a600480360360408110156105f257600080fd5b506001600160a01b03813581169160200135166111a6565b6040805192835260208301919091528051918290030190f35b34801561062f57600080fd5b506104576004803603602081101561064657600080fd5b810190602081018135600160201b81111561066057600080fd5b82018360208201111561067257600080fd5b803590602001918460018302840111600160201b8311171561069357600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295506111ca945050505050565b3480156106e057600080fd5b506106e96111ee565b6040805160ff9092168252519081900360200190f35b34801561070b57600080fd5b506105bd6111f3565b34801561072057600080fd5b506104576111f9565b34801561073557600080fd5b506105bd6111ff565b34801561074a57600080fd5b5061075361120b565b6040805161ffff9092168252519081900360200190f35b34801561077657600080fd5b506105bd611211565b34801561078b57600080fd5b506106e9611217565b3480156107a057600080fd5b506105bd61121c565b3480156107b557600080fd5b50610457611227565b3480156107ca57600080fd5b50610457600480360360208110156107e157600080fd5b503561122d565b3480156107f457600080fd5b506105bd611248565b34801561080957600080fd5b506106e9611251565b61092a6004803603608081101561082857600080fd5b810190602081018135600160201b81111561084257600080fd5b82018360208201111561085457600080fd5b803590602001918460208302840111600160201b8311171561087557600080fd5b919390929091602081019035600160201b81111561089257600080fd5b8201836020820111156108a457600080fd5b803590602001918460208302840111600160201b831117156108c557600080fd5b919390929091602081019035600160201b8111156108e257600080fd5b8201836020820111156108f457600080fd5b803590602001918460208302840111600160201b8311171561091557600080fd5b91935091503567ffffffffffffffff16611256565b604080519115158252519081900360200190f35b34801561094a57600080fd5b5061045761172b565b34801561095f57600080fd5b506106e9611731565b34801561097457600080fd5b506105bd611736565b34801561098957600080fd5b5061092a600480360360208110156109a057600080fd5b503561173c565b3480156109b357600080fd5b506104576117bd565b3480156109c857600080fd5b506106e96117c3565b3480156109dd57600080fd5b5061040d600480360360408110156109f457600080fd5b60ff8235169190810190604081016020820135600160201b811115610a1857600080fd5b820183602082011115610a2a57600080fd5b803590602001918460018302840111600160201b83111715610a4b57600080fd5b5090925090506117c8565b348015610a6257600080fd5b5061040d60048036036060811015610a7957600080fd5b508035906001600160a01b036020820135169060400135611911565b348015610aa157600080fd5b5061040d60048036036040811015610ab857600080fd5b506001600160a01b038135169060200135611997565b348015610ada57600080fd5b506106e9611b1a565b348015610aef57600080fd5b506105bd611b1f565b348015610b0457600080fd5b506105bd60048036036040811015610b1b57600080fd5b506001600160a01b038135169060200135611b2b565b348015610b3d57600080fd5b50610457611c69565b348015610b5257600080fd5b50610457611c6f565b348015610b6757600080fd5b506106e9611c75565b348015610b7c57600080fd5b5061092a611c7a565b348015610b9157600080fd5b506106e9611c83565b61092a60048036036080811015610bb057600080fd5b5080356001600160a01b03908116916020810135909116906040810135906060013567ffffffffffffffff16611c88565b348015610bed57600080fd5b50610429611c75565b348015610c0257600080fd5b5061040d60048036036040811015610c1957600080fd5b810190602081018135600160201b811115610c3357600080fd5b820183602082011115610c4557600080fd5b803590602001918460018302840111600160201b83111715610c6657600080fd5b919390929091602081019035600160201b811115610c8357600080fd5b820183602082011115610c9557600080fd5b803590602001918460018302840111600160201b83111715610cb657600080fd5b509092509050612349565b348015610ccd57600080fd5b5061040d60048036036040811015610ce457600080fd5b50803590602001356001600160a01b03166127f1565b348015610d0657600080fd5b506105bd612867565b348015610d1b57600080fd5b506105bd612871565b348015610d3057600080fd5b506105bd60048036036020811015610d4757600080fd5b50356001600160a01b0316612877565b348015610d6357600080fd5b506105bd60048036036020811015610d7a57600080fd5b50356001600160a01b0316612889565b348015610d9657600080fd5b506104576128a4565b348015610dab57600080fd5b5061040d60048036036040811015610dc257600080fd5b60ff8235169190810190604081016020820135600160201b811115610de657600080fd5b820183602082011115610df857600080fd5b803590602001918460018302840111600160201b83111715610e1957600080fd5b5090925090506128aa565b348015610e3057600080fd5b5061040d60048036036040811015610e4757600080fd5b506001600160a01b038135811691602001351661297a565b348015610e6b57600080fd5b50610457612c4e565b348015610e8057600080fd5b5061040d612c54565b348015610e9557600080fd5b506105bd60048036036020811015610eac57600080fd5b50356001600160a01b0316612cf4565b348015610ec857600080fd5b506106e9612d06565b348015610edd57600080fd5b506106e9612d0b565b348015610ef257600080fd5b50610457612d10565b348015610f0757600080fd5b506105bd612d16565b348015610f1c57600080fd5b506105bd612d1c565b348015610f3157600080fd5b506104f860048036036020811015610f4857600080fd5b50356001600160a01b0316612d2a565b348015610f6457600080fd5b50610457612e51565b606481565b61200181565b60005460609060ff16610fc0576040805162461bcd60e51b81526020600482015260196024820152600080516020615549833981519152604482015290519081900360640190fd5b33612000146110005760405162461bcd60e51b815260040180806020018281038252602f8152602001806154f7602f913960400191505060405180910390fd5b60ff8416600214156110525761104b83838080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250612e5792505050565b905061109f565b6040805162461bcd60e51b815260206004820152601860248201527f756e7265636f676e697a65642073796e207061636b6167650000000000000000604482015290519081900360640190fd5b9392505050565b33612000146110e65760405162461bcd60e51b815260040180806020018281038252602f8152602001806154f7602f913960400191505060405180910390fd5b6001600160a01b0380831660009081526007602090815260408083209385168352929052208054611151576040805162461bcd60e51b815260206004820152601060248201526f1b9bc81b1bd8dad95908185b5bdd5b9d60821b604482015290519081900360640190fd5b8054600082556040805182815290516001600160a01b0380861692908716917f152fb15aa5d80f843e1e4bd5f2fc9161714f169945024decec7e84fb910fdd519181900360200190a350505050565b60015490565b60076020908152600092835260408084209091529082529020805460019091015482565b6020818101516000908152600490915260409020546001600160a01b03165b919050565b600181565b60055481565b61100181565b670de0b6b3a764000081565b6102ca81565b61546081565b600881565b66071afd498d000081565b61200081565b6000908152600460205260409020546001600160a01b031690565b6402540be40081565b600281565b6000805460ff1661129c576040805162461bcd60e51b81526020600482015260196024820152600080516020615549833981519152604482015290519081900360640190fd5b8685146112da5760405162461bcd60e51b815260040180806020018281038252603b8152602001806154bc603b913960400191505060405180910390fd5b8683146113185760405162461bcd60e51b815260040180806020018281038252603f81526020018061538f603f913960400191505060405180910390fd5b426078018267ffffffffffffffff1610156113645760405162461bcd60e51b815260040180806020018281038252602481526020018061527f6024913960400191505060405180910390fd5b6402540be4003406156113a85760405162461bcd60e51b81526004018080602001828103825260408152602001806155bf6040913960400191505060405180910390fd5b604080518681526020808802820101909152859060009081906060908480156113db578160200160208202803683370190505b50905060005b848110156114b6576402540be4008b8b838181106113fb57fe5b905060200201358161140957fe5b06156114465760405162461bcd60e51b815260040180806020018281038252603c8152602001806153ce603c913960400191505060405180910390fd5b61146b8b8b8381811061145557fe5b9050602002013585612f7b90919063ffffffff16565b93506114976402540be4008c8c8481811061148257fe5b90506020020135612fd590919063ffffffff16565b8282815181106114a357fe5b60209081029190910101526001016113e1565b506001546114db906114ce908663ffffffff61301716565b849063ffffffff612f7b16565b3410156115195760405162461bcd60e51b81526004018080602001828103825260568152602001806155696056913960600191505060405180910390fd5b611529348463ffffffff61307016565b9150611533615083565b6040518060c001604052806221272160e91b60001b815260200160006001600160a01b031681526020018381526020018e8e808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152505050908252506040805160208c810282810182019093528c82529283019290918d918d91829185019084908082843760009201919091525050509082525067ffffffffffffffff8916602090910152905061200063f7a251d760036115f7846130b2565b61160c876402540be40063ffffffff612fd516565b6040518463ffffffff1660e01b8152600401808460ff1660ff16815260200180602001838152602001828103825284818151815260200191508051906020019080838360005b8381101561166a578181015183820152602001611652565b50505050905090810190601f1680156116975780820380516001836020036101000a031916815260200191505b50945050505050600060405180830381600087803b1580156116b857600080fd5b505af11580156116cc573d6000803e3d6000fd5b505060408051600081523360208201528082018890526060810187905290517f74eab09b0e53aefc23f2e1b16da593f95c2dd49c6f5a23720463d10d9c330b2a9350908190036080019150a15060019c9b505050505050505050505050565b61100581565b601081565b60015481565b6000336120011461177e5760405162461bcd60e51b815260040180806020018281038252603381526020018061519d6033913960400191505060405180910390fd5b81156117b5576040516120019083156108fc029084906000818181858888f193505050501580156117b3573d6000803e3d6000fd5b505b506001919050565b61100881565b600b81565b60005460ff1661180d576040805162461bcd60e51b81526020600482015260196024820152600080516020615549833981519152604482015290519081900360640190fd5b336120001461184d5760405162461bcd60e51b815260040180806020018281038252602f8152602001806154f7602f913960400191505060405180910390fd5b60ff83166003141561189d5761189882828080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061336d92505050565b61190c565b7f41ce201247b6ceb957dcdb217d0b8acb50b9ea0e12af9af4f5e7f38902101605838383604051808460ff1660ff168152602001806020018281038252848482818152602001925080828437600083820152604051601f909101601f1916909201829003965090945050505050a15b505050565b33611008146119515760405162461bcd60e51b81526004018080602001828103825260238152602001806155266023913960400191505060405180910390fd5b600083815260046020908152604080832080546001600160a01b039096166001600160a01b03199096168617905593825260038152838220949094556002909352912055565b81806001600160a01b031663893d20e86040518163ffffffff1660e01b815260040160206040518083038186803b1580156119d157600080fd5b505afa1580156119e5573d6000803e3d6000fd5b505050506040513d60208110156119fb57600080fd5b50516001600160a01b03163314611a59576040805162461bcd60e51b815260206004820152601860248201527f6e6f74206f776e6572206f6620424550323020746f6b656e0000000000000000604482015290519081900360640190fd5b60008211611aa7576040805162461bcd60e51b81526020600482015260166024820152751e995c9bc81b1a5b5a5d081b9bdd08185b1b1bddd95960521b604482015290519081900360640190fd5b6001600160a01b038316600090815260036020526040902054611afd576040805162461bcd60e51b81526020600482015260096024820152681b9bdd08189bdd5b9960ba1b604482015290519081900360640190fd5b506001600160a01b03909116600090815260066020526040902055565b600981565b677ce66c50e284000081565b6000805460ff16611b71576040805162461bcd60e51b81526020600482015260196024820152600080516020615549833981519152604482015290519081900360640190fd5b3361100514611bb15760405162461bcd60e51b815260040180806020018281038252602f8152602001806151d0602f913960400191505060405180910390fd5b6000478310611bc05747611bc2565b825b9050670de0b6b3a7640000811115611bde576000915050611c63565b8015611c60576040516001600160a01b0385169082156108fc029083906000818181858888f19350505050158015611c1a573d6000803e3d6000fd5b50604080516001600160a01b03861681526020810183905281517ff8b71c64315fc33b2ead2adfa487955065152a8ac33d9d5193aafd7f45dc15a0929181900390910190a15b90505b92915050565b61100781565b61100681565b600081565b60005460ff1681565b600381565b6000805460ff16611cce576040805162461bcd60e51b81526020600482015260196024820152600080516020615549833981519152604482015290519081900360640190fd5b426078018267ffffffffffffffff161015611d1a5760405162461bcd60e51b815260040180806020018281038252602481526020018061527f6024913960400191505060405180910390fd5b6402540be400340615611d5e5760405162461bcd60e51b81526004018080602001828103825260408152602001806155bf6040913960400191505060405180910390fd5b600080806001600160a01b038816611e3d57600154611d8490879063ffffffff612f7b16565b341015611dc25760405162461bcd60e51b81526004018080602001828103825260618152602001806153096061913960800191505060405180910390fd5b6402540be400860615611e065760405162461bcd60e51b815260040180806020018281038252603c8152602001806153ce603c913960400191505060405180910390fd5b611e16348763ffffffff61307016565b9050611e2d866402540be40063ffffffff612fd516565b6221272160e91b935091506120e0565b6001600160a01b038816600090815260036020526040902054925082611e945760405162461bcd60e51b81526004018080602001828103825260318152602001806152d86031913960400191505060405180910390fd5b600154341015611ed55760405162461bcd60e51b815260040180806020018281038252603f81526020018061542b603f913960400191505060405180910390fd5b506001600160a01b0387166000908152600260205260409020543490600881111580611f205750600881118015611f205750611f1e876007198301600a0a63ffffffff6133c916565b155b611f5b5760405162461bcd60e51b815260040180806020018281038252603c8152602001806153ce603c913960400191505060405180910390fd5b611f65878261340b565b9250611f708461344b565b15611fb8576305f5e100831015611fb85760405162461bcd60e51b815260040180806020018281038252603a815260200180615221603a913960400191505060405180910390fd5b600881101580611fd25750600881108015611fd257508683115b61200d5760405162461bcd60e51b815260040180806020018281038252602581526020018061536a6025913960400191505060405180910390fd5b677ce66c50e28400008311156120545760405162461bcd60e51b81526004018080602001828103825260358152602001806152a36035913960400191505060405180910390fd5b604080516323b872dd60e01b81523360048201523060248201526044810189905290516001600160a01b038b16916323b872dd9160648083019260209291908290030181600087803b1580156120a957600080fd5b505af11580156120bd573d6000803e3d6000fd5b505050506040513d60208110156120d357600080fd5b50516120de57600080fd5b505b6120e8615083565b6040805160c0810182528581526001600160a01b038b166020820152815160018082528184018452919283019181602001602082028036833750505081526040805160018082528183019092526020928301929091908083019080368337505050815260408051600180825281830190925260209283019290919080830190803683370190505081526020018767ffffffffffffffff16815250905082816040015160008151811061219657fe5b6020026020010181815250508781606001516000815181106121b457fe5b60200260200101906001600160a01b031690816001600160a01b0316815250503381608001516000815181106121e657fe5b6001600160a01b039092166020928302919091019091015261200063f7a251d76003612211846130b2565b612226866402540be40063ffffffff612fd516565b6040518463ffffffff1660e01b8152600401808460ff1660ff16815260200180602001838152602001828103825284818151815260200191508051906020019080838360005b8381101561228457818101518382015260200161226c565b50505050905090810190601f1680156122b15780820380516001836020036101000a031916815260200191505b50945050505050600060405180830381600087803b1580156122d257600080fd5b505af11580156122e6573d6000803e3d6000fd5b5050604080516001600160a01b038d1681523360208201528082018b90526060810186905290517f74eab09b0e53aefc23f2e1b16da593f95c2dd49c6f5a23720463d10d9c330b2a9350908190036080019150a150600198975050505050505050565b33611007146123895760405162461bcd60e51b815260040180806020018281038252602e81526020018061546a602e913960400191505060405180910390fd5b602081146123de576040805162461bcd60e51b815260206004820152601b60248201527f65787065637465642076616c7565206c656e6774682069732033320000000000604482015290519081900360640190fd5b606084848080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050604080516020601f8801819004810282018101909252868152939450606093925086915085908190840183828082843760009201919091525050505060208301519091506772656c617946656560c01b8114156124e6576020820151670de0b6b3a7640000811180159061248d57506402540be4008106155b6124de576040805162461bcd60e51b815260206004820152601960248201527f7468652072656c6179466565206f7574206f662072616e676500000000000000604482015290519081900360640190fd5b60015561275c565b61255a87878080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505060408051808201909152601781527f6c617267655472616e736665724c6f636b506572696f64000000000000000000602082015291506135519050565b156125f657604080516020601f870181900481028201810190925285815260009161259d9188888083850183828082843760009201919091525061363892505050565b905062093a808111156125ee576040805162461bcd60e51b81526020600482015260146024820152736c6f636b20706572696f6420746f6f206c6f6e6760601b604482015290519081900360640190fd5b60055561275c565b61266287878080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050604080518082019091526015815274189b9893185c99d9551c985b9cd9995c931a5b5a5d605a1b602082015291506135519050565b1561271f57604080516020601f87018190048102820181019092528581526000916126a59188888083850183828082843760009201919091525061363892505050565b905068056bc75e2d631000008110156126ef5760405162461bcd60e51b81526004018080602001828103825260228152602001806151ff6022913960400191505060405180910390fd5b6000805260066020527f54cdd369e4e8a8515e52ca72ec816c2101831ad1f18bf44102ed171459c9b4f85561275c565b6040805162461bcd60e51b815260206004820152600d60248201526c756e6b6e6f776e20706172616d60981b604482015290519081900360640190fd5b7f6cdb0ac70ab7f2e2d035cca5be60d89906f2dede7648ddbd7402189c1eeed17a878787876040518080602001806020018381038352878782818152602001925080828437600083820152601f01601f191690910184810383528581526020019050858580828437600083820152604051601f909101601f19169092018290039850909650505050505050a150505050505050565b33611008146128315760405162461bcd60e51b81526004018080602001828103825260238152602001806155266023913960400191505060405180910390fd5b600091825260046020908152604080842080546001600160a01b03191690556001600160a01b0392909216835260039052812055565b6221272160e91b81565b61c35081565b60026020526000908152604090205481565b6001600160a01b031660009081526003602052604090205490565b61100281565b60005460ff166128ef576040805162461bcd60e51b81526020600482015260196024820152600080516020615549833981519152604482015290519081900360640190fd5b336120001461292f5760405162461bcd60e51b815260040180806020018281038252602f8152602001806154f7602f913960400191505060405180910390fd5b60ff83166003141561189d5761189882828080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061363d92505050565b60085460ff16600214156129c6576040805162461bcd60e51b815260206004820152600e60248201526d4e6f2072652d656e7472616e637960901b604482015290519081900360640190fd5b6008805460ff191660021790556001600160a01b0380831660009081526007602090815260408083209385168352929052208054612a3e576040805162461bcd60e51b815260206004820152601060248201526f1b9bc81b1bd8dad95908185b5bdd5b9d60821b604482015290519081900360640190fd5b8060010154421015612a97576040805162461bcd60e51b815260206004820152601760248201527f7374696c6c206f6e206c6f636b696e6720706572696f64000000000000000000604482015290519081900360640190fd5b805460008083556001600160a01b038516612b0a576040516001600160a01b038516906127109084906000818181858888f193505050503d8060008114612afa576040519150601f19603f3d011682016040523d82523d6000602084013e612aff565b606091505b505080915050612b9d565b846001600160a01b031663a9059cbb61c35086856040518463ffffffff1660e01b815260040180836001600160a01b03166001600160a01b0316815260200182815260200192505050602060405180830381600088803b158015612b6d57600080fd5b5087f1158015612b81573d6000803e3d6000fd5b50505050506040513d6020811015612b9857600080fd5b505190505b80612bef576040805162461bcd60e51b815260206004820152601e60248201527f776974686472617720756e6c6f636b656420746f6b656e206661696c65640000604482015290519081900360640190fd5b836001600160a01b0316856001600160a01b03167f832fc3e25f2b3e6fb0eb59419a73cba405f2a249fce75f7e31ea5a457a0323f1846040518082815260200191505060405180910390a350506008805460ff19166001179055505050565b61100381565b60005460ff1615612cac576040805162461bcd60e51b815260206004820152601960248201527f74686520636f6e747261637420616c726561647920696e697400000000000000604482015290519081900360640190fd5b66071afd498d000060019081556000808052600260205260127fac33ff75c19e70fe83507db0d683fd3465c996598dc972688b7ace676c89077b55805460ff19169091179055565b60066020526000908152604090205481565b600481565b600581565b61100081565b61271081565b69021e19e0c9bab240000081565b6001600160a01b03811660009081526003602090815260409182902054825182815280840190935260609290918391906020820181803683375050506020810183905290506000805b60208160ff161015612dba57828160ff1681518110612d8e57fe5b01602001516001600160f81b03191615612dad57600190910190612db2565b612dba565b600101612d73565b5060608160ff166040519080825280601f01601f191660200182016040528015612deb576020820181803683370190505b50905060005b8260ff168160ff161015612e4757838160ff1681518110612e0e57fe5b602001015160f81c60f81b828260ff1681518110612e2857fe5b60200101906001600160f81b031916908160001a905350600101612df1565b5095945050505050565b61100481565b6060612e616150cf565b6000612e6c8461373b565b9150915080612ec2576040805162461bcd60e51b815260206004820152601f60248201527f756e7265636f676e697a6564207472616e73666572496e207061636b61676500604482015290519081900360640190fd5b6000612ecd8361387a565b905063ffffffff811615612f61576040808401516020808601516001600160a01b03166000908152600290915291822054612f08919061340b565b9050612f12615104565b60405180608001604052808660000151815260200183815260200186608001516001600160a01b031681526020018463ffffffff168152509050612f5581613be0565b955050505050506111e9565b505060408051600081526020810190915291506111e99050565b600082820183811015611c60576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b6000611c6083836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250613cbc565b60008261302657506000611c63565b8282028284828161303357fe5b0414611c605760405162461bcd60e51b815260040180806020018281038252602181526020018061540a6021913960400191505060405180910390fd5b6000611c6083836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250613d5e565b60408051600680825260e08201909252606091829190816020015b60608152602001906001900390816130cd57505083519091506130ef90613db8565b816000815181106130fc57fe5b602002602001018190525061311d83602001516001600160a01b0316613dcb565b8160018151811061312a57fe5b60200260200101819052506000836040015151905060608160405190808252806020026020018201604052801561317557816020015b60608152602001906001900390816131605790505b50905060005b828110156131c2576131a38660400151828151811061319657fe5b6020026020010151613db8565b8282815181106131af57fe5b602090810291909101015260010161317b565b506131cc81613dee565b836002815181106131d957fe5b602002602001018190525060608260405190808252806020026020018201604052801561321a57816020015b60608152602001906001900390816132055790505b50905060005b83811015613270576132518760600151828151811061323b57fe5b60200260200101516001600160a01b0316613dcb565b82828151811061325d57fe5b6020908102919091010152600101613220565b5061327a81613dee565b8460038151811061328757fe5b60200260200101819052506060836040519080825280602002602001820160405280156132c857816020015b60608152602001906001900390816132b35790505b50905060005b84811015613308576132e98860800151828151811061323b57fe5b8282815181106132f557fe5b60209081029190910101526001016132ce565b5061331281613dee565b8560048151811061331f57fe5b60200260200101819052506133418760a0015167ffffffffffffffff16613db8565b8560058151811061334e57fe5b602002602001018190525061336285613dee565b979650505050505050565b61337561512b565b600061338083613e78565b91509150806133c05760405162461bcd60e51b81526004018080602001828103825260248152602001806154986024913960400191505060405180910390fd5b61190c82614043565b6000611c6083836040518060400160405280601881526020017f536166654d6174683a206d6f64756c6f206279207a65726f00000000000000008152506144c7565b600060088211156134345761342d836007198401600a0a63ffffffff612fd516565b9050611c63565b611c60836008849003600a0a63ffffffff61301716565b604080516020808252818301909252600091606091906020820181803683375050506020810184905290506000805b60208160ff1610156134c157828160ff168151811061349557fe5b01602001516001600160f81b031916156134b4576001909101906134b9565b6134c1565b60010161347a565b50600760ff821610156134d9576000925050506111e9565b816005820360ff16815181106134eb57fe5b6020910101516001600160f81b031916602d60f81b14613510576000925050506111e9565b816001820360ff168151811061352257fe5b6020910101516001600160f81b031916604d60f81b14613547576000925050506111e9565b5060019392505050565b6000816040516020018082805190602001908083835b602083106135865780518252601f199092019160209182019101613567565b6001836020036101000a03801982511681845116808217855250505050505090500191505060405160208183030381529060405280519060200120836040516020018082805190602001908083835b602083106135f45780518252601f1990920191602091820191016135d5565b6001836020036101000a0380198251168184511680821785525050505050509050019150506040516020818303038152906040528051906020012014905092915050565b015190565b613645615083565b600061365083614529565b91509150806136905760405162461bcd60e51b815260040180806020018281038252602481526020018061525b6024913960400191505060405180910390fd5b61369861512b565b602080840180516001600160a01b0390811684526040808701518585015291511660009081526002909252812054905b846040015151811015613719576136f6856040015182815181106136e857fe5b60200260200101518361478d565b8560400151828151811061370657fe5b60209081029190910101526001016136c8565b50608084015160408301526005606083015261373482614043565b5050505050565b6137436150cf565b600061374d6150cf565b613755615162565b613766613761866147c6565b6147eb565b90506000805b61377583614835565b1561386d57806137975761379061378b84614856565b6148a4565b8452613865565b80600114156137c4576137b16137ac84614856565b61495b565b6001600160a01b03166020850152613865565b80600214156137e3576137d961378b84614856565b6040850152613865565b806003141561380b576137f86137ac84614856565b6001600160a01b03166060850152613865565b8060041415613833576138206137ac84614856565b6001600160a01b03166080850152613865565b80600514156138605761384861378b84614856565b67ffffffffffffffff1660a085015260019150613865565b61386d565b60010161376c565b5091935090915050915091565b60208101516000906001600160a01b03166139be578160a0015167ffffffffffffffff164211156138ad575060016111e9565b81604001514710156138c1575060036111e9565b6138ca82614975565b61393f57606082015160408084015190516000926001600160a01b0316916127109184818181858888f193505050503d8060008114613925576040519150601f19603f3d011682016040523d82523d6000602084013e61392a565b606091505b505090508061393d5750600490506111e9565b505b7f471eb9cc1ffe55ffadf15b32595415eb9d80f22e761d24bd6dffc607e1284d5982602001518360600151846040015160405180846001600160a01b03166001600160a01b03168152602001836001600160a01b03166001600160a01b03168152602001828152602001935050505060405180910390a15060006111e9565b8160a0015167ffffffffffffffff164211156139dc575060016111e9565b81516020808401516001600160a01b031660009081526003909152604090205414613a09575060026111e9565b602080830151604080516370a0823160e01b815230600482015290516000936001600160a01b03909316926370a082319261c3509260248083019392829003018187803b158015613a5957600080fd5b5086fa158015613a6d573d6000803e3d6000fd5b50505050506040513d6020811015613a8457600080fd5b50516040840151909150811015613a9f5750600390506111e9565b613aa883614975565b613b5f57600083602001516001600160a01b031663a9059cbb61c350866060015187604001516040518463ffffffff1660e01b815260040180836001600160a01b03166001600160a01b0316815260200182815260200192505050602060405180830381600088803b158015613b1d57600080fd5b5087f1158015613b31573d6000803e3d6000fd5b50505050506040513d6020811015613b4857600080fd5b5051905080613b5d5750600591506111e99050565b505b7f471eb9cc1ffe55ffadf15b32595415eb9d80f22e761d24bd6dffc607e1284d5983602001518460600151856040015160405180846001600160a01b03166001600160a01b03168152602001836001600160a01b03166001600160a01b03168152602001828152602001935050505060405180910390a150600090506111e9565b60408051600480825260a08201909252606091829190816020015b6060815260200190600190039081613bfb5750508351909150613c1d90613db8565b81600081518110613c2a57fe5b6020026020010181905250613c428360200151613db8565b81600181518110613c4f57fe5b6020026020010181905250613c7083604001516001600160a01b0316613dcb565b81600281518110613c7d57fe5b6020026020010181905250613c9b836060015163ffffffff16613db8565b81600381518110613ca857fe5b602002602001018190525061109f81613dee565b60008183613d485760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b83811015613d0d578181015183820152602001613cf5565b50505050905090810190601f168015613d3a5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b506000838581613d5457fe5b0495945050505050565b60008184841115613db05760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315613d0d578181015183820152602001613cf5565b505050900390565b6060611c63613dc683614ae3565b614bc9565b60408051600560a21b831860148201526034810190915260609061109f81614bc9565b6060815160001415613e0f57506040805160008152602081019091526111e9565b606082600081518110613e1e57fe5b602002602001015190506000600190505b8351811015613e5f57613e5582858381518110613e4857fe5b6020026020010151614c1b565b9150600101613e2f565b5061109f613e72825160c060ff16614c98565b82614c1b565b613e8061512b565b6000613e8a61512b565b613e92615162565b613e9e613761866147c6565b90506000805b613ead83614835565b1561386d5780613ed357613ec36137ac84614856565b6001600160a01b0316845261403b565b8060011415613f74576060613eef613eea85614856565b614d90565b90508051604051908082528060200260200182016040528015613f1c578160200160208202803683370190505b50602086015260005b8151811015613f6d57613f4a828281518110613f3d57fe5b60200260200101516148a4565b86602001518281518110613f5a57fe5b6020908102919091010152600101613f25565b505061403b565b8060021415614016576060613f8b613eea85614856565b90508051604051908082528060200260200182016040528015613fb8578160200160208202803683370190505b50604086015260005b8151811015613f6d57613fe6828281518110613fd957fe5b602002602001015161495b565b86604001518281518110613ff657fe5b6001600160a01b0390921660209283029190910190910152600101613fc1565b80600314156138605761402b61378b84614856565b63ffffffff166060850152600191505b600101613ea4565b80516001600160a01b031661426d5760005b8160200151518110156142675760008260400151828151811061407457fe5b60200260200101516001600160a01b03166127108460200151848151811061409857fe5b60209081029190910101516040516000818181858888f193505050503d80600081146140e0576040519150601f19603f3d011682016040523d82523d6000602084013e6140e5565b606091505b50509050806141a8577f203f9f67a785f4f81be4d48b109aa0c498d1bc8097ecc2627063f480cc5fe73e83600001518460400151848151811061412457fe5b60200260200101518560200151858151811061413c57fe5b6020026020010151866060015160405180856001600160a01b03166001600160a01b03168152602001846001600160a01b03166001600160a01b031681526020018381526020018263ffffffff1663ffffffff16815260200194505050505060405180910390a161425e565b7fd468d4fa5e8fb4adc119b29a983fd0785e04af5cb8b7a3a69a47270c54b6901a8360000151846040015184815181106141de57fe5b6020026020010151856020015185815181106141f657fe5b6020026020010151866060015160405180856001600160a01b03166001600160a01b03168152602001846001600160a01b03166001600160a01b031681526020018381526020018263ffffffff1663ffffffff16815260200194505050505060405180910390a15b50600101614055565b506144c4565b60005b8160200151518110156144c257600082600001516001600160a01b031663a9059cbb61c350856040015185815181106142a557fe5b6020026020010151866020015186815181106142bd57fe5b60200260200101516040518463ffffffff1660e01b815260040180836001600160a01b03166001600160a01b0316815260200182815260200192505050602060405180830381600088803b15801561431457600080fd5b5087f1158015614328573d6000803e3d6000fd5b50505050506040513d602081101561433f57600080fd5b505190508015614403577fd468d4fa5e8fb4adc119b29a983fd0785e04af5cb8b7a3a69a47270c54b6901a83600001518460400151848151811061437f57fe5b60200260200101518560200151858151811061439757fe5b6020026020010151866060015160405180856001600160a01b03166001600160a01b03168152602001846001600160a01b03166001600160a01b031681526020018381526020018263ffffffff1663ffffffff16815260200194505050505060405180910390a16144b9565b7f203f9f67a785f4f81be4d48b109aa0c498d1bc8097ecc2627063f480cc5fe73e83600001518460400151848151811061443957fe5b60200260200101518560200151858151811061445157fe5b6020026020010151866060015160405180856001600160a01b03166001600160a01b03168152602001846001600160a01b03166001600160a01b031681526020018381526020018263ffffffff1663ffffffff16815260200194505050505060405180910390a15b50600101614270565b505b50565b600081836145165760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315613d0d578181015183820152602001613cf5565b5082848161452057fe5b06949350505050565b614531615083565b600061453b615083565b614543615162565b61454f613761866147c6565b90506000805b61455e83614835565b1561386d578061457b5761457461378b84614856565b8452614785565b80600114156145a3576145906137ac84614856565b6001600160a01b03166020850152614785565b80600214156146325760606145ba613eea85614856565b905080516040519080825280602002602001820160405280156145e7578160200160208202803683370190505b50604086015260005b815181101561462b57614608828281518110613f3d57fe5b8660400151828151811061461857fe5b60209081029190910101526001016145f0565b5050614785565b80600314156146c7576060614649613eea85614856565b90508051604051908082528060200260200182016040528015614676578160200160208202803683370190505b50606086015260005b815181101561462b57614697828281518110613fd957fe5b866060015182815181106146a757fe5b6001600160a01b039092166020928302919091019091015260010161467f565b806004141561475c5760606146de613eea85614856565b9050805160405190808252806020026020018201604052801561470b578160200160208202803683370190505b50608086015260005b815181101561462b5761472c828281518110613fd957fe5b8660800151828151811061473c57fe5b6001600160a01b0390921660209283029190910190910152600101614714565b80600514156138605761477161378b84614856565b67ffffffffffffffff1660a0850152600191505b600101614555565b600060088211156147af5761342d836007198401600a0a63ffffffff61301716565b611c60836008849003600a0a63ffffffff612fd516565b6147ce615182565b506040805180820190915281518152602082810190820152919050565b6147f3615162565b6147fc82614e61565b61480557600080fd5b60006148148360200151614e91565b60208085015160408051808201909152868152920190820152915050919050565b600061483f615182565b505080518051602091820151919092015191011190565b61485e615182565b61486782614835565b61487057600080fd5b6020820151600061488082614ef4565b80830160209586015260408051808201909152908152938401919091525090919050565b8051600090158015906148b957508151602110155b6148c257600080fd5b60006148d18360200151614e91565b9050808360000151101561492c576040805162461bcd60e51b815260206004820152601a60248201527f6c656e677468206973206c657373207468616e206f6666736574000000000000604482015290519081900360640190fd5b82516020808501518301805192849003929183101561495257826020036101000a820491505b50949350505050565b805160009060151461496c57600080fd5b611c63826148a4565b600080805260066020527f54cdd369e4e8a8515e52ca72ec816c2101831ad1f18bf44102ed171459c9b4f8541580156149ae5750600554155b156149f05760008052600660205269021e19e0c9bab24000007f54cdd369e4e8a8515e52ca72ec816c2101831ad1f18bf44102ed171459c9b4f8556154606005555b6020808301516001600160a01b0316600090815260069091526040902054801580614a1e5750808360400151105b15614a2d5760009150506111e9565b6020808401516001600160a01b039081166000908152600783526040808220606088015190931682529190925290819020908401518154614a739163ffffffff612f7b16565b8155600554420160018201819055606085015160208087015160408089015181519081529283019490945283516001600160a01b039384169493909116927f3fb83143cd331170da18fb1e8564d97e8ec39264b6ecb1ba248ea7596ab07258928290030190a35060019392505050565b604080516020808252818301909252606091829190602082018180368337505050602081018490529050600067ffffffffffffffff198416614b2757506018614b4b565b6fffffffffffffffffffffffffffffffff198416614b4757506010614b4b565b5060005b6020811015614b8157818181518110614b6057fe5b01602001516001600160f81b03191615614b7957614b81565b600101614b4b565b60008160200390506060816040519080825280601f01601f191660200182016040528015614bb6576020820181803683370190505b5080830196909652508452509192915050565b606081516001148015614bfb5750607f60f81b82600081518110614be957fe5b01602001516001600160f81b03191611155b15614c075750806111e9565b611c63614c198351608060ff16614c98565b835b6060806040519050835180825260208201818101602087015b81831015614c4c578051835260209283019201614c34565b50855184518101855292509050808201602086015b81831015614c79578051835260209283019201614c61565b508651929092011591909101601f01601f191660405250905092915050565b6060680100000000000000008310614ce8576040805162461bcd60e51b815260206004820152600e60248201526d696e70757420746f6f206c6f6e6760901b604482015290519081900360640190fd5b60408051600180825281830190925260609160208201818036833701905050905060378411614d425782840160f81b81600081518110614d2457fe5b60200101906001600160f81b031916908160001a9053509050611c63565b6060614d4d85614ae3565b90508381510160370160f81b82600081518110614d6657fe5b60200101906001600160f81b031916908160001a905350614d878282614c1b565b95945050505050565b6060614d9b82614e61565b614da457600080fd5b6000614daf83615027565b9050606081604051908082528060200260200182016040528015614ded57816020015b614dda615182565b815260200190600190039081614dd25790505b5090506000614dff8560200151614e91565b60208601510190506000805b84811015614e5657614e1c83614ef4565b9150604051806040016040528083815260200184815250848281518110614e3f57fe5b602090810291909101015291810191600101614e0b565b509195945050505050565b8051600090614e72575060006111e9565b6020820151805160001a9060c0821015613547576000925050506111e9565b8051600090811a6080811015614eab5760009150506111e9565b60b8811080614ec6575060c08110801590614ec6575060f881105b15614ed55760019150506111e9565b60c0811015614ee95760b5190190506111e9565b60f5190190506111e9565b80516000908190811a6080811015614f0f5760019150615020565b60b8811015614f2457607e1981019150615020565b60c0811015614f9e57600060b78203600186019550806020036101000a865104915060018101820193505080831015614f98576040805162461bcd60e51b81526020600482015260116024820152706164646974696f6e206f766572666c6f7760781b604482015290519081900360640190fd5b50615020565b60f8811015614fb35760be1981019150615020565b600060f78203600186019550806020036101000a86510491506001810182019350508083101561501e576040805162461bcd60e51b81526020600482015260116024820152706164646974696f6e206f766572666c6f7760781b604482015290519081900360640190fd5b505b5092915050565b8051600090615038575060006111e9565b6000809050600061504c8460200151614e91565b602085015185519181019250015b8082101561507a5761506b82614ef4565b6001909301929091019061505a565b50909392505050565b6040518060c001604052806000801916815260200160006001600160a01b03168152602001606081526020016060815260200160608152602001600067ffffffffffffffff1681525090565b6040805160c081018252600080825260208201819052918101829052606081018290526080810182905260a081019190915290565b60408051608081018252600080825260208201819052918101829052606081019190915290565b604051806080016040528060006001600160a01b031681526020016060815260200160608152602001600063ffffffff1681525090565b6040518060400160405280615175615182565b8152602001600081525090565b60405180604001604052806000815260200160008152509056fe6f6e6c79207374616b696e672073797374656d20636f6e74726163742063616e2063616c6c20746869732066756e6374696f6e746865206d6573736167652073656e646572206d75737420626520696e63656e746976697a6520636f6e7472616374626e62206c61726765207472616e73666572206c696d697420746f6f20736d616c6c466f72206d696e69546f6b656e2c20746865207472616e7366657220616d6f756e74206d757374206e6f74206265206c657373207468616e2031756e7265636f676e697a6564207472616e736665724f75742073796e207061636b61676565787069726554696d65206d7573742062652074776f206d696e75746573206c61746572616d6f756e7420697320746f6f206c617267652c20657863656564206d6178696d756d206265703220746f6b656e20616d6f756e7474686520636f6e747261637420686173206e6f74206265656e20626f756e6420746f20616e79206265703220746f6b656e726563656976656420424e4220616d6f756e742073686f756c64206265206e6f206c657373207468616e207468652073756d206f66207472616e736665724f757420424e4220616d6f756e7420616e64206d696e696d756d2072656c6179466565616d6f756e7420697320746f6f206c617267652c2075696e74323536206f766572666c6f774c656e677468206f6620726563697069656e74416464727320646f65736e277420657175616c20746f206c656e677468206f6620726566756e644164647273696e76616c6964207472616e7366657220616d6f756e743a20707265636973696f6e206c6f737320696e20616d6f756e7420636f6e76657273696f6e536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f77726563656976656420424e4220616d6f756e742073686f756c64206265206e6f206c657373207468616e20746865206d696e696d756d2072656c6179466565746865206d6573736167652073656e646572206d75737420626520676f7665726e616e636520636f6e7472616374756e7265636f676e697a6564207472616e736665724f75742061636b207061636b6167654c656e677468206f6620726563697069656e74416464727320646f65736e277420657175616c20746f206c656e677468206f6620616d6f756e7473746865206d6573736167652073656e646572206d7573742062652063726f737320636861696e20636f6e7472616374746865206d73672073656e646572206d75737420626520746f6b656e4d616e6167657274686520636f6e7472616374206e6f7420696e69742079657400000000000000726563656976656420424e4220616d6f756e742073686f756c64206265206e6f206c657373207468616e207468652073756d206f66207472616e7366657220424e4220616d6f756e7420616e642072656c6179466565696e76616c696420726563656976656420424e4220616d6f756e743a20707265636973696f6e206c6f737320696e20616d6f756e7420636f6e76657273696f6ea26469706673582212201631d67e49db576460c821f975d720758aecbf575d9eeccc23b562175a0e3ef464736f6c63430006040033", + }, + { + ContractAddr: common.HexToAddress(CrossChainContract), + CommitUrl: "https://github.com/bnb-chain/bsc-genesis-contract/commit/6c5d91c7a089939e1b7234f79b631deb34fb34a8", + Code: "608060405234801561001057600080fd5b50600436106103995760003560e01c8063718a8aa8116101e9578063c27cdcfb1161010f578063dc927faf116100ad578063f7a251d71161007c578063f7a251d714610b2f578063f9a2bbc714610ba7578063fc3e590814610baf578063fd6a687914610bb757610399565b8063dc927faf14610af7578063e1c7392a14610aff578063e3b0480514610b07578063e6400bbe14610b2757610399565b8063ccc108d7116100e9578063ccc108d714610ab0578063d31f968d14610ab8578063d76a867514610ae7578063dc40433114610aef57610399565b8063c27cdcfb14610a80578063c780e9de14610aa0578063c81b166214610aa857610399565b80638cc8f56111610187578063a78abc1611610156578063a78abc16146109b2578063ab51bb96146109ba578063ac431751146109c2578063b0355f5b1461078157610399565b80638cc8f5611461088757806396713da91461099a5780639dc09262146109a2578063a1a11bf5146109aa57610399565b806375d47a0a116101c357806375d47a0a146108a75780637942fd05146108af57806384013b6a146108b7578063863fe4ab1461099257610399565b8063718a8aa81461088f578063719482d51461089757806374f079b81461089f57610399565b8063422f9050116102ce57806363e1394e1161026c5780636de380bd1161023b5780636de380bd146108575780636e47a51a1461085f5780636e47b4821461087f57806370fd5bad1461088757610399565b806363e1394e146107ff5780636a3cb34d146108075780636bacff2c1461080f5780636c46aa681461080757610399565b80634bf6c882116102a85780634bf6c882146107b957806351e80672146107c15780635692ddd3146107c95780635f832177146107d157610399565b8063422f90501461078957806343756e5c146107a9578063493279b1146107b157610399565b8063299b533d1161033b578063308325f411610315578063308325f4146106155780633a648b151461061d5780633bdc47a6146106595780633dffc3871461078157610399565b8063299b533d146105a35780632af6f399146105d75780632ff32aea146105f457610399565b806314b3023b1161037757806314b3023b146104015780631d1309351461041b5780631e275ae11461043757806322556cdc1461059b57610399565b806305e682581461039e5780630bee7a67146103bc5780630e2374a5146103dd575b600080fd5b6103a6610bbf565b6040805160ff9092168252519081900360200190f35b6103c4610bc4565b6040805163ffffffff9092168252519081900360200190f35b6103e5610bc9565b604080516001600160a01b039092168252519081900360200190f35b610409610bcf565b60408051918252519081900360200190f35b610423610bd5565b604080519115158252519081900360200190f35b610599600480360361010081101561044e57600080fd5b81018160a081016080820135600160201b81111561046b57600080fd5b82018360208201111561047d57600080fd5b803590602001918460018302840111600160201b8311171561049e57600080fd5b919390929091602081019035600160201b8111156104bb57600080fd5b8201836020820111156104cd57600080fd5b803590602001918460018302840111600160201b831117156104ee57600080fd5b919390929091602081019035600160201b81111561050b57600080fd5b82018360208201111561051d57600080fd5b803590602001918460018302840111600160201b8311171561053e57600080fd5b919390929091602081019035600160201b81111561055b57600080fd5b82018360208201111561056d57600080fd5b803590602001918460018302840111600160201b8311171561058e57600080fd5b509092509050610bde565b005b6104096112d0565b6105c0600480360360208110156105b957600080fd5b50356112d5565b6040805161ffff9092168252519081900360200190f35b610423600480360360208110156105ed57600080fd5b50356112eb565b6105fc611300565b60408051600792830b90920b8252519081900360200190f35b610409611309565b61063d6004803603602081101561063357600080fd5b503560ff1661130f565b604080516001600160401b039092168252519081900360200190f35b61070c6004803603606081101561066f57600080fd5b60ff82351691602081013591810190606081016040820135600160201b81111561069857600080fd5b8201836020820111156106aa57600080fd5b803590602001918460018302840111600160201b831117156106cb57600080fd5b91908080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092955061132a945050505050565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561074657818101518382015260200161072e565b50505050905090810190601f1680156107735780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6103a66113a0565b6104236004803603602081101561079f57600080fd5b503560ff166113a5565b6103e56113ba565b6105c06113c0565b6103a66113c6565b6103e56113cb565b6104096113d1565b610599600480360360408110156107e757600080fd5b506001600160a01b0381358116916020013516611401565b61040961161c565b6105c0611644565b61082c6004803603602081101561082557600080fd5b5035611649565b6040805161ffff90941684526001600160801b03909216602084015282820152519081900360600190f35b610409611678565b6103e56004803603602081101561087557600080fd5b503560ff1661169f565b6103e56116ba565b6103a6611644565b6103a66116c0565b6105c06113a0565b6104096116c5565b6103e56116cb565b6103a66116d1565b610599600480360360a08110156108cd57600080fd5b810190602081018135600160201b8111156108e757600080fd5b8201836020820111156108f957600080fd5b803590602001918460018302840111600160201b8311171561091a57600080fd5b919390929091602081019035600160201b81111561093757600080fd5b82018360208201111561094957600080fd5b803590602001918460018302840111600160201b8311171561096a57600080fd5b919350915080356001600160401b03908116916020810135909116906040013560ff166116d6565b610409612a0e565b6103a6612a16565b6103e5612a1b565b6103e5612a21565b610423612a27565b6103c4610bbf565b610599600480360360408110156109d857600080fd5b810190602081018135600160201b8111156109f257600080fd5b820183602082011115610a0457600080fd5b803590602001918460018302840111600160201b83111715610a2557600080fd5b919390929091602081019035600160201b811115610a4257600080fd5b820183602082011115610a5457600080fd5b803590602001918460018302840111600160201b83111715610a7557600080fd5b509092509050612a30565b61063d60048036036020811015610a9657600080fd5b503560ff166134e5565b610409613500565b6103e5613524565b61059961352a565b61042360048036036040811015610ace57600080fd5b5080356001600160a01b0316906020013560ff16613739565b61070c613759565b610409613778565b6103e561377e565b610599613784565b61063d60048036036020811015610b1d57600080fd5b503560ff16613b3b565b610599613b56565b61059960048036036060811015610b4557600080fd5b60ff8235169190810190604081016020820135600160201b811115610b6957600080fd5b820183602082011115610b7b57600080fd5b803590602001918460018302840111600160201b83111715610b9c57600080fd5b919350915035613d30565b6103e5613e81565b6103a6613e87565b6103e5613e8c565b600081565b606481565b61200181565b60015481565b600b5460ff1681565b60005460ff16610c31576040805162461bcd60e51b81526020600482015260196024820152781d1a194818dbdb9d1c9858dd081b9bdd081a5b9a5d081e595d603a1b604482015290519081900360640190fd5b604080516337d7f9c160e21b81526001600160401b038b35166004820181905291516110039163df5fe704916024808301926020929190829003018186803b158015610c7c57600080fd5b505afa158015610c90573d6000803e3d6000fd5b505050506040513d6020811015610ca657600080fd5b5051610ce35760405162461bcd60e51b815260040180806020018281038252602381526020018061491b6023913960400191505060405180910390fd5b604080516337d7f9c160e21b815260208c8101356001600160401b03166004830181905292516110039263df5fe704926024808301939192829003018186803b158015610d2f57600080fd5b505afa158015610d43573d6000803e3d6000fd5b505050506040513d6020811015610d5957600080fd5b5051610d965760405162461bcd60e51b815260040180806020018281038252602381526020018061491b6023913960400191505060405180910390fd5b60608b013560ff81166000908152600560205260409020546001600160401b03909116906001600160a01b0316610e0f576040805162461bcd60e51b815260206004820152601860248201527718da185b9b995b081a5cc81b9bdd081cdd5c1c1bdc9d195960421b604482015290519081900360640190fd5b600b5460ff1615610e53576040805162461bcd60e51b81526020600482015260096024820152681cdd5cdc195b99195960ba1b604482015290519081900360640190fd5b8888604051808383808284376040519201829003822094508f93508e9250819050838380828437808301925050509250505060405180910390201415610ecf576040805162461bcd60e51b815260206004820152600c60248201526b1cd85b59481c185e5b1bd85960a21b604482015290519081900360640190fd5b60606001600160401b0360408e01358116908e83013516610ef08282613e92565b80516020808301919091206000818152600e9092526040909120549194509060ff1615610f59576040805162461bcd60e51b8152602060048201526012602482015271185b1c9958591e4818da185b1b195b99d95960721b604482015290519081900360640190fd5b6000908152600e60205260408120805460ff191660011790558f8160200201356001600160401b0316905060608f8f8080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f82011690508083019250505050505050905060608c8c8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201829052506040805163cba510a960e01b81526001600160401b038a16600482015290519596509094611003945063cba510a9935060248083019350602092829003018186803b15801561104f57600080fd5b505afa158015611063573d6000803e3d6000fd5b505050506040513d602081101561107957600080fd5b505160408051808201909152600381526269626360e81b60208201529091506110a6908290898686613eda565b6110ef576040805162461bcd60e51b81526020600482015260156024820152740696e76616c6964206d65726b6c652070726f6f663605c1b604482015290519081900360640190fd5b5050505060008f60016004811061110257fe5b60200201356001600160401b0316905060608d8d8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050604080516020601f8f018190048102820181019092528d815293945060609392508d91508c908190840183828082843760009201829052506040805163cba510a960e01b81526001600160401b038a16600482015290519596509094611003945063cba510a9935060248083019350602092829003018186803b1580156111ce57600080fd5b505afa1580156111e2573d6000803e3d6000fd5b505050506040513d60208110156111f857600080fd5b505160408051808201909152600381526269626360e81b6020820152909150611225908290898686613eda565b61126e576040805162461bcd60e51b8152602060048201526015602482015274696e76616c6964206d65726b6c652070726f6f663160581b604482015290519081900360640190fd5b5050505061127a613fd7565b604080516001600160401b038416815260ff83166020820152815133927f039eb91179ffd7d3b6e97f8ea106e748e827f910b872375dbc9c14a362319c3c928290030190a2505050505050505050505050505050565b603281565b600d6020526000908152604090205461ffff1681565b600e6020526000908152604090205460ff1681565b60045460070b81565b60025481565b600a602052600090815260409020546001600160401b031681565b60606000825160210190506060816040519080825280601f01601f191660200182016040528015611362576020820181803683370190505b506021810186905260018101879052828152905060418101600061138586614055565b5090506113948183885161405f565b50909695505050505050565b600181565b60096020526000908152604090205460ff1681565b61100181565b6102ca81565b600881565b61200081565b604080517710d05390d15317d514905394d1915497d41493d413d4d05360421b8152905190819003601801902081565b6040805163569e4ed360e11b815233600482015290516000916110009163ad3c9da691602480820192602092909190829003018186803b15801561144457600080fd5b505afa158015611458573d6000803e3d6000fd5b505050506040513d602081101561146e57600080fd5b505160408051633d42651560e11b8152905191925060009161100091637a84ca2a916004808301926020929190829003018186803b1580156114af57600080fd5b505afa1580156114c3573d6000803e3d6000fd5b505050506040513d60208110156114d957600080fd5b50519050806114e6575060155b6000821180156114f65750808211155b611535576040805162461bcd60e51b815260206004820152600b60248201526a1b9bdd0818d8589a5b995d60aa1b604482015290519081900360640190fd5b604080516001600160a01b038087166020808401919091529086168284015282518083038401815260608301808552815191909201207710d05390d15317d514905394d1915497d41493d413d4d05360421b90915291519081900360780190206000906115a290836140a0565b905080156116145760408051630911a2c160e11b81526001600160a01b03888116600483015287166024820152905161100491631223458291604480830192600092919082900301818387803b1580156115fb57600080fd5b505af115801561160f573d6000803e3d6000fd5b505050505b505050505050565b604080516f14d554d411539117d41493d413d4d05360821b8152905190819003601001902081565b600281565b600c602052600090815260409020805460019091015461ffff8216916201000090046001600160801b03169083565b604080516e149153d4115397d41493d413d4d053608a1b8152905190819003600f01902081565b6005602052600090815260409020546001600160a01b031681565b61100581565b601081565b60035481565b61100881565b600b81565b60005460ff16611729576040805162461bcd60e51b81526020600482015260196024820152781d1a194818dbdb9d1c9858dd081b9bdd081a5b9a5d081e595d603a1b604482015290519081900360640190fd5b60408051630a83aaa960e31b815233600482015290516110069163541d5548916024808301926020929190829003018186803b15801561176857600080fd5b505afa15801561177c573d6000803e3d6000fd5b505050506040513d602081101561179257600080fd5b50516117e5576040805162461bcd60e51b815260206004820152601f60248201527f746865206d73672073656e646572206973206e6f7420612072656c6179657200604482015290519081900360640190fd5b7388cb4d8f77742c24d647bef8049d3f3c56067cdd33148061181a57507342d596440775c90db8d9187b47650986e106349333145b6118555760405162461bcd60e51b815260040180806020018281038252602a8152602001806148bf602a913960400191505060405180910390fd5b60ff8116600090815260086020526040902054829082906001600160401b0390811690831681146118c5576040805162461bcd60e51b815260206004820152601560248201527439b2b8bab2b731b2903737ba1034b71037b93232b960591b604482015290519081900360640190fd5b60ff8216600090815260086020908152604091829020805467ffffffffffffffff1916600185016001600160401b039081169190911790915582516337d7f9c160e21b81529089166004820152915188926110039263df5fe70492602480840193829003018186803b15801561193a57600080fd5b505afa15801561194e573d6000803e3d6000fd5b505050506040513d602081101561196457600080fd5b50516119a15760405162461bcd60e51b815260040180806020018281038252602381526020018061491b6023913960400191505060405180910390fd5b60ff851660009081526005602052604090205485906001600160a01b0316611a0b576040805162461bcd60e51b815260206004820152601860248201527718da185b9b995b081a5cc81b9bdd081cdd5c1c1bdc9d195960421b604482015290519081900360640190fd5b60ff86166000908152600a6020526040902054889087906001600160401b039081169083161015611a74576040805162461bcd60e51b815260206004820152600e60248201526d3a37b79037b632103432b0b232b960911b604482015290519081900360640190fd5b60ff81166000908152600a60205260409020546001600160401b03838116911614611ac65760ff81166000908152600a60205260409020805467ffffffffffffffff19166001600160401b0384161790555b600b5460ff1615611b0a576040805162461bcd60e51b81526020600482015260096024820152681cdd5cdc195b99195960ba1b604482015290519081900360640190fd5b60608e8e8080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f82011690508083019250505050505050905060608d8d8080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050509050611c4e6110036001600160a01b031663cba510a98e6040518263ffffffff1660e01b815260040180826001600160401b03166001600160401b0316815260200191505060206040518083038186803b158015611bf757600080fd5b505afa158015611c0b573d6000803e3d6000fd5b505050506040513d6020811015611c2157600080fd5b505160408051808201909152600381526269626360e81b6020820152611c478e8e613e92565b8585613eda565b611c96576040805162461bcd60e51b815260206004820152601460248201527334b73b30b634b21036b2b935b63290383937b7b360611b604482015290519081900360640190fd5b60408051631bb5062960e31b81526001600160401b038e16600482015290516000916110039163dda8314891602480820192602092909190829003018186803b158015611ce257600080fd5b505afa158015611cf6573d6000803e3d6000fd5b505050506040513d6020811015611d0c57600080fd5b505190508b8b600080806060611d218961438b565b935093509350935083611de3578460ff16866001600160401b03167ff7b2e42d694eb1100184aae86d4245d9e46966100b1dc7e723275b98326854ac8b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015611d9b578181015183820152602001611d83565b50505050905090810190601f168015611dc85780820380516001836020036101000a031916815260200191505b509250505060405180910390a35050505050505050506129fe565b6040805160ff85811682529151918716916001600160401b038916917f36afdaf439a8f43fe72135135d804ae620b37a474f0943b5b85f6788312cad40919081900360200190a360ff83166123685760ff85166000818152600560209081526040808320548151631182b87560e01b815260048101958652602481019283528651604482015286516001600160a01b03909216958695631182b875958d958a9593949093606490910192918601918190849084905b83811015611eb0578181015183820152602001611e98565b50505050905090810190601f168015611edd5780820380516001836020036101000a031916815260200191505b509350505050600060405180830381600087803b158015611efd57600080fd5b505af1925050508015611fe157506040513d6000823e601f3d908101601f191682016040526020811015611f3057600080fd5b8101908080516040519392919084600160201b821115611f4f57600080fd5b908301906020820185811115611f6457600080fd5b8251600160201b811182820188101715611f7d57600080fd5b82525081516020918201929091019080838360005b83811015611faa578181015183820152602001611f92565b50505050905090810190601f168015611fd75780820380516001836020036101000a031916815260200191505b5060405250505060015b6122f3576040516000815260443d1015611ffd57506000612098565b60046000803e60005160e01c6308c379a0811461201e576000915050612098565b60043d036004833e81513d60248201116001600160401b038211171561204957600092505050612098565b80830180516001600160401b0381111561206a576000945050505050612098565b8060208301013d860181111561208857600095505050505050612098565b601f01601f191660405250925050505b806120a357506121b5565b60ff87166000908152600760205260408120546120da916001600160401b039091169089906120d5906002908861132a565b61443b565b60ff8716600090815260076020908152604080832080546001600160401b038082166001011667ffffffffffffffff19909116179055805182815284518184015284516001600160a01b038716947ff91a8f63e5b3e0e89e5f93e1915a7805f3c52d9a73b3c09769785c2c7bf87acf948794849390840192918601918190849084905b8381101561217557818101518382015260200161215d565b50505050905090810190601f1680156121a25780820380516001836020036101000a031916815260200191505b509250505060405180910390a2506122ee565b3d8080156121df576040519150601f19603f3d011682016040523d82523d6000602084013e6121e4565b606091505b5060ff8716600090815260076020526040812054612217916001600160401b039091169089906120d5906002908861132a565b60ff8716600090815260076020908152604080832080546001600160401b038082166001011667ffffffffffffffff19909116179055805182815284518184015284516001600160a01b038716947f63ac299d6332d1cc4e61b81e59bc00c0ac7c798addadf33840f1307cd2977351948794849390840192918601918190849084905b838110156122b257818101518382015260200161229a565b50505050905090810190601f1680156122df5780820380516001836020036101000a031916815260200191505b509250505060405180910390a2505b612362565b8051156123605760ff871660009081526007602052604081205461232c916001600160401b039091169089906120d5906001908661132a565b60ff8716600090815260076020526040902080546001600160401b038082166001011667ffffffffffffffff199091161790555b505b50612936565b60ff83166001141561260c5760ff8516600081815260056020908152604080832054815163831d65d160e01b815260048101958652602481019283528651604482015286516001600160a01b0390921695869563831d65d1958d958a9593949093606490910192918601918190849084905b838110156123f25781810151838201526020016123da565b50505050905090810190601f16801561241f5780820380516001836020036101000a031916815260200191505b509350505050600060405180830381600087803b15801561243f57600080fd5b505af1925050508015612450575060015b612362576040516000815260443d101561246c57506000612507565b60046000803e60005160e01c6308c379a0811461248d576000915050612507565b60043d036004833e81513d60248201116001600160401b03821117156124b857600092505050612507565b80830180516001600160401b038111156124d9576000945050505050612507565b8060208301013d86018111156124f757600095505050505050612507565b601f01601f191660405250925050505b806125125750612577565b60408051602080825283518183015283516001600160a01b038616937ff91a8f63e5b3e0e89e5f93e1915a7805f3c52d9a73b3c09769785c2c7bf87acf938693909283928301918501908083836000831561217557818101518382015260200161215d565b3d8080156125a1576040519150601f19603f3d011682016040523d82523d6000602084013e6125a6565b606091505b5060408051602080825283518183015283516001600160a01b038616937f63ac299d6332d1cc4e61b81e59bc00c0ac7c798addadf33840f1307cd297735193869390928392830191850190808383600083156122b257818101518382015260200161229a565b60ff8316600214156129365760ff8516600081815260056020908152604080832054815163c8509d8160e01b815260048101958652602481019283528651604482015286516001600160a01b0390921695869563c8509d81958d958a9593949093606490910192918601918190849084905b8381101561269657818101518382015260200161267e565b50505050905090810190601f1680156126c35780820380516001836020036101000a031916815260200191505b509350505050600060405180830381600087803b1580156126e357600080fd5b505af19250505080156126f4575060015b612934576040516000815260443d1015612710575060006127ab565b60046000803e60005160e01c6308c379a081146127315760009150506127ab565b60043d036004833e81513d60248201116001600160401b038211171561275c576000925050506127ab565b80830180516001600160401b0381111561277d5760009450505050506127ab565b8060208301013d860181111561279b576000955050505050506127ab565b601f01601f191660405250925050505b806127b6575061285f565b816001600160a01b03167ff91a8f63e5b3e0e89e5f93e1915a7805f3c52d9a73b3c09769785c2c7bf87acf826040518080602001828103825283818151815260200191508051906020019080838360005b8381101561281f578181015183820152602001612807565b50505050905090810190601f16801561284c5780820380516001836020036101000a031916815260200191505b509250505060405180910390a250612934565b3d808015612889576040519150601f19603f3d011682016040523d82523d6000602084013e61288e565b606091505b50816001600160a01b03167f63ac299d6332d1cc4e61b81e59bc00c0ac7c798addadf33840f1307cd2977351826040518080602001828103825283818151815260200191508051906020019080838360005b838110156128f85781810151838201526020016128e0565b50505050905090810190601f1680156129255780820380516001836020036101000a031916815260200191505b509250505060405180910390a2505b505b60ff80861660009081526009602052604090205461100591636f93d2e6918a91339187911680612968575060ff881615155b604080516001600160e01b031960e088901b1681526001600160a01b039586166004820152939094166024840152604483019190915215156064820152905160848083019260209291908290030181600087803b1580156129c857600080fd5b505af11580156129dc573d6000803e3d6000fd5b505050506040513d60208110156129f257600080fd5b50505050505050505050505b5050505050505050505050505050565b630102ca0081565b600981565b61100781565b61100681565b60005460ff1681565b3361100714612a705760405162461bcd60e51b815260040180806020018281038252602e815260200180614847602e913960400191505060405180910390fd5b600b5460ff1615612ab4576040805162461bcd60e51b81526020600482015260096024820152681cdd5cdc195b99195960ba1b604482015290519081900360640190fd5b612b1d84848080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050604080518082019091526012815271626174636853697a65466f724f7261636c6560701b602082015291506145d69050565b15612bb857604080516020601f8401819004810282018101909252828152600091612b60918585808385018382808284376000920191909152506146bd92505050565b90506127108111158015612b755750600a8110155b612bb05760405162461bcd60e51b81526004018080602001828103825260328152602001806148e96032913960400191505060405180910390fd5b600155613453565b612c2184848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505060408051808201909152601281527118591913dc955c19185d1950da185b9b995b60721b602082015291506145d69050565b15612da957606082828080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505082519293505060169091149050612ca45760405162461bcd60e51b815260040180806020018281038252605a815260200180614760605a913960600191505060405180910390fd5b60018101516002820151601683015160ff82161590612cc2816146c2565b612d13576040805162461bcd60e51b815260206004820152601960248201527f61646472657373206973206e6f74206120636f6e747261637400000000000000604482015290519081900360640190fd5b60ff8416600081815260056020908152604080832080546001600160a01b0319166001600160a01b038716908117909155808452600683528184208585528352818420805460ff199081166001179091556009909352818420805490931687151517909255519092917f7e3b6af43092577ee20e60eaa1d9b114a7031305c895ee7dd3ffe17196d2e1e091a35050505050613453565b612e1684848080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050604080518082019091526016815275195b98589b1953dc911a5cd8589b1950da185b9b995b60521b602082015291506145d69050565b15612f4757606082828080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505082519293505060029091149050612e995760405162461bcd60e51b815260040180806020018281038252604a815260200180614875604a913960600191505060405180910390fd5b600181810151600283015160ff80831660009081526005602052604090205492939192908316909114906001600160a01b03168015612f3d576001600160a01b038116600090815260066020908152604080832060ff881680855290835292819020805460ff1916861515908117909155815190815290517fa3132e3f9819fbddc7f0ed6d38d7feef59aa95112090b7c592f5cb5bc4aa4adc929181900390910190a25b5050505050613453565b612fab84848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505060408051808201909152600d81526c73757370656e6451756f72756d60981b602082015291506145d69050565b156130db5760028114612fef5760405162461bcd60e51b815260040180806020018281038252602d8152602001806147ee602d913960400191505060405180910390fd5b604080516020601f840181900481028201810190925282815260009161302d918585808385018382808284376000920191909152506146bd92505050565b905060008161ffff16118015613047575060648161ffff16105b613091576040805162461bcd60e51b8152602060048201526016602482015275696e76616c69642073757370656e642071756f72756d60501b604482015290519081900360640190fd5b604080516f14d554d411539117d41493d413d4d05360821b815281519081900360100190206000908152600d60205220805461ffff90921661ffff19909216919091179055613453565b61313e84848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505060408051808201909152600c81526b72656f70656e51756f72756d60a01b602082015291506145d69050565b1561326c57600281146131825760405162461bcd60e51b815260040180806020018281038252602c81526020018061481b602c913960400191505060405180910390fd5b604080516020601f84018190048102820181019092528281526000916131c0918585808385018382808284376000920191909152506146bd92505050565b905060008161ffff161180156131da575060648161ffff16105b613223576040805162461bcd60e51b8152602060048201526015602482015274696e76616c69642072656f70656e2071756f72756d60581b604482015290519081900360640190fd5b604080516e149153d4115397d41493d413d4d053608a1b8152815190819003600f0190206000908152600d60205220805461ffff90921661ffff19909216919091179055613453565b6132d784848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505060408051808201909152601481527363616e63656c5472616e7366657251756f72756d60601b602082015291506145d69050565b15613416576002811461331b5760405162461bcd60e51b81526004018080602001828103825260348152602001806147ba6034913960400191505060405180910390fd5b604080516020601f8401819004810282018101909252828152600091613359918585808385018382808284376000920191909152506146bd92505050565b905060008161ffff16118015613373575060648161ffff16105b6133c4576040805162461bcd60e51b815260206004820152601e60248201527f696e76616c69642063616e63656c207472616e736665722071756f72756d0000604482015290519081900360640190fd5b604080517710d05390d15317d514905394d1915497d41493d413d4d05360421b815281519081900360180190206000908152600d60205220805461ffff90921661ffff19909216919091179055613453565b6040805162461bcd60e51b815260206004820152600d60248201526c756e6b6e6f776e20706172616d60981b604482015290519081900360640190fd5b7f6cdb0ac70ab7f2e2d035cca5be60d89906f2dede7648ddbd7402189c1eeed17a848484846040518080602001806020018381038352878782818152602001925080828437600083820152601f01601f191690910184810383528581526020019050858580828437600083820152604051601f909101601f19169092018290039850909650505050505050a150505050565b6008602052600090815260409020546001600160401b031681565b7fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a47081565b61100281565b6040805163569e4ed360e11b815233600482015290516000916110009163ad3c9da691602480820192602092909190829003018186803b15801561356d57600080fd5b505afa158015613581573d6000803e3d6000fd5b505050506040513d602081101561359757600080fd5b505160408051633d42651560e11b8152905191925060009161100091637a84ca2a916004808301926020929190829003018186803b1580156135d857600080fd5b505afa1580156135ec573d6000803e3d6000fd5b505050506040513d602081101561360257600080fd5b505190508061360f575060155b60008211801561361f5750808211155b61365e576040805162461bcd60e51b815260206004820152600b60248201526a1b9bdd0818d8589a5b995d60aa1b604482015290519081900360640190fd5b600b5460ff166136a5576040805162461bcd60e51b815260206004820152600d60248201526c1b9bdd081cdd5cdc195b991959609a1b604482015290519081900360640190fd5b604080516e149153d4115397d41493d413d4d053608a1b8152905190819003600f0190206000906136f6907fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a4706140a0565b9050801561373457600b805460ff1916905560405133907f899fe8c37dc61708a3aaa99c4bf143346c1d1da69af79be9e8920c0a6785b75290600090a25b505050565b600660209081526000928352604080842090915290825290205460ff1681565b6040518060400160405280600381526020016269626360e81b81525081565b610e1081565b61100381565b60005460ff16156137dc576040805162461bcd60e51b815260206004820152601960248201527f74686520636f6e747261637420616c726561647920696e697400000000000000604482015290519081900360640190fd5b7f1471eb6eb2c5e789fc3de43f8ce62938c7d1836ec861730447e2ada8fd81017b80546001600160a01b0319908116611008179091557f92e85d02570a8092d09a6e3a57665bc3815a2699a4074001bf1ccabf660f5a36805460ff199081169091557fd8af288fc1c8680b4f4706064cf021e264efb6828fcaf7eb5ca36818eb365bcc8054821660019081179091557f89832631fb3c3307a103ba2c84ab569c64d6182a18893dcd163f0f1c2090733a805484166110049081179091557f6cde3cea4b3a3fb2488b2808bae7556f4a405e50f65e1794383bc026131b13c38054841690557f72e4efa1513b071517c6c74dba31b5934a81aa83cddd400e7081df5529c9943680548416831790557fa9bc9a3a348c357ba16b37005d7e6b3236198c0e939f4af8c5f19b8deeb8ebc08054851690911790557fc575c31fea594a6eb97c8e9d3f9caee4c16218c6ef37e923234c0fe9014a61e78054831690557f4e523af77f034e9810f1c94057f5e931fb3d16a51511a4c3add793617d18610580548316821790557ffb33122aa9f93cc639ebe80a7bc4784c11e6053dde89c6f4f7e268c6a623da1e805484166110001790557fc7694af312c4f286114180fd0ba6a52461fcee8a381636770b19a343af92538a80548316821790557f01112dd68e482ba8d68a7e828cff8b3abcea08eab88941953c180a7e650e9cd480548316821790557fc0a4a8be475dfebc377ebef2d7c4ff47656f572a08dd92b81017efcdba0febe1805484166110071790557f87e8a52529e8ece4ef759037313542a6429ff494a9fab9027fb79db90124eba680548316821790557f4c7666bbcb22d46469f7cc282f70764a7012dca2cce630ff8d83db9a9cdd48f080548316821790557f40f28f99a40bc9f6beea1013afdbc3cdcc689eb76b82c4de06c0acf1e1932ed58054909316611001179092557f0d9cf2cd531699eed8dd34e40ff2884a14a698c4898184fba85194e6f6772d248054821683179055600b60009081527f23f68c9bd22b8a93d06adabe17481c87c016bcbd20adc8bfd707a4d813a572176020527fdf0d5d05428057f5455c2dc8e810dd86d1e9350faa72f16bda8a45443c5b39328054831684179055603283556004805467ffffffffffffffff19166001600160401b031790556002819055600381905580549091169091179055565b6007602052600090815260409020546001600160401b031681565b6040805163569e4ed360e11b815233600482015290516000916110009163ad3c9da691602480820192602092909190829003018186803b158015613b9957600080fd5b505afa158015613bad573d6000803e3d6000fd5b505050506040513d6020811015613bc357600080fd5b505160408051633d42651560e11b8152905191925060009161100091637a84ca2a916004808301926020929190829003018186803b158015613c0457600080fd5b505afa158015613c18573d6000803e3d6000fd5b505050506040513d6020811015613c2e57600080fd5b5051905080613c3b575060155b600082118015613c4b5750808211155b613c8a576040805162461bcd60e51b815260206004820152600b60248201526a1b9bdd0818d8589a5b995d60aa1b604482015290519081900360640190fd5b600b5460ff1615613cce576040805162461bcd60e51b81526020600482015260096024820152681cdd5cdc195b99195960ba1b604482015290519081900360640190fd5b604080516f14d554d411539117d41493d413d4d05360821b81529051908190036010019020600090613d20907fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a4706140a0565b9050801561373457613734613fd7565b60005460ff16613d83576040805162461bcd60e51b81526020600482015260196024820152781d1a194818dbdb9d1c9858dd081b9bdd081a5b9a5d081e595d603a1b604482015290519081900360640190fd5b33600090815260066020908152604080832060ff8089168552925290912054859116613de05760405162461bcd60e51b815260040180806020018281038252603181526020018061472f6031913960400191505060405180910390fd5b60ff85166000908152600760209081526040808320548151601f88018490048402810184019092528682526001600160401b031692613e459284928a926120d592909189918c908c908190840183828082843760009201919091525061132a92505050565b60ff959095166000908152600760205260409020805467ffffffffffffffff191660019096016001600160401b03169590951790945550505050565b61100081565b600381565b61100481565b60408051600e808252818301909252606091630102ca0060ff851617918391602082018180368337505050600e81810187905260068201939093529182525090505b92915050565b600085613ee957506000613fce565b606082518451865160800101016040519080825280601f01601f191660200182016040528015613f20576020820181803683370190505b5090506000613f2e826146c8565b602080890151825201905086600080613f4689614055565b8086526020909501949092509050613f5f82858361405f565b92830192613f6c88614055565b8086526020909501949092509050613f8582858361405f565b9283018a815260200192613f9887614055565b9092509050613fa882858361405f565b508351602001613fb66146ce565b60208183886065600019fa5051600114955050505050505b95945050505050565b600b5460ff161561401b576040805162461bcd60e51b81526020600482015260096024820152681cdd5cdc195b99195960ba1b604482015290519081900360640190fd5b600b805460ff1916600117905560405133907f6f123d3d54c84a7960a573b31c221dcd86e13fd849c5adb0c6ca851468cc1ae490600090a2565b8051602090910191565b5b6020811061407f578251825260209283019290910190601f1901614060565b915181516020939093036101000a6000190180199091169216919091179052565b6000828152600d602052604081205461ffff1661416957604080516f14d554d411539117d41493d413d4d05360821b815281519081900360100181206000908152600d6020818152848320805461ffff199081166001179091556e149153d4115397d41493d413d4d053608a1b8552855194859003600f01852084528282528584208054821660029081179091557710d05390d15317d514905394d1915497d41493d413d4d05360421b8652865195869003601801909520845291905292902080549092161790555b6000838152600c6020526040902080546201000090046001600160801b03164210158061419a575082816001015414155b15614273576000848152600d6020908152604080832054845461ffff91821661ffff199091161771ffffffffffffffffffffffffffffffff0000191662010000610e1042016001600160801b03908116820292909217875560018088018a905560028801805491820181558752958590209095018054336001600160a01b031990911681179091558654845193811684529590950416928101929092528181018690525186917f9e109f0e55ef32e99e4880be2ec357f1ddb3469c79d0747ef4762da6e89fabe5916060918190039190910190a3614327565b60005b60028201548110156142fe57336001600160a01b031682600201828154811061429b57fe5b6000918252602090912001546001600160a01b031614156142f6576040805162461bcd60e51b815260206004820152601060248201526f185b1c9958591e48185c1c1c9bdd995960821b604482015290519081900360640190fd5b600101614276565b50600281018054600181018255600091825260209091200180546001600160a01b031916331790555b8054600282015461ffff90911611614381576000848152600c60205260408120805471ffffffffffffffffffffffffffffffffffff19168155600181018290559061437560028301826146ec565b50506001915050613ed4565b5060009392505050565b600080600060606021855110156143bb575050604080516000808252602082019092529092508291508190614434565b600185015160218601518651604080516020198301808252601f1960011990940193909316810160200190915260418901939291606091908015614406576020820181803683370190505b509050600061441482614055565b509050614426858260218d510361405f565b506001975091955093509150505b9193509193565b600b5460ff161561447f576040805162461bcd60e51b81526020600482015260096024820152681cdd5cdc195b99195960ba1b604482015290519081900360640190fd5b6002544311156144be576004805467ffffffffffffffff1981166001600160401b036001600793840b810190930b1617909155600355436002556144ff565b600380546001908101918290555410156144ff576004805467ffffffffffffffff1981166001600160401b036001600793840b810190930b16179091556003555b8160ff16836001600160401b0316600460009054906101000a900460070b6001600160401b03167f3a6e0fc61675aa2a100bcba0568368bb92bcec91c97673391074f11138f0cffe6102ca85604051808361ffff1661ffff16815260200180602001828103825283818151815260200191508051906020019080838360005b8381101561459657818101518382015260200161457e565b50505050905090810190601f1680156145c35780820380516001836020036101000a031916815260200191505b50935050505060405180910390a4505050565b6000816040516020018082805190602001908083835b6020831061460b5780518252601f1990920191602091820191016145ec565b6001836020036101000a03801982511681845116808217855250505050505090500191505060405160208183030381529060405280519060200120836040516020018082805190602001908083835b602083106146795780518252601f19909201916020918201910161465a565b6001836020036101000a0380198251168184511680821785525050505050509050019150506040516020818303038152906040528051906020012014905092915050565b015190565b3b151590565b60200190565b60405180602001604052806001906020820280368337509192915050565b508054600082559060005260206000209081019061470a919061470d565b50565b61472b91905b808211156147275760008155600101614713565b5090565b9056fe74686520636f6e747261637420616e64206368616e6e656c2068617665206e6f74206265656e20726567697374657265646c656e677468206f662076616c756520666f72206164644f725570646174654368616e6e656c2073686f756c642062652032322c206368616e6e656c49643a697346726f6d53797374656d3a68616e646c6572416464726573736c656e677468206f662076616c756520666f722063616e63656c5472616e7366657251756f72756d2073686f756c6420626520326c656e677468206f662076616c756520666f722073757370656e6451756f72756d2073686f756c6420626520326c656e677468206f662076616c756520666f722072656f70656e51756f72756d2073686f756c642062652032746865206d6573736167652073656e646572206d75737420626520676f7665726e616e636520636f6e74726163746c656e677468206f662076616c756520666f7220656e61626c654f7244697361626c654368616e6e656c2073686f756c6420626520322c206368616e6e656c49643a6973456e61626c65746865206d73672073656e646572206973206e6f7420612077686974656c6162656c2072656c61796572746865206e6577426174636853697a65466f724f7261636c652073686f756c6420626520696e205b31302c2031303030305d6c6967687420636c69656e74206e6f742073796e632074686520626c6f636b20796574a264697066735822122071e66313acfab1044fe7f39ab08bf93a04cfbffbdb847b10ebfff85c42d0d13664736f6c63430006040033", + }, + }, + } } func UpgradeBuildInSystemContract(config *params.ChainConfig, blockNumber *big.Int, statedb *state.StateDB) { @@ -522,6 +572,10 @@ func UpgradeBuildInSystemContract(config *params.ChainConfig, blockNumber *big.I applySystemContractUpgrade(moranUpgrade[network], blockNumber, statedb, logger) } + if config.IsOnBohr(blockNumber) { + applySystemContractUpgrade(bohrUpgrade[network], blockNumber, statedb, logger) + } + /* apply other upgrades */ diff --git a/params/config.go b/params/config.go index 05a6b67271..0aa7ee865b 100644 --- a/params/config.go +++ b/params/config.go @@ -737,11 +737,11 @@ func (c *ChainConfig) IsOnMoran(num *big.Int) bool { } func (c *ChainConfig) IsBohr(num *big.Int) bool { - return isForked(c.MoranBlock, num) + return isForked(c.BohrBlock, num) } func (c *ChainConfig) IsOnBohr(num *big.Int) bool { - return configNumEqual(c.MoranBlock, num) + return configNumEqual(c.BohrBlock, num) } // CheckCompatible checks whether scheduled fork transitions have been imported