0x60806040526004361061021e5760003560e01c8063781edb3c11610123578063aa4bde28116100ab578063cd43e2281161006f578063cd43e22814610646578063d2d7ad83146106a5578063dd62ed3e146106bb578063f2fde38b14610701578063fe0175351461072157600080fd5b8063aa4bde28146105ab578063aee50b1e146105c1578063b62496f5146105e1578063c024666814610611578063c9567bf91461063157600080fd5b806395d89b41116100f257806395d89b41146105215780639d952ce9146105365780639dccf6f114610556578063a457c2d71461056b578063a9059cbb1461058b57600080fd5b8063781edb3c146104ad578063880bcbc1146104cd5780638c0b5e22146104ed5780638da5cb5b1461050357600080fd5b806327a14fc2116101a657806342966c681161017557806342966c681461040457806349bd5a5e14610424578063667812911461045857806370a0823114610478578063715018a61461049857600080fd5b806327a14fc214610388578063313ce567146103a857806339509351146103c45780633b8dffd4146103e457600080fd5b80631694505e116101ed5780631694505e146102c457806318160ddd146102fc5780631cdbf8481461031b5780631e293c101461034857806323b872dd1461036857600080fd5b8063064a59d01461022a57806306fdde0314610260578063095ea7b3146102825780630f6ca522146102a257600080fd5b3661022557005b600080fd5b34801561023657600080fd5b5060065461024b90600160a01b900460ff1681565b60405190151581526020015b60405180910390f35b34801561026c57600080fd5b5061027561075c565b6040516102579190612e20565b34801561028e57600080fd5b5061024b61029d366004612e83565b6107ee565b3480156102ae57600080fd5b506102c26102bd366004612eaf565b610805565b005b3480156102d057600080fd5b506006546102e4906001600160a01b031681565b6040516001600160a01b039091168152602001610257565b34801561030857600080fd5b506003545b604051908152602001610257565b34801561032757600080fd5b5061030d610336366004612ee4565b60176020526000908152604090205481565b34801561035457600080fd5b506102c2610363366004612f01565b6108c6565b34801561037457600080fd5b5061024b610383366004612f1a565b6109b6565b34801561039457600080fd5b506102c26103a3366004612f01565b610a20565b3480156103b457600080fd5b5060405160128152602001610257565b3480156103d057600080fd5b5061024b6103df366004612e83565b610b71565b3480156103f057600080fd5b506102c26103ff366004612f5b565b610ba7565b34801561041057600080fd5b506102c261041f366004612f01565b610e9e565b34801561043057600080fd5b506102e47f000000000000000000000000a89e508ec306246776819c4d93b4bc638e1fbc4b81565b34801561046457600080fd5b506102c2610473366004612faa565b610eab565b34801561048457600080fd5b5061030d610493366004612ee4565b610fcb565b3480156104a457600080fd5b506102c2610fe6565b3480156104b957600080fd5b506102c26104c8366004612ffe565b61105a565b3480156104d957600080fd5b506102c26104e8366004612ffe565b611124565b3480156104f957600080fd5b5061030d60085481565b34801561050f57600080fd5b506000546001600160a01b03166102e4565b34801561052d57600080fd5b506102756111e6565b34801561054257600080fd5b506102c2610551366004612faa565b6111f5565b34801561056257600080fd5b506102c26112bc565b34801561057757600080fd5b5061024b610586366004612e83565b6112fd565b34801561059757600080fd5b5061024b6105a6366004612e83565b61134c565b3480156105b757600080fd5b5061030d60075481565b3480156105cd57600080fd5b506102c26105dc366004612f01565b611359565b3480156105ed57600080fd5b5061024b6105fc366004612ee4565b60166020526000908152604090205460ff1681565b34801561061d57600080fd5b506102c261062c366004612ffe565b611423565b34801561063d57600080fd5b506102c26114e5565b34801561065257600080fd5b5060115460ff80821691620100008104821691600160201b8204811691600160301b9004165b6040805160ff95861681529385166020850152918416918301919091529091166060820152608001610257565b3480156106b157600080fd5b5061030d600c5481565b3480156106c757600080fd5b5061030d6106d6366004612f5b565b6001600160a01b03918216600090815260026020908152604080832093909416825291909152205490565b34801561070d57600080fd5b506102c261071c366004612ee4565b611524565b34801561072d57600080fd5b5060115460ff610100820481169163010000008104821691600160281b8204811691600160381b900416610678565b60606004805461076b90613031565b80601f016020809104026020016040519081016040528092919081815260200182805461079790613031565b80156107e45780601f106107b9576101008083540402835291602001916107e4565b820191906000526020600020905b8154815290600101906020018083116107c757829003601f168201915b5050505050905090565b60006107fb33848461166d565b5060015b92915050565b600c5461081130610fcb565b101561087f5760405162461bcd60e51b815260206004820152603260248201527f7377617020616d6f756e74206d757374206f766572207468616e206d696e696d6044820152710756d546f6b656e734265666f7265537761760741b60648201526084015b60405180910390fd5b61088a838383611792565b156108c157601854600160201b900460ff16156108c1576009805460ff191660011790556108b6611955565b6009805460ff191690555b505050565b6000546001600160a01b031633146108f05760405162461bcd60e51b81526004016108769061306b565b670de0b6b3a76400006103e861090560035490565b6109109060026130b6565b61091a91906130e3565b61092491906130e3565b8110156109835760405162461bcd60e51b815260206004820152602760248201527f43616e6e6f7420736574206d6178547820416d6f756e74206c6f776572207468604482015266616e20302e322560c81b6064820152608401610876565b60085460405182907f75f1c17bf623f0f7a2bd91ba61e89dff216960370e3e9a46b250750d03e4215e90600090a3600855565b60006109c3848484611ba4565b610a158433610a1085604051806060016040528060288152602001613375602891396001600160a01b038a1660009081526002602090815260408083203384529091529020549190612187565b61166d565b5060015b9392505050565b6000546001600160a01b03163314610a4a5760405162461bcd60e51b81526004016108769061306b565b670de0b6b3a76400006103e8610a5f60035490565b610a6a9060146130b6565b610a7491906130e3565b610a7e91906130e3565b811015610ad95760405162461bcd60e51b8152602060048201526024808201527f43616e6e6f7420736574206d617857616c6c6574206c6f776572207468616e20604482015263302e322560e01b6064820152608401610876565b6007548103610b3e5760405162461bcd60e51b815260206004820152602b60248201527f43616e6e6f7420757064617465206d617857616c6c6574416d6f756e7420746f60448201526a2073616d652076616c756560a81b6064820152608401610876565b60075460405182907f6d3e257c59a11116c3e97bb144abf5ba1a6a9da6bd509192ecf0d48f7be1fc7690600090a3600755565b3360008181526002602090815260408083206001600160a01b038716845290915281205490916107fb918590610a10908661160e565b6000546001600160a01b03163314610bd15760405162461bcd60e51b81526004016108769061306b565b600d546001600160a01b03838116911614610d36576001600160a01b038216610c3c5760405162461bcd60e51b815260206004820152601f60248201527f546865206d61726b6574696e6757616c6c65742063616e6e6f742062652030006044820152606401610876565b7f000000000000000000000000a89e508ec306246776819c4d93b4bc638e1fbc4b6001600160a01b0316826001600160a01b031603610cbd5760405162461bcd60e51b815260206004820152601f60248201527f546865206d61726b6574696e6757616c6c65742063616e6e6f742062652030006044820152606401610876565b600d546040516e1b585c9ad95d1a5b99d5d85b1b195d608a1b81526001600160a01b0391821691841690600f01604051908190038120907fd1fafbc3fb0c1fd12765451e803b8d5049dca18f8055298e7d18ebcd0d2ce31290600090a4600d80546001600160a01b0319166001600160a01b0384161790555b600e546001600160a01b03828116911614610e9a576001600160a01b038116610da15760405162461bcd60e51b815260206004820152601e60248201527f54686520747265617375727957616c6c65742063616e6e6f74206265203000006044820152606401610876565b7f000000000000000000000000a89e508ec306246776819c4d93b4bc638e1fbc4b6001600160a01b0316816001600160a01b031603610e225760405162461bcd60e51b815260206004820152601e60248201527f54686520747265617375727957616c6c65742063616e6e6f74206265203000006044820152606401610876565b600e80546040516d1d1c99585cdd5c9e55d85b1b195d60921b81526001600160a01b03918216929184169101604051908190038120907fd1fafbc3fb0c1fd12765451e803b8d5049dca18f8055298e7d18ebcd0d2ce31290600090a4600e80546001600160a01b0319166001600160a01b0383161790555b5050565b610ea833826121c1565b50565b6000546001600160a01b03163314610ed55760405162461bcd60e51b81526004016108769061306b565b8082610ee185876130f7565b610eeb91906130f7565b610ef591906130f7565b60ff16600111610f475760405162461bcd60e51b815260206004820152601860248201527f73656c6c20666565206d757374206265206661697221212100000000000000006044820152606401610876565b610f55600f858585856122cc565b6040516c18985cd95199595ccb54d95b1b609a1b8152600d015b6040805191829003822060ff878116845286811660208501528581168484015284166060840152905190917f69848adfba904cea9fd12f8e800c6bae1d85101b0becc5910e509a93d81449e9919081900360800190a250505050565b6001600160a01b031660009081526001602052604090205490565b6000546001600160a01b031633146110105760405162461bcd60e51b81526004016108769061306b565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6000546001600160a01b031633146110845760405162461bcd60e51b81526004016108769061306b565b6001600160a01b03821660009081526015602052604090205481151560ff9091161515036110c45760405162461bcd60e51b815260040161087690613110565b6001600160a01b038216600081815260156020908152604091829020805460ff191685151590811790915591519182527fb7eada217e08491d4a03c266f93cd278befd124ab34890a5e7f44d023cbade7391015b60405180910390a25050565b6000546001600160a01b0316331461114e5760405162461bcd60e51b81526004016108769061306b565b6001600160a01b03821660009081526014602052604090205481151560ff90911615150361118e5760405162461bcd60e51b815260040161087690613110565b6001600160a01b038216600081815260146020908152604091829020805460ff191685151590811790915591519182527f30098fc83ab61b1a98835d32c4e611adedccfc260eeef586bd329d48e8a40a409101611118565b60606005805461076b90613031565b6000546001600160a01b0316331461121f5760405162461bcd60e51b81526004016108769061306b565b808261122b85876130f7565b61123591906130f7565b61123f91906130f7565b60ff166001116112915760405162461bcd60e51b815260206004820152601760248201527f62757920666565206d75737420626520666169722121210000000000000000006044820152606401610876565b61129f600f8585858561252e565b6040516b62617365466565732d42757960a01b8152600c01610f6f565b6000546001600160a01b031633146112e65760405162461bcd60e51b81526004016108769061306b565b6b09b18ab5df7180b6b80000006007819055600855565b60006107fb3384610a10856040518060600160405280602581526020016133bd602591393360009081526002602090815260408083206001600160a01b038d1684529091529020549190612187565b60006107fb338484611ba4565b6000546001600160a01b031633146113835760405162461bcd60e51b81526004016108769061306b565b600c5481036113f05760405162461bcd60e51b815260206004820152603360248201527f43616e6e6f7420757064617465206d696e696d756d546f6b656e734265666f72604482015272655377617020746f2073616d652076616c756560681b6064820152608401610876565b600c5460405182907f5b0491f767c1463bea8972339f785795be1a38784cc6483cf649cdcbb28c46b090600090a3600c55565b6000546001600160a01b0316331461144d5760405162461bcd60e51b81526004016108769061306b565b6001600160a01b03821660009081526013602052604090205481151560ff90911615150361148d5760405162461bcd60e51b815260040161087690613110565b6001600160a01b038216600081815260136020908152604091829020805460ff191685151590811790915591519182527fa856ba9fdc54a5434b2359874c95612f520a2d7f858864ae98d15c1b2099ca8b9101611118565b6000546001600160a01b0316331461150f5760405162461bcd60e51b81526004016108769061306b565b6006805460ff60a01b1916600160a01b179055565b6000546001600160a01b0316331461154e5760405162461bcd60e51b81526004016108769061306b565b6001600160a01b0381166115b35760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610876565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b60008061161b838561315a565b905083811015610a195760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006044820152606401610876565b6001600160a01b0383166116cf5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610876565b6001600160a01b0382166117305760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610876565b6001600160a01b0383811660008181526002602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b33600090815260136020526040812054819060ff166118a957601854600160201b900460ff161561182f576018546000906064906117da90600160201b900460ff16876130b6565b6117e491906130e3565b601854909150600090606490611804906301000000900460ff16886130b6565b61180e91906130e3565b905061181a828761316d565b9550801561182c5761182c33826121c1565b50505b601854600160201b900460ff16156118a257600061184c30610fcb565b60185490915060009060029060ff600160201b820481169161186f9116856130b6565b61187991906130e3565b61188391906130e3565b90506000611891828461316d565b9050801561189e57600193505b5050505b9050610a19565b60006118b430610fcb565b11156118dd57836000036118cf5750600a82905560006118dd565b6118d985856121c1565b5060005b601854600160201b900460ff16156118a25760006118fa30610fcb565b60185490915060009060029060ff600160201b820481169161191d9116856130b6565b61192791906130e3565b61193191906130e3565b9050600061193f828461316d565b9050801561189e57600093505050509050610a19565b600061196030610fcb565b600c5490915047906119739060076130b6565b82111561198b57600c546119889060076130b6565b91505b601854600090819060029060ff600160201b82048116916119ad9116876130b6565b6119b791906130e3565b6119c191906130e3565b905060006119cf828661316d565b90506119da81612778565b60006119e6854761316d565b60185490915060009060ff63010000008204811691611a089160029116613180565b611a1291906130f7565b601854611a299190600160201b900460ff166131a2565b60185460ff91821692506000916002918491611a469116866130b6565b611a5091906130e3565b611a5a91906130e3565b6018549091506000908390611a7790610100900460ff16866130b6565b611a8191906130e3565b90506000611a8f828461315a565b611a99908661316d565b600e546040519192506001600160a01b0316908290600081818185875af1925050503d8060008114611ae7576040519150601f19603f3d011682016040523d82523d6000602084013e611aec565b606091505b5050600d546040519199506001600160a01b0316904790600081818185875af1925050503d8060008114611b3c576040519150601f19603f3d011682016040523d82523d6000602084013e611b41565b606091505b50909850508615611b9857611b5687846128d2565b60408051878152602081018590529081018890527f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb5619060600160405180910390a15b50505050505050505050565b6001600160a01b038316611bca5760405162461bcd60e51b8152600401610876906131bb565b6001600160a01b038216611bf05760405162461bcd60e51b815260040161087690613200565b80600003611c04576108c18383600061297d565b6001600160a01b03808416600081815260166020908152604080832054948716835280832054938352601290915290205460ff928316929182169116158015611c6657506001600160a01b03841660009081526012602052604090205460ff16155b15611f3a57600654600160a01b900460ff16611cc45760405162461bcd60e51b815260206004820152601e60248201527f54726164696e672069732063757272656e746c792064697361626c65642e00006044820152606401610876565b6001600160a01b03851660009081526016602052604090205460ff168015611d0557506001600160a01b03841660009081526014602052604090205460ff16155b15611dd657600854831115611d6d5760405162461bcd60e51b815260206004820152602860248201527f427579207472616e7366657220616d6f756e742065786365656473207468652060448201526736b0bc10313abc9760c11b6064820152608401610876565b600754611d7985610fcb565b611d83908561315a565b1115611dd15760405162461bcd60e51b815260206004820152601860248201527f43616e6e6f7420457863656564206d61782077616c6c657400000000000000006044820152606401610876565b611f3a565b6001600160a01b03841660009081526016602052604090205460ff168015611e1757506001600160a01b03851660009081526014602052604090205460ff16155b15611e8157600854831115611dd15760405162461bcd60e51b815260206004820152602a60248201527f53656c6c207472616e7366657220616d6f756e742065786365656473207468656044820152691036b0bc1039b2b6361760b11b6064820152608401610876565b6001600160a01b03841660009081526014602052604090205460ff16611f0557600754611ead85610fcb565b611eb7908561315a565b1115611dd15760405162461bcd60e51b815260206004820152601760248201527f43616e6e6f74204578636565642074782077616c6c65740000000000000000006044820152606401610876565b60095460ff16158015611f3057506001600160a01b03851660009081526014602052604090205460ff165b15611f3a5742600a555b611f4682828787612a89565b6000600c54611f5430610fcb565b6006549111159150600160a01b900460ff168015611f6f5750805b8015611f7e575060095460ff16155b8015611f955750601854600160201b900460ff1615155b8015611fb957506001600160a01b03851660009081526016602052604090205460ff165b8015611fde57506001600160a01b03861660009081526013602052604090205460ff16155b801561200357506001600160a01b03851660009081526013602052604090205460ff16155b15612028576009805460ff1916600117905561201d611955565b6009805460ff191690555b60095460009060ff161580156120475750600654600160a01b900460ff165b6001600160a01b03881660009081526013602052604090205490915060ff168061208957506001600160a01b03861660009081526013602052604090205460ff165b15612092575060005b8080156120aa5750601854600160201b900460ff1615155b15612173576018546000906064906120cc90600160201b900460ff16886130b6565b6120d691906130e3565b6018549091506000906064906120f6906301000000900460ff16896130b6565b61210091906130e3565b905061210c828861316d565b965061211989308461297d565b80156121705761212930826121c1565b60185460408051630100000090920460ff168252602082018390527ffecf12fd01122af77b8b8f1a0f126363142d14fba298ea36d9fe4909f61bb5a1910160405180910390a15b50505b61217e87878761297d565b50505050505050565b600081848411156121ab5760405162461bcd60e51b81526004016108769190612e20565b5060006121b8848661316d565b95945050505050565b6001600160a01b0382166122215760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b6064820152608401610876565b61225e8160405180606001604052806022815260200161332d602291396001600160a01b0385166000908152600160205260409020549190612187565b6001600160a01b0383166000908152600160205260409020556003546122849082612d28565b6003556040518181526000906001600160a01b038416907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b600285015460ff858116610100909204161461235d57604051711b1a5c5d5a591a5d1e51995953db94d95b1b60721b815260120160405190819003812060028701548754919260ff6101009092048216929188169160008051602061339d8339815191529161233e9160481b90613243565b60405180910390a460028501805461ff00191661010060ff8716021790555b600285015460ff848116630100000090920416146123f657604051711b585c9ad95d1a5b99d1995953db94d95b1b60721b815260120160405190819003812060028701548754919260ff63010000009092048216929187169160008051602061339d833981519152916123d39160481b90613243565b60405180910390a460028501805463ff0000001916630100000060ff8616021790555b600285015460ff838116600160281b909204161461248f576040516f189d5e509858dad1995953db94d95b1b60821b815260100160405190819003812060028701548754919260ff600160281b9092048216929186169160008051602061339d8339815191529161246a9160481b90613243565b60405180910390a460028501805465ff00000000001916600160281b60ff8516021790555b600285015460ff828116600160381b9092041614612527576040516c189d5c9b91995953db94d95b1b609a1b8152600d0160405190819003812060028701548754919260ff600160381b9092048216929185169160008051602061339d833981519152916125009160481b90613243565b60405180910390a460028501805467ff000000000000001916600160381b60ff8416021790555b5050505050565b600285015460ff8581169116146125af57604051706c69717569646974794665654f6e42757960781b815260110160405190819003812060028701548754919260ff918216929188169160008051602061339d833981519152916125959160481b90613243565b60405180910390a460028501805460ff191660ff86161790555b600285015460ff84811662010000909204161461264357604051706d61726b6574696e674665654f6e42757960781b815260110160405190819003812060028701548754919260ff620100009092048216929187169160008051602061339d833981519152916126229160481b90613243565b60405180910390a460028501805462ff000019166201000060ff8616021790555b600285015460ff838116600160201b90920416146126da576040516e6275794261636b4665654f6e42757960881b8152600f0160405190819003812060028701548754919260ff600160201b9092048216929186169160008051602061339d833981519152916126b69160481b90613243565b60405180910390a460028501805464ff000000001916600160201b60ff8516021790555b600285015460ff828116600160301b9092041614612527576040516b6275726e4665654f6e42757960a01b8152600c0160405190819003812060028701548754919260ff600160301b9092048216929185169160008051602061339d8339815191529161274a9160481b90613243565b60405180910390a460028501805460ff8316600160301b0266ff000000000000199091161790555050505050565b60408051600280825260608201835260009260208301908036833701905050905030816000815181106127ad576127ad61325a565b6001600160a01b03928316602091820292909201810191909152600654604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015612806573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061282a9190613270565b8160018151811061283d5761283d61325a565b6001600160a01b039283166020918202929092010152600654612863913091168461166d565b60065460405163791ac94760e01b81526001600160a01b039091169063791ac9479061289c90859060009086903090429060040161328d565b600060405180830381600087803b1580156128b657600080fd5b505af11580156128ca573d6000803e3d6000fd5b505050505050565b6006546128ea9030906001600160a01b03168461166d565b60065460405163f305d71960e01b815230600482015260248101849052600060448201819052606482015261dead60848201524260a48201526001600160a01b039091169063f305d71990839060c40160606040518083038185885af1158015612958573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061252791906132fe565b6001600160a01b0383166129a35760405162461bcd60e51b8152600401610876906131bb565b6001600160a01b0382166129c95760405162461bcd60e51b815260040161087690613200565b612a068160405180606001604052806026815260200161334f602691396001600160a01b0386166000908152600160205260409020549190612187565b6001600160a01b038085166000908152600160205260408082209390935590841681522054612a35908261160e565b6001600160a01b0380841660008181526001602052604090819020939093559151908516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906117859085815260200190565b6018805463ffffffff191690558315612b7c576011546018805460ff80841661ffff1990921691909117610100620100008086048416919091029190911763ffff00001916600160201b850483169190910263ff000000191617600160301b909304166301000000029190911790556001600160a01b03811660009081526017602052604090205415612b34576001600160a01b038116600090815260176020526040902054612b62565b612b3d81610fcb565b15612b60576001600160a01b038116600090815260176020526040902054612b62565b425b6001600160a01b0382166000908152601760205260409020555b8215612bdf576011546018805461010080840460ff90811661ffff199093169290921763010000008086048416929092021763ffff00001916600160281b85048316620100000263ff000000191617600160381b90940491909116029190911790555b82158015612beb575083155b15612c4d576011546018805461010080840460ff90811661ffff199093169290921763010000008086048416929092021763ffff00001916600160281b85048316620100000263ff000000191617600160381b90940491909116029190911790555b612c58848383612d6a565b60185460ff63010000008204811691620100008104821691612c82916101008104821691166130f7565b612c8c91906130f7565b612c9691906130f7565b6018805460ff928316600160201b90810264ff000000001983168117938490556040805191861693861693909317815261010084048516602082015262010000840485168184015263010000008404851660608201529204909216608082015290517f6e2a5b7f71cda0b5cb7df899e2ae963197bad5b9805df7f475458f793841201c9181900360a00190a150505050565b6000610a1983836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250612187565b6001600160a01b03811615801590612d8d57506001600160a01b03811661dead14155b8015612db257506001600160a01b03821660009081526013602052604090205460ff16155b8015612dd757506001600160a01b03811660009081526013602052604090205460ff16155b156108c15782158015612ded575060095460ff16155b156108c157600a546001600160a01b038316600090815260176020526040902054612e18919061316d565b600b55505050565b600060208083528351808285015260005b81811015612e4d57858101830151858201604001528201612e31565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b0381168114610ea857600080fd5b60008060408385031215612e9657600080fd5b8235612ea181612e6e565b946020939093013593505050565b600080600060608486031215612ec457600080fd5b8335612ecf81612e6e565b95602085013595506040909401359392505050565b600060208284031215612ef657600080fd5b8135610a1981612e6e565b600060208284031215612f1357600080fd5b5035919050565b600080600060608486031215612f2f57600080fd5b8335612f3a81612e6e565b92506020840135612f4a81612e6e565b929592945050506040919091013590565b60008060408385031215612f6e57600080fd5b8235612f7981612e6e565b91506020830135612f8981612e6e565b809150509250929050565b803560ff81168114612fa557600080fd5b919050565b60008060008060808587031215612fc057600080fd5b612fc985612f94565b9350612fd760208601612f94565b9250612fe560408601612f94565b9150612ff360608601612f94565b905092959194509250565b6000806040838503121561301157600080fd5b823561301c81612e6e565b915060208301358015158114612f8957600080fd5b600181811c9082168061304557607f821691505b60208210810361306557634e487b7160e01b600052602260045260246000fd5b50919050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b600052601160045260246000fd5b80820281158282048414176107ff576107ff6130a0565b634e487b7160e01b600052601260045260246000fd5b6000826130f2576130f26130cd565b500490565b60ff81811683821601908111156107ff576107ff6130a0565b6020808252602a908201527f4163636f756e7420697320616c7265616479207468652076616c7565206f6620604082015269276578636c756465642760b01b606082015260800190565b808201808211156107ff576107ff6130a0565b818103818111156107ff576107ff6130a0565b600060ff831680613193576131936130cd565b8060ff84160491505092915050565b60ff82811682821603908111156107ff576107ff6130a0565b60208082526025908201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604082015264647265737360d81b606082015260800190565b60208082526023908201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260408201526265737360e81b606082015260800190565b68ffffffffffffffffff1991909116815260200190565b634e487b7160e01b600052603260045260246000fd5b60006020828403121561328257600080fd5b8151610a1981612e6e565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b818110156132dd5784516001600160a01b0316835293830193918301916001016132b8565b50506001600160a01b03969096166060850152505050608001529392505050565b60008060006060848603121561331357600080fd5b835192506020840151915060408401519050925092509256fe45524332303a206275726e20616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636500edc71549f0cbe47086c2237ce0cf874d6897fd1d7ce43ee6b65c0230d7606e45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220091c6aea6d3b8c9357023f1002c7b696a13f5369bae8c27f50776b9513f0917b64736f6c63430008110033
0x60a0604052612710620000206b09b18ab5df7180b6b800000060fa6200089b565b6200002c9190620008b5565b6007556127106200004b6b09b18ab5df7180b6b800000060c86200089b565b620000579190620008b5565b600855612710620000766b09b18ab5df7180b6b800000060036200089b565b620000829190620008b5565b600c556040805161016081018252636261736560e01b8152600060208201819052918101829052606081018290526080810182905260a0810182905260c0810182905260e081018290526101008101829052610120810182905261014001819052600f80546001600160c01b031916636261736560981b179055601055601180546001600160401b03191690553480156200011c57600080fd5b506040518060400160405280600e81526020016d4f6e652050756e6368205065706560901b815250604051806040016040528060068152602001654f505045504560d01b8152506000620001756200061960201b60201c565b600080546001600160a01b0319166001600160a01b0383169081178255604051929350917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a3506004620001cd83826200097c565b506005620001dc82826200097c565b5050506000737a250d5630b4cf539739df2c5dacb4c659f2488d90506000816001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000239573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200025f919062000a48565b6001600160a01b031663c9c6539630846001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015620002ad573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002d3919062000a48565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af115801562000321573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000347919062000a48565b600680546001600160a01b0319166001600160a01b0385811691909117909155811660805290506200037b8160016200061d565b600e80546001600160a01b031990811673244684597152ac253e8ae730d733faafaa9f149517909155600d805490911673080a357737a815a2a29287d66c8a7bf37d5dbc2f179055600160136000620003dc6000546001600160a01b031690565b6001600160a01b03908116825260208083019390935260409182016000908120805495151560ff19968716179055600d54821681526013909352818320805485166001908117909155600e5490911683528183208054851682179055308352908220805490931681179092556012906200045e6000546001600160a01b031690565b6001600160a01b0316815260208082019290925260409081016000908120805494151560ff1995861617905530815260149283905290812080549093166001908117909355620004b66000546001600160a01b031690565b6001600160a01b03908116825260208083019390935260409182016000908120805495151560ff19968716179055600d548216815260148452828120805486166001908117909155600e548316825283822080548716821790558683168252601594859052838220805487168217905560065490921681528281208054861683179055308152918220805490941681179093556200055c6000546001600160a01b031690565b6001600160a01b03908116825260208083019390935260409182016000908120805495151560ff19968716179055600d54821681526015909352818320805485166001908117909155600e549091168352908220805484168217905561dead9091527f7ed1dca03d96f947ab02d66053f47073699eb6287021936c92f54972932767e5805490921617905562000611620005fe6000546001600160a01b031690565b6b09b18ab5df7180b6b80000006200070d565b505062000a89565b3390565b6001600160a01b03821660009081526016602052604090205481151560ff909116151503620006b95760405162461bcd60e51b815260206004820152603860248201527f4175746f6d61746564206d61726b6574206d616b65722070616972206973206160448201527f6c72656164792073657420746f20746861742076616c7565000000000000000060648201526084015b60405180910390fd5b6001600160a01b038216600081815260166020526040808220805460ff191685151590811790915590519092917fa666b9b2dc2c8f2d86fda7ba3a115be30d3a958fd84d359cbc6bc919df97990a91a35050565b6001600160a01b038216620007655760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f2061646472657373006044820152606401620006b0565b62000781816003546200081960201b6200160e1790919060201c565b6003556001600160a01b038216600090815260016020908152604090912054620007b69183906200160e62000819821b17901c565b6001600160a01b0383166000818152600160205260408082209390935591519091907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90620008089085815260200190565b60405180910390a35050565b505050565b60008062000828838562000a73565b9050838110156200087c5760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006044820152606401620006b0565b90505b92915050565b634e487b7160e01b600052601160045260246000fd5b80820281158282048414176200087f576200087f62000885565b600082620008d357634e487b7160e01b600052601260045260246000fd5b500490565b634e487b7160e01b600052604160045260246000fd5b600181811c908216806200090357607f821691505b6020821081036200092457634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200081457600081815260208120601f850160051c81016020861015620009535750805b601f850160051c820191505b8181101562000974578281556001016200095f565b505050505050565b81516001600160401b03811115620009985762000998620008d8565b620009b081620009a98454620008ee565b846200092a565b602080601f831160018114620009e85760008415620009cf5750858301515b600019600386901b1c1916600185901b17855562000974565b600085815260208120601f198616915b8281101562000a1957888601518255948401946001909101908401620009f8565b508582101562000a385787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b60006020828403121562000a5b57600080fd5b81516001600160a01b03811681146200087c57600080fd5b808201808211156200087f576200087f62000885565b60805161341762000ab36000396000818161043601528181610c3e0152610da301526134176000f3fe60806040526004361061021e5760003560e01c8063781edb3c11610123578063aa4bde28116100ab578063cd43e2281161006f578063cd43e22814610646578063d2d7ad83146106a5578063dd62ed3e146106bb578063f2fde38b14610701578063fe0175351461072157600080fd5b8063aa4bde28146105ab578063aee50b1e146105c1578063b62496f5146105e1578063c024666814610611578063c9567bf91461063157600080fd5b806395d89b41116100f257806395d89b41146105215780639d952ce9146105365780639dccf6f114610556578063a457c2d71461056b578063a9059cbb1461058b57600080fd5b8063781edb3c146104ad578063880bcbc1146104cd5780638c0b5e22146104ed5780638da5cb5b1461050357600080fd5b806327a14fc2116101a657806342966c681161017557806342966c681461040457806349bd5a5e14610424578063667812911461045857806370a0823114610478578063715018a61461049857600080fd5b806327a14fc214610388578063313ce567146103a857806339509351146103c45780633b8dffd4146103e457600080fd5b80631694505e116101ed5780631694505e146102c457806318160ddd146102fc5780631cdbf8481461031b5780631e293c101461034857806323b872dd1461036857600080fd5b8063064a59d01461022a57806306fdde0314610260578063095ea7b3146102825780630f6ca522146102a257600080fd5b3661022557005b600080fd5b34801561023657600080fd5b5060065461024b90600160a01b900460ff1681565b60405190151581526020015b60405180910390f35b34801561026c57600080fd5b5061027561075c565b6040516102579190612e20565b34801561028e57600080fd5b5061024b61029d366004612e83565b6107ee565b3480156102ae57600080fd5b506102c26102bd366004612eaf565b610805565b005b3480156102d057600080fd5b506006546102e4906001600160a01b031681565b6040516001600160a01b039091168152602001610257565b34801561030857600080fd5b506003545b604051908152602001610257565b34801561032757600080fd5b5061030d610336366004612ee4565b60176020526000908152604090205481565b34801561035457600080fd5b506102c2610363366004612f01565b6108c6565b34801561037457600080fd5b5061024b610383366004612f1a565b6109b6565b34801561039457600080fd5b506102c26103a3366004612f01565b610a20565b3480156103b457600080fd5b5060405160128152602001610257565b3480156103d057600080fd5b5061024b6103df366004612e83565b610b71565b3480156103f057600080fd5b506102c26103ff366004612f5b565b610ba7565b34801561041057600080fd5b506102c261041f366004612f01565b610e9e565b34801561043057600080fd5b506102e47f000000000000000000000000000000000000000000000000000000000000000081565b34801561046457600080fd5b506102c2610473366004612faa565b610eab565b34801561048457600080fd5b5061030d610493366004612ee4565b610fcb565b3480156104a457600080fd5b506102c2610fe6565b3480156104b957600080fd5b506102c26104c8366004612ffe565b61105a565b3480156104d957600080fd5b506102c26104e8366004612ffe565b611124565b3480156104f957600080fd5b5061030d60085481565b34801561050f57600080fd5b506000546001600160a01b03166102e4565b34801561052d57600080fd5b506102756111e6565b34801561054257600080fd5b506102c2610551366004612faa565b6111f5565b34801561056257600080fd5b506102c26112bc565b34801561057757600080fd5b5061024b610586366004612e83565b6112fd565b34801561059757600080fd5b5061024b6105a6366004612e83565b61134c565b3480156105b757600080fd5b5061030d60075481565b3480156105cd57600080fd5b506102c26105dc366004612f01565b611359565b3480156105ed57600080fd5b5061024b6105fc366004612ee4565b60166020526000908152604090205460ff1681565b34801561061d57600080fd5b506102c261062c366004612ffe565b611423565b34801561063d57600080fd5b506102c26114e5565b34801561065257600080fd5b5060115460ff80821691620100008104821691600160201b8204811691600160301b9004165b6040805160ff95861681529385166020850152918416918301919091529091166060820152608001610257565b3480156106b157600080fd5b5061030d600c5481565b3480156106c757600080fd5b5061030d6106d6366004612f5b565b6001600160a01b03918216600090815260026020908152604080832093909416825291909152205490565b34801561070d57600080fd5b506102c261071c366004612ee4565b611524565b34801561072d57600080fd5b5060115460ff610100820481169163010000008104821691600160281b8204811691600160381b900416610678565b60606004805461076b90613031565b80601f016020809104026020016040519081016040528092919081815260200182805461079790613031565b80156107e45780601f106107b9576101008083540402835291602001916107e4565b820191906000526020600020905b8154815290600101906020018083116107c757829003601f168201915b5050505050905090565b60006107fb33848461166d565b5060015b92915050565b600c5461081130610fcb565b101561087f5760405162461bcd60e51b815260206004820152603260248201527f7377617020616d6f756e74206d757374206f766572207468616e206d696e696d6044820152710756d546f6b656e734265666f7265537761760741b60648201526084015b60405180910390fd5b61088a838383611792565b156108c157601854600160201b900460ff16156108c1576009805460ff191660011790556108b6611955565b6009805460ff191690555b505050565b6000546001600160a01b031633146108f05760405162461bcd60e51b81526004016108769061306b565b670de0b6b3a76400006103e861090560035490565b6109109060026130b6565b61091a91906130e3565b61092491906130e3565b8110156109835760405162461bcd60e51b815260206004820152602760248201527f43616e6e6f7420736574206d6178547820416d6f756e74206c6f776572207468604482015266616e20302e322560c81b6064820152608401610876565b60085460405182907f75f1c17bf623f0f7a2bd91ba61e89dff216960370e3e9a46b250750d03e4215e90600090a3600855565b60006109c3848484611ba4565b610a158433610a1085604051806060016040528060288152602001613375602891396001600160a01b038a1660009081526002602090815260408083203384529091529020549190612187565b61166d565b5060015b9392505050565b6000546001600160a01b03163314610a4a5760405162461bcd60e51b81526004016108769061306b565b670de0b6b3a76400006103e8610a5f60035490565b610a6a9060146130b6565b610a7491906130e3565b610a7e91906130e3565b811015610ad95760405162461bcd60e51b8152602060048201526024808201527f43616e6e6f7420736574206d617857616c6c6574206c6f776572207468616e20604482015263302e322560e01b6064820152608401610876565b6007548103610b3e5760405162461bcd60e51b815260206004820152602b60248201527f43616e6e6f7420757064617465206d617857616c6c6574416d6f756e7420746f60448201526a2073616d652076616c756560a81b6064820152608401610876565b60075460405182907f6d3e257c59a11116c3e97bb144abf5ba1a6a9da6bd509192ecf0d48f7be1fc7690600090a3600755565b3360008181526002602090815260408083206001600160a01b038716845290915281205490916107fb918590610a10908661160e565b6000546001600160a01b03163314610bd15760405162461bcd60e51b81526004016108769061306b565b600d546001600160a01b03838116911614610d36576001600160a01b038216610c3c5760405162461bcd60e51b815260206004820152601f60248201527f546865206d61726b6574696e6757616c6c65742063616e6e6f742062652030006044820152606401610876565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316826001600160a01b031603610cbd5760405162461bcd60e51b815260206004820152601f60248201527f546865206d61726b6574696e6757616c6c65742063616e6e6f742062652030006044820152606401610876565b600d546040516e1b585c9ad95d1a5b99d5d85b1b195d608a1b81526001600160a01b0391821691841690600f01604051908190038120907fd1fafbc3fb0c1fd12765451e803b8d5049dca18f8055298e7d18ebcd0d2ce31290600090a4600d80546001600160a01b0319166001600160a01b0384161790555b600e546001600160a01b03828116911614610e9a576001600160a01b038116610da15760405162461bcd60e51b815260206004820152601e60248201527f54686520747265617375727957616c6c65742063616e6e6f74206265203000006044820152606401610876565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316816001600160a01b031603610e225760405162461bcd60e51b815260206004820152601e60248201527f54686520747265617375727957616c6c65742063616e6e6f74206265203000006044820152606401610876565b600e80546040516d1d1c99585cdd5c9e55d85b1b195d60921b81526001600160a01b03918216929184169101604051908190038120907fd1fafbc3fb0c1fd12765451e803b8d5049dca18f8055298e7d18ebcd0d2ce31290600090a4600e80546001600160a01b0319166001600160a01b0383161790555b5050565b610ea833826121c1565b50565b6000546001600160a01b03163314610ed55760405162461bcd60e51b81526004016108769061306b565b8082610ee185876130f7565b610eeb91906130f7565b610ef591906130f7565b60ff16600111610f475760405162461bcd60e51b815260206004820152601860248201527f73656c6c20666565206d757374206265206661697221212100000000000000006044820152606401610876565b610f55600f858585856122cc565b6040516c18985cd95199595ccb54d95b1b609a1b8152600d015b6040805191829003822060ff878116845286811660208501528581168484015284166060840152905190917f69848adfba904cea9fd12f8e800c6bae1d85101b0becc5910e509a93d81449e9919081900360800190a250505050565b6001600160a01b031660009081526001602052604090205490565b6000546001600160a01b031633146110105760405162461bcd60e51b81526004016108769061306b565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6000546001600160a01b031633146110845760405162461bcd60e51b81526004016108769061306b565b6001600160a01b03821660009081526015602052604090205481151560ff9091161515036110c45760405162461bcd60e51b815260040161087690613110565b6001600160a01b038216600081815260156020908152604091829020805460ff191685151590811790915591519182527fb7eada217e08491d4a03c266f93cd278befd124ab34890a5e7f44d023cbade7391015b60405180910390a25050565b6000546001600160a01b0316331461114e5760405162461bcd60e51b81526004016108769061306b565b6001600160a01b03821660009081526014602052604090205481151560ff90911615150361118e5760405162461bcd60e51b815260040161087690613110565b6001600160a01b038216600081815260146020908152604091829020805460ff191685151590811790915591519182527f30098fc83ab61b1a98835d32c4e611adedccfc260eeef586bd329d48e8a40a409101611118565b60606005805461076b90613031565b6000546001600160a01b0316331461121f5760405162461bcd60e51b81526004016108769061306b565b808261122b85876130f7565b61123591906130f7565b61123f91906130f7565b60ff166001116112915760405162461bcd60e51b815260206004820152601760248201527f62757920666565206d75737420626520666169722121210000000000000000006044820152606401610876565b61129f600f8585858561252e565b6040516b62617365466565732d42757960a01b8152600c01610f6f565b6000546001600160a01b031633146112e65760405162461bcd60e51b81526004016108769061306b565b6b09b18ab5df7180b6b80000006007819055600855565b60006107fb3384610a10856040518060600160405280602581526020016133bd602591393360009081526002602090815260408083206001600160a01b038d1684529091529020549190612187565b60006107fb338484611ba4565b6000546001600160a01b031633146113835760405162461bcd60e51b81526004016108769061306b565b600c5481036113f05760405162461bcd60e51b815260206004820152603360248201527f43616e6e6f7420757064617465206d696e696d756d546f6b656e734265666f72604482015272655377617020746f2073616d652076616c756560681b6064820152608401610876565b600c5460405182907f5b0491f767c1463bea8972339f785795be1a38784cc6483cf649cdcbb28c46b090600090a3600c55565b6000546001600160a01b0316331461144d5760405162461bcd60e51b81526004016108769061306b565b6001600160a01b03821660009081526013602052604090205481151560ff90911615150361148d5760405162461bcd60e51b815260040161087690613110565b6001600160a01b038216600081815260136020908152604091829020805460ff191685151590811790915591519182527fa856ba9fdc54a5434b2359874c95612f520a2d7f858864ae98d15c1b2099ca8b9101611118565b6000546001600160a01b0316331461150f5760405162461bcd60e51b81526004016108769061306b565b6006805460ff60a01b1916600160a01b179055565b6000546001600160a01b0316331461154e5760405162461bcd60e51b81526004016108769061306b565b6001600160a01b0381166115b35760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610876565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b60008061161b838561315a565b905083811015610a195760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006044820152606401610876565b6001600160a01b0383166116cf5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610876565b6001600160a01b0382166117305760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610876565b6001600160a01b0383811660008181526002602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b33600090815260136020526040812054819060ff166118a957601854600160201b900460ff161561182f576018546000906064906117da90600160201b900460ff16876130b6565b6117e491906130e3565b601854909150600090606490611804906301000000900460ff16886130b6565b61180e91906130e3565b905061181a828761316d565b9550801561182c5761182c33826121c1565b50505b601854600160201b900460ff16156118a257600061184c30610fcb565b60185490915060009060029060ff600160201b820481169161186f9116856130b6565b61187991906130e3565b61188391906130e3565b90506000611891828461316d565b9050801561189e57600193505b5050505b9050610a19565b60006118b430610fcb565b11156118dd57836000036118cf5750600a82905560006118dd565b6118d985856121c1565b5060005b601854600160201b900460ff16156118a25760006118fa30610fcb565b60185490915060009060029060ff600160201b820481169161191d9116856130b6565b61192791906130e3565b61193191906130e3565b9050600061193f828461316d565b9050801561189e57600093505050509050610a19565b600061196030610fcb565b600c5490915047906119739060076130b6565b82111561198b57600c546119889060076130b6565b91505b601854600090819060029060ff600160201b82048116916119ad9116876130b6565b6119b791906130e3565b6119c191906130e3565b905060006119cf828661316d565b90506119da81612778565b60006119e6854761316d565b60185490915060009060ff63010000008204811691611a089160029116613180565b611a1291906130f7565b601854611a299190600160201b900460ff166131a2565b60185460ff91821692506000916002918491611a469116866130b6565b611a5091906130e3565b611a5a91906130e3565b6018549091506000908390611a7790610100900460ff16866130b6565b611a8191906130e3565b90506000611a8f828461315a565b611a99908661316d565b600e546040519192506001600160a01b0316908290600081818185875af1925050503d8060008114611ae7576040519150601f19603f3d011682016040523d82523d6000602084013e611aec565b606091505b5050600d546040519199506001600160a01b0316904790600081818185875af1925050503d8060008114611b3c576040519150601f19603f3d011682016040523d82523d6000602084013e611b41565b606091505b50909850508615611b9857611b5687846128d2565b60408051878152602081018590529081018890527f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb5619060600160405180910390a15b50505050505050505050565b6001600160a01b038316611bca5760405162461bcd60e51b8152600401610876906131bb565b6001600160a01b038216611bf05760405162461bcd60e51b815260040161087690613200565b80600003611c04576108c18383600061297d565b6001600160a01b03808416600081815260166020908152604080832054948716835280832054938352601290915290205460ff928316929182169116158015611c6657506001600160a01b03841660009081526012602052604090205460ff16155b15611f3a57600654600160a01b900460ff16611cc45760405162461bcd60e51b815260206004820152601e60248201527f54726164696e672069732063757272656e746c792064697361626c65642e00006044820152606401610876565b6001600160a01b03851660009081526016602052604090205460ff168015611d0557506001600160a01b03841660009081526014602052604090205460ff16155b15611dd657600854831115611d6d5760405162461bcd60e51b815260206004820152602860248201527f427579207472616e7366657220616d6f756e742065786365656473207468652060448201526736b0bc10313abc9760c11b6064820152608401610876565b600754611d7985610fcb565b611d83908561315a565b1115611dd15760405162461bcd60e51b815260206004820152601860248201527f43616e6e6f7420457863656564206d61782077616c6c657400000000000000006044820152606401610876565b611f3a565b6001600160a01b03841660009081526016602052604090205460ff168015611e1757506001600160a01b03851660009081526014602052604090205460ff16155b15611e8157600854831115611dd15760405162461bcd60e51b815260206004820152602a60248201527f53656c6c207472616e7366657220616d6f756e742065786365656473207468656044820152691036b0bc1039b2b6361760b11b6064820152608401610876565b6001600160a01b03841660009081526014602052604090205460ff16611f0557600754611ead85610fcb565b611eb7908561315a565b1115611dd15760405162461bcd60e51b815260206004820152601760248201527f43616e6e6f74204578636565642074782077616c6c65740000000000000000006044820152606401610876565b60095460ff16158015611f3057506001600160a01b03851660009081526014602052604090205460ff165b15611f3a5742600a555b611f4682828787612a89565b6000600c54611f5430610fcb565b6006549111159150600160a01b900460ff168015611f6f5750805b8015611f7e575060095460ff16155b8015611f955750601854600160201b900460ff1615155b8015611fb957506001600160a01b03851660009081526016602052604090205460ff165b8015611fde57506001600160a01b03861660009081526013602052604090205460ff16155b801561200357506001600160a01b03851660009081526013602052604090205460ff16155b15612028576009805460ff1916600117905561201d611955565b6009805460ff191690555b60095460009060ff161580156120475750600654600160a01b900460ff165b6001600160a01b03881660009081526013602052604090205490915060ff168061208957506001600160a01b03861660009081526013602052604090205460ff165b15612092575060005b8080156120aa5750601854600160201b900460ff1615155b15612173576018546000906064906120cc90600160201b900460ff16886130b6565b6120d691906130e3565b6018549091506000906064906120f6906301000000900460ff16896130b6565b61210091906130e3565b905061210c828861316d565b965061211989308461297d565b80156121705761212930826121c1565b60185460408051630100000090920460ff168252602082018390527ffecf12fd01122af77b8b8f1a0f126363142d14fba298ea36d9fe4909f61bb5a1910160405180910390a15b50505b61217e87878761297d565b50505050505050565b600081848411156121ab5760405162461bcd60e51b81526004016108769190612e20565b5060006121b8848661316d565b95945050505050565b6001600160a01b0382166122215760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b6064820152608401610876565b61225e8160405180606001604052806022815260200161332d602291396001600160a01b0385166000908152600160205260409020549190612187565b6001600160a01b0383166000908152600160205260409020556003546122849082612d28565b6003556040518181526000906001600160a01b038416907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b600285015460ff858116610100909204161461235d57604051711b1a5c5d5a591a5d1e51995953db94d95b1b60721b815260120160405190819003812060028701548754919260ff6101009092048216929188169160008051602061339d8339815191529161233e9160481b90613243565b60405180910390a460028501805461ff00191661010060ff8716021790555b600285015460ff848116630100000090920416146123f657604051711b585c9ad95d1a5b99d1995953db94d95b1b60721b815260120160405190819003812060028701548754919260ff63010000009092048216929187169160008051602061339d833981519152916123d39160481b90613243565b60405180910390a460028501805463ff0000001916630100000060ff8616021790555b600285015460ff838116600160281b909204161461248f576040516f189d5e509858dad1995953db94d95b1b60821b815260100160405190819003812060028701548754919260ff600160281b9092048216929186169160008051602061339d8339815191529161246a9160481b90613243565b60405180910390a460028501805465ff00000000001916600160281b60ff8516021790555b600285015460ff828116600160381b9092041614612527576040516c189d5c9b91995953db94d95b1b609a1b8152600d0160405190819003812060028701548754919260ff600160381b9092048216929185169160008051602061339d833981519152916125009160481b90613243565b60405180910390a460028501805467ff000000000000001916600160381b60ff8416021790555b5050505050565b600285015460ff8581169116146125af57604051706c69717569646974794665654f6e42757960781b815260110160405190819003812060028701548754919260ff918216929188169160008051602061339d833981519152916125959160481b90613243565b60405180910390a460028501805460ff191660ff86161790555b600285015460ff84811662010000909204161461264357604051706d61726b6574696e674665654f6e42757960781b815260110160405190819003812060028701548754919260ff620100009092048216929187169160008051602061339d833981519152916126229160481b90613243565b60405180910390a460028501805462ff000019166201000060ff8616021790555b600285015460ff838116600160201b90920416146126da576040516e6275794261636b4665654f6e42757960881b8152600f0160405190819003812060028701548754919260ff600160201b9092048216929186169160008051602061339d833981519152916126b69160481b90613243565b60405180910390a460028501805464ff000000001916600160201b60ff8516021790555b600285015460ff828116600160301b9092041614612527576040516b6275726e4665654f6e42757960a01b8152600c0160405190819003812060028701548754919260ff600160301b9092048216929185169160008051602061339d8339815191529161274a9160481b90613243565b60405180910390a460028501805460ff8316600160301b0266ff000000000000199091161790555050505050565b60408051600280825260608201835260009260208301908036833701905050905030816000815181106127ad576127ad61325a565b6001600160a01b03928316602091820292909201810191909152600654604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015612806573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061282a9190613270565b8160018151811061283d5761283d61325a565b6001600160a01b039283166020918202929092010152600654612863913091168461166d565b60065460405163791ac94760e01b81526001600160a01b039091169063791ac9479061289c90859060009086903090429060040161328d565b600060405180830381600087803b1580156128b657600080fd5b505af11580156128ca573d6000803e3d6000fd5b505050505050565b6006546128ea9030906001600160a01b03168461166d565b60065460405163f305d71960e01b815230600482015260248101849052600060448201819052606482015261dead60848201524260a48201526001600160a01b039091169063f305d71990839060c40160606040518083038185885af1158015612958573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061252791906132fe565b6001600160a01b0383166129a35760405162461bcd60e51b8152600401610876906131bb565b6001600160a01b0382166129c95760405162461bcd60e51b815260040161087690613200565b612a068160405180606001604052806026815260200161334f602691396001600160a01b0386166000908152600160205260409020549190612187565b6001600160a01b038085166000908152600160205260408082209390935590841681522054612a35908261160e565b6001600160a01b0380841660008181526001602052604090819020939093559151908516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906117859085815260200190565b6018805463ffffffff191690558315612b7c576011546018805460ff80841661ffff1990921691909117610100620100008086048416919091029190911763ffff00001916600160201b850483169190910263ff000000191617600160301b909304166301000000029190911790556001600160a01b03811660009081526017602052604090205415612b34576001600160a01b038116600090815260176020526040902054612b62565b612b3d81610fcb565b15612b60576001600160a01b038116600090815260176020526040902054612b62565b425b6001600160a01b0382166000908152601760205260409020555b8215612bdf576011546018805461010080840460ff90811661ffff199093169290921763010000008086048416929092021763ffff00001916600160281b85048316620100000263ff000000191617600160381b90940491909116029190911790555b82158015612beb575083155b15612c4d576011546018805461010080840460ff90811661ffff199093169290921763010000008086048416929092021763ffff00001916600160281b85048316620100000263ff000000191617600160381b90940491909116029190911790555b612c58848383612d6a565b60185460ff63010000008204811691620100008104821691612c82916101008104821691166130f7565b612c8c91906130f7565b612c9691906130f7565b6018805460ff928316600160201b90810264ff000000001983168117938490556040805191861693861693909317815261010084048516602082015262010000840485168184015263010000008404851660608201529204909216608082015290517f6e2a5b7f71cda0b5cb7df899e2ae963197bad5b9805df7f475458f793841201c9181900360a00190a150505050565b6000610a1983836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250612187565b6001600160a01b03811615801590612d8d57506001600160a01b03811661dead14155b8015612db257506001600160a01b03821660009081526013602052604090205460ff16155b8015612dd757506001600160a01b03811660009081526013602052604090205460ff16155b156108c15782158015612ded575060095460ff16155b156108c157600a546001600160a01b038316600090815260176020526040902054612e18919061316d565b600b55505050565b600060208083528351808285015260005b81811015612e4d57858101830151858201604001528201612e31565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b0381168114610ea857600080fd5b60008060408385031215612e9657600080fd5b8235612ea181612e6e565b946020939093013593505050565b600080600060608486031215612ec457600080fd5b8335612ecf81612e6e565b95602085013595506040909401359392505050565b600060208284031215612ef657600080fd5b8135610a1981612e6e565b600060208284031215612f1357600080fd5b5035919050565b600080600060608486031215612f2f57600080fd5b8335612f3a81612e6e565b92506020840135612f4a81612e6e565b929592945050506040919091013590565b60008060408385031215612f6e57600080fd5b8235612f7981612e6e565b91506020830135612f8981612e6e565b809150509250929050565b803560ff81168114612fa557600080fd5b919050565b60008060008060808587031215612fc057600080fd5b612fc985612f94565b9350612fd760208601612f94565b9250612fe560408601612f94565b9150612ff360608601612f94565b905092959194509250565b6000806040838503121561301157600080fd5b823561301c81612e6e565b915060208301358015158114612f8957600080fd5b600181811c9082168061304557607f821691505b60208210810361306557634e487b7160e01b600052602260045260246000fd5b50919050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b600052601160045260246000fd5b80820281158282048414176107ff576107ff6130a0565b634e487b7160e01b600052601260045260246000fd5b6000826130f2576130f26130cd565b500490565b60ff81811683821601908111156107ff576107ff6130a0565b6020808252602a908201527f4163636f756e7420697320616c7265616479207468652076616c7565206f6620604082015269276578636c756465642760b01b606082015260800190565b808201808211156107ff576107ff6130a0565b818103818111156107ff576107ff6130a0565b600060ff831680613193576131936130cd565b8060ff84160491505092915050565b60ff82811682821603908111156107ff576107ff6130a0565b60208082526025908201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604082015264647265737360d81b606082015260800190565b60208082526023908201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260408201526265737360e81b606082015260800190565b68ffffffffffffffffff1991909116815260200190565b634e487b7160e01b600052603260045260246000fd5b60006020828403121561328257600080fd5b8151610a1981612e6e565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b818110156132dd5784516001600160a01b0316835293830193918301916001016132b8565b50506001600160a01b03969096166060850152505050608001529392505050565b60008060006060848603121561331357600080fd5b835192506020840151915060408401519050925092509256fe45524332303a206275726e20616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636500edc71549f0cbe47086c2237ce0cf874d6897fd1d7ce43ee6b65c0230d7606e45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220091c6aea6d3b8c9357023f1002c7b696a13f5369bae8c27f50776b9513f0917b64736f6c63430008110033