0x60a06040523060805234801562000014575f80fd5b506200001f6200002f565b620000296200002f565b620000ed565b5f54610100900460ff16156200009b5760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b5f5460ff90811614620000eb575f805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b608051613d2d620001225f395f8181611377015281816113b701528181611468015281816114a801526115230152613d2d5ff3fe60806040526004361061021d575f3560e01c806382b5e8891161011e578063b8acae0e116100a8578063e07baba61161006d578063e07baba61461066b578063e30c3978146106a8578063eefbf17e146106c5578063f09a4016146106eb578063f2fde38b1461070a575f80fd5b8063b8acae0e146105af578063be880c81146105ce578063c012fa77146105e4578063d0496d6a14610603578063d1aaa5df1461064b575f80fd5b80638e3881a9116100ee5780638e3881a9146104fe578063913b16cb1461053c5780639efc7a2e1461055b578063a730cdfb1461057a578063a86f9d9e14610590575f80fd5b806382b5e8891461049a5780638456cb59146104b95780638abf6077146104cd5780638da5cb5b146104e1575f80fd5b80633f4ba83a116101aa5780635c975abb1161016f5780635c975abb146103ff57806360620c6b1461041f578063715018a61461043e57806379ba5097146104525780637cbadfaa14610466575f80fd5b80633f4ba83a14610381578063422770fa146103955780634f1ef286146103b957806352d1902d146103cc5780635862f6e1146103e0575f80fd5b80633075db56116101f05780633075db56146102ad5780633659cfe6146102d15780633ab76e9f146102f05780633c6cf473146103275780633eb6b8cf14610362575f80fd5b80630432873c14610221578063069489a2146102425780631bdb0037146102565780632035065e14610280575b5f80fd5b34801561022c575f80fd5b5061024061023b366004613110565b610729565b005b34801561024d575f80fd5b50610240610a34565b61026961026436600461315e565b610aeb565b6040516102779291906132df565b60405180910390f35b34801561028b575f80fd5b5061029f61029a3660046132f7565b610e9d565b6040516102779291906133ad565b3480156102b8575f80fd5b506102c1611359565b6040519015158152602001610277565b3480156102dc575f80fd5b506102406102eb3660046133fc565b61136d565b3480156102fb575f80fd5b5060975461030f906001600160a01b031681565b6040516001600160a01b039091168152602001610277565b348015610332575f80fd5b50610355610341366004613417565b60fc6020525f908152604090205460ff1681565b604051610277919061342e565b34801561036d575f80fd5b5061030f61037c366004613452565b611434565b34801561038c575f80fd5b5061024061144a565b3480156103a0575f80fd5b506103ab62030d4081565b604051908152602001610277565b6102406103c7366004613554565b61145e565b3480156103d7575f80fd5b506103ab611517565b3480156103eb575f80fd5b506102c16103fa3660046132f7565b6115c9565b34801561040a575f80fd5b506102c160c954610100900460ff1660021490565b34801561042a575f80fd5b506102c161043936600461315e565b611634565b348015610449575f80fd5b50610240611702565b34801561045d575f80fd5b50610240611713565b348015610471575f80fd5b50610485610480366004613417565b61178a565b60405163ffffffff9091168152602001610277565b3480156104a5575f80fd5b506102406104b43660046133fc565b6117a8565b3480156104c4575f80fd5b50610240611828565b3480156104d8575f80fd5b5061030f61183b565b3480156104ec575f80fd5b506033546001600160a01b031661030f565b348015610509575f80fd5b5061051d6105183660046135a0565b611849565b6040805192151583526001600160a01b03909116602083015201610277565b348015610547575f80fd5b5061024061055636600461315e565b611875565b348015610566575f80fd5b506102406105753660046132f7565b611a60565b348015610585575f80fd5b506104856201d4c081565b34801561059b575f80fd5b5061030f6105aa3660046135b9565b611d59565b3480156105ba575f80fd5b506102c16105c93660046132f7565b611d65565b3480156105d9575f80fd5b50610485620c350081565b3480156105ef575f80fd5b506103ab6105fe3660046136db565b611dc6565b34801561060e575f80fd5b50610617611df5565b60408051825181526020808401516001600160a01b031690820152918101516001600160401b031690820152606001610277565b348015610656575f80fd5b506103ab610665366004613417565b60031890565b348015610676575f80fd5b5060c954610690906201000090046001600160401b031681565b6040516001600160401b039091168152602001610277565b3480156106b3575f80fd5b506065546001600160a01b031661030f565b3480156106d0575f80fd5b5060fb5461069090600160401b90046001600160401b031681565b3480156106f6575f80fd5b5061024061070536600461370c565b611e49565b348015610715575f80fd5b506102406107243660046133fc565b611f10565b61073960e0830160c084016135a0565b46816001600160401b03161461076257604051631c6c777560e31b815260040160405180910390fd5b61077260a08401608085016135a0565b6001600160401b0381161580610790575046816001600160401b0316145b156107ae57604051631c6c777560e31b815260040160405180910390fd5b6107c260c954610100900460ff1660021490565b156107e05760405163bae6e2a960e01b815260040160405180910390fd5b60026107ea611f81565b60ff160361080b5760405163dfc60d8560e01b815260040160405180910390fd5b6108156002611fc0565b5f6108226105fe86613738565b905061082f816001612008565b61083d85610120013561205a565b61085a576040516335856fbd60e21b815260040160405180910390fd5b5f61087f8661087a6d7369676e616c5f7365727669636560901b5f611d59565b6120fb565b156108ca576108c38661012001356188b860405180602001604052805f8152508960e00160208101906108b291906133fc565b6001600160a01b03169291906121f2565b9050610955565b5f6108dc610100880160e089016133fc565b6001600160a01b0316336001600160a01b031614610941576109046060880160408901613743565b63ffffffff1615806109135750855b15610931576040516372b6e1c360e11b815260040160405180910390fd5b61093a8761222f565b9050610945565b5a90505b6109518784835f612282565b9150505b801561096b57610966826002612375565b610a22565b8415610a095761097c826003612375565b6109976d7369676e616c5f7365727669636560901b5f611d59565b60405163019b28af60e61b81526003841860048201526001600160a01b0391909116906366ca2bc0906024016020604051808303815f875af11580156109df573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610a03919061375c565b50610a22565b60405163161e3ead60e01b815260040160405180910390fd5b5050610a2e6001611fc0565b50505050565b610a3c612432565b5f54600290610100900460ff16158015610a5c57505f5460ff8083169116105b610a815760405162461bcd60e51b8152600401610a7890613773565b60405180910390fd5b5f805460fb805467ffffffffffffffff1916905560ff82815561010083815561ff001991851661ffff19909316831717169091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a150565b60408051610160810182525f8082526020820181905291810182905260608082018390526080820183905260a0820183905260c0820183905260e0820183905261010082018390526101208201839052610140820152610b5160c0840160a085016133fc565b6001600160a01b038116610b785760405163538ba4f960e01b815260040160405180910390fd5b610b89610100850160e086016133fc565b6001600160a01b038116610bb05760405163538ba4f960e01b815260040160405180910390fd5b610bc060e0860160c087016135a0565b6001600160401b0381161580610bde575046816001600160401b0316145b15610bfc57604051631c6c777560e31b815260040160405180910390fd5b610c1060c954610100900460ff1660021490565b15610c2e5760405163bae6e2a960e01b815260040160405180910390fd5b6002610c38611f81565b60ff1603610c595760405163dfc60d8560e01b815260040160405180910390fd5b610c636002611fc0565b610c736060870160408801613743565b63ffffffff165f03610cbb57610c8f60408701602088016135a0565b6001600160401b031615610cb65760405163c9f5178760e01b815260040160405180910390fd5b610ce3565b610cc48661222f565b5f03610ce3576040516308c2ad5360e01b815260040160405180910390fd5b5f610cf761051860e0890160c08a016135a0565b50905080610d1857604051631c6c777560e31b815260040160405180910390fd5b34610d296040890160208a016135a0565b610d41906001600160401b03166101208a01356137d5565b14610d5f57604051634ac2abdf60e11b815260040160405180910390fd5b610d6887613738565b60fb8054919650600160401b9091046001600160401b0316906008610d8c836137e8565b82546101009290920a6001600160401b03818102199093169183160217909155908116865233606087015246166080860152610dc785611dc6565b9550857fe33fd33b4f45b95b1c196242240c5b5233129d724b578f95b66ce8d8aae9351786604051610df9919061380d565b60405180910390a2610e1c6d7369676e616c5f7365727669636560901b5f611d59565b6001600160a01b03166366ca2bc0876040518263ffffffff1660e01b8152600401610e4991815260200190565b6020604051808303815f875af1158015610e65573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610e89919061375c565b5050610e956001611fc0565b505050915091565b5f80610eb360c954610100900460ff1660021490565b15610ed15760405163bae6e2a960e01b815260040160405180910390fd5b6002610edb611f81565b60ff1603610efc5760405163dfc60d8560e01b815260040160405180910390fd5b610f066002611fc0565b5f5a905046610f1b60e0880160c089016135a0565b6001600160401b031614610f4257604051631c6c777560e31b815260040160405180910390fd5b610f5260a08701608088016135a0565b6001600160401b03161580610f7e575046610f7360a08801608089016135a0565b6001600160401b0316145b15610f9c57604051631c6c777560e31b815260040160405180910390fd5b604080516080810182525f808252602082018190529181018290526060810191909152610fd0610100880160e089016133fc565b6001600160a01b031633148015606083015261103f57610ff66060880160408901613743565b63ffffffff165f0361101b576040516372b6e1c360e11b815260040160405180910390fd5b62030d4085111561103f57604051631e3b03c960e01b815260040160405180910390fd5b5f61104c6105fe89613738565b9050611058815f612008565b5f6110746d7369676e616c5f7365727669636560901b5f611d59565b63ffffffff88166020850152905061109e818361109760a08d0160808e016135a0565b8b8b61248c565b63ffffffff166040808501919091526110dd906110c0908b0160208c016135a0565b6110d8906001600160401b03166101208c01356137d5565b61205a565b6110fa576040516335856fbd60e21b815260040160405180910390fd5b5f6111058a836120fb565b1561111e57506002955060019450610120890135611165565b5f846060015161112e575a611137565b6111378b61222f565b90506111498b85838860600151612282565b1561115a57600297505f9650611163565b60019750600296505b505b61117560408b0160208c016135a0565b6001600160401b0316156112d65761119360408b0160208c016135a0565b6111a6906001600160401b0316826137d5565b9050836060015180156111cd57506111c460608b0160408c01613743565b63ffffffff1615155b156112d657604084015163ffffffff16614e20025a61120a6111f36101408e018e61381f565b6020601f909101819004026101a00160041b919050565b63ffffffff9081168801919091036201d4c00181168087525f9183916112339183919061253716565b0390505f61124760608e0160408f01613743565b63ffffffff168d602001602081019061126091906135a0565b6001600160401b031683028161127857611278613868565b0490505f48830290505f6112bc8f602001602081019061129891906135a0565b6001600160401b0316848410156112b45784840160011c6112b6565b845b9061254c565b958690039590506112d033826188b8612560565b50505050505b6112fe816188b86112ee6101008e0160e08f016133fc565b6001600160a01b03169190612560565b6113088388612375565b827f8580f507761043ecdd2bdca084d6fb0109150b3d9842d854d34e3dea6d69387d8b8660405161133a929190613a08565b60405180910390a250505050506113516001611fc0565b935093915050565b5f6002611364611f81565b60ff1614905090565b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001630036113b55760405162461bcd60e51b8152600401610a7890613a56565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166113e76125a3565b6001600160a01b03161461140d5760405162461bcd60e51b8152600401610a7890613aa2565b611416816125be565b604080515f80825260208201909252611431918391906125c6565b50565b5f611440848484612730565b90505b9392505050565b611452612821565b61145c335f6128b1565b565b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001630036114a65760405162461bcd60e51b8152600401610a7890613a56565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166114d86125a3565b6001600160a01b0316146114fe5760405162461bcd60e51b8152600401610a7890613aa2565b611507826125be565b611513828260016125c6565b5050565b5f306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146115b65760405162461bcd60e51b815260206004820152603860248201527f555550535570677261646561626c653a206d757374206e6f742062652063616c60448201527f6c6564207468726f7567682064656c656761746563616c6c00000000000000006064820152608401610a78565b505f80516020613cb18339815191525b90565b5f466115db60a08601608087016135a0565b6001600160401b0316146115f057505f611443565b61144061160e6d7369676e616c5f7365727669636560901b5f611d59565b61161d6106656105fe88613738565b61162d60e0880160c089016135a0565b868661295e565b5f4661164660a08401608085016135a0565b6001600160401b03161461165b57505f919050565b6116766d7369676e616c5f7365727669636560901b5f611d59565b6001600160a01b03166332676bc6306116916105fe86613738565b6040516001600160e01b031960e085901b1681526001600160a01b0390921660048301526024820152604401602060405180830381865afa1580156116d8573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906116fc9190613aee565b92915050565b61170a612432565b61145c5f6129e0565b60655433906001600160a01b031681146117815760405162461bcd60e51b815260206004820152602960248201527f4f776e61626c6532537465703a2063616c6c6572206973206e6f7420746865206044820152683732bb9037bbb732b960b91b6064820152608401610a78565b611431816129e0565b5f6116fc620c35006101a06020601f8601819004020160041b613b09565b806001600160a01b0381166117d05760405163538ba4f960e01b815260040160405180910390fd5b6040516317066a5760e21b81523060048201526001600160a01b03831690635c19a95c906024015f604051808303815f87803b15801561180e575f80fd5b505af1158015611820573d5f803e3d5ffd5b505050505050565b6118306129f9565b61145c3360016128b1565b5f6118446125a3565b905090565b5f80611860836562726964676560d01b6001611434565b6001600160a01b038116151594909350915050565b61188560e0820160c083016135a0565b46816001600160401b0316146118ae57604051631c6c777560e31b815260040160405180910390fd5b6118be60a08301608084016135a0565b6001600160401b03811615806118dc575046816001600160401b0316145b156118fa57604051631c6c777560e31b815260040160405180910390fd5b61190e60c954610100900460ff1660021490565b1561192c5760405163bae6e2a960e01b815260040160405180910390fd5b6002611936611f81565b60ff16036119575760405163dfc60d8560e01b815260040160405180910390fd5b6119616002611fc0565b611972610100840160e085016133fc565b6001600160a01b0316336001600160a01b0316146119a3576040516372b6e1c360e11b815260040160405180910390fd5b5f6119b06105fe85613738565b90506119bd816001612008565b6119c8816003612375565b6119e36d7369676e616c5f7365727669636560901b5f611d59565b60405163019b28af60e61b81526003831860048201526001600160a01b0391909116906366ca2bc0906024016020604051808303815f875af1158015611a2b573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611a4f919061375c565b5050611a5b6001611fc0565b505050565b611a7060a08401608085016135a0565b46816001600160401b031614611a9957604051631c6c777560e31b815260040160405180910390fd5b611aa960e0850160c086016135a0565b6001600160401b0381161580611ac7575046816001600160401b0316145b15611ae557604051631c6c777560e31b815260040160405180910390fd5b611af960c954610100900460ff1660021490565b15611b175760405163bae6e2a960e01b815260040160405180910390fd5b6002611b21611f81565b60ff1603611b425760405163dfc60d8560e01b815260040160405180910390fd5b611b4c6002611fc0565b5f611b596105fe87613738565b9050611b65815f612008565b5f611b816d7369676e616c5f7365727669636560901b5f611d59565b604051631933b5e360e11b8152306004820152602481018490529091506001600160a01b038216906332676bc690604401602060405180830381865afa158015611bcd573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611bf19190613aee565b611c0e5760405163ab035ad560e01b815260040160405180910390fd5b611c2d8160038418611c2660e08b0160c08c016135a0565b898961248c565b50611c39826004612375565b611c4787610120013561205a565b611c64576040516335856fbd60e21b815260040160405180910390fd5b611c8d62bc399d60e11b611c7e60808a0160608b016133fc565b6001600160a01b031690612a6a565b15611d2a57611cac8230611ca760a08b0160808c016135a0565b612af7565b611cbc60808801606089016133fc565b6001600160a01b0316630178733a88610120013589856040518463ffffffff1660e01b8152600401611cef929190613b2d565b5f604051808303818588803b158015611d06575f80fd5b505af1158015611d18573d5f803e3d5ffd5b5050505050611d25612bc8565b611d46565b611d466101208801356188b86112ee60c08b0160a08c016133fc565b5050611d526001611fc0565b5050505050565b5f611443468484612730565b5f46611d7760e0860160c087016135a0565b6001600160401b031614611d8c57505f611443565b611440611daa6d7369676e616c5f7365727669636560901b5f611d59565b611db66105fe87613738565b61162d60a08801608089016135a0565b5f81604051602001611dd89190613b4e565b604051602081830303815290604052805190602001209050919050565b604080516060810182525f8082526020820181905291810191909152611e19612bed565b80519091501580611e2b575080515f19145b156115c657604051635ceed17360e01b815260040160405180910390fd5b5f54610100900460ff1615808015611e6757505f54600160ff909116105b80611e805750303b158015611e8057505f5460ff166001145b611e9c5760405162461bcd60e51b8152600401610a7890613773565b5f805460ff191660011790558015611ebd575f805461ff0019166101001790555b611ec78383612ce7565b8015611a5b575f805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a1505050565b611f18612432565b606580546001600160a01b0383166001600160a01b03199091168117909155611f496033546001600160a01b031690565b6001600160a01b03167f38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e2270060405160405180910390a350565b5f611f8b46612d21565b15611fb657507fa5054f728453d3dbe953bdc43e4d0cb97e662ea32d7958190f3dc2da31d9721b5c90565b5060c95460ff1690565b611fc946612d21565b15611ff457807fa5054f728453d3dbe953bdc43e4d0cb97e662ea32d7958190f3dc2da31d9721b5d50565b60c9805460ff831660ff1990911617905550565b80600481111561201a5761201a613385565b5f83815260fc602052604090205460ff16600481111561203c5761203c613385565b14611513576040516319d893ad60e21b815260040160405180910390fd5b5f806120776c38bab7ba30afb6b0b730b3b2b960991b6001611d59565b90506001600160a01b0381166120905750600192915050565b6040516315c638fb60e31b81525f6004820152602481018490526001600160a01b0382169063ae31c7d8906044015f604051808303815f87803b1580156120d5575f80fd5b505af19250505080156120e6575060015b6120f257505f92915050565b50600192915050565b5f8061210f610120850161010086016133fc565b6001600160a01b031603612125575060016116fc565b30612138610120850161010086016133fc565b6001600160a01b03160361214e575060016116fc565b6001600160a01b03821661216a610120850161010086016133fc565b6001600160a01b031603612180575060016116fc565b600461219061014085018561381f565b9050101580156121c75750637f07c94760e01b6121b161014085018561381f565b6121ba91613b84565b6001600160e01b03191614155b801561144357506114436121e3610120850161010086016133fc565b6001600160a01b03163b151590565b5f6001600160a01b03851661221a57604051634c67134d60e11b815260040160405180910390fd5b5f80835160208501878988f195945050505050565b5f8061224961224261014085018561381f565b905061178a565b63ffffffff1690508061227a6122656060860160408701613743565b63ffffffff168361253790919063ffffffff16565b039392505050565b5f3061229460808701606088016133fc565b6001600160a01b0316036122aa576122aa613bb4565b825f036122b857505f61236d565b6122dc846122cc60808801606089016133fc565b611ca760a0890160808a016135a0565b5f6122ef610120870161010088016133fc565b90506101208601355f61230661014089018961381f565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f92018290525084519495509384935083925090506020850186888cf194505a90508515612360576123608188612d4e565b612368612bc8565b505050505b949350505050565b80600481111561238757612387613385565b5f83815260fc602052604090205460ff1660048111156123a9576123a9613385565b036123c7576040516319d893ad60e21b815260040160405180910390fd5b5f82815260fc60205260409020805482919060ff191660018360048111156123f1576123f1613385565b0217905550817f6c51882bc2ed67617f77a1e9b9a25d2caad8448647ecb093b357a603b257563482604051612426919061342e565b60405180910390a25050565b6033546001600160a01b0316331461145c5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610a78565b5f856001600160a01b031663910af6ed856124b1876562726964676560d01b5f611434565b8887876040518663ffffffff1660e01b81526004016124d4959493929190613bc8565b6020604051808303815f875af192505050801561250e575060408051601f3d908101601f1916820190925261250b9181019061375c565b60015b61252b576040516314504c7360e31b815260040160405180910390fd5b90505b95945050505050565b5f8183116125455781611443565b5090919050565b5f81831161255a5782611443565b50919050565b815f0361256c57505050565b61258683838360405180602001604052805f8152506121f2565b611a5b57604051634c67134d60e11b815260040160405180910390fd5b5f80516020613cb1833981519152546001600160a01b031690565b611431612432565b7f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd91435460ff16156125f957611a5b83612d62565b826001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015612653575060408051601f3d908101601f191682019092526126509181019061375c565b60015b6126b65760405162461bcd60e51b815260206004820152602e60248201527f45524331393637557067726164653a206e657720696d706c656d656e7461746960448201526d6f6e206973206e6f74205555505360901b6064820152608401610a78565b5f80516020613cb183398151915281146127245760405162461bcd60e51b815260206004820152602960248201527f45524331393637557067726164653a20756e737570706f727465642070726f786044820152681a58589b195555525160ba1b6064820152608401610a78565b50611a5b838383612dfd565b6097545f906001600160a01b03168061275c57604051638ed88b2560e01b815260040160405180910390fd5b604051630a3dc4f360e21b81526001600160401b0386166004820152602481018590526001600160a01b038216906328f713cc90604401602060405180830381865afa1580156127ae573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906127d29190613bfe565b9150821580156127e957506001600160a01b038216155b1561281957604051632b0d65db60e01b81526001600160401b038616600482015260248101859052604401610a78565b509392505050565b61283560c954610100900460ff1660021490565b6128525760405163bae6e2a960e01b815260040160405180910390fd5b60c9805461010069ffffffffffffffffff001990911662010000426001600160401b031602171790556040513381527f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa906020015b60405180910390a1565b6033546001600160a01b03838116911614806128f957506128e46d636861696e5f7761746368646f6760901b6001611d59565b6001600160a01b0316826001600160a01b0316145b15612902575050565b80801561293c57506129276e6272696467655f7761746368646f6760881b6001611d59565b6001600160a01b0316826001600160a01b0316145b15612945575050565b604051630d85cccf60e11b815260040160405180910390fd5b5f856001600160a01b031663ce9d082085612983876562726964676560d01b5f611434565b8887876040518663ffffffff1660e01b81526004016129a6959493929190613bc8565b5f6040518083038186803b1580156129bc575f80fd5b505afa9250505080156129cd575060015b6129d857505f61252e565b50600161252e565b606580546001600160a01b031916905561143181612e21565b612a0d60c954610100900460ff1660021490565b15612a2b5760405163bae6e2a960e01b815260040160405180910390fd5b60c9805461ff0019166102001790556040513381527f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258906020016128a7565b5f6001600160a01b0383163b612a8157505f6116fc565b6040516301ffc9a760e01b81526001600160e01b0319831660048201526001600160a01b038416906301ffc9a790602401602060405180830381865afa925050508015612aeb575060408051601f3d908101601f19168201909252612ae891810190613aee565b60015b156116fc579392505050565b612b0046612d21565b15612b7357827fe4ece82196de19aabe639620d7f716c433d1348f96ce727c9989a982dbadc2b95d817fe4ece82196de19aabe639620d7f716c433d1348f96ce727c9989a982dbadc2ba5d807fe4ece82196de19aabe639620d7f716c433d1348f96ce727c9989a982dbadc2bb5d505050565b604080516060810182528481526001600160a01b0393909316602084018190526001600160401b0392909216920182905260fd9290925560fe80546001600160e01b031916909217600160a01b909102179055565b612bd146612d21565b15612be15761145c5f8080612af7565b61145c5f198080612af7565b604080516060810182525f8082526020820181905291810191909152612c1246612d21565b15612cab5750604080516060810182527fe4ece82196de19aabe639620d7f716c433d1348f96ce727c9989a982dbadc2b95c81526001600160a01b037fe4ece82196de19aabe639620d7f716c433d1348f96ce727c9989a982dbadc2ba5c1660208201526001600160401b037fe4ece82196de19aabe639620d7f716c433d1348f96ce727c9989a982dbadc2bb5c169181019190915290565b506040805160608101825260fd54815260fe546001600160a01b0381166020830152600160a01b90046001600160401b03169181019190915290565b806001600160a01b038116612d0f5760405163538ba4f960e01b815260040160405180910390fd5b612d1883612e72565b611a5b82612ed0565b5f6001821480612d32575061426882145b80612d3f575062aa36a782145b806116fc57506116fc82612f40565b612d59603f82613c19565b82101561151357fe5b6001600160a01b0381163b612dcf5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b6064820152608401610a78565b5f80516020613cb183398151915280546001600160a01b0319166001600160a01b0392909216919091179055565b612e0683612f57565b5f82511180612e125750805b15611a5b57610a2e8383612f96565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b5f54610100900460ff16612e985760405162461bcd60e51b8152600401610a7890613c38565b612ea0612fbb565b612ebe6001600160a01b03821615612eb857816129e0565b336129e0565b5060c9805461ff001916610100179055565b5f54610100900460ff16612ef65760405162461bcd60e51b8152600401610a7890613c38565b6001600160401b03461115612f1e5760405163a12e8fa960e01b815260040160405180910390fd5b609780546001600160a01b0319166001600160a01b0392909216919091179055565b5f617e2c82101580156116fc575050617e90101590565b612f6081612d62565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a250565b60606114438383604051806060016040528060278152602001613cd160279139612fe1565b5f54610100900460ff1661145c5760405162461bcd60e51b8152600401610a7890613c38565b60605f80856001600160a01b031685604051612ffd9190613c83565b5f60405180830381855af49150503d805f8114613035576040519150601f19603f3d011682016040523d82523d5f602084013e61303a565b606091505b509150915061304b86838387613055565b9695505050505050565b606083156130c35782515f036130bc576001600160a01b0385163b6130bc5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610a78565b508161236d565b61236d83838151156130d85781518083602001fd5b8060405162461bcd60e51b8152600401610a789190613c9e565b5f610160828403121561255a575f80fd5b8015158114611431575f80fd5b5f8060408385031215613121575f80fd5b82356001600160401b03811115613136575f80fd5b613142858286016130f2565b925050602083013561315381613103565b809150509250929050565b5f6020828403121561316e575f80fd5b81356001600160401b03811115613183575f80fd5b61236d848285016130f2565b5f5b838110156131a9578181015183820152602001613191565b50505f910152565b5f81518084526131c881602086016020860161318f565b601f01601f19169290920160200192915050565b80516001600160401b031682525f610160602083015161320760208601826001600160401b03169052565b50604083015161321f604086018263ffffffff169052565b50606083015161323a60608601826001600160a01b03169052565b50608083015161325560808601826001600160401b03169052565b5060a083015161327060a08601826001600160a01b03169052565b5060c083015161328b60c08601826001600160401b03169052565b5060e08301516132a660e08601826001600160a01b03169052565b50610100838101516001600160a01b03169085015261012080840151908501526101408084015181860183905261304b838701826131b1565b828152604060208201525f61144060408301846131dc565b5f805f60408486031215613309575f80fd5b83356001600160401b038082111561331f575f80fd5b61332b878388016130f2565b94506020860135915080821115613340575f80fd5b818601915086601f830112613353575f80fd5b813581811115613361575f80fd5b876020828501011115613372575f80fd5b6020830194508093505050509250925092565b634e487b7160e01b5f52602160045260245ffd5b600581106133a9576133a9613385565b9052565b604081016133bb8285613399565b600483106133cb576133cb613385565b8260208301529392505050565b6001600160a01b0381168114611431575f80fd5b80356133f7816133d8565b919050565b5f6020828403121561340c575f80fd5b8135611443816133d8565b5f60208284031215613427575f80fd5b5035919050565b602081016116fc8284613399565b80356001600160401b03811681146133f7575f80fd5b5f805f60608486031215613464575f80fd5b61346d8461343c565b925060208401359150604084013561348481613103565b809150509250925092565b634e487b7160e01b5f52604160045260245ffd5b60405161016081016001600160401b03811182821017156134c6576134c661348f565b60405290565b5f82601f8301126134db575f80fd5b81356001600160401b03808211156134f5576134f561348f565b604051601f8301601f19908116603f0116810190828211818310171561351d5761351d61348f565b81604052838152866020858801011115613535575f80fd5b836020870160208301375f602085830101528094505050505092915050565b5f8060408385031215613565575f80fd5b8235613570816133d8565b915060208301356001600160401b0381111561358a575f80fd5b613596858286016134cc565b9150509250929050565b5f602082840312156135b0575f80fd5b6114438261343c565b5f80604083850312156135ca575f80fd5b82359150602083013561315381613103565b803563ffffffff811681146133f7575f80fd5b5f6101608284031215613600575f80fd5b6136086134a3565b90506136138261343c565b81526136216020830161343c565b6020820152613632604083016135dc565b6040820152613643606083016133ec565b60608201526136546080830161343c565b608082015261366560a083016133ec565b60a082015261367660c0830161343c565b60c082015261368760e083016133ec565b60e082015261010061369a8184016133ec565b908201526101208281013590820152610140808301356001600160401b038111156136c3575f80fd5b6136cf858286016134cc565b82840152505092915050565b5f602082840312156136eb575f80fd5b81356001600160401b03811115613700575f80fd5b61236d848285016135ef565b5f806040838503121561371d575f80fd5b8235613728816133d8565b91506020830135613153816133d8565b5f6116fc36836135ef565b5f60208284031215613753575f80fd5b611443826135dc565b5f6020828403121561376c575f80fd5b5051919050565b6020808252602e908201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160408201526d191e481a5b9a5d1a585b1a5e995960921b606082015260800190565b634e487b7160e01b5f52601160045260245ffd5b808201808211156116fc576116fc6137c1565b5f6001600160401b03808316818103613803576138036137c1565b6001019392505050565b602081525f61144360208301846131dc565b5f808335601e19843603018112613834575f80fd5b8301803591506001600160401b0382111561384d575f80fd5b602001915036819003821315613861575f80fd5b9250929050565b634e487b7160e01b5f52601260045260245ffd5b5f808335601e19843603018112613891575f80fd5b83016020810192503590506001600160401b038111156138af575f80fd5b803603821315613861575f80fd5b81835281816020850137505f828201602090810191909152601f909101601f19169091010190565b5f610160613903846138f68561343c565b6001600160401b03169052565b61390f6020840161343c565b6001600160401b03166020850152613929604084016135dc565b63ffffffff166040850152613940606084016133ec565b6001600160a01b0316606085015261395a6080840161343c565b6001600160401b0316608085015261397460a084016133ec565b6001600160a01b031660a085015261398e60c0840161343c565b6001600160401b031660c08501526139a860e084016133ec565b6001600160a01b031660e08501526101006139c48482016133ec565b6001600160a01b03169085015261012083810135908501526101406139eb8185018561387c565b83838801526139fd84880182846138bd565b979650505050505050565b60a081525f613a1a60a08301856138e5565b905063ffffffff808451166020840152806020850151166040840152806040850151166060840152506060830151151560808301529392505050565b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b19195b1959d85d1958d85b1b60a21b606082015260800190565b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b6163746976652070726f787960a01b606082015260800190565b5f60208284031215613afe575f80fd5b815161144381613103565b63ffffffff818116838216019080821115613b2657613b266137c1565b5092915050565b604081525f613b3f60408301856138e5565b90508260208301529392505050565b60408152600d60408201526c5441494b4f5f4d45535341474560981b6060820152608060208201525f61144360808301846131dc565b6001600160e01b03198135818116916004851015613bac5780818660040360031b1b83161692505b505092915050565b634e487b7160e01b5f52600160045260245ffd5b6001600160401b038616815260018060a01b0385166020820152836040820152608060608201525f6139fd6080830184866138bd565b5f60208284031215613c0e575f80fd5b8151611443816133d8565b5f82613c3357634e487b7160e01b5f52601260045260245ffd5b500490565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b5f8251613c9481846020870161318f565b9190910192915050565b602081525f61144360208301846131b156fe360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a2646970667358221220901fd7e2a6a10d7609f6d9299420e30b80af396fcd889c90d1ceb2d639d8bbde64736f6c63430008180033