60806040526008805460ff60e01b19167c01000000000000000000000000000000000000000000000000000000001790553480156200003d57600080fd5b506040518060400160405280600f81526020017f4e61756768747920506f6f6c204c5000000000000000000000000000000000008152506040518060400160405280600381526020017f4e4c5000000000000000000000000000000000000000000000000000000000008152508160039080519060200190620000c2929190620000f3565b508051620000d8906004906020840190620000f3565b5050600580546001600160a01b0319163317905550620001ef565b828054620001019062000199565b90600052602060002090601f01602090048101928262000125576000855562000170565b82601f106200014057805160ff191683800117855562000170565b8280016001018555821562000170579182015b828111156200017057825182559160200191906001019062000153565b506200017e92915062000182565b5090565b5b808211156200017e576000815560010162000183565b600181811c90821680620001ae57607f821691505b60208210811415620001e9577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b611f8780620001ff6000396000f3fe608060405234801561001057600080fd5b50600436106101585760003560e01c80636d9a640a116100c3578063ba9a7a561161007c578063ba9a7a5614610311578063c45a01551461031a578063d21220a71461032d578063dd62ed3e14610340578063f952f01a14610292578063fff6cae91461037957600080fd5b80636d9a640a1461027f57806370a082311461029257806389afcb44146102bb57806395d89b41146102e3578063a457c2d7146102eb578063a9059cbb146102fe57600080fd5b806323b872dd1161011557806323b872dd1461021a57806329dcb0cf1461022d578063313ce5671461023657806339509351146102455780636a5e2650146102585780636a6278421461026c57600080fd5b806306fdde031461015d5780630902f1ac1461017b578063095ea7b3146101a55780630dfe1681146101c85780631794bb3c146101f357806318160ddd14610208575b600080fd5b610165610381565b6040516101729190611ccb565b60405180910390f35b600854604080516001600160701b038084168252600160701b909304909216602083015201610172565b6101b86101b3366004611d1a565b610413565b6040519015158152602001610172565b6006546101db906001600160a01b031681565b6040516001600160a01b039091168152602001610172565b610206610201366004611d44565b610429565b005b6002545b604051908152602001610172565b6101b8610228366004611d44565b6104d5565b61020c60095481565b60405160128152602001610172565b6101b8610253366004611d1a565b610581565b6008546101b890600160e01b900460ff1681565b61020c61027a366004611d80565b6105bd565b61020661028d366004611d9b565b61084b565b61020c6102a0366004611d80565b6001600160a01b031660009081526020819052604090205490565b6102ce6102c9366004611d80565b610d4c565b60408051928352602083019190915201610172565b6101656110cd565b6101b86102f9366004611d1a565b6110dc565b6101b861030c366004611d1a565b611175565b61020c6103e881565b6005546101db906001600160a01b031681565b6007546101db906001600160a01b031681565b61020c61034e366004611dd0565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b610206611182565b60606003805461039090611e03565b80601f01602080910402602001604051908101604052809291908181526020018280546103bc90611e03565b80156104095780601f106103de57610100808354040283529160200191610409565b820191906000526020600020905b8154815290600101906020018083116103ec57829003601f168201915b5050505050905090565b60006104203384846112cf565b50600192915050565b6005546001600160a01b031633146104a05760405162461bcd60e51b815260206004820152602f60248201527f63616e206f6e6c7920626520696e697469616c697a656420627920746865206660448201526e1858dd1bdc9e4818dbdb9d1c9858dd608a1b60648201526084015b60405180910390fd5b600680546001600160a01b039485166001600160a01b0319918216179091556007805493909416921691909117909155600955565b60006104e28484846113f3565b6001600160a01b0384166000908152600160209081526040808320338452909152902054828110156105675760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b6064820152608401610497565b61057485338584036112cf565b60019150505b9392505050565b3360008181526001602090815260408083206001600160a01b038716845290915281205490916104209185906105b8908690611e54565b6112cf565b60008060006105e06008546001600160701b0380821692600160701b9092041690565b6006546040516370a0823160e01b81523060048201529294509092506000916001600160a01b03909116906370a082319060240160206040518083038186803b15801561062c57600080fd5b505afa158015610640573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106649190611e6c565b6007546040516370a0823160e01b81523060048201529192506000916001600160a01b03909116906370a082319060240160206040518083038186803b1580156106ad57600080fd5b505afa1580156106c1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106e59190611e6c565b905060006106fc6001600160701b03861684611e85565b905060006107136001600160701b03861684611e85565b9050600061072060025490565b905080610759576103e861073c6107378486611e9c565b6115c3565b6107469190611e85565b9750610754306103e861173e565b6107a0565b61079d6001600160701b0388166107708386611e9c565b61077a9190611ed1565b6001600160701b03881661078e8486611e9c565b6107989190611ed1565b61174c565b97505b600088116107f05760405162461bcd60e51b815260206004820152601d60248201527f696e73756666696369656e74206c6971756964697479206d696e7465640000006044820152606401610497565b6107fa898961173e565b6108048585611762565b604080518481526020810184905233917f4c209b5fc8ad50758f13e2e1088ba56a560dff690a1c6fef26394f4c03821c4f910160405180910390a250505050505050919050565b60095442111561089d5760405162461bcd60e51b815260206004820152601b60248201527f43616e206e6f74207377617020616674657220646561646c696e6500000000006044820152606401610497565b600854600160e01b900460ff1615156001146108cb5760405162461bcd60e51b815260040161049790611ef3565b6008805460ff60e01b19169055821515806108e65750600082115b6109325760405162461bcd60e51b815260206004820152601b60248201527f4f757470757420616d6f756e74206e65656420746f206265203e3000000000006044820152606401610497565b6000806109536008546001600160701b0380821692600160701b9092041690565b6001600160701b031691506001600160701b03169150818510801561097757508084105b6109ba5760405162461bcd60e51b81526020600482015260146024820152734e6f7420656e6f756768206c697175696469747960601b6044820152606401610497565b60065460075460009182916001600160a01b039182169190811690871682148015906109f85750806001600160a01b0316876001600160a01b031614155b610a315760405162461bcd60e51b815260206004820152600a602482015269494e56414c49445f544f60b01b6044820152606401610497565b8815610a4b57610a4b6001600160a01b038316888b611834565b8715610a6557610a656001600160a01b038216888a611834565b6040516370a0823160e01b81523060048201526001600160a01b038316906370a082319060240160206040518083038186803b158015610aa457600080fd5b505afa158015610ab8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610adc9190611e6c565b6040516370a0823160e01b81523060048201529094506001600160a01b038216906370a082319060240160206040518083038186803b158015610b1e57600080fd5b505afa158015610b32573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b569190611e6c565b9250505060008785610b689190611e85565b8311610b75576000610b89565b610b7f8886611e85565b610b899084611e85565b90506000610b978886611e85565b8311610ba4576000610bb8565b610bae8886611e85565b610bb89084611e85565b90506000821180610bc95750600081115b610c155760405162461bcd60e51b815260206004820152601960248201527f494e53554646494349454e545f494e5055545f414d4f554e54000000000000006044820152606401610497565b6000610c22836014611e9c565b610c2e866103e8611e9c565b610c389190611e85565b90506000610c47836014611e9c565b610c53866103e8611e9c565b610c5d9190611e85565b9050610c698789611e9c565b610c7590612710611e9c565b610c7f8284611e9c565b1015610ccd5760405162461bcd60e51b815260206004820181905260248201527f5468652072656d61696e696e6720782a79206973206c657373207468616e204b6044820152606401610497565b5050610cd98484611762565b60408051838152602081018390529081018a9052606081018990526001600160a01b0388169033907fd78ad95fa46c994b6551d0da85fc275fe613ce37657fb8d5e3d130840159d8229060800160405180910390a350506008805460ff60e01b1916600160e01b17905550505050505050565b6000806008601c9054906101000a900460ff1615156001151514610d825760405162461bcd60e51b815260040161049790611ef3565b6008805460ff60e01b191690556006546040516370a0823160e01b81523060048201526000916001600160a01b0316906370a082319060240160206040518083038186803b158015610dd357600080fd5b505afa158015610de7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e0b9190611e6c565b6007546040516370a0823160e01b81523060048201529192506000916001600160a01b03909116906370a082319060240160206040518083038186803b158015610e5457600080fd5b505afa158015610e68573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e8c9190611e6c565b306000908152602081905260409020546002549192509080610eae8584611e9c565b610eb89190611ed1565b955080610ec58484611e9c565b610ecf9190611ed1565b9450600086118015610ee15750600085115b610f2d5760405162461bcd60e51b815260206004820152601d60248201527f496e73756666696369656e74206c6971756964697479206275726e65640000006044820152606401610497565b610f37308361188b565b600654610f4e906001600160a01b03168888611834565b600754610f65906001600160a01b03168887611834565b6006546040516370a0823160e01b81523060048201526001600160a01b03909116906370a082319060240160206040518083038186803b158015610fa857600080fd5b505afa158015610fbc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fe09190611e6c565b6007546040516370a0823160e01b81523060048201529195506001600160a01b0316906370a082319060240160206040518083038186803b15801561102457600080fd5b505afa158015611038573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061105c9190611e6c565b92506110688484611762565b60408051878152602081018790526001600160a01b0389169133917fdccd412f0b1252819cb1fd330b93224ca42612892bb3f4f789976e6d81936496910160405180910390a350506008805460ff60e01b1916600160e01b1790555091939092509050565b60606004805461039090611e03565b3360009081526001602090815260408083206001600160a01b03861684529091528120548281101561115e5760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b6064820152608401610497565b61116b33858584036112cf565b5060019392505050565b60006104203384846113f3565b600854600160e01b900460ff1615156001146111b05760405162461bcd60e51b815260040161049790611ef3565b6008805460ff60e01b191690556006546040516370a0823160e01b81523060048201526112ba916001600160a01b0316906370a082319060240160206040518083038186803b15801561120257600080fd5b505afa158015611216573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061123a9190611e6c565b6007546040516370a0823160e01b81523060048201526001600160a01b03909116906370a082319060240160206040518083038186803b15801561127d57600080fd5b505afa158015611291573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112b59190611e6c565b611762565b6008805460ff60e01b1916600160e01b179055565b6001600160a01b0383166113315760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610497565b6001600160a01b0382166113925760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610497565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b0383166114575760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610497565b6001600160a01b0382166114b95760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610497565b6001600160a01b038316600090815260208190526040902054818110156115315760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608401610497565b6001600160a01b03808516600090815260208190526040808220858503905591851681529081208054849290611568908490611e54565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516115b491815260200190565b60405180910390a35b50505050565b6000816115d257506000919050565b50600181600160801b81106115ec5760409190911b9060801c5b6801000000000000000081106116075760209190911b9060401c5b640100000000811061161e5760109190911b9060201c5b6201000081106116335760089190911b9060101c5b61010081106116475760049190911b9060081c5b6010811061165a5760029190911b9060041c5b6008811061166a57600182901b91505b600182848161167b5761167b611ebb565b048301901c9150600182848161169357611693611ebb565b048301901c915060018284816116ab576116ab611ebb565b048301901c915060018284816116c3576116c3611ebb565b048301901c915060018284816116db576116db611ebb565b048301901c915060018284816116f3576116f3611ebb565b048301901c9150600182848161170b5761170b611ebb565b048301901c9150600082848161172357611723611ebb565b049050808310156117345782611736565b805b949350505050565b6117488282611895565b5050565b600081831061175b578161057a565b5090919050565b6001600160701b038083118015906117835750806001600160701b03168211155b6117c25760405162461bcd60e51b815260206004820152601060248201526f55696e74313132204f564552464c4f5760801b6044820152606401610497565b600880546001600160701b03848116600160701b9081026001600160e01b0319909316878316179290921792839055604080518483168152929093041660208201527f32dc813d3f262a05478ad1165d5701040e411d9a6e1684c8c2da1c8e6f3b8022910160405180910390a1505050565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b179052611886908490611974565b505050565b6117488282611a46565b6001600160a01b0382166118eb5760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f2061646472657373006044820152606401610497565b80600260008282546118fd9190611e54565b90915550506001600160a01b0382166000908152602081905260408120805483929061192a908490611e54565b90915550506040518181526001600160a01b038316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b60006119c9826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b0316611b949092919063ffffffff16565b80519091501561188657808060200190518101906119e79190611f13565b6118865760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b6064820152608401610497565b6001600160a01b038216611aa65760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b6064820152608401610497565b6001600160a01b03821660009081526020819052604090205481811015611b1a5760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e604482015261636560f01b6064820152608401610497565b6001600160a01b0383166000908152602081905260408120838303905560028054849290611b49908490611e85565b90915550506040518281526000906001600160a01b038516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a3505050565b6060611736848460008585843b611bed5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610497565b600080866001600160a01b03168587604051611c099190611f35565b60006040518083038185875af1925050503d8060008114611c46576040519150601f19603f3d011682016040523d82523d6000602084013e611c4b565b606091505b5091509150611c5b828286611c66565b979650505050505050565b60608315611c7557508161057a565b825115611c855782518084602001fd5b8160405162461bcd60e51b81526004016104979190611ccb565b60005b83811015611cba578181015183820152602001611ca2565b838111156115bd5750506000910152565b6020815260008251806020840152611cea816040850160208701611c9f565b601f01601f19169190910160400192915050565b80356001600160a01b0381168114611d1557600080fd5b919050565b60008060408385031215611d2d57600080fd5b611d3683611cfe565b946020939093013593505050565b600080600060608486031215611d5957600080fd5b611d6284611cfe565b9250611d7060208501611cfe565b9150604084013590509250925092565b600060208284031215611d9257600080fd5b61057a82611cfe565b600080600060608486031215611db057600080fd5b8335925060208401359150611dc760408501611cfe565b90509250925092565b60008060408385031215611de357600080fd5b611dec83611cfe565b9150611dfa60208401611cfe565b90509250929050565b600181811c90821680611e1757607f821691505b60208210811415611e3857634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b60008219821115611e6757611e67611e3e565b500190565b600060208284031215611e7e57600080fd5b5051919050565b600082821015611e9757611e97611e3e565b500390565b6000816000190483118215151615611eb657611eb6611e3e565b500290565b634e487b7160e01b600052601260045260246000fd5b600082611eee57634e487b7160e01b600052601260045260246000fd5b500490565b6020808252600690820152651313d0d2d15160d21b604082015260600190565b600060208284031215611f2557600080fd5b8151801515811461057a57600080fd5b60008251611f47818460208701611c9f565b919091019291505056fea264697066735822122004c749ef2d6a6c632914b7ef014227a9038de97b64a9d30873854e9d7ef6b51b64736f6c63430008090033