0x60806040526004361061037a5760003560e01c80634fb2e45d116101d157806395d89b4111610102578063dd62ed3e116100a0578063f9f92be41161006f578063f9f92be414610af4578063fb78680d14610b14578063fd01bd4c14610b34578063fdb78c0e14610b4a57600080fd5b8063dd62ed3e14610a02578063f08f43a214610a48578063f8ec691114610a68578063f94aa1b414610a8e57600080fd5b8063b3d514fb116100dc578063b3d514fb146105cc578063b7df8b361461093e578063bfc2fc3514610958578063cf8477061461097857600080fd5b806395d89b41146108f2578063a9059cbb1461091e578063b1b08f71146105cc57600080fd5b80636ebd00781161016f57806375cb1bd11161014957806375cb1bd11461088a5780637b3efe58146108aa578063893d20e8146108bf5780638a8c523c146108dd57600080fd5b80636ebd00781461084057806370a0823114610855578063715018a61461087557600080fd5b8063537df3b6116101ab578063537df3b6146107a7578063590ffdce146107c75780635cce86cd146107e75780636e1828091461082057600080fd5b80634fb2e45d1461072f5780634fbee1931461074f57806350a8e0161461078857600080fd5b80632b112e49116102ab578063452ed4f1116102495780634ada218b116102235780634ada218b146106bf5780634b3c109a146106d95780634bbb93eb146106ef5780634e718e481461070f57600080fd5b8063452ed4f11461067457806346ea7ac81461069457806348726021146106aa57600080fd5b8063313ce56711610285578063313ce567146105f857806332cde6641461061457806336fddb04146106345780633f3cf56c1461065457600080fd5b80632b112e49146105b75780632b28fc7a146105cc5780632e8fa821146105e257600080fd5b8063084e4f8a1161031857806318160ddd116102f257806318160ddd1461054c57806323b872dd14610561578063260039571461058157806328577751146105a157600080fd5b8063084e4f8a146104de578063095ea7b3146105175780630fa604e41461053757600080fd5b8063069d955f11610354578063069d955f146103f457806306fdde03146104495780630758d9241461048f57806307dd79e0146104b457600080fd5b806303fd2a4514610386578063043c17de146103b95780630445b667146103d057600080fd5b3661038157005b600080fd5b34801561039257600080fd5b5061039c61dead81565b6040516001600160a01b0390911681526020015b60405180910390f35b3480156103c557600080fd5b506103ce610b69565b005b3480156103dc57600080fd5b506103e660135481565b6040519081526020016103b0565b34801561040057600080fd5b50600a546104249061ffff80821691620100008104821691600160201b9091041683565b6040805161ffff948516815292841660208401529216918101919091526060016103b0565b34801561045557600080fd5b50604080518082019091526014815273476f6f64204675636b696e67204d6f726e696e6760601b60208201525b6040516103b09190612bc3565b34801561049b57600080fd5b50600c5461039c9061010090046001600160a01b031681565b3480156104c057600080fd5b50600c546104ce9060ff1681565b60405190151581526020016103b0565b3480156104ea57600080fd5b506104ce6104f9366004612c30565b6001600160a01b031660009081526008602052604090205460ff1690565b34801561052357600080fd5b506104ce610532366004612c4d565b610c10565b34801561054357600080fd5b506103e6610c27565b34801561055857600080fd5b506009546103e6565b34801561056d57600080fd5b506104ce61057c366004612c79565b610c47565b34801561058d57600080fd5b506103ce61059c366004612cba565b610cbf565b3480156105ad57600080fd5b506103e660165481565b3480156105c357600080fd5b506103e6610d98565b3480156105d857600080fd5b506103e6610bb881565b3480156105ee57600080fd5b506103e660145481565b34801561060457600080fd5b50604051600981526020016103b0565b34801561062057600080fd5b506103ce61062f366004612cf3565b610dc6565b34801561064057600080fd5b506103ce61064f366004612d46565b610f07565b34801561066057600080fd5b506103ce61066f366004612cba565b610f5c565b34801561068057600080fd5b50600d5461039c906001600160a01b031681565b3480156106a057600080fd5b506103e661177081565b3480156106b657600080fd5b50601a546103e6565b3480156106cb57600080fd5b506019546104ce9060ff1681565b3480156106e557600080fd5b506103e6601a5481565b3480156106fb57600080fd5b506103e661070a366004612d7b565b61104f565b34801561071b57600080fd5b506103ce61072a366004612d7b565b611081565b34801561073b57600080fd5b506103ce61074a366004612c30565b6110fa565b34801561075b57600080fd5b506104ce61076a366004612c30565b6001600160a01b031660009081526006602052604090205460ff1690565b34801561079457600080fd5b506019546104ce90610100900460ff1681565b3480156107b357600080fd5b506103ce6107c2366004612c30565b61122d565b3480156107d357600080fd5b506103ce6107e2366004612d46565b611278565b3480156107f357600080fd5b506104ce610802366004612c30565b6001600160a01b031660009081526007602052604090205460ff1690565b34801561082c57600080fd5b506103ce61083b366004612c30565b6112cd565b34801561084c57600080fd5b506103e6611319565b34801561086157600080fd5b506103e6610870366004612c30565b611334565b34801561088157600080fd5b506103ce61134f565b34801561089657600080fd5b506103ce6108a5366004612d94565b6113de565b3480156108b657600080fd5b50601b546103e6565b3480156108cb57600080fd5b50601c546001600160a01b031661039c565b3480156108e957600080fd5b506103ce611447565b3480156108fe57600080fd5b5060408051808201909152600381526247464d60e81b6020820152610482565b34801561092a57600080fd5b506104ce610939366004612c4d565b6115ab565b34801561094a57600080fd5b506015546104ce9060ff1681565b34801561096457600080fd5b506103ce610973366004612ddf565b6115c2565b34801561098457600080fd5b50600b546109c59061ffff80821691620100008104821691600160201b8204811691600160301b8104821691600160401b8204811691600160501b90041686565b6040805161ffff978816815295871660208701529386169385019390935290841660608401528316608083015290911660a082015260c0016103b0565b348015610a0e57600080fd5b506103e6610a1d366004612dfb565b6001600160a01b03918216600090815260046020908152604080832093909416825291909152205490565b348015610a5457600080fd5b506103ce610a63366004612e34565b61164b565b348015610a7457600080fd5b5060195461039c906201000090046001600160a01b031681565b348015610a9a57600080fd5b50600e54600f54601054601154610ac1936001600160a01b03908116938116928116911684565b604080516001600160a01b03958616815293851660208501529184169183019190915290911660608201526080016103b0565b348015610b0057600080fd5b506103ce610b0f366004612c30565b6117c2565b348015610b2057600080fd5b506103ce610b2f366004612e99565b611810565b348015610b4057600080fd5b506103e6601b5481565b348015610b5657600080fd5b506012546104ce90610100900460ff1681565b601c546001600160a01b03163314610b9c5760405162461bcd60e51b8152600401610b9390612ecb565b60405180910390fd5b60646009546002610bad9190612f0c565b610bb79190612f2b565b601855600954606490610bcb906002612f0c565b610bd59190612f2b565b601755600a805465ffffffffffff19166301f401f4179055600b8054690258000000000000000069ffff0000ffff0000000019909116179055565b6000610c1d3384846119c5565b5060015b92915050565b6000610c356009600a613031565b601854610c429190612f2b565b905090565b6001600160a01b038316600090815260046020908152604080832033845290915281205460001914610cac576001600160a01b038416600090815260046020908152604080832033845290915281208054849290610ca6908490613040565b90915550505b610cb7848484611abe565b949350505050565b601c546001600160a01b03163314610ce95760405162461bcd60e51b8152600401610b9390612ecb565b6064600954610cf89190612f2b565b8183600954610d079190612f0c565b610d119190612f2b565b1015610d785760405162461bcd60e51b815260206004820152603060248201527f4d61782057616c6c657420616d74206d7573742062652061626f76652031252060448201526f37b3103a37ba30b61039bab838363c9760811b6064820152608401610b93565b8082600954610d879190612f0c565b610d919190612f2b565b6018555050565b6000610da46000611334565b610daf61dead611334565b610db99190613057565b600954610c429190613040565b601c546001600160a01b03163314610df05760405162461bcd60e51b8152600401610b9390612ecb565b610bb88361ffff1611158015610e0c5750610bb88261ffff1611155b8015610e1e5750610bb88161ffff1611155b610e6a5760405162461bcd60e51b815260206004820152601760248201527f43616e6e6f7420657863656564206d6178696d756d732e0000000000000000006044820152606401610b93565b611770610e77838561306f565b61ffff161115610ec95760405162461bcd60e51b815260206004820181905260248201527f43616e6e6f742065786365656420726f756e6474726970206d6178696d756d2e6044820152606401610b93565b600a805461ffff94851663ffffffff199091161762010000938516939093029290921765ffff000000001916600160201b9190931602919091179055565b601c546001600160a01b03163314610f315760405162461bcd60e51b8152600401610b9390612ecb565b6001600160a01b03919091166000908152600760205260409020805460ff1916911515919091179055565b601c546001600160a01b03163314610f865760405162461bcd60e51b8152600401610b9390612ecb565b6103e86009546005610f989190612f0c565b610fa29190612f2b565b8183600954610fb19190612f0c565b610fbb9190612f2b565b101561102f5760405162461bcd60e51b815260206004820152603760248201527f4d6178205472616e73616374696f6e20616d74206d7573742062652061626f7660448201527f6520302e3525206f6620746f74616c20737570706c792e0000000000000000006064820152608401610b93565b808260095461103e9190612f0c565b6110489190612f2b565b6017555050565b600d5460009061271090839061106d906001600160a01b0316611334565b6110779190612f0c565b610c219190612f2b565b601c546001600160a01b031633146110ab5760405162461bcd60e51b8152600401610b9390612ecb565b60968111156110f55760405162461bcd60e51b815260206004820152601660248201527521b0b73737ba1039b2ba1030b137bb329018971a929760511b6044820152606401610b93565b601655565b601c546001600160a01b031633146111245760405162461bcd60e51b8152600401610b9390612ecb565b6001600160a01b03811661114a5760405162461bcd60e51b8152600401610b9390613095565b6001600160a01b03811661dead14156111755760405162461bcd60e51b8152600401610b9390613095565b601c5461118c906001600160a01b03166000611278565b611197816001611278565b601c546000906111af906001600160a01b0316611334565b11156111db57601c546111d9906001600160a01b0316826111cf82611334565b6000806001611f0f565b505b601c80546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b601c546001600160a01b031633146112575760405162461bcd60e51b8152600401610b9390612ecb565b6001600160a01b03166000908152600860205260409020805460ff19169055565b601c546001600160a01b031633146112a25760405162461bcd60e51b8152600401610b9390612ecb565b6001600160a01b03919091166000908152600660205260409020805460ff1916911515919091179055565b601c546001600160a01b031633146112f75760405162461bcd60e51b8152600401610b9390612ecb565b601180546001600160a01b0319166001600160a01b0392909216919091179055565b60006113276009600a613031565b601754610c429190612f2b565b6001600160a01b031660009081526001602052604090205490565b601c546001600160a01b031633146113795760405162461bcd60e51b8152600401610b9390612ecb565b601c54611390906001600160a01b03166000611278565b601c80546001600160a01b031981169091556040516001600160a01b039091169060009082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a350565b601c546001600160a01b031633146114085760405162461bcd60e51b8152600401610b9390612ecb565b600e80546001600160a01b039485166001600160a01b031991821617909155600f80549385169382169390931790925560108054919093169116179055565b601c546001600160a01b031633146114715760405162461bcd60e51b8152600401610b9390612ecb565b60195460ff16156114c45760405162461bcd60e51b815260206004820152601860248201527f54726164696e6720616c726561647920656e61626c65642100000000000000006044820152606401610b93565b601954610100900460ff1661151b5760405162461bcd60e51b815260206004820152601860248201527f4c6971756964697479206d7573742062652061646465642e00000000000000006044820152606401610b93565b6019805460ff19166001179055600d5461271090611541906001600160a01b0316611334565b61154c90600a612f0c565b6115569190612f2b565b601355600d5461271090611572906001600160a01b0316611334565b61157d90601e612f0c565b6115879190612f2b565b601455600c546115a990309061010090046001600160a01b03166000196119c5565b565b60006115b8338484611abe565b5060019392505050565b601c546001600160a01b031633146115ec5760405162461bcd60e51b8152600401610b9390612ecb565b6012805461ff001916610100841515908102919091179091556015805460ff19168315151790556040519081527f7b0a47d3b0234280b6c9213c5bbff44c8b6001bea7770b3950280f9141053257906020015b60405180910390a15050565b601c546001600160a01b031633146116755760405162461bcd60e51b8152600401610b9390612ecb565b600b805461ffff87811663ffffffff199092169190911762010000878316021767ffffffff000000001916600160201b8683160267ffff000000000000191617600160301b858316021769ffff00000000000000001916600160401b9184169190910217905580836116e7868861306f565b6116f1919061306f565b6116fb919061306f565b600b805461ffff60501b1916600160501b61ffff93841602179055600a5460009161172f916201000081048216911661306f565b600b5461ffff9182169250829161175891600160301b8104821691600160501b9091041661306f565b61ffff1611156117ba5760405162461bcd60e51b815260206004820152602760248201527f43616e6e6f74206578636565642073756d206f662062757920616e642073656c60448201526636103332b2b99760c91b6064820152608401610b93565b505050505050565b601c546001600160a01b031633146117ec5760405162461bcd60e51b8152600401610b9390612ecb565b6001600160a01b03166000908152600860205260409020805460ff19166001179055565b601c546001600160a01b0316331461183a5760405162461bcd60e51b8152600401610b9390612ecb565b82846009546118499190612f0c565b6118539190612f2b565b6013556009548190611866908490612f0c565b6118709190612f2b565b601481905560135411156118d05760405162461bcd60e51b815260206004820152602160248201527f5468726573686f6c642063616e6e6f742062652061626f766520616d6f756e746044820152601760f91b6064820152608401610b93565b600d54612710906118e9906001600160a01b0316611334565b6118f4906096612f0c565b6118fe9190612f2b565b601454111561195b5760405162461bcd60e51b815260206004820152602360248201527f43616e6e6f742062652061626f766520312e3525206f662063757272656e742060448201526228249760e91b6064820152608401610b93565b620f424060095461196c9190612f2b565b601454101561198d5760405162461bcd60e51b8152600401610b93906130f2565b620f424060095461199e9190612f2b565b60135410156119bf5760405162461bcd60e51b8152600401610b93906130f2565b50505050565b6001600160a01b038316611a115760405162461bcd60e51b815260206004820152601360248201527245524332303a205a65726f204164647265737360681b6044820152606401610b93565b6001600160a01b038216611a5d5760405162461bcd60e51b815260206004820152601360248201527245524332303a205a65726f204164647265737360681b6044820152606401610b93565b6001600160a01b0383811660008181526004602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b60006001600160a01b038416611b245760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610b93565b6001600160a01b038316611b865760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610b93565b60008211611be85760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b6064820152608401610b93565b6001600160a01b03841660009081526008602052604090205460ff16158015611c2a57506001600160a01b03831660009081526008602052604090205460ff16155b611c3357600080fd5b6001600160a01b0384166000908152600260205260408120548190819060ff1615611c615760019250611c8f565b6001600160a01b03861660009081526002602052604090205460ff1615611c8b5760019150611c8f565b5060015b611c9987876120cc565b15611e665760195460ff16611cf05760405162461bcd60e51b815260206004820152601860248201527f54726164696e67206e6f742079657420656e61626c65642100000000000000006044820152606401610b93565b8280611cf95750815b15611da8576001600160a01b03871660009081526007602052604090205460ff16158015611d4057506001600160a01b03861660009081526007602052604090205460ff16155b15611da857601754851115611da85760405162461bcd60e51b815260206004820152602860248201527f5472616e7366657220616d6f756e74206578636565647320746865206d6178546044820152673c20b6b7bab73a1760c11b6064820152608401610b93565b600c546001600160a01b038781166101009092041614801590611dc9575081155b15611e66576001600160a01b03861660009081526007602052604090205460ff16611e665760185485611dfb88611334565b611e059190613057565b1115611e665760405162461bcd60e51b815260206004820152602a60248201527f5472616e7366657220616d6f756e74206578636565647320746865206d61785760448201526930b63632ba29b4bd329760b11b6064820152608401610b93565b8115611ef65760125460ff16611ef657601254610100900460ff1615611ef6576000611e9130611334565b90506013548110611ef45760145460155460ff1615611ede57601654600d546127109190611ec7906001600160a01b0316611334565b611ed19190612f0c565b611edb9190612f2b565b90505b808210611ee9578091505b611ef2826121a3565b505b505b611f04878787868686611f0f565b979650505050505050565b601954600090610100900460ff16611faa57611f2b87876127d9565b601954610100900460ff16158015611f485750611f4887876120cc565b8015611f52575081155b15611faa5760405162461bcd60e51b815260206004820152602260248201527f5072652d6c6971756964697479207472616e736665722070726f74656374696f604482015261371760f11b6064820152608401610b93565b6001600160a01b03871660009081526006602052604090205460019060ff1680611fec57506001600160a01b03871660009081526006602052604090205460ff165b15611ff5575060005b6001600160a01b0388166000908152600160205260408120805488929061201d908490613040565b909155506000905081612030578661203c565b61203c8987878a6128f1565b6001600160a01b038916600090815260016020526040812080549293508392909190612069908490613057565b92505081905550876001600160a01b0316896001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516120b591815260200190565b60405180910390a350600198975050505050505050565b601c546000906001600160a01b038481169116148015906120fb5750601c546001600160a01b03838116911614155b80156121125750601c546001600160a01b03163214155b801561213757506001600160a01b03821660009081526005602052604090205460ff16155b801561215c57506001600160a01b03831660009081526005602052604090205460ff16155b801561217357506001600160a01b03821661dead14155b801561218757506001600160a01b03821615155b801561219c57506001600160a01b0383163014155b9392505050565b6012805460ff191660011790556040805160c081018252600b5461ffff808216835262010000820481166020840152600160201b8204811693830193909352600160301b810483166060830152600160401b810483166080830152600160501b900490911660a0820181905261221957506127cc565b306000908152600460209081526040808320600c5461010090046001600160a01b031684529091529020546000191461227c57306000908152600460209081526040808320600c5461010090046001600160a01b03168452909152902060001990555b600060028260a0015161ffff16836000015161ffff168561229d9190612f0c565b6122a79190612f2b565b6122b19190612f2b565b905060006122bf8285613040565b604080516002808252606082018352929350600092909160208301908036833701905050905030816000815181106122f9576122f9613140565b60200260200101906001600160a01b031690816001600160a01b031681525050600c60019054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b15801561236757600080fd5b505afa15801561237b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061239f9190613156565b816001815181106123b2576123b2613140565b6001600160a01b039283166020918202929092010152600c5460405163791ac94760e01b81526101009091049091169063791ac947906123ff9085906000908690309042906004016131b7565b600060405180830381600087803b15801561241957600080fd5b505af192505050801561242a575060015b61243757505050506127cc565b476000836124458684612f0c565b61244f9190612f2b565b9050841561254457600c5460105460405163f305d71960e01b81523060048201526024810188905260006044820181905260648201526001600160a01b0391821660848201524260a4820152610100909204169063f305d71990839060c4016060604051808303818588803b1580156124c757600080fd5b505af1935050505080156124f8575060408051601f3d908101601f191682019092526124f5918101906131f3565b60015b612507575050505050506127cc565b505060408051838152602081018890527f424db2872186fa7e7afa7a5e902ed3b49a2ef19c2f5431e672462495dd6b450692500160405180910390a15b61254e8183613040565b915085600001518660a0018181516125669190613221565b61ffff90811690915260a088015160408901516000935083929182169161258e911686612f0c565b6125989190612f2b565b6019549091506000906201000090046001600160a01b03166125bb5760006125e2565b8860a0015161ffff16896080015161ffff16866125d89190612f0c565b6125e29190612f2b565b905060006125f08284613057565b6125fa9087613040565b9050801561265f57600e546040516001600160a01b03909116906188b89083906000818181858888f193505050503d8060008114612654576040519150601f19603f3d011682016040523d82523d6000602084013e612659565b606091505b50909450505b82156126c257600f546040516001600160a01b03909116906188b89085906000818181858888f193505050503d80600081146126b7576040519150601f19603f3d011682016040523d82523d6000602084013e6126bc565b606091505b50909450505b81156127c157600c60019054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b15801561271657600080fd5b505afa15801561272a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061274e9190613156565b8760008151811061276157612761613140565b6001600160a01b039283166020918202929092010152601954885162010000909104909116908890600190811061279a5761279a613140565b6001600160a01b0392831660209182029290920101526011546127c1918991859116612aec565b505050505050505050505b506012805460ff19169055565b601954610100900460ff161561283d5760405162461bcd60e51b815260206004820152602360248201527f4c697175696469747920616c726561647920616464656420616e64206d61726b60448201526232b21760e91b6064820152608401610b93565b61284782826120cc565b1580156128615750600d546001600160a01b038281169116145b156128ed576001600160a01b03821660009081526005602090815260408083208054600160ff1991821681179092556006845293829020805490941681179093556019805461010061ff00199182168117909255601280549091169091179055519182527f7b0a47d3b0234280b6c9213c5bbff44c8b6001bea7770b3950280f9141053257910161163f565b5050565b6040805160c081018252600b5461ffff808216835262010000820481166020840152600160201b8204811693830193909352600160301b810483166060830152600160401b810483166080830152600160501b900490911660a08201526000908185156129655750600a5461ffff1661298e565b841561297e5750600a5462010000900461ffff1661298e565b50600a54600160201b900461ffff165b600061271061299d8387612f0c565b6129a79190612f2b565b905060008360a0015184606001516129bf919061306f565b61ffff16846060015161ffff16836129d79190612f0c565b6129e19190612f2b565b905060006129ef8284613040565b90508015612a5c573060009081526001602052604081208054839290612a16908490613057565b909155505060405181815230906001600160a01b038c16907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35b8115612ad4578160096000828254612a749190613040565b9250508190555081601b6000828254612a8d9190613057565b90915550506040518281526000906001600160a01b038c16907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35b612ade8388613040565b9a9950505050505050505050565b600c5460405163b6f9de9560e01b81526101009091046001600160a01b03169063b6f9de95908490612b2990600090889087904290600401613244565b6000604051808303818588803b158015612b4257600080fd5b505af193505050508015612b54575060015b612b5d57505050565b601960029054906101000a90046001600160a01b03166001600160a01b031683600181518110612b8f57612b8f613140565b60200260200101516001600160a01b03161415612bbe5781601a6000828254612bb89190613057565b90915550505b505050565b600060208083528351808285015260005b81811015612bf057858101830151858201604001528201612bd4565b81811115612c02576000604083870101525b50601f01601f1916929092016040019392505050565b6001600160a01b0381168114612c2d57600080fd5b50565b600060208284031215612c4257600080fd5b813561219c81612c18565b60008060408385031215612c6057600080fd5b8235612c6b81612c18565b946020939093013593505050565b600080600060608486031215612c8e57600080fd5b8335612c9981612c18565b92506020840135612ca981612c18565b929592945050506040919091013590565b60008060408385031215612ccd57600080fd5b50508035926020909101359150565b803561ffff81168114612cee57600080fd5b919050565b600080600060608486031215612d0857600080fd5b612d1184612cdc565b9250612d1f60208501612cdc565b9150612d2d60408501612cdc565b90509250925092565b80358015158114612cee57600080fd5b60008060408385031215612d5957600080fd5b8235612d6481612c18565b9150612d7260208401612d36565b90509250929050565b600060208284031215612d8d57600080fd5b5035919050565b600080600060608486031215612da957600080fd5b8335612db481612c18565b92506020840135612dc481612c18565b91506040840135612dd481612c18565b809150509250925092565b60008060408385031215612df257600080fd5b612d6483612d36565b60008060408385031215612e0e57600080fd5b8235612e1981612c18565b91506020830135612e2981612c18565b809150509250929050565b600080600080600060a08688031215612e4c57600080fd5b612e5586612cdc565b9450612e6360208701612cdc565b9350612e7160408701612cdc565b9250612e7f60608701612cdc565b9150612e8d60808701612cdc565b90509295509295909350565b60008060008060808587031215612eaf57600080fd5b5050823594602084013594506040840135936060013592509050565b60208082526011908201527021b0b63632b9101e979e9037bbb732b91760791b604082015260600190565b634e487b7160e01b600052601160045260246000fd5b6000816000190483118215151615612f2657612f26612ef6565b500290565b600082612f4857634e487b7160e01b600052601260045260246000fd5b500490565b600181815b80851115612f88578160001904821115612f6e57612f6e612ef6565b80851615612f7b57918102915b93841c9390800290612f52565b509250929050565b600082612f9f57506001610c21565b81612fac57506000610c21565b8160018114612fc25760028114612fcc57612fe8565b6001915050610c21565b60ff841115612fdd57612fdd612ef6565b50506001821b610c21565b5060208310610133831016604e8410600b841016171561300b575081810a610c21565b6130158383612f4d565b806000190482111561302957613029612ef6565b029392505050565b600061219c60ff841683612f90565b60008282101561305257613052612ef6565b500390565b6000821982111561306a5761306a612ef6565b500190565b600061ffff80831681851680830382111561308c5761308c612ef6565b01949350505050565b6020808252603d908201527f43616c6c2072656e6f756e63654f776e65727368697020746f207472616e736660408201527f6572206f776e657220746f20746865207a65726f20616464726573732e000000606082015260800190565b6020808252602e908201527f43616e6e6f74206265206c6f776572207468616e20302e303030303125206f6660408201526d103a37ba30b61039bab838363c9760911b606082015260800190565b634e487b7160e01b600052603260045260246000fd5b60006020828403121561316857600080fd5b815161219c81612c18565b600081518084526020808501945080840160005b838110156131ac5781516001600160a01b031687529582019590820190600101613187565b509495945050505050565b85815284602082015260a0604082015260006131d660a0830186613173565b6001600160a01b0394909416606083015250608001529392505050565b60008060006060848603121561320857600080fd5b8351925060208401519150604084015190509250925092565b600061ffff8381169083168181101561323c5761323c612ef6565b039392505050565b84815260806020820152600061325d6080830186613173565b6001600160a01b0394909416604083015250606001529291505056fea2646970667358221220023bd26dd1c7539ca230c62b3744f58ce45905b431bc932a3bf02e65d9a660be64736f6c63430008090033
0x60806040526000600355620000176009600a620006d6565b6200002690620f4240620006ee565b600981905560408051606080820183526107d0808352602080840182905292840152600a805465ffffffffffff19166507d007d007d0178155835160c08101855261019081526000818501819052610258828701528184018190526080808301919091526103e860a090920191909152600b80546001600160601b0319166b03e80000000002580000019017905584519081018552738ae4f8c98934e0592003486901ba6e409e671de080825293810184905261dead948101859052909101839052600e80546001600160a01b03199081168417909155600f80548216909317909255601080548316841790556011805490921690921790556012805461ff00191690556016819055612710916200013e91620006ee565b6200014a919062000710565b601755612710600954600a620001619190620006ee565b6200016d919062000710565b601855601980546001600160b01b031916306201000002179055600f54601c80546001600160a01b039283166001600160a01b031990911681178255600c8054610100600160a81b031916747a250d5630b4cf539739df2c5dacb4c659f2488d00179055600954600091825260016020908152604080842083905593549351918252929093169290917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a3600c60019054906101000a90046001600160a01b03166001600160a01b031663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b1580156200027057600080fd5b505afa15801562000285573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002ab919062000733565b6001600160a01b031663c9c65396600c60019054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156200030857600080fd5b505afa1580156200031d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000343919062000733565b6040516001600160e01b031960e084901b1681526001600160a01b039091166004820152306024820152604401602060405180830381600087803b1580156200038b57600080fd5b505af1158015620003a0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003c6919062000733565b600d80546001600160a01b0319166001600160a01b039283169081179091556000908152600260205260409020805460ff19166001179055601c54600c546200041d929182169161010090910416600019620004c0565b600c546200043e90309061010090046001600160a01b0316600019620004c0565b601c80546001600160a01b0390811660009081526006602090815260408083208054600160ff19918216811790925530855282852080548216831790557f1aecba4ebe7a4e0673e4891b2b092b2228e4322380b579fb494fad3da8586e228054821683179055955490941683526005909152902080549092161790556200075e565b6001600160a01b038316620005125760405162461bcd60e51b815260206004820152601360248201527245524332303a205a65726f204164647265737360681b60448201526064015b60405180910390fd5b6001600160a01b038216620005605760405162461bcd60e51b815260206004820152601360248201527245524332303a205a65726f204164647265737360681b604482015260640162000509565b6001600160a01b0383811660008181526004602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b634e487b7160e01b600052601160045260246000fd5b600181815b8085111562000618578160001904821115620005fc57620005fc620005c1565b808516156200060a57918102915b93841c9390800290620005dc565b509250929050565b6000826200063157506001620006d0565b816200064057506000620006d0565b8160018114620006595760028114620006645762000684565b6001915050620006d0565b60ff841115620006785762000678620005c1565b50506001821b620006d0565b5060208310610133831016604e8410600b8410161715620006a9575081810a620006d0565b620006b58383620005d7565b8060001904821115620006cc57620006cc620005c1565b0290505b92915050565b6000620006e760ff84168362000620565b9392505050565b60008160001904831182151516156200070b576200070b620005c1565b500290565b6000826200072e57634e487b7160e01b600052601260045260246000fd5b500490565b6000602082840312156200074657600080fd5b81516001600160a01b0381168114620006e757600080fd5b6132af806200076e6000396000f3fe60806040526004361061037a5760003560e01c80634fb2e45d116101d157806395d89b4111610102578063dd62ed3e116100a0578063f9f92be41161006f578063f9f92be414610af4578063fb78680d14610b14578063fd01bd4c14610b34578063fdb78c0e14610b4a57600080fd5b8063dd62ed3e14610a02578063f08f43a214610a48578063f8ec691114610a68578063f94aa1b414610a8e57600080fd5b8063b3d514fb116100dc578063b3d514fb146105cc578063b7df8b361461093e578063bfc2fc3514610958578063cf8477061461097857600080fd5b806395d89b41146108f2578063a9059cbb1461091e578063b1b08f71146105cc57600080fd5b80636ebd00781161016f57806375cb1bd11161014957806375cb1bd11461088a5780637b3efe58146108aa578063893d20e8146108bf5780638a8c523c146108dd57600080fd5b80636ebd00781461084057806370a0823114610855578063715018a61461087557600080fd5b8063537df3b6116101ab578063537df3b6146107a7578063590ffdce146107c75780635cce86cd146107e75780636e1828091461082057600080fd5b80634fb2e45d1461072f5780634fbee1931461074f57806350a8e0161461078857600080fd5b80632b112e49116102ab578063452ed4f1116102495780634ada218b116102235780634ada218b146106bf5780634b3c109a146106d95780634bbb93eb146106ef5780634e718e481461070f57600080fd5b8063452ed4f11461067457806346ea7ac81461069457806348726021146106aa57600080fd5b8063313ce56711610285578063313ce567146105f857806332cde6641461061457806336fddb04146106345780633f3cf56c1461065457600080fd5b80632b112e49146105b75780632b28fc7a146105cc5780632e8fa821146105e257600080fd5b8063084e4f8a1161031857806318160ddd116102f257806318160ddd1461054c57806323b872dd14610561578063260039571461058157806328577751146105a157600080fd5b8063084e4f8a146104de578063095ea7b3146105175780630fa604e41461053757600080fd5b8063069d955f11610354578063069d955f146103f457806306fdde03146104495780630758d9241461048f57806307dd79e0146104b457600080fd5b806303fd2a4514610386578063043c17de146103b95780630445b667146103d057600080fd5b3661038157005b600080fd5b34801561039257600080fd5b5061039c61dead81565b6040516001600160a01b0390911681526020015b60405180910390f35b3480156103c557600080fd5b506103ce610b69565b005b3480156103dc57600080fd5b506103e660135481565b6040519081526020016103b0565b34801561040057600080fd5b50600a546104249061ffff80821691620100008104821691600160201b9091041683565b6040805161ffff948516815292841660208401529216918101919091526060016103b0565b34801561045557600080fd5b50604080518082019091526014815273476f6f64204675636b696e67204d6f726e696e6760601b60208201525b6040516103b09190612bc3565b34801561049b57600080fd5b50600c5461039c9061010090046001600160a01b031681565b3480156104c057600080fd5b50600c546104ce9060ff1681565b60405190151581526020016103b0565b3480156104ea57600080fd5b506104ce6104f9366004612c30565b6001600160a01b031660009081526008602052604090205460ff1690565b34801561052357600080fd5b506104ce610532366004612c4d565b610c10565b34801561054357600080fd5b506103e6610c27565b34801561055857600080fd5b506009546103e6565b34801561056d57600080fd5b506104ce61057c366004612c79565b610c47565b34801561058d57600080fd5b506103ce61059c366004612cba565b610cbf565b3480156105ad57600080fd5b506103e660165481565b3480156105c357600080fd5b506103e6610d98565b3480156105d857600080fd5b506103e6610bb881565b3480156105ee57600080fd5b506103e660145481565b34801561060457600080fd5b50604051600981526020016103b0565b34801561062057600080fd5b506103ce61062f366004612cf3565b610dc6565b34801561064057600080fd5b506103ce61064f366004612d46565b610f07565b34801561066057600080fd5b506103ce61066f366004612cba565b610f5c565b34801561068057600080fd5b50600d5461039c906001600160a01b031681565b3480156106a057600080fd5b506103e661177081565b3480156106b657600080fd5b50601a546103e6565b3480156106cb57600080fd5b506019546104ce9060ff1681565b3480156106e557600080fd5b506103e6601a5481565b3480156106fb57600080fd5b506103e661070a366004612d7b565b61104f565b34801561071b57600080fd5b506103ce61072a366004612d7b565b611081565b34801561073b57600080fd5b506103ce61074a366004612c30565b6110fa565b34801561075b57600080fd5b506104ce61076a366004612c30565b6001600160a01b031660009081526006602052604090205460ff1690565b34801561079457600080fd5b506019546104ce90610100900460ff1681565b3480156107b357600080fd5b506103ce6107c2366004612c30565b61122d565b3480156107d357600080fd5b506103ce6107e2366004612d46565b611278565b3480156107f357600080fd5b506104ce610802366004612c30565b6001600160a01b031660009081526007602052604090205460ff1690565b34801561082c57600080fd5b506103ce61083b366004612c30565b6112cd565b34801561084c57600080fd5b506103e6611319565b34801561086157600080fd5b506103e6610870366004612c30565b611334565b34801561088157600080fd5b506103ce61134f565b34801561089657600080fd5b506103ce6108a5366004612d94565b6113de565b3480156108b657600080fd5b50601b546103e6565b3480156108cb57600080fd5b50601c546001600160a01b031661039c565b3480156108e957600080fd5b506103ce611447565b3480156108fe57600080fd5b5060408051808201909152600381526247464d60e81b6020820152610482565b34801561092a57600080fd5b506104ce610939366004612c4d565b6115ab565b34801561094a57600080fd5b506015546104ce9060ff1681565b34801561096457600080fd5b506103ce610973366004612ddf565b6115c2565b34801561098457600080fd5b50600b546109c59061ffff80821691620100008104821691600160201b8204811691600160301b8104821691600160401b8204811691600160501b90041686565b6040805161ffff978816815295871660208701529386169385019390935290841660608401528316608083015290911660a082015260c0016103b0565b348015610a0e57600080fd5b506103e6610a1d366004612dfb565b6001600160a01b03918216600090815260046020908152604080832093909416825291909152205490565b348015610a5457600080fd5b506103ce610a63366004612e34565b61164b565b348015610a7457600080fd5b5060195461039c906201000090046001600160a01b031681565b348015610a9a57600080fd5b50600e54600f54601054601154610ac1936001600160a01b03908116938116928116911684565b604080516001600160a01b03958616815293851660208501529184169183019190915290911660608201526080016103b0565b348015610b0057600080fd5b506103ce610b0f366004612c30565b6117c2565b348015610b2057600080fd5b506103ce610b2f366004612e99565b611810565b348015610b4057600080fd5b506103e6601b5481565b348015610b5657600080fd5b506012546104ce90610100900460ff1681565b601c546001600160a01b03163314610b9c5760405162461bcd60e51b8152600401610b9390612ecb565b60405180910390fd5b60646009546002610bad9190612f0c565b610bb79190612f2b565b601855600954606490610bcb906002612f0c565b610bd59190612f2b565b601755600a805465ffffffffffff19166301f401f4179055600b8054690258000000000000000069ffff0000ffff0000000019909116179055565b6000610c1d3384846119c5565b5060015b92915050565b6000610c356009600a613031565b601854610c429190612f2b565b905090565b6001600160a01b038316600090815260046020908152604080832033845290915281205460001914610cac576001600160a01b038416600090815260046020908152604080832033845290915281208054849290610ca6908490613040565b90915550505b610cb7848484611abe565b949350505050565b601c546001600160a01b03163314610ce95760405162461bcd60e51b8152600401610b9390612ecb565b6064600954610cf89190612f2b565b8183600954610d079190612f0c565b610d119190612f2b565b1015610d785760405162461bcd60e51b815260206004820152603060248201527f4d61782057616c6c657420616d74206d7573742062652061626f76652031252060448201526f37b3103a37ba30b61039bab838363c9760811b6064820152608401610b93565b8082600954610d879190612f0c565b610d919190612f2b565b6018555050565b6000610da46000611334565b610daf61dead611334565b610db99190613057565b600954610c429190613040565b601c546001600160a01b03163314610df05760405162461bcd60e51b8152600401610b9390612ecb565b610bb88361ffff1611158015610e0c5750610bb88261ffff1611155b8015610e1e5750610bb88161ffff1611155b610e6a5760405162461bcd60e51b815260206004820152601760248201527f43616e6e6f7420657863656564206d6178696d756d732e0000000000000000006044820152606401610b93565b611770610e77838561306f565b61ffff161115610ec95760405162461bcd60e51b815260206004820181905260248201527f43616e6e6f742065786365656420726f756e6474726970206d6178696d756d2e6044820152606401610b93565b600a805461ffff94851663ffffffff199091161762010000938516939093029290921765ffff000000001916600160201b9190931602919091179055565b601c546001600160a01b03163314610f315760405162461bcd60e51b8152600401610b9390612ecb565b6001600160a01b03919091166000908152600760205260409020805460ff1916911515919091179055565b601c546001600160a01b03163314610f865760405162461bcd60e51b8152600401610b9390612ecb565b6103e86009546005610f989190612f0c565b610fa29190612f2b565b8183600954610fb19190612f0c565b610fbb9190612f2b565b101561102f5760405162461bcd60e51b815260206004820152603760248201527f4d6178205472616e73616374696f6e20616d74206d7573742062652061626f7660448201527f6520302e3525206f6620746f74616c20737570706c792e0000000000000000006064820152608401610b93565b808260095461103e9190612f0c565b6110489190612f2b565b6017555050565b600d5460009061271090839061106d906001600160a01b0316611334565b6110779190612f0c565b610c219190612f2b565b601c546001600160a01b031633146110ab5760405162461bcd60e51b8152600401610b9390612ecb565b60968111156110f55760405162461bcd60e51b815260206004820152601660248201527521b0b73737ba1039b2ba1030b137bb329018971a929760511b6044820152606401610b93565b601655565b601c546001600160a01b031633146111245760405162461bcd60e51b8152600401610b9390612ecb565b6001600160a01b03811661114a5760405162461bcd60e51b8152600401610b9390613095565b6001600160a01b03811661dead14156111755760405162461bcd60e51b8152600401610b9390613095565b601c5461118c906001600160a01b03166000611278565b611197816001611278565b601c546000906111af906001600160a01b0316611334565b11156111db57601c546111d9906001600160a01b0316826111cf82611334565b6000806001611f0f565b505b601c80546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b601c546001600160a01b031633146112575760405162461bcd60e51b8152600401610b9390612ecb565b6001600160a01b03166000908152600860205260409020805460ff19169055565b601c546001600160a01b031633146112a25760405162461bcd60e51b8152600401610b9390612ecb565b6001600160a01b03919091166000908152600660205260409020805460ff1916911515919091179055565b601c546001600160a01b031633146112f75760405162461bcd60e51b8152600401610b9390612ecb565b601180546001600160a01b0319166001600160a01b0392909216919091179055565b60006113276009600a613031565b601754610c429190612f2b565b6001600160a01b031660009081526001602052604090205490565b601c546001600160a01b031633146113795760405162461bcd60e51b8152600401610b9390612ecb565b601c54611390906001600160a01b03166000611278565b601c80546001600160a01b031981169091556040516001600160a01b039091169060009082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a350565b601c546001600160a01b031633146114085760405162461bcd60e51b8152600401610b9390612ecb565b600e80546001600160a01b039485166001600160a01b031991821617909155600f80549385169382169390931790925560108054919093169116179055565b601c546001600160a01b031633146114715760405162461bcd60e51b8152600401610b9390612ecb565b60195460ff16156114c45760405162461bcd60e51b815260206004820152601860248201527f54726164696e6720616c726561647920656e61626c65642100000000000000006044820152606401610b93565b601954610100900460ff1661151b5760405162461bcd60e51b815260206004820152601860248201527f4c6971756964697479206d7573742062652061646465642e00000000000000006044820152606401610b93565b6019805460ff19166001179055600d5461271090611541906001600160a01b0316611334565b61154c90600a612f0c565b6115569190612f2b565b601355600d5461271090611572906001600160a01b0316611334565b61157d90601e612f0c565b6115879190612f2b565b601455600c546115a990309061010090046001600160a01b03166000196119c5565b565b60006115b8338484611abe565b5060019392505050565b601c546001600160a01b031633146115ec5760405162461bcd60e51b8152600401610b9390612ecb565b6012805461ff001916610100841515908102919091179091556015805460ff19168315151790556040519081527f7b0a47d3b0234280b6c9213c5bbff44c8b6001bea7770b3950280f9141053257906020015b60405180910390a15050565b601c546001600160a01b031633146116755760405162461bcd60e51b8152600401610b9390612ecb565b600b805461ffff87811663ffffffff199092169190911762010000878316021767ffffffff000000001916600160201b8683160267ffff000000000000191617600160301b858316021769ffff00000000000000001916600160401b9184169190910217905580836116e7868861306f565b6116f1919061306f565b6116fb919061306f565b600b805461ffff60501b1916600160501b61ffff93841602179055600a5460009161172f916201000081048216911661306f565b600b5461ffff9182169250829161175891600160301b8104821691600160501b9091041661306f565b61ffff1611156117ba5760405162461bcd60e51b815260206004820152602760248201527f43616e6e6f74206578636565642073756d206f662062757920616e642073656c60448201526636103332b2b99760c91b6064820152608401610b93565b505050505050565b601c546001600160a01b031633146117ec5760405162461bcd60e51b8152600401610b9390612ecb565b6001600160a01b03166000908152600860205260409020805460ff19166001179055565b601c546001600160a01b0316331461183a5760405162461bcd60e51b8152600401610b9390612ecb565b82846009546118499190612f0c565b6118539190612f2b565b6013556009548190611866908490612f0c565b6118709190612f2b565b601481905560135411156118d05760405162461bcd60e51b815260206004820152602160248201527f5468726573686f6c642063616e6e6f742062652061626f766520616d6f756e746044820152601760f91b6064820152608401610b93565b600d54612710906118e9906001600160a01b0316611334565b6118f4906096612f0c565b6118fe9190612f2b565b601454111561195b5760405162461bcd60e51b815260206004820152602360248201527f43616e6e6f742062652061626f766520312e3525206f662063757272656e742060448201526228249760e91b6064820152608401610b93565b620f424060095461196c9190612f2b565b601454101561198d5760405162461bcd60e51b8152600401610b93906130f2565b620f424060095461199e9190612f2b565b60135410156119bf5760405162461bcd60e51b8152600401610b93906130f2565b50505050565b6001600160a01b038316611a115760405162461bcd60e51b815260206004820152601360248201527245524332303a205a65726f204164647265737360681b6044820152606401610b93565b6001600160a01b038216611a5d5760405162461bcd60e51b815260206004820152601360248201527245524332303a205a65726f204164647265737360681b6044820152606401610b93565b6001600160a01b0383811660008181526004602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b60006001600160a01b038416611b245760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610b93565b6001600160a01b038316611b865760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610b93565b60008211611be85760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b6064820152608401610b93565b6001600160a01b03841660009081526008602052604090205460ff16158015611c2a57506001600160a01b03831660009081526008602052604090205460ff16155b611c3357600080fd5b6001600160a01b0384166000908152600260205260408120548190819060ff1615611c615760019250611c8f565b6001600160a01b03861660009081526002602052604090205460ff1615611c8b5760019150611c8f565b5060015b611c9987876120cc565b15611e665760195460ff16611cf05760405162461bcd60e51b815260206004820152601860248201527f54726164696e67206e6f742079657420656e61626c65642100000000000000006044820152606401610b93565b8280611cf95750815b15611da8576001600160a01b03871660009081526007602052604090205460ff16158015611d4057506001600160a01b03861660009081526007602052604090205460ff16155b15611da857601754851115611da85760405162461bcd60e51b815260206004820152602860248201527f5472616e7366657220616d6f756e74206578636565647320746865206d6178546044820152673c20b6b7bab73a1760c11b6064820152608401610b93565b600c546001600160a01b038781166101009092041614801590611dc9575081155b15611e66576001600160a01b03861660009081526007602052604090205460ff16611e665760185485611dfb88611334565b611e059190613057565b1115611e665760405162461bcd60e51b815260206004820152602a60248201527f5472616e7366657220616d6f756e74206578636565647320746865206d61785760448201526930b63632ba29b4bd329760b11b6064820152608401610b93565b8115611ef65760125460ff16611ef657601254610100900460ff1615611ef6576000611e9130611334565b90506013548110611ef45760145460155460ff1615611ede57601654600d546127109190611ec7906001600160a01b0316611334565b611ed19190612f0c565b611edb9190612f2b565b90505b808210611ee9578091505b611ef2826121a3565b505b505b611f04878787868686611f0f565b979650505050505050565b601954600090610100900460ff16611faa57611f2b87876127d9565b601954610100900460ff16158015611f485750611f4887876120cc565b8015611f52575081155b15611faa5760405162461bcd60e51b815260206004820152602260248201527f5072652d6c6971756964697479207472616e736665722070726f74656374696f604482015261371760f11b6064820152608401610b93565b6001600160a01b03871660009081526006602052604090205460019060ff1680611fec57506001600160a01b03871660009081526006602052604090205460ff165b15611ff5575060005b6001600160a01b0388166000908152600160205260408120805488929061201d908490613040565b909155506000905081612030578661203c565b61203c8987878a6128f1565b6001600160a01b038916600090815260016020526040812080549293508392909190612069908490613057565b92505081905550876001600160a01b0316896001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516120b591815260200190565b60405180910390a350600198975050505050505050565b601c546000906001600160a01b038481169116148015906120fb5750601c546001600160a01b03838116911614155b80156121125750601c546001600160a01b03163214155b801561213757506001600160a01b03821660009081526005602052604090205460ff16155b801561215c57506001600160a01b03831660009081526005602052604090205460ff16155b801561217357506001600160a01b03821661dead14155b801561218757506001600160a01b03821615155b801561219c57506001600160a01b0383163014155b9392505050565b6012805460ff191660011790556040805160c081018252600b5461ffff808216835262010000820481166020840152600160201b8204811693830193909352600160301b810483166060830152600160401b810483166080830152600160501b900490911660a0820181905261221957506127cc565b306000908152600460209081526040808320600c5461010090046001600160a01b031684529091529020546000191461227c57306000908152600460209081526040808320600c5461010090046001600160a01b03168452909152902060001990555b600060028260a0015161ffff16836000015161ffff168561229d9190612f0c565b6122a79190612f2b565b6122b19190612f2b565b905060006122bf8285613040565b604080516002808252606082018352929350600092909160208301908036833701905050905030816000815181106122f9576122f9613140565b60200260200101906001600160a01b031690816001600160a01b031681525050600c60019054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b15801561236757600080fd5b505afa15801561237b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061239f9190613156565b816001815181106123b2576123b2613140565b6001600160a01b039283166020918202929092010152600c5460405163791ac94760e01b81526101009091049091169063791ac947906123ff9085906000908690309042906004016131b7565b600060405180830381600087803b15801561241957600080fd5b505af192505050801561242a575060015b61243757505050506127cc565b476000836124458684612f0c565b61244f9190612f2b565b9050841561254457600c5460105460405163f305d71960e01b81523060048201526024810188905260006044820181905260648201526001600160a01b0391821660848201524260a4820152610100909204169063f305d71990839060c4016060604051808303818588803b1580156124c757600080fd5b505af1935050505080156124f8575060408051601f3d908101601f191682019092526124f5918101906131f3565b60015b612507575050505050506127cc565b505060408051838152602081018890527f424db2872186fa7e7afa7a5e902ed3b49a2ef19c2f5431e672462495dd6b450692500160405180910390a15b61254e8183613040565b915085600001518660a0018181516125669190613221565b61ffff90811690915260a088015160408901516000935083929182169161258e911686612f0c565b6125989190612f2b565b6019549091506000906201000090046001600160a01b03166125bb5760006125e2565b8860a0015161ffff16896080015161ffff16866125d89190612f0c565b6125e29190612f2b565b905060006125f08284613057565b6125fa9087613040565b9050801561265f57600e546040516001600160a01b03909116906188b89083906000818181858888f193505050503d8060008114612654576040519150601f19603f3d011682016040523d82523d6000602084013e612659565b606091505b50909450505b82156126c257600f546040516001600160a01b03909116906188b89085906000818181858888f193505050503d80600081146126b7576040519150601f19603f3d011682016040523d82523d6000602084013e6126bc565b606091505b50909450505b81156127c157600c60019054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b15801561271657600080fd5b505afa15801561272a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061274e9190613156565b8760008151811061276157612761613140565b6001600160a01b039283166020918202929092010152601954885162010000909104909116908890600190811061279a5761279a613140565b6001600160a01b0392831660209182029290920101526011546127c1918991859116612aec565b505050505050505050505b506012805460ff19169055565b601954610100900460ff161561283d5760405162461bcd60e51b815260206004820152602360248201527f4c697175696469747920616c726561647920616464656420616e64206d61726b60448201526232b21760e91b6064820152608401610b93565b61284782826120cc565b1580156128615750600d546001600160a01b038281169116145b156128ed576001600160a01b03821660009081526005602090815260408083208054600160ff1991821681179092556006845293829020805490941681179093556019805461010061ff00199182168117909255601280549091169091179055519182527f7b0a47d3b0234280b6c9213c5bbff44c8b6001bea7770b3950280f9141053257910161163f565b5050565b6040805160c081018252600b5461ffff808216835262010000820481166020840152600160201b8204811693830193909352600160301b810483166060830152600160401b810483166080830152600160501b900490911660a08201526000908185156129655750600a5461ffff1661298e565b841561297e5750600a5462010000900461ffff1661298e565b50600a54600160201b900461ffff165b600061271061299d8387612f0c565b6129a79190612f2b565b905060008360a0015184606001516129bf919061306f565b61ffff16846060015161ffff16836129d79190612f0c565b6129e19190612f2b565b905060006129ef8284613040565b90508015612a5c573060009081526001602052604081208054839290612a16908490613057565b909155505060405181815230906001600160a01b038c16907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35b8115612ad4578160096000828254612a749190613040565b9250508190555081601b6000828254612a8d9190613057565b90915550506040518281526000906001600160a01b038c16907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35b612ade8388613040565b9a9950505050505050505050565b600c5460405163b6f9de9560e01b81526101009091046001600160a01b03169063b6f9de95908490612b2990600090889087904290600401613244565b6000604051808303818588803b158015612b4257600080fd5b505af193505050508015612b54575060015b612b5d57505050565b601960029054906101000a90046001600160a01b03166001600160a01b031683600181518110612b8f57612b8f613140565b60200260200101516001600160a01b03161415612bbe5781601a6000828254612bb89190613057565b90915550505b505050565b600060208083528351808285015260005b81811015612bf057858101830151858201604001528201612bd4565b81811115612c02576000604083870101525b50601f01601f1916929092016040019392505050565b6001600160a01b0381168114612c2d57600080fd5b50565b600060208284031215612c4257600080fd5b813561219c81612c18565b60008060408385031215612c6057600080fd5b8235612c6b81612c18565b946020939093013593505050565b600080600060608486031215612c8e57600080fd5b8335612c9981612c18565b92506020840135612ca981612c18565b929592945050506040919091013590565b60008060408385031215612ccd57600080fd5b50508035926020909101359150565b803561ffff81168114612cee57600080fd5b919050565b600080600060608486031215612d0857600080fd5b612d1184612cdc565b9250612d1f60208501612cdc565b9150612d2d60408501612cdc565b90509250925092565b80358015158114612cee57600080fd5b60008060408385031215612d5957600080fd5b8235612d6481612c18565b9150612d7260208401612d36565b90509250929050565b600060208284031215612d8d57600080fd5b5035919050565b600080600060608486031215612da957600080fd5b8335612db481612c18565b92506020840135612dc481612c18565b91506040840135612dd481612c18565b809150509250925092565b60008060408385031215612df257600080fd5b612d6483612d36565b60008060408385031215612e0e57600080fd5b8235612e1981612c18565b91506020830135612e2981612c18565b809150509250929050565b600080600080600060a08688031215612e4c57600080fd5b612e5586612cdc565b9450612e6360208701612cdc565b9350612e7160408701612cdc565b9250612e7f60608701612cdc565b9150612e8d60808701612cdc565b90509295509295909350565b60008060008060808587031215612eaf57600080fd5b5050823594602084013594506040840135936060013592509050565b60208082526011908201527021b0b63632b9101e979e9037bbb732b91760791b604082015260600190565b634e487b7160e01b600052601160045260246000fd5b6000816000190483118215151615612f2657612f26612ef6565b500290565b600082612f4857634e487b7160e01b600052601260045260246000fd5b500490565b600181815b80851115612f88578160001904821115612f6e57612f6e612ef6565b80851615612f7b57918102915b93841c9390800290612f52565b509250929050565b600082612f9f57506001610c21565b81612fac57506000610c21565b8160018114612fc25760028114612fcc57612fe8565b6001915050610c21565b60ff841115612fdd57612fdd612ef6565b50506001821b610c21565b5060208310610133831016604e8410600b841016171561300b575081810a610c21565b6130158383612f4d565b806000190482111561302957613029612ef6565b029392505050565b600061219c60ff841683612f90565b60008282101561305257613052612ef6565b500390565b6000821982111561306a5761306a612ef6565b500190565b600061ffff80831681851680830382111561308c5761308c612ef6565b01949350505050565b6020808252603d908201527f43616c6c2072656e6f756e63654f776e65727368697020746f207472616e736660408201527f6572206f776e657220746f20746865207a65726f20616464726573732e000000606082015260800190565b6020808252602e908201527f43616e6e6f74206265206c6f776572207468616e20302e303030303125206f6660408201526d103a37ba30b61039bab838363c9760911b606082015260800190565b634e487b7160e01b600052603260045260246000fd5b60006020828403121561316857600080fd5b815161219c81612c18565b600081518084526020808501945080840160005b838110156131ac5781516001600160a01b031687529582019590820190600101613187565b509495945050505050565b85815284602082015260a0604082015260006131d660a0830186613173565b6001600160a01b0394909416606083015250608001529392505050565b60008060006060848603121561320857600080fd5b8351925060208401519150604084015190509250925092565b600061ffff8381169083168181101561323c5761323c612ef6565b039392505050565b84815260806020820152600061325d6080830186613173565b6001600160a01b0394909416604083015250606001529291505056fea2646970667358221220023bd26dd1c7539ca230c62b3744f58ce45905b431bc932a3bf02e65d9a660be64736f6c63430008090033