0x60a06040523060601b6080523480156200001857600080fd5b50600054610100900460ff16158080156200003a5750600054600160ff909116105b806200006a575062000057306200014460201b62000c041760201c565b1580156200006a575060005460ff166001145b620000d25760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b606482015260840160405180910390fd5b6000805460ff191660011790558015620000f6576000805461ff0019166101001790555b80156200013d576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5062000153565b6001600160a01b03163b151590565b60805160601c61273b6200018e600039600081816106200152818161066001528181610761015281816107a10152610830015261273b6000f3fe6080604052600436106101c25760003560e01c80635cd8a76b116100f7578063a217fddf11610095578063cb64323f11610064578063cb64323f146104c3578063d547741f146104e2578063d851542714610502578063f108e22514610522576101c2565b8063a217fddf14610470578063a501969714610485578063bf2d75fb1461049c578063c9b25f0f146104bb576101c2565b80637d6ba5b3116100d15780637d6ba5b3146104065780638b071d42146104265780638d4cc8991461043d57806391d1485414610450576101c2565b80635cd8a76b146103b25780636c19e783146103c75780637ac3c02f146103e7576101c2565b80632f2ff15d1161016457806338926b6d1161013e57806338926b6d146103615780634f1ef286146103745780634f361c9a1461038757806352d1902d1461039d576101c2565b80632f2ff15d1461030157806336568abe146103215780633659cfe614610341576101c2565b80630d8e6e2c116101a05780630d8e6e2c1461025a578063238ac9331461028e578063248a9ca3146102af5780632e75ab50146102df576101c2565b806301ffc9a7146101c757806302efce10146101fc5780630823b61c14610221575b600080fd5b3480156101d357600080fd5b506101e76101e23660046122d1565b610543565b60405190151581526020015b60405180910390f35b34801561020857600080fd5b506102136101335481565b6040519081526020016101f3565b34801561022d57600080fd5b5061012f54610242906001600160a01b031681565b6040516001600160a01b0390911681526020016101f3565b34801561026657600080fd5b5060408051808201825260058152640322e302e360dc1b602082015290516101f39190612495565b34801561029a57600080fd5b5061013154610242906001600160a01b031681565b3480156102bb57600080fd5b506102136102ca366004612276565b60009081526065602052604090206001015490565b3480156102eb57600080fd5b506102ff6102fa366004612276565b610556565b005b34801561030d57600080fd5b506102ff61031c3660046122a6565b610568565b34801561032d57600080fd5b506102ff61033c3660046122a6565b610592565b34801561034d57600080fd5b506102ff61035c36600461213f565b610615565b6102ff61036f3660046122f9565b6106f5565b6102ff610382366004612159565b610756565b34801561039357600080fd5b5061013254610213565b3480156103a957600080fd5b50610213610823565b3480156103be57600080fd5b506102ff6108d6565b3480156103d357600080fd5b506102ff6103e236600461213f565b610a27565b3480156103f357600080fd5b50610131546001600160a01b0316610242565b34801561041257600080fd5b506102ff61042136600461213f565b610a56565b34801561043257600080fd5b506102136101325481565b6102ff61044b3660046121a5565b610a82565b34801561045c57600080fd5b506101e761046b3660046122a6565b610b7d565b34801561047c57600080fd5b50610213600081565b34801561049157600080fd5b506102136101345481565b3480156104a857600080fd5b50610130546001600160a01b0316610242565b6102ff610ba8565b3480156104cf57600080fd5b5061012f546001600160a01b0316610242565b3480156104ee57600080fd5b506102ff6104fd3660046122a6565b610bb3565b34801561050e57600080fd5b506102ff61051d36600461213f565b610bd8565b34801561052e57600080fd5b5061013054610242906001600160a01b031681565b600061054e82610c13565b90505b919050565b600061056181610c48565b5061013255565b60008281526065602052604090206001015461058381610c48565b61058d8383610c52565b505050565b6001600160a01b03811633146106075760405162461bcd60e51b815260206004820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201526e103937b632b9903337b91039b2b63360891b60648201526084015b60405180910390fd5b6106118282610cd8565b5050565b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016141561065e5760405162461bcd60e51b81526004016105fe906124d2565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166106a76000805160206126bf833981519152546001600160a01b031690565b6001600160a01b0316146106cd5760405162461bcd60e51b81526004016105fe9061251e565b6106d681610d3f565b604080516000808252602082019092526106f291839190610d4a565b50565b6101335460408051602081019290925233908201819052606082018490529060009061073a906080015b60405160208183030381529060405280519060200120610ec9565b90506107468184610f17565b610750828561104b565b50505050565b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016141561079f5760405162461bcd60e51b81526004016105fe906124d2565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166107e86000805160206126bf833981519152546001600160a01b031690565b6001600160a01b03161461080e5760405162461bcd60e51b81526004016105fe9061251e565b61081782610d3f565b61061182826001610d4a565b6000306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146108c35760405162461bcd60e51b815260206004820152603860248201527f555550535570677261646561626c653a206d757374206e6f742062652063616c60448201527f6c6564207468726f7567682064656c656761746563616c6c000000000000000060648201526084016105fe565b506000805160206126bf83398151915290565b600054600290610100900460ff161580156108f8575060005460ff8083169116105b61095b5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084016105fe565b6000805461010060ff1990911660ff84161761ff001916179055604080518082018252600d81526c2130b233b2a6b4b73a32b92b1960991b602080830191909152825180840190935260058352640322e302e360dc1b908301526109be91611268565b7fb643ad5dcf436c2b2c053fa46b909e2f16f23643bc4ffb7e3ddf1018696cc729610134556000805461ff001916905560405160ff821681527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a150565b6000610a3281610c48565b5061013180546001600160a01b0319166001600160a01b0392909216919091179055565b6000610a6181610c48565b61013080546001600160a01b0319166001600160a01b038416179055610611565b825161013254610a929082611299565b471015610af55760405162461bcd60e51b815260206004820152602b60248201527f42616467654d696e74657256323a20496e7375666669656e742062616c616e6360448201526a19481d1bc81c99599d5b9960aa1b60648201526084016105fe565b60003390506000610b5e610134548388604051602001610b15919061238e565b604051602081830303815290604052805190602001208860405160200161071f94939291909384526001600160a01b039290921660208401526040830152606082015260800190565b9050610b6a8185610f17565b610b758287876112ac565b505050505050565b60009182526065602090815260408084206001600160a01b0393909316845291905290205460ff1690565b60006106f281610c48565b600082815260656020526040902060010154610bce81610c48565b61058d8383610cd8565b6000610be381610c48565b61012f80546001600160a01b0319166001600160a01b038416179055610611565b6001600160a01b03163b151590565b60006001600160e01b03198216637965db0b60e01b148061054e57506301ffc9a760e01b6001600160e01b031983161461054e565b6106f2813361156c565b610c5c8282610b7d565b6106115760008281526065602090815260408083206001600160a01b03851684529091529020805460ff19166001179055610c943390565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b610ce28282610b7d565b156106115760008281526065602090815260408083206001600160a01b0385168085529252808320805460ff1916905551339285917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45050565b600061061181610c48565b7f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd91435460ff1615610d8257610d7d836115d0565b61058d565b826001600160a01b03166352d1902d6040518163ffffffff1660e01b815260040160206040518083038186803b158015610dbb57600080fd5b505afa925050508015610deb575060408051601f3d908101601f19168201909252610de89181019061228e565b60015b610e4e5760405162461bcd60e51b815260206004820152602e60248201527f45524331393637557067726164653a206e657720696d706c656d656e7461746960448201526d6f6e206973206e6f74205555505360901b60648201526084016105fe565b6000805160206126bf8339815191528114610ebd5760405162461bcd60e51b815260206004820152602960248201527f45524331393637557067726164653a20756e737570706f727465642070726f786044820152681a58589b195555525160ba1b60648201526084016105fe565b5061058d83838361166c565b600061054e610ed6611691565b8360405161190160f01b6020820152602281018390526042810182905260009060620160405160208183030381529060405280519060200120905092915050565b6000610f238383611711565b9050610f5b604051806040016040528060148152602001737265636f7665726564207369676e65723a20257360601b81525082611735565b6040805180820190915260138152726578706563746564207369676e65723a20257360681b602082015261013154610f9c91906001600160a01b0316611735565b610131546001600160a01b03828116911614610ffa5760405162461bcd60e51b815260206004820152601a60248201527f5f7665726966793a20696e76616c6964207369676e617475726500000000000060448201526064016105fe565b6001600160a01b03811661058d5760405162461bcd60e51b815260206004820152601860248201527745434453413a20696e76616c6964207369676e617475726560401b60448201526064016105fe565b6101325434101561109e5760405162461bcd60e51b815260206004820152601960248201527f5f636c61696d3a20666565206973206e6f7420656e6f7567680000000000000060448201526064016105fe565b610130546001600160a01b03166110f75760405162461bcd60e51b815260206004820152601c60248201527f5f636c61696d3a2021666565436f6c6c6563746f72416464726573730000000060448201526064016105fe565b61012f546001600160a01b03166111485760405162461bcd60e51b81526020600482015260156024820152745f636c61696d3a202162616467654164647265737360581b60448201526064016105fe565b61013054604051602481018390526001600160a01b0384811660448301526111d292169060640160408051601f19818403018152918152602080830180516001600160e01b031663469e080560e11b1790528151808301909252601882527f5f636c61696d3a20636f6c6c6563742829206661696c6564000000000000000090820152349061177a565b5061012f546040516001600160a01b038481166024830152604482018490526001606483015260806084830152600060a483015261058d92169060c40160408051601f19818403018152918152602080830180516001600160e01b031663731133e960e01b1790528151808301909252601582527417d8db185a5b4e881b5a5b9d0a0a4819985a5b1959605a1b908201526118ab565b600054610100900460ff1661128f5760405162461bcd60e51b81526004016105fe9061256a565b61061182826118c2565b60006112a582846125fe565b9392505050565b60008251116112fd5760405162461bcd60e51b815260206004820152601f60248201527f5f6d6967726174653a206275726e426164676549647320697320656d7074790060448201526064016105fe565b61012f546001600160a01b03166113565760405162461bcd60e51b815260206004820152601760248201527f5f6d6967726174653a202162616467654164647265737300000000000000000060448201526064016105fe565b6000825167ffffffffffffffff81111561138057634e487b7160e01b600052604160045260246000fd5b6040519080825280602002602001820160405280156113a9578160200160208202803683370190505b5090506000805b84518110156113f85760018382815181106113db57634e487b7160e01b600052603260045260246000fd5b6020908102919091010152806113f081612677565b9150506113b0565b5061012f54604051611481916001600160a01b03169061142090889088908790602401612455565b60408051601f19818403018152918152602080830180516001600160e01b0316631ac8311560e21b1790528151808301909252601c82527f5f6d6967726174653a206275726e42617463682829206661696c656400000000908201526118ab565b508083146115285761012f546040516001600160a01b038781166024830152604482018690526001606483015260806084830152600060a483015261152692169060c40160408051601f19818403018152918152602080830180516001600160e01b031663731133e960e01b1790528151808301909252601782527f5f6d6967726174653a206d696e742829206661696c6564000000000000000000908201526118ab565b505b60008184146115515761154c60018651611542919061261d565b6101325490611299565b611560565b84516101325461156091611299565b9050610b758682611903565b6115768282610b7d565b6106115761158e816001600160a01b03166014611a1c565b611599836020611a1c565b6040516020016115aa9291906123e0565b60408051601f198184030181529082905262461bcd60e51b82526105fe91600401612495565b6001600160a01b0381163b61163d5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b60648201526084016105fe565b6000805160206126bf83398151915280546001600160a01b0319166001600160a01b0392909216919091179055565b61167583611bfe565b6000825111806116825750805b1561058d576107508383611c3e565b600061170c7f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f6116c060fb5490565b60fc546040805160208101859052908101839052606081018290524660808201523060a082015260009060c0016040516020818303038152906040528051906020012090509392505050565b905090565b60008060006117208585611d32565b9150915061172d81611d78565b509392505050565b610611828260405160240161174b9291906124a8565b60408051601f198184030181529190526020810180516001600160e01b031663319af33360e01b179052611f76565b6060824710156117db5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b60648201526084016105fe565b6001600160a01b0385163b6118325760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016105fe565b600080866001600160a01b0316858760405161184e91906123c4565b60006040518083038185875af1925050503d806000811461188b576040519150601f19603f3d011682016040523d82523d6000602084013e611890565b606091505b50915091506118a0828286611f97565b979650505050505050565b60606118ba848460008561177a565b949350505050565b600054610100900460ff166118e95760405162461bcd60e51b81526004016105fe9061256a565b81516020928301208151919092012060fb9190915560fc55565b804710156119535760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a20696e73756666696369656e742062616c616e636500000060448201526064016105fe565b6000826001600160a01b03168260405160006040518083038185875af1925050503d80600081146119a0576040519150601f19603f3d011682016040523d82523d6000602084013e6119a5565b606091505b505090508061058d5760405162461bcd60e51b815260206004820152603a60248201527f416464726573733a20756e61626c6520746f2073656e642076616c75652c207260448201527f6563697069656e74206d6179206861766520726576657274656400000000000060648201526084016105fe565b60606000611a2b8360026125fe565b611a369060026125e6565b67ffffffffffffffff811115611a5c57634e487b7160e01b600052604160045260246000fd5b6040519080825280601f01601f191660200182016040528015611a86576020820181803683370190505b509050600360fc1b81600081518110611aaf57634e487b7160e01b600052603260045260246000fd5b60200101906001600160f81b031916908160001a905350600f60fb1b81600181518110611aec57634e487b7160e01b600052603260045260246000fd5b60200101906001600160f81b031916908160001a9053506000611b108460026125fe565b611b1b9060016125e6565b90505b6001811115611baf576f181899199a1a9b1b9c1cb0b131b232b360811b85600f1660108110611b5d57634e487b7160e01b600052603260045260246000fd5b1a60f81b828281518110611b8157634e487b7160e01b600052603260045260246000fd5b60200101906001600160f81b031916908160001a90535060049490941c93611ba881612660565b9050611b1e565b5083156112a55760405162461bcd60e51b815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e7460448201526064016105fe565b611c07816115d0565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b60606001600160a01b0383163b611ca65760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b60648201526084016105fe565b600080846001600160a01b031684604051611cc191906123c4565b600060405180830381855af49150503d8060008114611cfc576040519150601f19603f3d011682016040523d82523d6000602084013e611d01565b606091505b5091509150611d2982826040518060600160405280602781526020016126df60279139611f97565b95945050505050565b600080825160411415611d695760208301516040840151606085015160001a611d5d87828585611fd0565b94509450505050611d71565b506000905060025b9250929050565b6000816004811115611d9a57634e487b7160e01b600052602160045260246000fd5b1415611da5576106f2565b6001816004811115611dc757634e487b7160e01b600052602160045260246000fd5b1415611e105760405162461bcd60e51b815260206004820152601860248201527745434453413a20696e76616c6964207369676e617475726560401b60448201526064016105fe565b6002816004811115611e3257634e487b7160e01b600052602160045260246000fd5b1415611e805760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e6774680060448201526064016105fe565b6003816004811115611ea257634e487b7160e01b600052602160045260246000fd5b1415611efb5760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b60648201526084016105fe565b6004816004811115611f1d57634e487b7160e01b600052602160045260246000fd5b14156106f25760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202776272076616c604482015261756560f01b60648201526084016105fe565b80516a636f6e736f6c652e6c6f67602083016000808483855afa5050505050565b60608315611fa65750816112a5565b825115611fb65782518084602001fd5b8160405162461bcd60e51b81526004016105fe9190612495565b6000807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a083111561200757506000905060036120b4565b8460ff16601b1415801561201f57508460ff16601c14155b1561203057506000905060046120b4565b6040805160008082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa158015612084573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b0381166120ad576000600192509250506120b4565b9150600090505b94509492505050565b80356001600160a01b038116811461055157600080fd5b600082601f8301126120e4578081fd5b813567ffffffffffffffff8111156120fe576120fe6126a8565b612111601f8201601f19166020016125b5565b818152846020838601011115612125578283fd5b816020850160208301379081016020019190915292915050565b600060208284031215612150578081fd5b6112a5826120bd565b6000806040838503121561216b578081fd5b612174836120bd565b9150602083013567ffffffffffffffff81111561218f578182fd5b61219b858286016120d4565b9150509250929050565b6000806000606084860312156121b9578081fd5b833567ffffffffffffffff808211156121d0578283fd5b818601915086601f8301126121e3578283fd5b81356020828211156121f7576121f76126a8565b8082026122058282016125b5565b8381528281019086840183880185018d101561221f578889fd5b8897505b85881015612241578035835260019790970196918401918401612223565b5098505050870135945050604086013591508082111561225f578283fd5b5061226c868287016120d4565b9150509250925092565b600060208284031215612287578081fd5b5035919050565b60006020828403121561229f578081fd5b5051919050565b600080604083850312156122b8578182fd5b823591506122c8602084016120bd565b90509250929050565b6000602082840312156122e2578081fd5b81356001600160e01b0319811681146112a5578182fd5b6000806040838503121561230b578182fd5b82359150602083013567ffffffffffffffff81111561218f578182fd5b6000815180845260208085019450808401835b838110156123575781518752958201959082019060010161233b565b509495945050505050565b6000815180845261237a816020860160208601612634565b601f01601f19169290920160200192915050565b815160009082906020808601845b838110156123b85781518552938201939082019060010161239c565b50929695505050505050565b600082516123d6818460208701612634565b9190910192915050565b60007f416363657373436f6e74726f6c3a206163636f756e742000000000000000000082528351612418816017850160208801612634565b7001034b99036b4b9b9b4b733903937b6329607d1b6017918401918201528351612449816028840160208801612634565b01602801949350505050565b6001600160a01b038416815260606020820181905260009061247990830185612328565b828103604084015261248b8185612328565b9695505050505050565b6000602082526112a56020830184612362565b6000604082526124bb6040830185612362565b905060018060a01b03831660208301529392505050565b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b19195b1959d85d1958d85b1b60a21b606082015260800190565b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b6163746976652070726f787960a01b606082015260800190565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b604051601f8201601f1916810167ffffffffffffffff811182821017156125de576125de6126a8565b604052919050565b600082198211156125f9576125f9612692565b500190565b600081600019048311821515161561261857612618612692565b500290565b60008282101561262f5761262f612692565b500390565b60005b8381101561264f578181015183820152602001612637565b838111156107505750506000910152565b60008161266f5761266f612692565b506000190190565b600060001982141561268b5761268b612692565b5060010190565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052604160045260246000fdfe360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a2646970667358221220f0508ba0448529a1e7dc1efaed4ea9d4ad9ef44543c59bc4db4c378c23ec6f5f64736f6c63430008020033