//
0x608060405260fa6005556105dc60065561138860075561138860085560326009556064600a553480156200003257600080fd5b506000620000486001600160e01b03620000f716565b600080546001600160a01b0319166001600160a01b0383169081178255604051929350917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a3506000805460ff60a01b19168155338152600e60205260409020805460ff19166001179055620000d16301ffc9a760e01b6001600160e01b03620000fb16565b620000ec630271189760e51b6001600160e01b03620000fb16565b600160115562000180565b3390565b6001600160e01b031980821614156200015b576040805162461bcd60e51b815260206004820152601c60248201527f4552433136353a20696e76616c696420696e7465726661636520696400000000604482015290519081900360640190fd5b6001600160e01b0319166000908152601060205260409020805460ff19166001179055565b615abe80620001906000396000f3fe6080604052600436106103345760003560e01c8063715018a6116101ab578063b3de7a9d116100f7578063d2f4e2ca11610095578063e0683dcb1161006f578063e0683dcb14610e90578063f23a6e6114610ecb578063f2fde38b14610fa1578063f7b188a514610fd457610334565b8063d2f4e2ca14610e1b578063d5991b8f14610e66578063d60ebf4e14610e7b57610334565b8063cd38463f116100d1578063cd38463f14610dc7578063ceddd2b914610ddc578063d0a106ba14610df1578063d234428714610e0657610334565b8063b3de7a9d14610b90578063bc197c8114610bc6578063c159ba6414610d9457610334565b80638f6d637e116101645780639703ef351161013e5780639703ef3514610a925780639efc1b1c14610abc578063a0f5cb3f14610ad1578063a85c38ef14610b0457610334565b80638f6d637e146109fa5780638fe8fb0514610a0f57806396c89cab14610a4a57610334565b8063715018a6146109585780637dad19db1461096d5780638456cb59146109825780638b034136146109975780638bf5651a146109ac5780638da5cb5b146109e557610334565b80634423c5f1116102855780635a917500116102235780635e110da9116101fd5780635e110da9146108b15780636b745326146108ec5780636d70f7ae1461092557806370e103fc1461048757610334565b80635a917500146108265780635c975abb146108695780635da09b881461087e57610334565b806350c7e0031161025f57806350c7e00314610766578063514fcac71461079757806359a87bc1146107c157806359b46087146107f357610334565b80634423c5f1146106c257806347ef7f641461073c5780634c013cee1461075157610334565b80630fcd1cb4116102f25780631e9e4204116102cc5780631e9e4204146105d75780632834303a1461063257806328b76e371461067a5780634278f7e3146106ad57610334565b80630fcd1cb414610487578063150b7a02146104c25780631d834409146105b057610334565b80620fa9fb1461033957806301ffc9a71461037657806302e9d5e4146103be57806306ad5a47146103ee5780630ac9e577146104215780630edef38a14610454575b600080fd5b34801561034557600080fd5b506103746004803603604081101561035c57600080fd5b506001600160a01b0381358116916020013516610fe9565b005b34801561038257600080fd5b506103aa6004803603602081101561039957600080fd5b50356001600160e01b0319166111e3565b604080519115158252519081900360200190f35b3480156103ca57600080fd5b506103aa600480360360408110156103e157600080fd5b5080359060200135611202565b3480156103fa57600080fd5b506103aa6004803603602081101561041157600080fd5b50356001600160a01b03166115a9565b34801561042d57600080fd5b506103aa6004803603602081101561044457600080fd5b50356001600160a01b0316611632565b34801561046057600080fd5b506103aa6004803603602081101561047757600080fd5b50356001600160a01b03166116b9565b34801561049357600080fd5b50610374600480360360408110156104aa57600080fd5b506001600160a01b03813581169160200135166116ce565b3480156104ce57600080fd5b50610593600480360360808110156104e557600080fd5b6001600160a01b03823581169260208101359091169160408201359190810190608081016060820135600160201b81111561051f57600080fd5b82018360208201111561053157600080fd5b803590602001918460018302840111600160201b8311171561055257600080fd5b91908080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092955061179e945050505050565b604080516001600160e01b03199092168252519081900360200190f35b3480156105bc57600080fd5b506105c56117ae565b60408051918252519081900360200190f35b3480156105e357600080fd5b506105c5600480360360e08110156105fa57600080fd5b506001600160a01b03813581169160208101358216916040820135169060608101359060808101359060a08101359060c001356117b4565b6105c5600480360360c081101561064857600080fd5b506001600160a01b03813581169160208101359091169060408101359060608101359060808101359060a00135612137565b34801561068657600080fd5b506103aa6004803603602081101561069d57600080fd5b50356001600160a01b03166123f6565b3480156106b957600080fd5b506105c561240b565b3480156106ce57600080fd5b506106ec600480360360208110156106e557600080fd5b5035612412565b604080516001600160a01b03998a168152978916602089015295909716868601526060860193909352608085019190915260a084015260c083015291151560e08201529051908190036101000190f35b34801561074857600080fd5b506105c5612466565b34801561075d57600080fd5b506105c561246c565b34801561077257600080fd5b5061077b612472565b604080516001600160a01b039092168252519081900360200190f35b3480156107a357600080fd5b50610374600480360360208110156107ba57600080fd5b5035612481565b6103aa600480360360608110156107d757600080fd5b50803590602081013590604001356001600160a01b031661288e565b3480156107ff57600080fd5b506103aa6004803603602081101561081657600080fd5b50356001600160a01b0316612c36565b34801561083257600080fd5b506103aa6004803603606081101561084957600080fd5b506001600160a01b03813516906020810135151590604001351515612cbf565b34801561087557600080fd5b506103aa612d6b565b34801561088a57600080fd5b506103aa600480360360208110156108a157600080fd5b50356001600160a01b0316612d7b565b3480156108bd57600080fd5b50610374600480360360408110156108d457600080fd5b506001600160a01b0381351690602001351515612d90565b3480156108f857600080fd5b506105c56004803603604081101561090f57600080fd5b506001600160a01b038135169060200135612e1d565b34801561093157600080fd5b506103aa6004803603602081101561094857600080fd5b50356001600160a01b0316612e3a565b34801561096457600080fd5b50610374612e4f565b34801561097957600080fd5b5061077b612efb565b34801561098e57600080fd5b50610374612f0a565b3480156109a357600080fd5b506105c5612f76565b3480156109b857600080fd5b506105c5600480360360408110156109cf57600080fd5b506001600160a01b038135169060200135612f7c565b3480156109f157600080fd5b5061077b612f99565b348015610a0657600080fd5b506105c5612fa8565b348015610a1b57600080fd5b5061037460048036036040811015610a3257600080fd5b506001600160a01b0381351690602001351515612fae565b348015610a5657600080fd5b50610374600480360360c0811015610a6d57600080fd5b5080359060208101359060408101359060608101359060808101359060a0013561303b565b348015610a9e57600080fd5b5061037460048036036020811015610ab557600080fd5b50356130ab565b348015610ac857600080fd5b5061077b613331565b348015610add57600080fd5b506103aa60048036036020811015610af457600080fd5b50356001600160a01b0316613340565b348015610b1057600080fd5b50610b2e60048036036020811015610b2757600080fd5b50356133c9565b604080516001600160a01b039b8c168152998b1660208b0152978a1689890152959098166060880152608087019390935260a086019190915260c085015260e08401529215156101008301529115156101208201529051908190036101400190f35b348015610b9c57600080fd5b5061037460048036036060811015610bb357600080fd5b5080359060208101359060400135613430565b348015610bd257600080fd5b50610593600480360360a0811015610be957600080fd5b6001600160a01b038235811692602081013590911691810190606081016040820135600160201b811115610c1c57600080fd5b820183602082011115610c2e57600080fd5b803590602001918460208302840111600160201b83111715610c4f57600080fd5b9190808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152509295949360208101935035915050600160201b811115610c9e57600080fd5b820183602082011115610cb057600080fd5b803590602001918460208302840111600160201b83111715610cd157600080fd5b9190808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152509295949360208101935035915050600160201b811115610d2057600080fd5b820183602082011115610d3257600080fd5b803590602001918460018302840111600160201b83111715610d5357600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550613613945050505050565b348015610da057600080fd5b506103aa60048036036020811015610db757600080fd5b50356001600160a01b0316613624565b348015610dd357600080fd5b506105c5613639565b348015610de857600080fd5b5061077b61363f565b348015610dfd57600080fd5b506105c561364e565b348015610e1257600080fd5b506105c5613654565b348015610e2757600080fd5b50610374600480360360a0811015610e3e57600080fd5b50803590602081013590604081013590606081013590608001356001600160a01b0316613660565b348015610e7257600080fd5b506105c5613af8565b348015610e8757600080fd5b506105c5613afe565b348015610e9c57600080fd5b506103aa60048036036040811015610eb357600080fd5b506001600160a01b0381351690602001351515613b04565b348015610ed757600080fd5b50610593600480360360a0811015610eee57600080fd5b6001600160a01b03823581169260208101359091169160408201359160608101359181019060a081016080820135600160201b811115610f2d57600080fd5b820183602082011115610f3f57600080fd5b803590602001918460018302840111600160201b83111715610f6057600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550613c93945050505050565b348015610fad57600080fd5b5061037460048036036020811015610fc457600080fd5b50356001600160a01b0316613ca4565b348015610fe057600080fd5b50610374613da6565b610ff1613e10565b6001600160a01b0316611002612f99565b6001600160a01b03161461104b576040805162461bcd60e51b815260206004820181905260248201526000805160206159e6833981519152604482015290519081900360640190fd5b611053612d6b565b61109b576040805162461bcd60e51b815260206004820152601460248201527314185d5cd8589b194e881b9bdd081c185d5cd95960621b604482015290519081900360640190fd5b60006001600160a01b0382166110e9576040516001600160a01b038416904780156108fc02916000818181858888f193505050501580156110e0573d6000803e3d6000fd5b504790506111de565b604080516370a0823160e01b815230600482015290516001600160a01b038416916370a08231916024808301926020929190829003018186803b15801561112f57600080fd5b505afa158015611143573d6000803e3d6000fd5b505050506040513d602081101561115957600080fd5b50516040805163a9059cbb60e01b81526001600160a01b0386811660048301526024820184905291519293509084169163a9059cbb916044808201926020929091908290030181600087803b1580156111b157600080fd5b505af11580156111c5573d6000803e3d6000fd5b505050506040513d60208110156111db57600080fd5b50505b505050565b6001600160e01b03191660009081526010602052604090205460ff1690565b600061120c612d6b565b15611251576040805162461bcd60e51b815260206004820152601060248201526f14185d5cd8589b194e881c185d5cd95960821b604482015290519081900360640190fd5b611259615865565b50600083815260166020908152604080832081516101008101835281546001600160a01b03908116825260018301548116828601526002830154908116828501526003830154606080840182905260048501546080850152600585015460a0850152600685015460c085015260079094015460ff16151560e0840152845191841b6001600160601b0319168287015260348201523390921b6054830152825180830360480181526068909201835281519184019190912080855260159093529220546113236158c7565b5060008181526014602090815260409182902082516101408101845281546001600160a01b03908116808352600184015482169483019490945260028301548116948201949094526003820154909316606084015260048101546080840152600581015460a0840152600681015460c0840152600781015460e08401526008015460ff808216151561010080860191909152909104161515610120830152331480156113d157508061010001515b61140c5760405162461bcd60e51b81526004018080602001828103825260238152602001806159a26023913960400191505060405180910390fd5b858160a001511015801561142457508360a001518611155b801561143157508360e001515b61146c5760405162461bcd60e51b8152600401808060200182810382526021815260200180615a066021913960400191505060405180910390fd5b6080840151600090611484908863ffffffff613e1416565b905060006114b36127106114a76005546127100185613e1490919063ffffffff16565b9063ffffffff613e6d16565b60015460208801519192506001600160a01b03918216911614156114ff576114fc6114ef6127106114a7600a5486613e1490919063ffffffff16565b829063ffffffff613ed416565b90505b60208601516001600160a01b0316156115365785516020870151611536916001600160a01b0390911690308463ffffffff613f3116565b61156486600001518760200151868b8a608001518761155433613f91565b8d5161155f90613f91565b614013565b5060405189907f39b82a7cab2f4a4e3eeaf375e5c52bb595c49b26a687549d444664688ea94ee990600090a261159a8989614d5b565b96505050505050505b92915050565b60006115b3613e10565b6001600160a01b03166115c4612f99565b6001600160a01b03161461160d576040805162461bcd60e51b815260206004820181905260248201526000805160206159e6833981519152604482015290519081900360640190fd5b50600280546001600160a01b0383166001600160a01b03199091161790556001919050565b600061163c613e10565b6001600160a01b031661164d612f99565b6001600160a01b031614611696576040805162461bcd60e51b815260206004820181905260248201526000805160206159e6833981519152604482015290519081900360640190fd5b50600180546001600160a01b0383166001600160a01b0319909116178155919050565b600b6020526000908152604090205460ff1681565b6116d6613e10565b6001600160a01b03166116e7612f99565b6001600160a01b031614611730576040805162461bcd60e51b815260206004820181905260248201526000805160206159e6833981519152604482015290519081900360640190fd5b6040805163a22cb46560e01b81526001600160a01b0383811660048301526001602483015291519184169163a22cb4659160448082019260009290919082900301818387803b15801561178257600080fd5b505af1158015611796573d6000803e3d6000fd5b505050505050565b630a85bd0160e11b949350505050565b60125481565b60006117be612d6b565b15611803576040805162461bcd60e51b815260206004820152601060248201526f14185d5cd8589b194e881c185d5cd95960821b604482015290519081900360640190fd5b6000841161184b576040805162461bcd60e51b815260206004820152601060248201526f496e76616c69642d7175616e7469747960801b604482015290519081900360640190fd5b604080516301ffc9a760e01b81526380ac58cd60e01b600482015290516000916001600160a01b038b16916301ffc9a791602480820192602092909190829003018186803b15801561189c57600080fd5b505afa1580156118b0573d6000803e3d6000fd5b505050506040513d60208110156118c657600080fd5b5051905060008115611a2f57336001600160a01b03168a6001600160a01b0316636352211e896040518263ffffffff1660e01b81526004018082815260200191505060206040518083038186803b15801561192057600080fd5b505afa158015611934573d6000803e3d6000fd5b505050506040513d602081101561194a57600080fd5b50516001600160a01b031614611961576000611964565b60015b60ff169050858110156119be576040805162461bcd60e51b815260206004820152601a60248201527f496e73756666696369656e742d746f6b656e2d62616c616e6365000000000000604482015290519081900360640190fd5b60408051632142170760e11b81523360048201523060248201526044810189905290516001600160a01b038c16916342842e0e91606480830192600092919082900301818387803b158015611a1257600080fd5b505af1158015611a26573d6000803e3d6000fd5b50505050611b8a565b60408051627eeac760e11b81523360048201526024810189905290516001600160a01b038c169162fdd58e916044808301926020929190829003018186803b158015611a7a57600080fd5b505afa158015611a8e573d6000803e3d6000fd5b505050506040513d6020811015611aa457600080fd5b5051905085811015611afd576040805162461bcd60e51b815260206004820152601a60248201527f496e73756666696369656e742d746f6b656e2d62616c616e6365000000000000604482015290519081900360640190fd5b60408051637921219560e11b8152336004820152306024820152604481018990526064810188905260a06084820152600260a482015261060f60f31b60c482015290516001600160a01b038c169163f242432a9160e480830192600092919082900301818387803b158015611b7157600080fd5b505af1158015611b85573d6000803e3d6000fd5b505050505b6001600160a01b0388166000908152600b602052604090205460ff16611bf7576040805162461bcd60e51b815260206004820152601f60248201527f5061796d656e742d6d6574686f642d646f65732d6e6f742d737570706f727400604482015290519081900360640190fd5b611bff6158c7565b600161010082015233815260c0810186905260a081018790526001600160a01b038a166000908152600f602052604090205460ff1615611c50576001600160a01b038a16606082015260e081018590525b608081018890528215156101208201526001600160a01b03808c166020808401829052918b166040808501919091526000918252600c909252205460ff168015611d1a5750336001600160a01b03168b6001600160a01b031663d48e638a8a6040518263ffffffff1660e01b81526004018082815260200191505060206040518083038186803b158015611ce357600080fd5b505afa158015611cf7573d6000803e3d6000fd5b505050506040513d6020811015611d0d57600080fd5b50516001600160a01b0316145b8015611d4757506001600160a01b038b1660009081526018602090815260408083208b8452909152902054155b8015611dcc575060176000336001600160a01b03166001600160a01b0316815260200190815260200160002060008c8a60405160200180836001600160a01b03166001600160a01b031660601b815260140182815260200192505050604051602081830303815290604052805190602001208152602001908152602001600020546000145b15611df8576001600160a01b038b1660009081526018602090815260408083208b845290915290208290555b6001600160a01b038b166000908152600d602052604090205460ff168015611e9857508a6001600160a01b031663d48e638a896040518263ffffffff1660e01b81526004018082815260200191505060206040518083038186803b158015611e5f57600080fd5b505afa158015611e73573d6000803e3d6000fd5b505050506040513d6020811015611e8957600080fd5b50516001600160a01b03163314155b8015611f1d575060176000336001600160a01b03166001600160a01b0316815260200190815260200160002060008c8a60405160200180836001600160a01b03166001600160a01b031660601b815260140182815260200192505050604051602081830303815290604052805190602001208152602001908152602001600020546000145b15611fa1578160196000336001600160a01b03166001600160a01b0316815260200190815260200160002060008d8b60405160200180836001600160a01b03166001600160a01b031660601b815260140182815260200192505050604051602081830303815290604052805190602001208152602001908152602001600020819055505b60128054600090815260146020908152604091829020845181546001600160a01b03199081166001600160a01b03928316178355928601516001808401805486169284169290921790915593860151600283018054851691831691909117905560608601516003830180549094169116179091556080840151600482015560a0840151600582015560c0840151600682015560e08401516007820155610100808501516008909201805461012087015160ff199091169315159390931761ff0019169215159091029190911790559054945061207e908590614e9f565b601255604080516001600160a01b03808e168252602082018990528b1681830152905188918a9187917fa3c7269751aac44df3e7658a3f7bb744b1ea9765bb933d9226e6dd0eba6cb6f9919081900360600190a45050604080516001600160601b031960608c811b91909116602080840191909152603483018a90523390911b60548301528251604881840301815260689092018352815191810191909120600090815260159091522082905550979650505050505050565b6000612141612d6b565b15612186576040805162461bcd60e51b815260206004820152601060248201526f14185d5cd8589b194e881c185d5cd95960821b604482015290519081900360640190fd5b600084116121ce576040805162461bcd60e51b815260206004820152601060248201526f496e76616c69642d7175616e7469747960801b604482015290519081900360640190fd5b6001600160a01b0386166000908152600b602052604090205460ff1661223b576040805162461bcd60e51b815260206004820152601f60248201527f5061796d656e742d6d6574686f642d646f65732d6e6f742d737570706f727400604482015290519081900360640190fd5b612243615865565b3381526080810184905260a08101859052606081018690526001600160a01b038816604082015234156122d157612280858563ffffffff613e1416565b3410156122c5576040805162461bcd60e51b815260206004820152600e60248201526d125b9d985b1a590b585b5bdd5b9d60921b604482015290519081900360640190fd5b600060208201526122e1565b6001600160a01b03871660208201525b600160e0820181815260c0830185815260138054600090815260166020908152604091829020875181546001600160a01b03199081166001600160a01b039283161783559289015182890180548516918316919091179055928801516002820180549093169316929092179055606086015160038201556080860151600482015560a086015160058201559151600683015591516007909101805460ff1916911515919091179055549250612397908390614e9f565b601355604080516001600160a01b03808b1682526020820187905289168183015290518691889185917f5c16514d15965733767103439dd14e5cddc88675f8ce7521c5ce86ea90852f5e919081900360600190a4509695505050505050565b600c6020526000908152604090205460ff1681565b620f424081565b601660205260009081526040902080546001820154600283015460038401546004850154600586015460068701546007909701546001600160a01b0396871697958716969094169492939192909160ff1688565b60095481565b60065481565b6003546001600160a01b031681565b612489612d6b565b156124ce576040805162461bcd60e51b815260206004820152601060248201526f14185d5cd8589b194e881c185d5cd95960821b604482015290519081900360640190fd5b6124d66158c7565b5060008181526014602090815260409182902082516101408101845281546001600160a01b03908116808352600184015482169483019490945260028301548116948201949094526003820154909316606084015260048101546080840152600581015460a0840152600681015460c0840152600781015460e08401526008015460ff8082161515610100808601919091529091041615156101208301523314801561258457508061010001515b6125bf5760405162461bcd60e51b81526004018080602001828103825260238152602001806159a26023913960400191505060405180910390fd5b8061012001511561264b5760208101518151608083015160408051632142170760e11b81523060048201526001600160a01b03938416602482015260448101929092525191909216916342842e0e91606480830192600092919082900301818387803b15801561262e57600080fd5b505af1158015612642573d6000803e3d6000fd5b50505050612797565b80602001516001600160a01b031663f242432a30836000015184608001518560a001516040518080615a516038913960380190506040518091039020604051602001808281526020019150506040516020818303038152906040526040518663ffffffff1660e01b815260040180866001600160a01b03166001600160a01b03168152602001856001600160a01b03166001600160a01b0316815260200184815260200183815260200180602001828103825283818151815260200191508051906020019080838360005b8381101561272e578181015183820152602001612716565b50505050905090810190601f16801561275b5780820380516001836020036101000a031916815260200191505b509650505050505050600060405180830381600087803b15801561277e57600080fd5b505af1158015612792573d6000803e3d6000fd5b505050505b600060a08201818152610100808401838152858452601460209081526040808620875181546001600160a01b03199081166001600160a01b039283161783559389015160018301805486169183169190911790558289015160028301805486169183169190911790556060890151600383018054909516911617909255608087015160048301559351600582015560c0860151600682015560e0860151600782015590516008909101805461012087015160ff19919091169215159290921761ff0019169115159092021790555183917f61b9399f2f0f32ca39ce8d7be32caed5ec22fe07a6daba3a467ed479ec60658291a25050565b6000612898612d6b565b156128dd576040805162461bcd60e51b815260206004820152601060248201526f14185d5cd8589b194e881c185d5cd95960821b604482015290519081900360640190fd5b6128e56158c7565b5060008481526014602090815260409182902082516101408101845281546001600160a01b03908116808352600184015482169483019490945260028301548116948201949094526003820154909316606084015260048101546080840152600581015460a0840152600681015460c0840152600781015460e08401526008015460ff8082161515610100808601919091529091041615156101208301526129c7576040805162461bcd60e51b815260206004820152601060248201526f125b9d985b1a590b5bdc99195c8b5a5960821b604482015290519081900360640190fd5b6001600160a01b0383166000908152600b602052604090205460ff16612a34576040805162461bcd60e51b815260206004820152601f60248201527f5061796d656e742d6d6574686f642d646f65732d6e6f742d737570706f727400604482015290519081900360640190fd5b8061010001518015612a4a5750838160a0015110155b612a92576040805162461bcd60e51b81526020600482015260146024820152734e6f742d617661696c61626c652d746f2d62757960601b604482015290519081900360640190fd5b60c0810151600090612aaa908663ffffffff613e1416565b9050600082604001516001600160a01b0316856001600160a01b03161415612af257612aeb6127106114a76005546127100185613e1490919063ffffffff16565b9050612b20565b612afc8583614ef9565b9150612b1d6127106114a76005546127100185613e1490919063ffffffff16565b90505b6001546001600160a01b038681169116148015612b3f57506000600a54115b15612b6557612b626114ef6127106114a7600a5486613e1490919063ffffffff16565b90505b6001600160a01b038516158015612b7c5750600034115b15612b935780341015612b8e57600080fd5b612bae565b612bae6001600160a01b03861633308463ffffffff613f3116565b60408051888152602081018890526001600160a01b038716818301526060810183905290517f27f0e57684cd818b3b06246bbc63cf3366959e8e4dcdbd46aa5b2778f25e73b09181900360800190a1612c2933868989612c128a8960c00151614ef9565b87612c208a60000151613f91565b61155f33613f91565b93505050505b9392505050565b6000612c40613e10565b6001600160a01b0316612c51612f99565b6001600160a01b031614612c9a576040805162461bcd60e51b815260206004820181905260248201526000805160206159e6833981519152604482015290519081900360640190fd5b50600480546001600160a01b0383166001600160a01b03199091161790556001919050565b336000908152600e602052604081205460ff16612d13576040805162461bcd60e51b815260206004820152600d60248201526c27b7363c96b7b832b930ba37b960991b604482015290519081900360640190fd5b6001600160a01b0384166000908152600c60205260409020805460ff19168415151790558115612d61576001600160a01b0384166000908152600d60205260409020805460ff191660011790555b5060019392505050565b600054600160a01b900460ff1690565b600f6020526000908152604090205460ff1681565b612d98613e10565b6001600160a01b0316612da9612f99565b6001600160a01b031614612df2576040805162461bcd60e51b815260206004820181905260248201526000805160206159e6833981519152604482015290519081900360640190fd5b6001600160a01b03919091166000908152600e60205260409020805460ff1916911515919091179055565b601960209081526000928352604080842090915290825290205481565b600e6020526000908152604090205460ff1681565b612e57613e10565b6001600160a01b0316612e68612f99565b6001600160a01b031614612eb1576040805162461bcd60e51b815260206004820181905260248201526000805160206159e6833981519152604482015290519081900360640190fd5b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6002546001600160a01b031681565b612f12613e10565b6001600160a01b0316612f23612f99565b6001600160a01b031614612f6c576040805162461bcd60e51b815260206004820181905260248201526000805160206159e6833981519152604482015290519081900360640190fd5b612f74614f51565b565b60135481565b601860209081526000928352604080842090915290825290205481565b6000546001600160a01b031690565b61271081565b612fb6613e10565b6001600160a01b0316612fc7612f99565b6001600160a01b031614613010576040805162461bcd60e51b815260206004820181905260248201526000805160206159e6833981519152604482015290519081900360640190fd5b6001600160a01b03919091166000908152600f60205260409020805460ff1916911515919091179055565b613043613e10565b6001600160a01b0316613054612f99565b6001600160a01b03161461309d576040805162461bcd60e51b815260206004820181905260248201526000805160206159e6833981519152604482015290519081900360640190fd5b611796868686868686614ff7565b6130b3612d6b565b156130f8576040805162461bcd60e51b815260206004820152601060248201526f14185d5cd8589b194e881c185d5cd95960821b604482015290519081900360640190fd5b60026011541415613150576040805162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604482015290519081900360640190fd5b600260115561315d615865565b5060008181526016602090815260409182902082516101008101845281546001600160a01b039081168083526001840154821694830194909452600283015416938101939093526003810154606084015260048101546080840152600581015460a0840152600681015460c08401526007015460ff16151560e0830152331461321e576040805162461bcd60e51b815260206004820152600e60248201526d24b73b30b634b216b134b23232b960911b604482015290519081900360640190fd5b60208101516001600160a01b031661326157600061324d82608001518360a00151613e1490919063ffffffff16565b905061325f338263ffffffff61501416565b505b600060e0820181815260a08301828152848352601660209081526040808520865181546001600160a01b03199081166001600160a01b039283161783559388015160018301805486169183169190911790558288015160028301805490951691161790925560608601516003830155608086015160048301559151600582015560c0850151600682015591516007909201805460ff1916921515929092179091555183917fc1546e394b1975212fe013e7e6995653585f44e568c407d1157483f7d4b9458191a250506001601155565b6001546001600160a01b031681565b600061334a613e10565b6001600160a01b031661335b612f99565b6001600160a01b0316146133a4576040805162461bcd60e51b815260206004820181905260248201526000805160206159e6833981519152604482015290519081900360640190fd5b50600380546001600160a01b0383166001600160a01b03199091161790556001919050565b6014602052600090815260409020805460018201546002830154600384015460048501546005860154600687015460078801546008909801546001600160a01b03978816989688169795861696959094169492939192909160ff808216916101009004168a565b613438612d6b565b1561347d576040805162461bcd60e51b815260206004820152601060248201526f14185d5cd8589b194e881c185d5cd95960821b604482015290519081900360640190fd5b613485615865565b5060008381526016602090815260409182902082516101008101845281546001600160a01b039081168083526001840154821694830194909452600283015416938101939093526003810154606084015260048101546080840152600581015460a0840152600681015460c08401526007015460ff16151560e08301523314613546576040805162461bcd60e51b815260206004820152600e60248201526d24b73b30b634b216b134b23232b960911b604482015290519081900360640190fd5b60a08101838152608082018381526000868152601660209081526040808320865181546001600160a01b03199081166001600160a01b039283161783559388015160018301805486169183169190911790558288015160028301805490951691161790925560608601516003830155925160048201559251600584015560c0840151600684015560e08401516007909301805460ff1916931515939093179092555185917fb16ba0a2ed46bbba0676798be43c6d757a6a5d4fb13a251ee5c0075bf726498991a250505050565b63bc197c8160e01b95945050505050565b600d6020526000908152604090205460ff1681565b60075481565b6004546001600160a01b031681565b60085481565b670de0b6b3a764000081565b613668612d6b565b156136ad576040805162461bcd60e51b815260206004820152601060248201526f14185d5cd8589b194e881c185d5cd95960821b604482015290519081900360640190fd5b6136b56158c7565b5060008581526014602090815260409182902082516101408101845281546001600160a01b03908116808352600184015482169483019490945260028301548116948201949094526003820154909316606084015260048101546080840152600581015460a0840152600681015460c0840152600781015460e08401526008015460ff8082161515610100808601919091529091041615156101208301523314801561376357508061010001515b61379e5760405162461bcd60e51b81526004018080602001828103825260238152602001806159a26023913960400191505060405180910390fd5b8060a00151851180156137b45750806101200151155b156138845780602001516001600160a01b031663f242432a333084608001516137ea8660a001518b613ed490919063ffffffff16565b604080516001600160e01b031960e088901b1681526001600160a01b0395861660048201529390941660248401526044830191909152606482015260a06084820152600260a482015261060f60f31b60c4820152905160e480830192600092919082900301818387803b15801561386057600080fd5b505af1158015613874573d6000803e3d6000fd5b5050505060a081018590526139f0565b8060a001518510156139f05780602001516001600160a01b031663f242432a303384608001516138c18a8760a00151613ed490919063ffffffff16565b604051806038615a51823960380190506040518091039020604051602001808281526020019150506040516020818303038152906040526040518663ffffffff1660e01b815260040180866001600160a01b03166001600160a01b03168152602001856001600160a01b03166001600160a01b0316815260200184815260200183815260200180602001828103825283818151815260200191508051906020019080838360005b83811015613980578181015183820152602001613968565b50505050905090810190601f1680156139ad5780820380516001836020036101000a031916815260200191505b509650505050505050600060405180830381600087803b1580156139d057600080fd5b505af11580156139e4573d6000803e3d6000fd5b5050505060a081018590525b60c081018481526000878152601460209081526040808320855181546001600160a01b03199081166001600160a01b03928316178355938701516001830180548616918316919091179055828701516002830180548616918316919091179055606087018051600384018054909616908316179094556080870151600483015560a087015160058301559451600682015560e086018051600783015561010080880151600890930180546101208a015160ff199091169415159490941761ff0019169315159091029290921790915593861690915291859052905187917fb8b459bc0688c37baf5f735d17f1711684bc14ab7db116f88bc18bf409b9309a91a2505050505050565b600a5481565b60055481565b6000613b0e613e10565b6001600160a01b0316613b1f612f99565b6001600160a01b031614613b68576040805162461bcd60e51b815260206004820181905260248201526000805160206159e6833981519152604482015290519081900360640190fd5b6001600160a01b0383166000818152600b60205260409020805460ff191684151517905515613c8a576040805163095ea7b360e01b8152336004820152600019602482015290516001600160a01b0385169163095ea7b39160448083019260209291908290030181600087803b158015613be157600080fd5b505af1158015613bf5573d6000803e3d6000fd5b505050506040513d6020811015613c0b57600080fd5b50506040805163095ea7b360e01b8152306004820152600019602482015290516001600160a01b0385169163095ea7b39160448083019260209291908290030181600087803b158015613c5d57600080fd5b505af1158015613c71573d6000803e3d6000fd5b505050506040513d6020811015613c8757600080fd5b50505b50600192915050565b63f23a6e6160e01b95945050505050565b613cac613e10565b6001600160a01b0316613cbd612f99565b6001600160a01b031614613d06576040805162461bcd60e51b815260206004820181905260248201526000805160206159e6833981519152604482015290519081900360640190fd5b6001600160a01b038116613d4b5760405162461bcd60e51b815260040180806020018281038252602681526020018061591c6026913960400191505060405180910390fd5b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b613dae613e10565b6001600160a01b0316613dbf612f99565b6001600160a01b031614613e08576040805162461bcd60e51b815260206004820181905260248201526000805160206159e6833981519152604482015290519081900360640190fd5b612f746150f9565b3390565b600082613e23575060006115a3565b82820282848281613e3057fe5b0414612c2f5760405162461bcd60e51b81526004018080602001828103825260218152602001806159c56021913960400191505060405180910390fd5b6000808211613ec3576040805162461bcd60e51b815260206004820152601a60248201527f536166654d6174683a206469766973696f6e206279207a65726f000000000000604482015290519081900360640190fd5b818381613ecc57fe5b049392505050565b600082821115613f2b576040805162461bcd60e51b815260206004820152601e60248201527f536166654d6174683a207375627472616374696f6e206f766572666c6f770000604482015290519081900360640190fd5b50900390565b604080516001600160a01b0380861660248301528416604482015260648082018490528251808303909101815260849091019091526020810180516001600160e01b03166323b872dd60e01b179052613f8b90859061517f565b50505050565b60025460408051633b0f0f2f60e01b81526001600160a01b038481166004830152915160009384931691633b0f0f2f916024808301926020929190829003018186803b158015613fe057600080fd5b505afa158015613ff4573d6000803e3d6000fd5b505050506040513d602081101561400a57600080fd5b50519392505050565b600061401d6158c7565b5060008781526014602090815260409182902082516101408101845281546001600160a01b0390811682526001830154811693820193909352600282015483169381019390935260038101548216606084015260048101546080840152600581015460a0840152600681015460c0840152600781015460e08401526008015460ff80821615156101008086019190915290910416151561012083015285908416156141345760006140f860026127100a6114a7600754612710036140ec6005548c613e1490919063ffffffff16565b9063ffffffff613e1416565b90506141058b8683615230565b60095415614132576141328b8d61412d6127106114a76009548d613e1490919063ffffffff16565b615230565b505b60608201516001600160a01b0316156141905761416d8a836060015161412d6127106114a78760e001518c613e1490919063ffffffff16565b61418d6114ef6127106114a78560e001518a613e1490919063ffffffff16565b90505b6020808301516001600160a01b03166000908152600c909152604090205460ff1615614c8857600082602001516001600160a01b031663d48e638a84608001516040518263ffffffff1660e01b81526004018082815260200191505060206040518083038186803b15801561420457600080fd5b505afa158015614218573d6000803e3d6000fd5b505050506040513d602081101561422e57600080fd5b50516020848101516001600160a01b0316600090815260188252604080822060808801518352909252205490915015801590614276575082516001600160a01b038281169116145b1561464a576001600160a01b038616156144af576020808401516001600160a01b0316600090815260188252604080822060808701518352909252908120548a1161437a576142e360026127100a6114a7600754612710036140ec6006548d613e1490919063ffffffff16565b90506143106143036127106114a76006548c613e1490919063ffffffff16565b849063ffffffff613ed416565b6020808601516001600160a01b0316600090815260188252604080822060808901518352909252205490935061434c908b63ffffffff613ed416565b6020808601516001600160a01b0316600090815260188252604080822060808901518352909252205561449e565b6006546020808601516001600160a01b03166000908152601882526040808220608089015183529092529081205490916143be916140ec908d63ffffffff613e1416565b90506143e26143d58261271063ffffffff613e6d16565b859063ffffffff613ed416565b935061440660026127100a6114a76007546127100384613e1490919063ffffffff16565b6020808701516001600160a01b0316600090815260188252604080822060808a0151835290925220546005549193508c03915061444d906140ec838d63ffffffff613e1416565b90506144646143d58261271063ffffffff613e6d16565b935061448860026127100a6114a76007546127100384613e1490919063ffffffff16565b905061449a828263ffffffff614e9f16565b9150505b6144a98c8883615230565b50614636565b6020808401516001600160a01b031660009081526018825260408082206080870151835290925220548911614573576145096144fc6127106114a76006548b613e1490919063ffffffff16565b839063ffffffff613ed416565b6020808501516001600160a01b03166000908152601882526040808220608088015183529092522054909250614545908a63ffffffff613ed416565b6020808501516001600160a01b03166000908152601882526040808220608088015183529092522055614636565b6006546020808501516001600160a01b03166000908152601882526040808220608088015183529092529081205490916145bf91612710916114a7916140ec908e63ffffffff613e1416565b90506145d1838263ffffffff613ed416565b6020808601516001600160a01b031660009081526018825260408082206080890151835290925220546005549194508b03915061462090612710906114a7906140ec858e63ffffffff613e1416565b9050614632838263ffffffff613ed416565b9250505b6146458b846000015184615230565b614c82565b6020808401516001600160a01b03166000908152600d909152604090205460ff16801561468d5750806001600160a01b031683600001516001600160a01b031614155b80156146fa575082516001600160a01b03166000908152601960209081526040808320828701516080880151835160609290921b6001600160601b031916828601526034808301919091528351808303909101815260549091018352805190840120845290915290205415155b15614a6a5782516001600160a01b03166000908152601960209081526040808320828701516080880151835160609290921b6001600160601b0319168286015260348083019190915283518083039091018152605490910183528051908401208452909152902054898110614834576147898c8361412d6127106114a76008548e613e1490919063ffffffff16565b6147ab6143036127106114a7600854612710038c613e1490919063ffffffff16565b92506147bc8c856000015185615230565b6147cc818b63ffffffff613ed416565b84516001600160a01b031660009081526019602090815260408083208289015160808a0151835160609290921b6001600160601b0319168286015260348083019190915283518083039091018152605490910183528051908401208452909152902055614a64565b60006148556127106114a76008546140ec8e87613e1490919063ffffffff16565b9050614867848263ffffffff613ed416565b93506148798b8363ffffffff613ed416565b9150600460009054906101000a90046001600160a01b03166001600160a01b0316634623afa186602001518f8860800151868f601760008d600001516001600160a01b03166001600160a01b0316815260200190815260200160002060008d602001518e6080015160405160200180836001600160a01b03166001600160a01b031660601b815260140182815260200192505050604051602081830303815290604052805190602001208152602001908152602001600020546040518763ffffffff1660e01b815260040180876001600160a01b03166001600160a01b03168152602001866001600160a01b03166001600160a01b031681526020018581526020018481526020018381526020018281526020019650505050505050602060405180830381600087803b1580156149af57600080fd5b505af11580156149c3573d6000803e3d6000fd5b505050506040513d60208110156149d957600080fd5b5051016149e78d8483615230565b84516149ff908e9061412d878563ffffffff613ed416565b5083516001600160a01b03166000908152601960209081526040808320828801516080890151835160609290921b6001600160601b03191682860152603480830191909152835180830390910181526054909101835280519084012084529091528120555b50614c82565b614a886144fc6127106114a76005548b613e1490919063ffffffff16565b91506001600160a01b03861615614ac657614ac68b8761412d60026127100a6114a7600754612710036140ec6005548f613e1490919063ffffffff16565b806001600160a01b031683600001516001600160a01b03161415614af3576146458b846000015184615230565b6000600460009054906101000a90046001600160a01b03166001600160a01b0316634623afa185602001518e87608001518e8e601760008c600001516001600160a01b03166001600160a01b0316815260200190815260200160002060008c602001518d6080015160405160200180836001600160a01b03166001600160a01b031660601b815260140182815260200192505050604051602081830303815290604052805190602001208152602001908152602001600020546040518763ffffffff1660e01b815260040180876001600160a01b03166001600160a01b03168152602001866001600160a01b03166001600160a01b031681526020018581526020018481526020018381526020018281526020019650505050505050602060405180830381600087803b158015614c2957600080fd5b505af1158015614c3d573d6000803e3d6000fd5b505050506040513d6020811015614c5357600080fd5b505190508015614c6857614c688c8383615230565b8351614c80908d9061412d868563ffffffff613ed416565b505b50614cf3565b614ca66114ef6127106114a76005548a613e1490919063ffffffff16565b90506001600160a01b03851615614ce457614ce48a8661412d60026127100a6114a7600754612710036140ec6005548e613e1490919063ffffffff16565b614cf38a836000015183615230565b614d4c8b8b8b8b8b8760200151886080015160405160200180836001600160a01b03166001600160a01b031660601b815260140182815260200192505050604051602081830303815290604052805190602001206152c3565b9b9a5050505050505050505050565b6000614d65615865565b5060008381526016602090815260409182902082516101008101845281546001600160a01b03908116825260018301548116938201939093526002820154909216928201929092526003820154606082015260048201546080820152600582015460a08201819052600683015460c083015260079092015460ff16151560e082015290614df8908463ffffffff613ed416565b60a08201908152600094855260166020908152604095869020835181546001600160a01b03199081166001600160a01b0392831617835592850151600180840180548616928416929092179091559785015160028301805490941691161790915560608301516003820155608083015160048201559051600582015560c0820151600682015560e0909101516007909101805460ff19169115159190911790555090919050565b600082820183811015612c2f576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b600354604080516366ad7b2b60e01b81526001600160a01b03858116600483015260248201859052915160009392909216916366ad7b2b91604480820192602092909190829003018186803b158015613fe057600080fd5b614f59612d6b565b15614f9e576040805162461bcd60e51b815260206004820152601060248201526f14185d5cd8589b194e881c185d5cd95960821b604482015290519081900360640190fd5b6000805460ff60a01b1916600160a01b1790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258614fda613e10565b604080516001600160a01b039092168252519081900360200190a1565b600595909555600693909355600791909155600855600955600a55565b80471015615069576040805162461bcd60e51b815260206004820152601d60248201527f416464726573733a20696e73756666696369656e742062616c616e6365000000604482015290519081900360640190fd5b6040516000906001600160a01b0384169083908381818185875af1925050503d80600081146150b4576040519150601f19603f3d011682016040523d82523d6000602084013e6150b9565b606091505b50509050806111de5760405162461bcd60e51b815260040180806020018281038252603a815260200180615942603a913960400191505060405180910390fd5b615101612d6b565b615149576040805162461bcd60e51b815260206004820152601460248201527314185d5cd8589b194e881b9bdd081c185d5cd95960621b604482015290519081900360640190fd5b6000805460ff60a01b191690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa614fda613e10565b60606151d4826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b031661559e9092919063ffffffff16565b8051909150156111de578080602001905160208110156151f357600080fd5b50516111de5760405162461bcd60e51b815260040180806020018281038252602a815260200180615a27602a913960400191505060405180910390fd5b6001600160a01b03821661527d576040805162461bcd60e51b815260206004820152600f60248201526e496e76616c69642d6164647265737360881b604482015290519081900360640190fd5b6001600160a01b0383166152a9576152a46001600160a01b0383168263ffffffff61501416565b6111de565b6111de6001600160a01b038416838363ffffffff6155b516565b60006152cd6158c7565b5060008581526014602090815260409182902082516101408101845281546001600160a01b039081168252600183015481169382019390935260028201548316938101939093526003810154909116606083015260048101546080830152600581015460a0830152600681015460c0830152600781015460e08301526008015460ff808216151561010080850191909152909104161580156101208301526153ef576020810151608082015160408051632142170760e11b81523060048201526001600160a01b038c811660248301526044820193909352905191909216916342842e0e91606480830192600092919082900301818387803b1580156153d257600080fd5b505af11580156153e6573d6000803e3d6000fd5b50505050615533565b80602001516001600160a01b031663f242432a308a8460800151896040518080615a516038913960380190506040518091039020604051602001808281526020019150506040516020818303038152906040526040518663ffffffff1660e01b815260040180866001600160a01b03166001600160a01b03168152602001856001600160a01b03166001600160a01b0316815260200184815260200183815260200180602001828103825283818151815260200191508051906020019080838360005b838110156154ca5781810151838201526020016154b2565b50505050905090810190601f1680156154f75780820380516001836020036101000a031916815260200191505b509650505050505050600060405180830381600087803b15801561551a57600080fd5b505af115801561552e573d6000803e3d6000fd5b505050505b60a0810151615548908663ffffffff613ed416565b60a0820181905260008781526014602052604090206005015561556b8785615607565b6001600160a01b038916600090815260176020908152604080832087845290915290205550600190509695505050505050565b60606155ad848460008561565f565b949350505050565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b1790526111de90849061517f565b6003546040805163069c62cb60e11b81526001600160a01b0385811660048301526024820185905291516000939290921691630d38c59691604480820192602092909190829003018186803b158015613fe057600080fd5b6060824710156156a05760405162461bcd60e51b815260040180806020018281038252602681526020018061597c6026913960400191505060405180910390fd5b6156a9856157bb565b6156fa576040805162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015290519081900360640190fd5b60006060866001600160a01b031685876040518082805190602001908083835b602083106157395780518252601f19909201916020918201910161571a565b6001836020036101000a03801982511681845116808217855250505050505090500191505060006040518083038185875af1925050503d806000811461579b576040519150601f19603f3d011682016040523d82523d6000602084013e6157a0565b606091505b50915091506157b08282866157c1565b979650505050505050565b3b151590565b606083156157d0575081612c2f565b8251156157e05782518084602001fd5b8160405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561582a578181015183820152602001615812565b50505050905090810190601f1680156158575780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b60405180610100016040528060006001600160a01b0316815260200160006001600160a01b0316815260200160006001600160a01b03168152602001600081526020016000815260200160008152602001600081526020016000151581525090565b6040805161014081018252600080825260208201819052918101829052606081018290526080810182905260a0810182905260c0810182905260e0810182905261010081018290526101208101919091529056fe4f776e61626c653a206e6577206f776e657220697320746865207a65726f2061646472657373416464726573733a20756e61626c6520746f2073656e642076616c75652c20726563697069656e74206d61792068617665207265766572746564416464726573733a20696e73756666696369656e742062616c616e636520666f722063616c6c4f6f70732157726f6e672d6f726465722d6f776e65722d6f722d63616e63656c6c6564536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f774f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572496e76616c69642d7175616e746974792d6f722d6269642d63616e63656c6c65645361666545524332303a204552433230206f7065726174696f6e20646964206e6f7420737563636565646f6e45524331313535526563656976656428616464726573732c616464726573732c75696e743235362c75696e743235362c627974657329a2646970667358221220597832b8efc3dbb8a0a9873e78a586bb5d7ad303894c26432cb0ed6420f760fa64736f6c63430006080033