0x000000000000000000000000000000000000000000000000000000000000000060a060405234801561001057600080fd5b5060405161499d38038061499d83398101604081905261002f916100aa565b818160405161003d90610085565b6001600160a01b03928316815291166020820152604001604051809103906000f080158015610070573d6000803e3d6000fd5b506001600160a01b0316608052506100e49050565b613c0b80610d9283390190565b6001600160a01b03811681146100a757600080fd5b50565b600080604083850312156100bd57600080fd5b82516100c881610092565b60208401519092506100d981610092565b809150509250929050565b608051610c8661010c6000396000818160870152818161012601526102860152610c866000f3fe608060405234801561001057600080fd5b50600436106100415760003560e01c806336b5aa2d14610046578063c84bbddf14610082578063d217310e146100a9575b600080fd5b61005961005436600461039d565b6100bc565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b6100597f000000000000000000000000000000000000000000000000000000000000000081565b6100596100b736600461039d565b61022e565b60006102258260001b604051806020016100d590610390565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe082820381018352601f90910116604081905273ffffffffffffffffffffffffffffffffffffffff871660248201527f000000000000000000000000000000000000000000000000000000000000000090604401604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152918152602080830180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fc4d66de80000000000000000000000000000000000000000000000000000000017905290516101ce93929101610406565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529082905261020a9291602001610474565b6040516020818303038152906040528051906020012061035e565b90505b92915050565b60008061023b84846100bc565b905073ffffffffffffffffffffffffffffffffffffffff81163b801561026357509050610228565b60405173ffffffffffffffffffffffffffffffffffffffff8616602482015284907f000000000000000000000000000000000000000000000000000000000000000090604401604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fc4d66de8000000000000000000000000000000000000000000000000000000001790525161032990610390565b610334929190610406565b8190604051809103906000f5905080158015610354573d6000803e3d6000fd5b5092505050610228565b60006102258383306000604051836040820152846020820152828152600b8101905060ff815360559020949350505050565b6107ad806104a483390190565b600080604083850312156103b057600080fd5b823573ffffffffffffffffffffffffffffffffffffffff811681146103d457600080fd5b946020939093013593505050565b60005b838110156103fd5781810151838201526020016103e5565b50506000910152565b73ffffffffffffffffffffffffffffffffffffffff8316815260406020820152600082518060408401526104418160608501602087016103e2565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016919091016060019392505050565b600083516104868184602088016103e2565b83519083019061049a8183602088016103e2565b0194935050505056fe60806040526040516107ad3803806107ad83398101604081905261002291610319565b61002e82826000610035565b5050610436565b61003e8361006b565b60008251118061004b5750805b156100665761006483836100ab60201b6100291760201c565b505b505050565b610074816100d7565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b60606100d08383604051806060016040528060278152602001610786602791396101a9565b9392505050565b6100ea8161022260201b6100551760201c565b6101515760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b60648201526084015b60405180910390fd5b806101887f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc60001b61023160201b6100711760201c565b80546001600160a01b0319166001600160a01b039290921691909117905550565b6060600080856001600160a01b0316856040516101c691906103e7565b600060405180830381855af49150503d8060008114610201576040519150601f19603f3d011682016040523d82523d6000602084013e610206565b606091505b50909250905061021886838387610234565b9695505050505050565b6001600160a01b03163b151590565b90565b606083156102a357825160000361029c576001600160a01b0385163b61029c5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610148565b50816102ad565b6102ad83836102b5565b949350505050565b8151156102c55781518083602001fd5b8060405162461bcd60e51b81526004016101489190610403565b634e487b7160e01b600052604160045260246000fd5b60005b838110156103105781810151838201526020016102f8565b50506000910152565b6000806040838503121561032c57600080fd5b82516001600160a01b038116811461034357600080fd5b60208401519092506001600160401b038082111561036057600080fd5b818501915085601f83011261037457600080fd5b815181811115610386576103866102df565b604051601f8201601f19908116603f011681019083821181831017156103ae576103ae6102df565b816040528281528860208487010111156103c757600080fd5b6103d88360208301602088016102f5565b80955050505050509250929050565b600082516103f98184602087016102f5565b9190910192915050565b60208152600082518060208401526104228160408501602087016102f5565b601f01601f19169190910160400192915050565b610341806104456000396000f3fe60806040523661001357610011610017565b005b6100115b610027610022610074565b6100b9565b565b606061004e83836040518060600160405280602781526020016102e5602791396100dd565b9392505050565b73ffffffffffffffffffffffffffffffffffffffff163b151590565b90565b60006100b47f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5473ffffffffffffffffffffffffffffffffffffffff1690565b905090565b3660008037600080366000845af43d6000803e8080156100d8573d6000f35b3d6000fd5b60606000808573ffffffffffffffffffffffffffffffffffffffff16856040516101079190610277565b600060405180830381855af49150503d8060008114610142576040519150601f19603f3d011682016040523d82523d6000602084013e610147565b606091505b509150915061015886838387610162565b9695505050505050565b606083156101fd5782516000036101f65773ffffffffffffffffffffffffffffffffffffffff85163b6101f6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064015b60405180910390fd5b5081610207565b610207838361020f565b949350505050565b81511561021f5781518083602001fd5b806040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016101ed9190610293565b60005b8381101561026e578181015183820152602001610256565b50506000910152565b60008251610289818460208701610253565b9190910192915050565b60208152600082518060208401526102b2816040850160208701610253565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016919091016040019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a26469706673582212209b429d74fd6276ec9fd4064ca577a0309be62c4908dc0514623e407c23f89a2864736f6c63430008120033416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a264697066735822122093482a38304e746105fb0ae397f376c7908279e0ac3a2a27df81fa1bc379be4864736f6c6343000812003360e0604052306080523480156200001557600080fd5b5060405162003c0b38038062003c0b83398101604081905262000038916200013b565b600180556001600160a01b0380831660a052811660c0526200005962000061565b50506200017a565b600054610100900460ff1615620000ce5760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60005460ff9081161462000120576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b6001600160a01b03811681146200013857600080fd5b50565b600080604083850312156200014f57600080fd5b82516200015c8162000122565b60208401519092506200016f8162000122565b809150509250929050565b60805160a05160c051613a3e620001cd6000396000611e300152600081816121a201526122be015260008181610c9801528181610d4d01528181610ea201528181610f52015261109b0152613a3e6000f3fe60806040526004361061016e5760003560e01c80638813ce12116100cb578063a4c87c1d1161007f578063e074bb4711610059578063e074bb471461041a578063f198d6281461043a578063fe9fbb801461048057600080fd5b8063a4c87c1d146103cd578063a68fbdee146103e5578063c4d66de8146103fa57600080fd5b806397b5a6dd116100b057806397b5a6dd146103785780639f11cba214610398578063a442e34a146103ad57600080fd5b80638813ce121461034157806396f077401461035657600080fd5b806352d1902d1161012257806365f5c5791161010757806365f5c579146102755780636da2147b1461029557806376e112861461032157600080fd5b806352d1902d1461022e5780635be220c31461025157600080fd5b806331f092651161015357806331f09265146101db5780633659cfe6146101fb5780634f1ef2861461021b57600080fd5b80632b8cc3461461017a57806330289c611461019c57600080fd5b3661017557005b600080fd5b34801561018657600080fd5b5061019a6101953660046131f3565b6104a0565b005b3480156101a857600080fd5b506101bc6101b73660046131f3565b6109a2565b6040516101d29a9998979695949392919061324b565b60405180910390f35b3480156101e757600080fd5b5061019a6101f6366004613303565b610b3a565b34801561020757600080fd5b5061019a6102163660046131f3565b610c81565b61019a6102293660046133bb565b610e8b565b34801561023a57600080fd5b50610243611081565b6040519081526020016101d2565b34801561025d57600080fd5b5060035460ff165b60405190151581526020016101d2565b34801561028157600080fd5b5061019a610290366004613502565b61116d565b3480156102a157600080fd5b506102f96102b03660046131f3565b73ffffffffffffffffffffffffffffffffffffffff1660009081526002602052604090206001810154815460038301546005909301549193909260ff9081169261010090041690565b60408051948552602085019390935290151591830191909152151560608201526080016101d2565b34801561032d57600080fd5b5061019a61033c3660046135f0565b61173b565b34801561034d57600080fd5b5061019a6117e4565b34801561036257600080fd5b5061036b611867565b6040516101d29190613629565b34801561038457600080fd5b5061019a610393366004613683565b6118d6565b3480156103a457600080fd5b5061019a61195d565b3480156103b957600080fd5b5061019a6103c83660046136a0565b6119dd565b3480156103d957600080fd5b5060055460ff16610265565b3480156103f157600080fd5b5061019a611d26565b34801561040657600080fd5b5061019a6104153660046131f3565b6123ef565b34801561042657600080fd5b5061019a6104353660046131f3565b612582565b34801561044657600080fd5b506102436104553660046131f3565b73ffffffffffffffffffffffffffffffffffffffff1660009081526002602052604090206004015490565b34801561048c57600080fd5b5061026561049b3660046131f3565b6126e1565b600354610100900473ffffffffffffffffffffffffffffffffffffffff1633146104f6576040517f30eaf89700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff811660009081526002602052604090206005015460ff168015610555575073ffffffffffffffffffffffffffffffffffffffff811660009081526002602052604090206009015415155b156105905773ffffffffffffffffffffffffffffffffffffffff81166000908152600260205260408120600981018054600190920191909155555b73ffffffffffffffffffffffffffffffffffffffff8116600090815260026020526040902054156106175773ffffffffffffffffffffffffffffffffffffffff811660009081526002602052604090206005810180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff1690556003600490910155610672565b73ffffffffffffffffffffffffffffffffffffffff811660009081526002602081905260409091206005810180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff16610100179055600401555b73ffffffffffffffffffffffffffffffffffffffff8116600090815260026020526040812080544292906106a7908490613746565b909155505073ffffffffffffffffffffffffffffffffffffffff811660009081526002602052604090206003810180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790556005015460ff16156108085760408051600481526024810182526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fce2b94bc000000000000000000000000000000000000000000000000000000001790529051829160009173ffffffffffffffffffffffffffffffffffffffff8416916107889161377d565b6000604051808303816000865af19150503d80600081146107c5576040519150601f19603f3d011682016040523d82523d6000602084013e6107ca565b606091505b5050905080610805576040517fc3ed59ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50505b73ffffffffffffffffffffffffffffffffffffffff811660009081526002602052604090206005015460ff166109365760408051600481526024810182526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fff011736000000000000000000000000000000000000000000000000000000001790529051829160009173ffffffffffffffffffffffffffffffffffffffff8416916108b69161377d565b6000604051808303816000865af19150503d80600081146108f3576040519150601f19603f3d011682016040523d82523d6000602084013e6108f8565b606091505b5050905080610933576040517fc3ed59ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50505b73ffffffffffffffffffffffffffffffffffffffff81166000818152600260208181526040928390209182015460019092015492519283529092309290917f6ca089aaf1248a4df4c1b5de07c68ecc0622de14aa12f6e9a437f2614b38f24b910160405180910390a450565b73ffffffffffffffffffffffffffffffffffffffff811660009081526002602052604081208054600190910154829182918291829182918291829160609182918c916109ee9190613746565b73ffffffffffffffffffffffffffffffffffffffff808316600090815260026020818152604092839020805460038201549382015460068301546005840154600785018054895181890281018901909a52808a52949960ff988916999498938116976201000084048516976301000000850490951696640100000000909404909116949193600801928491830182828015610abf57602002820191906000526020600020905b815473ffffffffffffffffffffffffffffffffffffffff168152600190910190602001808311610a94575b5050505050915080805480602002602001604051908101604052809291908181526020018280548015610b1157602002820191906000526020600020905b815481526020019060010190808311610afd575b505050505090509a509a509a509a509a509a509a509a509a509a50509193959799509193959799565b600354610100900473ffffffffffffffffffffffffffffffffffffffff163314610b90576040517f30eaf89700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008473ffffffffffffffffffffffffffffffffffffffff16848484604051610bba929190613799565b60006040518083038185875af1925050503d8060008114610bf7576040519150601f19603f3d011682016040523d82523d6000602084013e610bfc565b606091505b5050905080610c37576040517fc3ed59ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b604051849073ffffffffffffffffffffffffffffffffffffffff8716907fb244b9a17ad633c6e83b7983ee04320484956a68ddbe96a0b70dfca1cf19d72390600090a35050505050565b73ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000163003610d4b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602c60248201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060448201527f64656c656761746563616c6c000000000000000000000000000000000000000060648201526084015b60405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16610dc07f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5473ffffffffffffffffffffffffffffffffffffffff1690565b73ffffffffffffffffffffffffffffffffffffffff1614610e63576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602c60248201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060448201527f6163746976652070726f787900000000000000000000000000000000000000006064820152608401610d42565b610e6c81612710565b60408051600080825260208201909252610e8891839190612766565b50565b73ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000163003610f50576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602c60248201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060448201527f64656c656761746563616c6c00000000000000000000000000000000000000006064820152608401610d42565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16610fc57f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5473ffffffffffffffffffffffffffffffffffffffff1690565b73ffffffffffffffffffffffffffffffffffffffff1614611068576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602c60248201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060448201527f6163746976652070726f787900000000000000000000000000000000000000006064820152608401610d42565b61107182612710565b61107d82826001612766565b5050565b60003073ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001614611148576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603860248201527f555550535570677261646561626c653a206d757374206e6f742062652063616c60448201527f6c6564207468726f7567682064656c656761746563616c6c00000000000000006064820152608401610d42565b507f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc90565b6040517ffe9fbb800000000000000000000000000000000000000000000000000000000081523360048201819052908190819063fe9fbb8090602401602060405180830381865afa1580156111c6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111ea91906137a9565b611220576040517f18604e3f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60035460ff1661125c576040517f6e3182c700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60068054600181019091557ff652222313e28459528d920b65115c16c04f3efc82aaedc97be59f3f377c0d3f0180547fffffffffffffffffffffffff000000000000000000000000000000000000000016339081179091556000818152600260205260409020600481015460039091015490919060ff168015611306575073ffffffffffffffffffffffffffffffffffffffff811660009081526002602052604090206001015415155b1561139a5773ffffffffffffffffffffffffffffffffffffffff81166000908152600260205260409020600101548e1461136a5773ffffffffffffffffffffffffffffffffffffffff811660009081526002602052604090206009018e90556113c6565b73ffffffffffffffffffffffffffffffffffffffff811660009081526002602052604090206001018e90556113c6565b73ffffffffffffffffffffffffffffffffffffffff811660009081526002602052604090206001018e90555b81156113d35760006113d5565b8c5b73ffffffffffffffffffffffffffffffffffffffff8216600090815260026020819052604090912091825581018d90556003015460ff16801561143f575073ffffffffffffffffffffffffffffffffffffffff811660009081526002602052604090206009015415155b6114745773ffffffffffffffffffffffffffffffffffffffff811660009081526002602052604090206003015460ff16611477565b60005b73ffffffffffffffffffffffffffffffffffffffff8216600090815260026020526040902060030180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001691151591909117905581156114d857816114db565b60005b73ffffffffffffffffffffffffffffffffffffffff82166000908152600260205260409020600481019190915560058101805460017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff00909116620100008f15150217177fffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffff1663010000008d15150217905561157a906007018989613034565b508f600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060050160046101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508e600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060060160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555088600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060060160146101000a81548160ff0219169083151502179055508585600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060080191906117289291906130bc565b5050505050505050505050505050505050565b600354610100900473ffffffffffffffffffffffffffffffffffffffff163314611791576040517f30eaf89700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff918216600090815260046020526040902080547fffffffffffffffffffffffff00000000000000000000000000000000000000001691909216179055565b600354610100900473ffffffffffffffffffffffffffffffffffffffff16331461183a576040517f30eaf89700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600380547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055565b606060068054806020026020016040519081016040528092919081815260200182805480156118cc57602002820191906000526020600020905b815473ffffffffffffffffffffffffffffffffffffffff1681526001909101906020018083116118a1575b5050505050905090565b600354610100900473ffffffffffffffffffffffffffffffffffffffff16331461192c576040517f30eaf89700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600580547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016911515919091179055565b600354610100900473ffffffffffffffffffffffffffffffffffffffff1633146119b3576040517f30eaf89700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600380547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169055565b600354610100900473ffffffffffffffffffffffffffffffffffffffff163314611a33576040517f30eaf89700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600680546001810182556000919091527ff652222313e28459528d920b65115c16c04f3efc82aaedc97be59f3f377c0d3f0180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff89811691909117909155861615611b035773ffffffffffffffffffffffffffffffffffffffff868116600090815260046020526040902080547fffffffffffffffffffffffff0000000000000000000000000000000000000000169187169190911790555b73ffffffffffffffffffffffffffffffffffffffff87811660009081526002602081905260408220858155908101849055600181018690556003810180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169055600481018290556005810180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ff0016905560060180549289167fffffffffffffffffffffff000000000000000000000000000000000000000000909316929092177401000000000000000000000000000000000000000087151502179091558790604051908082528060200260200182016040528015611c0f578160200160208202803683370190505b5073ffffffffffffffffffffffffffffffffffffffff821660009081526002602090815260409091208251611c4e9360079092019291909101906130f7565b5073ffffffffffffffffffffffffffffffffffffffff811660008181526002602081815260408084206005810180547fffffffffffffffff0000000000000000000000000000000000000000ffffffff169055815185815280840192839052959094529190529151611cc69260089092019190613171565b5060408051858152600060208201528391309173ffffffffffffffffffffffffffffffffffffffff8c16917f0295d145319a7863b78545343ffb768bb1c5709b117ccafd6cd91758e4bb1a9f910160405180910390a45050505050505050565b611d2e61296a565b3360008181526002602052604090206003015460ff16611d7a576040517fa5ce7bab00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60055460ff1615611db7576040517ff299653100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000611dc2336129dd565b3360009081526002602052604081206006015491925073ffffffffffffffffffffffffffffffffffffffff821691821515917401000000000000000000000000000000000000000090910460ff169082611e59573360009081526002602081905260409091200154611e54907f0000000000000000000000000000000000000000000000000000000000000000612a58565b611e9c565b73ffffffffffffffffffffffffffffffffffffffff80851660009081526004602090815260408083205433845260029283905292200154611e9c92909116612a58565b9050600082611ec0576064611eb183886137c6565b611ebb91906137dd565b611ee6565b64e8d4a510006064611ed284896137c6565b611edc91906137dd565b611ee691906137dd565b9050600083611efe57611ef98284613818565b611f18565b81611f0e64e8d4a51000856137dd565b611f189190613818565b33600090815260026020526040902054909150421015611f64576040517f9829dee700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b33600090815260026020819052604090912060040154118015611f9e575033600090815260026020526040902060050154610100900460ff165b8015611fc8575033600090815260026020526040902060018101549054611fc59190613746565b42105b15611fff576040517f9829dee700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b33600090815260026020819052604090912060040154900361204057336000908152600260205260408120600401805490919061203b9061382b565b909155505b3360009081526002602052604090205442106120935733600090815260026020526040902060050180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff166101001790555b33600090815260026020526040902060050154610100900460ff16156123dc57336000908152600260205260409020429055841561226f576040517fa9059cbb0000000000000000000000000000000000000000000000000000000081523360048201526024810182905260009073ffffffffffffffffffffffffffffffffffffffff88169063a9059cbb906044016020604051808303816000875af1158015612141573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061216591906137a9565b6040517fa9059cbb00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000811660048301526024820186905291925060009189169063a9059cbb906044016020604051808303816000875af1158015612200573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061222491906137a9565b9050811580612231575080155b15612268576040517fc3ed59ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5050612382565b604051600090339083908381818185875af1925050503d80600081146122b1576040519150601f19603f3d011682016040523d82523d6000602084013e6122b6565b606091505b5050905060007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168460405160006040518083038185875af1925050503d8060008114612334576040519150601f19603f3d011682016040523d82523d6000602084013e612339565b606091505b50509050811580612348575080155b1561237f576040517fc3ed59ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50505b336000818152600260208181526040808420928301546001909301548151908152918201939093529092309290917f9b1d3d3619d44005ff8b2529a6e46d879e0ce5122518b057359759337b024d52910160405180910390a45b50505050505050506123ed60018055565b565b600054610100900460ff161580801561240f5750600054600160ff909116105b806124295750303b158015612429575060005460ff166001145b6124b5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a65640000000000000000000000000000000000006064820152608401610d42565b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055801561251357600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff166101001790555b61251c82612a8d565b801561107d57600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15050565b600354610100900473ffffffffffffffffffffffffffffffffffffffff1633146125d8576040517f30eaf89700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8116600090815260026020526040812060030180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001690556006549080805b8381101561269a578473ffffffffffffffffffffffffffffffffffffffff166006828154811061265f5761265f613863565b60009182526020909120015473ffffffffffffffffffffffffffffffffffffffff1603612692576001915080925061269a565b60010161262d565b50806126d2576040517fc3ed59ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6126db82612b2c565b50505050565b600073ffffffffffffffffffffffffffffffffffffffff8216300361270857506001919050565b506000919050565b600354610100900473ffffffffffffffffffffffffffffffffffffffff163314610e88576040517f30eaf89700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd91435460ff161561279e5761279983612c97565b505050565b8273ffffffffffffffffffffffffffffffffffffffff166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015612823575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016820190925261282091810190613892565b60015b6128af576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f45524331393637557067726164653a206e657720696d706c656d656e7461746960448201527f6f6e206973206e6f7420555550530000000000000000000000000000000000006064820152608401610d42565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc811461295e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602960248201527f45524331393637557067726164653a20756e737570706f727465642070726f7860448201527f6961626c655555494400000000000000000000000000000000000000000000006064820152608401610d42565b50612799838383612da1565b6002600154036129d6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610d42565b6002600155565b73ffffffffffffffffffffffffffffffffffffffff81811660009081526002602052604081206006015490911615612a1757506004919050565b73ffffffffffffffffffffffffffffffffffffffff821660009081526002602052604090206005015460ff1615612a5057506003919050565b506002919050565b600080612a6483612dc6565b905080612a7985670de0b6b3a76400006137c6565b612a8391906137dd565b9150505b92915050565b600380547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0073ffffffffffffffffffffffffffffffffffffffff84166101008102919091167fffffffffffffffffffffff000000000000000000000000000000000000000000909216919091176001179091556040517f6904a41bc81fceeeb9056fdd519ed0b7aa5a8fb441198cc6099ec47a1707ba6590600090a250565b60065480821115612b69576040517fc1b1399200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b815b612b76600183613818565b811015612c29576006612b8a826001613746565b81548110612b9a57612b9a613863565b6000918252602090912001546006805473ffffffffffffffffffffffffffffffffffffffff9092169183908110612bd357612bd3613863565b600091825260209091200180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055600101612b6b565b506006805480612c3b57612c3b6138ab565b60008281526020902081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff90810180547fffffffffffffffffffffffff00000000000000000000000000000000000000001690550190555050565b73ffffffffffffffffffffffffffffffffffffffff81163b612d3b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201527f6f74206120636f6e7472616374000000000000000000000000000000000000006064820152608401610d42565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b612daa83612e56565b600082511180612db75750805b15612799576126db8383612ea3565b6000808273ffffffffffffffffffffffffffffffffffffffff1663feaf968c6040518163ffffffff1660e01b815260040160a060405180830381865afa158015612e14573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612e3891906138f4565b505050915050806402540be400612e4f9190613944565b9392505050565b612e5f81612c97565b60405173ffffffffffffffffffffffffffffffffffffffff8216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b6060612e4f83836040518060600160405280602781526020016139e26027913960606000808573ffffffffffffffffffffffffffffffffffffffff1685604051612eed919061377d565b600060405180830381855af49150503d8060008114612f28576040519150601f19603f3d011682016040523d82523d6000602084013e612f2d565b606091505b5091509150612f3e86838387612f48565b9695505050505050565b60608315612fde578251600003612fd75773ffffffffffffffffffffffffffffffffffffffff85163b612fd7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610d42565b5081612fe8565b612fe88383612ff0565b949350505050565b8151156130005781518083602001fd5b806040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d429190613990565b8280548282559060005260206000209081019282156130ac579160200282015b828111156130ac5781547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff843516178255602090920191600190910190613054565b506130b89291506131ac565b5090565b8280548282559060005260206000209081019282156130ac579160200282015b828111156130ac5782358255916020019190600101906130dc565b8280548282559060005260206000209081019282156130ac579160200282015b828111156130ac57825182547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff909116178255602090920191600190910190613117565b8280548282559060005260206000209081019282156130ac579160200282015b828111156130ac578251825591602001919060010190613191565b5b808211156130b857600081556001016131ad565b73ffffffffffffffffffffffffffffffffffffffff81168114610e8857600080fd5b80356131ee816131c1565b919050565b60006020828403121561320557600080fd5b8135612e4f816131c1565b600081518084526020808501945080840160005b8381101561324057815187529582019590820190600101613224565b509495945050505050565b8a815260208082018b905289151560408301526060820189905273ffffffffffffffffffffffffffffffffffffffff888116608084015287151560a084015286151560c084015285811660e08401526101406101008401819052855190840181905260009261016085019287820192855b818110156132da5784518316865294830194938301936001016132bc565b50505050508281036101208401526132f28185613210565b9d9c50505050505050505050505050565b6000806000806060858703121561331957600080fd5b8435613324816131c1565b935060208501359250604085013567ffffffffffffffff8082111561334857600080fd5b818701915087601f83011261335c57600080fd5b81358181111561336b57600080fd5b88602082850101111561337d57600080fd5b95989497505060200194505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080604083850312156133ce57600080fd5b82356133d9816131c1565b9150602083013567ffffffffffffffff808211156133f657600080fd5b818501915085601f83011261340a57600080fd5b81358181111561341c5761341c61338c565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f011681019083821181831017156134625761346261338c565b8160405282815288602084870101111561347b57600080fd5b8260208601602083013760006020848301015280955050505050509250929050565b8015158114610e8857600080fd5b80356131ee8161349d565b60008083601f8401126134c857600080fd5b50813567ffffffffffffffff8111156134e057600080fd5b6020830191508360208260051b85010111156134fb57600080fd5b9250929050565b6000806000806000806000806000806000806101408d8f03121561352557600080fd5b61352e8d6131e3565b9b5061353c60208e016131e3565b9a5060408d0135995060608d0135985060808d0135975061355f60a08e016134ab565b965061356d60c08e016134ab565b955061357b60e08e016134ab565b945067ffffffffffffffff6101008e0135111561359757600080fd5b6135a88e6101008f01358f016134b6565b909450925067ffffffffffffffff6101208e013511156135c757600080fd5b6135d88e6101208f01358f016134b6565b81935080925050509295989b509295989b509295989b565b6000806040838503121561360357600080fd5b823561360e816131c1565b9150602083013561361e816131c1565b809150509250929050565b6020808252825182820181905260009190848201906040850190845b8181101561367757835173ffffffffffffffffffffffffffffffffffffffff1683529284019291840191600101613645565b50909695505050505050565b60006020828403121561369557600080fd5b8135612e4f8161349d565b600080600080600080600060e0888a0312156136bb57600080fd5b87356136c6816131c1565b965060208801356136d6816131c1565b955060408801356136e6816131c1565b945060608801356136f68161349d565b9699959850939660808101359560a0820135955060c0909101359350915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b80820180821115612a8757612a87613717565b60005b8381101561377457818101518382015260200161375c565b50506000910152565b6000825161378f818460208701613759565b9190910192915050565b8183823760009101908152919050565b6000602082840312156137bb57600080fd5b8151612e4f8161349d565b8082028115828204841417612a8757612a87613717565b600082613813577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b81810381811115612a8757612a87613717565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361385c5761385c613717565b5060010190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000602082840312156138a457600080fd5b5051919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fd5b805169ffffffffffffffffffff811681146131ee57600080fd5b600080600080600060a0868803121561390c57600080fd5b613915866138da565b9450602086015193506040860151925060608601519150613938608087016138da565b90509295509295909350565b808202600082127f80000000000000000000000000000000000000000000000000000000000000008414161561397c5761397c613717565b8181058314821517612a8757612a87613717565b60208152600082518060208401526139af816040850160208701613759565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016919091016040019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a2646970667358221220bb5855ad82c56d0a040bc2965a27c50f5642ba1b316065b65aa0301c8cbca94d64736f6c63430008120033000000000000000000000000b808ff0e0f4fc24d0ceceed6014f04ece5bfca360000000000000000000000005f4ec3df9cbd43714fe2740f5e3616155c5b8419