//
0x608060405260048054600160a01b60ff02191690553480156200002157600080fd5b5060405160408062002465833981018060405260408110156200004357600080fd5b50805160209182015160008054336001600160a01b03199182168117909255600280548216909217909155600a805482166001600160a01b038086169190911790915543600855600680549092169083161790559091606490620000ea90620000de9061708090620000ca908590670de0b6b3a764000090620000f3811b620015ee17901c565b6200017860201b620016571790919060201c565b620001c260201b60201c565b50505062000535565b6000821515620001065750600062000172565b8282028284828115156200011657fe5b04146200016f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526021815260200180620024446021913960400191505060405180910390fd5b90505b92915050565b60006200016f83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250620001ef60201b60201c565b6002546001600160a01b03163314620001da57600080fd5b620001ea620002b460201b60201c565b600955565b6000818315156200029b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b838110156200025f57818101518382015260200162000245565b50505050905090810190601f1680156200028d5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5060008385811515620002aa57fe5b0495945050505050565b60085443111580620002c65750600954155b15620002d257620003fc565b600654604080517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015290516000926001600160a01b0316916370a08231916024808301926020929190829003018186803b1580156200033757600080fd5b505afa1580156200034c573d6000803e3d6000fd5b505050506040513d60208110156200036357600080fd5b505190508015156200037a575043600855620003fc565b6000620003b36009546200039f60085443620003fe60201b620016991790919060201c565b620000f360201b620015ee1790919060201c565b436008559050620003f6620003df83620000ca8464e8d4a51000620000f3602090811b620015ee17901c565b6007546200044860201b6200196f1790919060201c565b60075550505b565b60006200016f83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250620004bd60201b60201c565b6000828201838110156200016f57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b600081848411156200052d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382528381815181526020019150805190602001908083836000838110156200025f57818101518382015260200162000245565b505050900390565b611eff80620005456000396000f3fe608060405234801561001057600080fd5b50600436106101fb5760003560e01c80637b9417c81161011a578063b047fb50116100ad578063db2e21bc1161007c578063db2e21bc14610607578063df8de3e71461060f578063e2ec6ec314610635578063f2fde38b146106d8578063f40f0f52146106fe576101fb565b8063b047fb50146105bd578063b0b2e688146105c5578063b6b55f25146105cd578063bb872b4a146105ea576101fb565b80638da5cb5b116100e95780638da5cb5b146104c25780638f4ffcb1146104ca5780639b19251a1461058f578063a9f8d181146105b5576101fb565b80637b9417c8146104725780638456cb59146104985780638ae39cac146104a05780638d949d4b146104ba576101fb565b80632e1a7d4d116101925780635e35359e116101615780635e35359e146103f15780636af04a5714610427578063715879881461042f57806374de4ec414610455576101fb565b80632e1a7d4d1461039e5780633f4ba83a146103bb5780634e0a3379146103c35780635c975abb146103e9576101fb565b806324953eaa116101ce57806324953eaa1461027357806327d7874c1461032a578063286dd3f5146103525780632ba73c1514610378576101fb565b80630519ce79146102005780630a0f8168146102245780631959a0021461022c5780632004ffd91461026b575b600080fd5b610208610724565b604080516001600160a01b039092168252519081900360200190f35b610208610733565b6102526004803603602081101561024257600080fd5b50356001600160a01b0316610742565b6040805192835260208301919091528051918290030190f35b61020861075b565b6103166004803603602081101561028957600080fd5b8101906020810181356401000000008111156102a457600080fd5b8201836020820111156102b657600080fd5b803590602001918460208302840111640100000000831117156102d857600080fd5b91908080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525092955061076a945050505050565b604080519115158252519081900360200190f35b6103506004803603602081101561034057600080fd5b50356001600160a01b03166107c6565b005b6103166004803603602081101561036857600080fd5b50356001600160a01b0316610814565b6103506004803603602081101561038e57600080fd5b50356001600160a01b03166108ab565b610350600480360360208110156103b457600080fd5b50356108f9565b610350610a6c565b610350600480360360208110156103d957600080fd5b50356001600160a01b0316610aad565b610316610afb565b6103506004803603606081101561040757600080fd5b506001600160a01b03813581169160208101359091169060400135610b0b565b610208610bbb565b6103506004803603602081101561044557600080fd5b50356001600160a01b0316610bca565b6103506004803603602081101561046b57600080fd5b5035610c4d565b6103166004803603602081101561048857600080fd5b50356001600160a01b0316610d6b565b610350610e06565b6104a8610e78565b60408051918252519081900360200190f35b610350610e7e565b610208610f73565b610350600480360360808110156104e057600080fd5b6001600160a01b03823581169260208101359260408201359092169181019060808101606082013564010000000081111561051a57600080fd5b82018360208201111561052c57600080fd5b8035906020019184600183028401116401000000008311171561054e57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550610f82945050505050565b610316600480360360208110156105a557600080fd5b50356001600160a01b0316611187565b6104a861119c565b6102086111a2565b6104a86111b1565b610350600480360360208110156105e357600080fd5b50356111b7565b6103506004803603602081101561060057600080fd5b50356111c1565b6103506111e5565b6103506004803603602081101561062557600080fd5b50356001600160a01b031661125a565b6103166004803603602081101561064b57600080fd5b81019060208101813564010000000081111561066657600080fd5b82018360208201111561067857600080fd5b8035906020019184602083028401116401000000008311171561069a57600080fd5b9190808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152509295506113f5945050505050565b610350600480360360208110156106ee57600080fd5b50356001600160a01b031661144b565b6104a86004803603602081101561071457600080fd5b50356001600160a01b03166114d2565b6003546001600160a01b031681565b6002546001600160a01b031681565b600b602052600090815260409020805460019091015482565b600a546001600160a01b031681565b600080546001600160a01b0316331461078257600080fd5b60005b82518110156107c0576107ae838281518110151561079f57fe5b90602001906020020151610814565b156107b857600191505b600101610785565b50919050565b6002546001600160a01b031633146107dd57600080fd5b6001600160a01b03811615156107f257600080fd5b600280546001600160a01b0319166001600160a01b0392909216919091179055565b600080546001600160a01b0316331461082c57600080fd5b6001600160a01b03821660009081526001602052604090205460ff16156108a6576001600160a01b038216600081815260016020908152604091829020805460ff19169055815192835290517ff1abf01a1043b7c244d128e8595cf0c1d10743b022b03a02dffd8ca3bf729f5a9281900390910190a15060015b919050565b6002546001600160a01b031633146108c257600080fd5b6001600160a01b03811615156108d757600080fd5b600480546001600160a01b0319166001600160a01b0392909216919091179055565b600454600160a01b900460ff161561091057600080fd5b336000908152600b6020526040902080548211156109785760408051600160e51b62461bcd02815260206004820152601260248201527f77697468647261773a206e6f7420676f6f640000000000000000000000000000604482015290519081900360640190fd5b610980610e7e565b60006109c482600101546109b864e8d4a510006109ac60075487600001546115ee90919063ffffffff16565b9063ffffffff61165716565b9063ffffffff61169916565b905080156109d6576109d633826116db565b8215610a0d5781546109ee908463ffffffff61169916565b8255600654610a0d906001600160a01b0316338563ffffffff61191a16565b6007548254610a2c9164e8d4a51000916109ac9163ffffffff6115ee16565b600183015560408051848152905133917f884edad9ce6fa2440d8a54cc123490eb96d2768479d49ff9c7366125a9424364919081900360200190a2505050565b6002546001600160a01b03163314610a8357600080fd5b600454600160a01b900460ff161515610a9b57600080fd5b60048054600160a01b60ff0219169055565b6002546001600160a01b03163314610ac457600080fd5b6001600160a01b0381161515610ad957600080fd5b600380546001600160a01b0319166001600160a01b0392909216919091179055565b600454600160a01b900460ff1681565b6002546001600160a01b03163314610b2257600080fd5b826001600160a01b031663a9059cbb83836040518363ffffffff1660e01b815260040180836001600160a01b03166001600160a01b0316815260200182815260200192505050602060405180830381600087803b158015610b8257600080fd5b505af1158015610b96573d6000803e3d6000fd5b505050506040513d6020811015610bac57600080fd5b50511515610bb657fe5b505050565b6005546001600160a01b031681565b6002546001600160a01b03163314610be157600080fd5b600454600160a01b900460ff161515610bf957600080fd5b600580546001600160a01b0383166001600160a01b0319909116811790915560408051918252517f450db8da6efbe9c22f2347f7c2021231df1fc58d3ae9a2fa75d39fa4461993059181900360200190a150565b3360009081526001602052604090205460ff161515610c6b57600080fd5b60065460408051600160e01b6370a0823102815230600482015290516000926001600160a01b0316916370a08231916024808301926020929190829003018186803b158015610cb957600080fd5b505afa158015610ccd573d6000803e3d6000fd5b505050506040513d6020811015610ce357600080fd5b50519050801580610cf2575081155b15610cfd5750610d68565b604080518381526000602082015281517f46296264cd106b25aaa6bd852f4cf76bbd7d70550bbe6352bc3a47e35c6f1b2f929181900390910190a1610d63610d54826109ac8564e8d4a5100063ffffffff6115ee16565b6007549063ffffffff61196f16565b600755505b50565b600080546001600160a01b03163314610d8357600080fd5b6001600160a01b03821660009081526001602052604090205460ff1615156108a6576001600160a01b038216600081815260016020818152604092839020805460ff1916909217909155815192835290517fd1bba68c128cc3f427e5831b3c6f99f480b6efa6b9e80c757768f6124158cc3f9281900390910190a1506001919050565b6004546001600160a01b0316331480610e2957506002546001600160a01b031633145b80610e3e57506003546001600160a01b031633145b1515610e4957600080fd5b600454600160a01b900460ff1615610e6057600080fd5b60048054600160a01b60ff021916600160a01b179055565b60095481565b60085443111580610e8f5750600954155b15610e9957610f71565b60065460408051600160e01b6370a0823102815230600482015290516000926001600160a01b0316916370a08231916024808301926020929190829003018186803b158015610ee757600080fd5b505afa158015610efb573d6000803e3d6000fd5b505050506040513d6020811015610f1157600080fd5b50519050801515610f26575043600855610f71565b6000610f4f600954610f436008544361169990919063ffffffff16565b9063ffffffff6115ee16565b436008559050610d63610d54836109ac8464e8d4a5100063ffffffff6115ee16565b565b6000546001600160a01b031681565b821515610fd95760408051600160e51b62461bcd02815260206004820152600d60248201527f617070726f76616c207a65726f00000000000000000000000000000000000000604482015290519081900360640190fd5b6000602082015190507ff4e8e3b91c45a0cf07471af1330c35cdcf9f9209e3736aa4b50bf28d624af4a5858585858560405180866001600160a01b03166001600160a01b03168152602001858152602001846001600160a01b03166001600160a01b0316815260200180602001838152602001828103825284818151815260200191508051906020019080838360005b83811015611081578181015183820152602001611069565b50505050905090810190601f1680156110ae5780820380516001836020036101000a031916815260200191505b50965050505050505060405180910390a1600381146111175760408051600160e51b62461bcd02815260206004820152600d60248201527f756e6b6e6f7720616374696f6e00000000000000000000000000000000000000604482015290519081900360640190fd5b8060031415611180576006546001600160a01b0384811691161461116f57604051600160e51b62461bcd028152600401808060200182810382526033815260200180611e566033913960400191505060405180910390fd5b604082015161117e86826119cc565b505b5050505050565b60016020526000908152604090205460ff1681565b60085481565b6004546001600160a01b031681565b60075481565b610d6833826119cc565b6002546001600160a01b031633146111d857600080fd5b6111e0610e7e565b600955565b336000818152600b60205260408120805482825560018201929092556006549092611220916001600160a01b0316908363ffffffff61191a16565b60408051828152905133917f5fafa99d0643513820be26656b45130b01e1c03062e1266bf36f88cbd3bd9695919081900360200190a25050565b6002546001600160a01b0316331461127157600080fd5b6001600160a01b03811615156112b4576040513390303180156108fc02916000818181858888f193505050501580156112ae573d6000803e3d6000fd5b50610d68565b60408051600160e01b6370a08231028152306004820152905182916000916001600160a01b038416916370a08231916024808301926020929190829003018186803b15801561130257600080fd5b505afa158015611316573d6000803e3d6000fd5b505050506040513d602081101561132c57600080fd5b505160408051600160e01b63a9059cbb0281523360048201526024810183905290519192506001600160a01b0384169163a9059cbb916044808201926020929091908290030181600087803b15801561138457600080fd5b505af1158015611398573d6000803e3d6000fd5b505050506040513d60208110156113ae57600080fd5b505060408051828152905133916001600160a01b038616917ff931edb47c50b4b4104c187b5814a9aef5f709e17e2ecf9617e860cacade929c9181900360200190a3505050565b600080546001600160a01b0316331461140d57600080fd5b60005b82518110156107c057611439838281518110151561142a57fe5b90602001906020020151610d6b565b1561144357600191505b600101611410565b6000546001600160a01b0316331461146257600080fd5b6001600160a01b038116151561147757600080fd5b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b0381166000908152600b6020526040812060095415156114fd5760009150506108a6565b60065460408051600160e01b6370a0823102815230600482015290516000926001600160a01b0316916370a08231916024808301926020929190829003018186803b15801561154b57600080fd5b505afa15801561155f573d6000803e3d6000fd5b505050506040513d602081101561157557600080fd5b505160085490915043111580611589575080155b15611599576000925050506108a6565b6115e682600101546109b864e8d4a510006109ac6115d8610d54876109ac64e8d4a51000610f43600954610f436008544361169990919063ffffffff16565b87549063ffffffff6115ee16565b949350505050565b60008215156115ff57506000611651565b82820282848281151561160e57fe5b041461164e57604051600160e51b62461bcd028152600401808060200182810382526021815260200180611e896021913960400191505060405180910390fd5b90505b92915050565b600061164e83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250611aeb565b600061164e83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611b94565b600a5460408051600160e01b6370a0823102815230600482015290516000926001600160a01b0316916370a08231916024808301926020929190829003018186803b15801561172957600080fd5b505afa15801561173d573d6000803e3d6000fd5b505050506040513d602081101561175357600080fd5b505190508082111561183f57600a5460408051600160e01b63a9059cbb0281526001600160a01b038681166004830152602482018590529151919092169163a9059cbb9160448083019260209291908290030181600087803b1580156117b857600080fd5b505af11580156117cc573d6000803e3d6000fd5b505050506040513d60208110156117e257600080fd5b5051151561183a5760408051600160e51b62461bcd02815260206004820152601d60248201527f6661696c656420746f207472616e73666572204d696e7420746f6b656e000000604482015290519081900360640190fd5b610bb6565b600a5460408051600160e01b63a9059cbb0281526001600160a01b038681166004830152602482018690529151919092169163a9059cbb9160448083019260209291908290030181600087803b15801561189857600080fd5b505af11580156118ac573d6000803e3d6000fd5b505050506040513d60208110156118c257600080fd5b50511515610bb65760408051600160e51b62461bcd02815260206004820152601d60248201527f6661696c656420746f207472616e73666572204d696e7420746f6b656e000000604482015290519081900360640190fd5b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b0316600160e01b63a9059cbb02179052610bb6908490611bf2565b60008282018381101561164e5760408051600160e51b62461bcd02815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b600454600160a01b900460ff16156119e357600080fd5b6119eb610e7e565b6001600160a01b0382166000908152600b60205260409020805415611a4a576000611a3682600101546109b864e8d4a510006109ac60075487600001546115ee90919063ffffffff16565b90508015611a4857611a4884826116db565b505b8115611a8357600654611a6e906001600160a01b031684308563ffffffff611dbf16565b8054611a80908363ffffffff61196f16565b81555b6007548154611aa29164e8d4a51000916109ac9163ffffffff6115ee16565b60018201556040805183815290516001600160a01b038516917fe1fffcc4923d04b559f4d29a8bfc6cda04eb5b0d3c460751c2402c5c5cc9109c919081900360200190a2505050565b600081831515611b7c57604051600160e51b62461bcd0281526004018080602001828103825283818151815260200191508051906020019080838360005b83811015611b41578181015183820152602001611b29565b50505050905090810190601f168015611b6e5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5060008385811515611b8a57fe5b0495945050505050565b60008184841115611bea57604051600160e51b62461bcd02815260040180806020018281038252838181518152602001915080519060200190808383600083811015611b41578181015183820152602001611b29565b505050900390565b611c04826001600160a01b0316611e1c565b1515611c5a5760408051600160e51b62461bcd02815260206004820152601f60248201527f5361666545524332303a2063616c6c20746f206e6f6e2d636f6e747261637400604482015290519081900360640190fd5b60006060836001600160a01b0316836040518082805190602001908083835b60208310611c985780518252601f199092019160209182019101611c79565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114611cfa576040519150601f19603f3d011682016040523d82523d6000602084013e611cff565b606091505b5091509150811515611d5b5760408051600160e51b62461bcd02815260206004820181905260248201527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564604482015290519081900360640190fd5b805115611db957808060200190516020811015611d7757600080fd5b50511515611db957604051600160e51b62461bcd02815260040180806020018281038252602a815260200180611eaa602a913960400191505060405180910390fd5b50505050565b604080516001600160a01b0385811660248301528416604482015260648082018490528251808303909101815260849091019091526020810180516001600160e01b0316600160e01b6323b872dd02179052611db9908590611bf2565b6000813f7fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a4708181148015906115e657505015159291505056fe617070726f76616c20616e642077616e74206465706f7369742c20627574207573656420746f6b656e2069736e277420474654536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f775361666545524332303a204552433230206f7065726174696f6e20646964206e6f742073756363656564a165627a7a72305820b40888f6a9ecfc4ef7cb468152d5bf41ee99dafbf6762f5e532943ddbb58fdc90029536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f770000000000000000000000005d0f4ca481fd725c9bc6b415c0ce5b3c3bd726cf00000000000000000000000053bdd401a871bd0f84e94619edcc0c24489d4aab