0x60806040523480156200001157600080fd5b50600054610100900460ff16806200002c575060005460ff16155b620000945760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b606482015260840160405180910390fd5b600054610100900460ff16158015620000b7576000805461ffff19166101011790555b8015620000ca576000805461ff00191690555b50614cbe80620000db6000396000f3fe6080604052600436106103dd5760003560e01c80637b63c0fc116101fd578063b88d4fde11610118578063d5391393116100ab578063e63ab1e91161007a578063e63ab1e914610be1578063e69e04b314610bf8578063e985e9c514610c0f578063ece7669e14610c58578063edf4619614610c7857600080fd5b8063d539139314610b74578063d547741f14610b8b578063dd08eae014610bab578063e33b7de314610bcb57600080fd5b8063cafa8dfe116100e7578063cafa8dfe14610af3578063cc14f2f514610b0a578063ce7c2ac214610b2a578063d0fd890d14610b6157600080fd5b8063b88d4fde14610a73578063c5e885e414610a93578063c87b56dd14610ab3578063ca15c87314610ad357600080fd5b80639852595c11610190578063aef9455d1161015f578063aef9455d146109fc578063b3428d1514610a1c578063b3fa9f2414610a3c578063b514371514610a5357600080fd5b80639852595c14610979578063a217fddf146109b0578063a22cb465146109c5578063a7abb8b7146109e557600080fd5b80638b83209b116101cc5780638b83209b146109045780639010d07c1461092457806391d148541461094457806395d89b411461096457600080fd5b80637b63c0fc146108825780638456cb59146108af578063845bcce1146108c457806387ded6c6146108e457600080fd5b80633f4ba83a116102f85780635c975abb1161028b57806370868d6f1161025a57806370868d6f146107e257806370a08231146108025780637386ca3e1461082257806376977a3a1461084257806377500c541461086257600080fd5b80635c975abb1461075c5780636352211e146107755780636970bb0a146107955780636d3c7ec5146107c257600080fd5b8063445d9787116102c7578063445d9787146106f25780634f6ccce71461070557806359fb3e60146107255780635b4b51cf1461073c57600080fd5b80633f4ba83a1461067c57806342842e0e1461069157806342966c68146106b157806343bc1612146106d157600080fd5b8063248a9ca3116103705780632f745c591161033f5780632f745c591461060657806336568abe146106265780633a98ef39146106465780633cad95871461065c57600080fd5b8063248a9ca31461055f5780632a55205a146105905780632f0f0dac146105cf5780632f2ff15d146105e657600080fd5b8063095ea7b3116103ac578063095ea7b3146104e857806318160ddd1461050a578063191655871461051f57806323b872dd1461053f57600080fd5b806301ffc9a71461042b578063027e11a71461046057806306fdde031461048e578063081812fc146104b057600080fd5b36610426577f6ef95f06320e7a25a04a175ca677b7052bdd97131872c2192525a629f51be77033604080516001600160a01b0390921682523460208301520160405180910390a1005b600080fd5b34801561043757600080fd5b5061044b61044636600461458a565b610c98565b60405190151581526020015b60405180910390f35b34801561046c57600080fd5b5061048061047b3660046145c2565b610cc3565b604051908152602001610457565b34801561049a57600080fd5b506104a3610cf9565b60405161045791906148ff565b3480156104bc57600080fd5b506104d06104cb36600461452d565b610d8b565b6040516001600160a01b039091168152602001610457565b3480156104f457600080fd5b50610508610503366004614502565b610e18565b005b34801561051657600080fd5b50609954610480565b34801561052b57600080fd5b5061050861053a366004614374565b610f2e565b34801561054b57600080fd5b5061050861055a3660046143c8565b611109565b34801561056b57600080fd5b5061048061057a36600461452d565b600090815261015f602052604090206001015490565b34801561059c57600080fd5b506105b06105ab366004614569565b61113b565b604080516001600160a01b039093168352602083019190915201610457565b3480156105db57600080fd5b506104806101f95481565b3480156105f257600080fd5b50610508610601366004614545565b611193565b34801561061257600080fd5b50610480610621366004614502565b6111b6565b34801561063257600080fd5b50610508610641366004614545565b61124c565b34801561065257600080fd5b506101c354610480565b34801561066857600080fd5b506105086106773660046145c2565b61126f565b34801561068857600080fd5b506105086112a2565b34801561069d57600080fd5b506105086106ac3660046143c8565b6112bb565b3480156106bd57600080fd5b506105086106cc36600461452d565b6112d6565b3480156106dd57600080fd5b506101f6546104d0906001600160a01b031681565b6105086107003660046145f4565b61134d565b34801561071157600080fd5b5061048061072036600461452d565b611539565b34801561073157600080fd5b506104806101f75481565b34801561074857600080fd5b506104806107573660046145c2565b6115da565b34801561076857600080fd5b5061012d5460ff1661044b565b34801561078157600080fd5b506104d061079036600461452d565b611643565b3480156107a157600080fd5b506107b56107b0366004614374565b6116ba565b60405161045791906148bb565b3480156107ce57600080fd5b506105086107dd36600461452d565b611779565b3480156107ee57600080fd5b506104806107fd3660046145c2565b61179c565b34801561080e57600080fd5b5061048061081d366004614374565b6117ba565b34801561082e57600080fd5b5061050861083d3660046146ef565b611841565b34801561084e57600080fd5b5061048061085d3660046144b5565b6118a0565b34801561086e57600080fd5b5061044b61087d3660046145c2565b611915565b34801561088e57600080fd5b506108a261089d366004614374565b611948565b604051610457919061485a565b3480156108bb57600080fd5b50610508611acc565b3480156108d057600080fd5b506105086108df36600461452d565b611ae2565b3480156108f057600080fd5b506108a26108ff36600461452d565b611b05565b34801561091057600080fd5b506104d061091f36600461452d565b611c81565b34801561093057600080fd5b506104d061093f366004614569565b611cc0565b34801561095057600080fd5b5061044b61095f366004614545565b611cd9565b34801561097057600080fd5b506104a3611d05565b34801561098557600080fd5b50610480610994366004614374565b6001600160a01b031660009081526101c6602052604090205490565b3480156109bc57600080fd5b50610480600081565b3480156109d157600080fd5b506105086109e0366004614484565b611d14565b3480156109f157600080fd5b506104806101fe5481565b348015610a0857600080fd5b50610508610a1736600461452d565b611dd9565b348015610a2857600080fd5b50610508610a3736600461452d565b611dfc565b348015610a4857600080fd5b506104806101fa5481565b348015610a5f57600080fd5b50610508610a6e366004614374565b611e1f565b348015610a7f57600080fd5b50610508610a8e366004614408565b611e6b565b348015610a9f57600080fd5b50610508610aae3660046146ef565b611ea3565b348015610abf57600080fd5b506104a3610ace36600461452d565b611eed565b348015610adf57600080fd5b50610480610aee36600461452d565b611ef8565b348015610aff57600080fd5b506104806101fb5481565b348015610b1657600080fd5b50610508610b2536600461452d565b611f10565b348015610b3657600080fd5b50610480610b45366004614374565b6001600160a01b031660009081526101c5602052604090205490565b610508610b6f3660046144b5565b611f29565b348015610b8057600080fd5b506104806101fd5481565b348015610b9757600080fd5b50610508610ba6366004614545565b6120d2565b348015610bb757600080fd5b50610480610bc63660046145c2565b6120dc565b348015610bd757600080fd5b506101c454610480565b348015610bed57600080fd5b506104806101fc5481565b348015610c0457600080fd5b506104806101f85481565b348015610c1b57600080fd5b5061044b610c2a366004614390565b6001600160a01b039182166000908152606a6020908152604080832093909416825291909152205460ff1690565b348015610c6457600080fd5b506107b5610c7336600461452d565b612105565b348015610c8457600080fd5b50610508610c933660046145c2565b6121f3565b60006001600160e01b0319821663152a902d60e11b1480610cbd5750610cbd82612210565b92915050565b600080610cd08133612235565b61020183604051610ce1919061475d565b90815260200160405180910390205491505b50919050565b606060658054610d0890614b95565b80601f0160208091040260200160405190810160405280929190818152602001828054610d3490614b95565b8015610d815780601f10610d5657610100808354040283529160200191610d81565b820191906000526020600020905b815481529060010190602001808311610d6457829003601f168201915b5050505050905090565b6000610d9682612299565b610dfc5760405162461bcd60e51b815260206004820152602c60248201527f4552433732313a20617070726f76656420717565727920666f72206e6f6e657860448201526b34b9ba32b73a103a37b5b2b760a11b60648201526084015b60405180910390fd5b506000908152606960205260409020546001600160a01b031690565b6000610e2382611643565b9050806001600160a01b0316836001600160a01b03161415610e915760405162461bcd60e51b815260206004820152602160248201527f4552433732313a20617070726f76616c20746f2063757272656e74206f776e656044820152603960f91b6064820152608401610df3565b336001600160a01b0382161480610ead5750610ead8133610c2a565b610f1f5760405162461bcd60e51b815260206004820152603860248201527f4552433732313a20617070726f76652063616c6c6572206973206e6f74206f7760448201527f6e6572206e6f7220617070726f76656420666f7220616c6c00000000000000006064820152608401610df3565b610f2983836122b6565b505050565b6001600160a01b03811660009081526101c56020526040902054610fa35760405162461bcd60e51b815260206004820152602660248201527f5061796d656e7453706c69747465723a206163636f756e7420686173206e6f2060448201526573686172657360d01b6064820152608401610df3565b60006101c45447610fb49190614ab1565b6001600160a01b03831660009081526101c660209081526040808320546101c3546101c5909352908320549394509192610fee9085614add565b610ff89190614ac9565b6110029190614b3b565b9050806110655760405162461bcd60e51b815260206004820152602b60248201527f5061796d656e7453706c69747465723a206163636f756e74206973206e6f742060448201526a191d59481c185e5b595b9d60aa1b6064820152608401610df3565b6001600160a01b03831660009081526101c6602052604090205461108a908290614ab1565b6001600160a01b03841660009081526101c660205260409020556101c4546110b3908290614ab1565b6101c4556110c18382612324565b604080516001600160a01b0385168152602081018390527fdf20fd1e76bc69d672e4814fafb2c449bba3a5369d8359adf9e05e6fde87b05691015b60405180910390a1505050565b611114335b8261243d565b6111305760405162461bcd60e51b8152600401610df3906149dc565b610f29838383612527565b60008061114c6101fd5461095f3390565b1561115c5750600090508061118c565b600060646101fb548561116f9190614add565b6111799190614ac9565b6101f6546001600160a01b031693509150505b9250929050565b61119d82826126d2565b600082815261019160205260409020610f2990826126f9565b60006111c1836117ba565b82106112235760405162461bcd60e51b815260206004820152602b60248201527f455243373231456e756d657261626c653a206f776e657220696e646578206f7560448201526a74206f6620626f756e647360a81b6064820152608401610df3565b506001600160a01b03919091166000908152609760209081526040808320938352929052205490565b611256828261270e565b600082815261019160205260409020610f299082612788565b600061127b8133612235565b6102028260405161128c919061475d565b9081526020016040518091039020600090555050565b6101fc546112b08133612235565b6112b861279d565b50565b610f2983838360405180602001604052806000815250611e6b565b6112df3361110e565b6113445760405162461bcd60e51b815260206004820152603060248201527f4552433732314275726e61626c653a2063616c6c6572206973206e6f74206f7760448201526f1b995c881b9bdc88185c1c1c9bdd995960821b6064820152608401610df3565b6112b881612832565b600054610100900460ff1680611366575060005460ff16155b6113825760405162461bcd60e51b8152600401610df39061498e565b600054610100900460ff161580156113a4576000805461ffff19166101011790555b6113ae8585612922565b6113b66129a9565b6113be6129a9565b6113c66129a9565b6113ce612a2c565b6113d6612a93565b6113e08383612af2565b336101f680546001600160a01b0319166001600160a01b039290921691909117905560056101f7556040516a63727970746f776f72647360a81b815260019061020190600b01908152604051908190036020018120919091556918dc9e5c1d1bdddbdc9960b21b815260019061020190600a01908152604051908190036020019020556702c68af0bb1400006101f85560006101f98190556113886101fa5560056101fb557f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a6101fc557f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a66101fd557ff9e9e1c8035f82fd72c5438c5719fd5349deacb4207f4fcbbda606cb5a39d5096101fe55611504906114ff3390565b612b5b565b6115126101fc546114ff3390565b6115206101fd546114ff3390565b8015611532576000805461ff00191690555b5050505050565b600061154460995490565b82106115a75760405162461bcd60e51b815260206004820152602c60248201527f455243373231456e756d657261626c653a20676c6f62616c20696e646578206f60448201526b7574206f6620626f756e647360a01b6064820152608401610df3565b609982815481106115c857634e487b7160e01b600052603260045260246000fd5b90600052602060002001549050919050565b600080611605610200846040516115f1919061475d565b908152602001604051809103902054612b65565b61161661161185612bd3565b612b65565b6116209190614afc565b9050600081136116335750600092915050565b61163c81612c16565b9392505050565b6000818152606760205260408120546001600160a01b031680610cbd5760405162461bcd60e51b815260206004820152602960248201527f4552433732313a206f776e657220717565727920666f72206e6f6e657869737460448201526832b73a103a37b5b2b760b91b6064820152608401610df3565b606060006116c7836117ba565b6001600160401b038111156116ec57634e487b7160e01b600052604160045260246000fd5b604051908082528060200260200182016040528015611715578160200160208202803683370190505b50905060005b611724846117ba565b8110156117725761173584826111b6565b82828151811061175557634e487b7160e01b600052603260045260246000fd5b60209081029190910101528061176a81614bca565b91505061171b565b5092915050565b60006117858133612235565b6101f85482141561179557600080fd5b506101f855565b6000806117a98133612235565b61020283604051610ce1919061475d565b60006001600160a01b0382166118255760405162461bcd60e51b815260206004820152602a60248201527f4552433732313a2062616c616e636520717565727920666f7220746865207a65604482015269726f206164647265737360b01b6064820152608401610df3565b506001600160a01b031660009081526068602052604090205490565b600061184d8133612235565b6102018360405161185e919061475d565b90815260200160405180910390205482141561187957600080fd5b816102018460405161188b919061475d565b90815260405190819003602001902055505050565b60006118af6101fd5484611cd9565b156118bc57506000610cbd565b6118c96101fe5484611cd9565b15611909576101fa546101f954116118f1576118ec6118e783612c68565b612cab565b611902565b6119026118fd83612c68565b612cd3565b9050610cbd565b61163c6118fd83612c68565b600061192082612bd3565b61020083604051611931919061475d565b908152602001604051809103902054109050919050565b60606000611955836116ba565b9050600081516001600160401b0381111561198057634e487b7160e01b600052604160045260246000fd5b6040519080825280602002602001820160405280156119b357816020015b606081526020019060019003908161199e5790505b50905060005b8251811015611ac4576101ff60008483815181106119e757634e487b7160e01b600052603260045260246000fd5b602002602001015181526020019081526020016000208054611a0890614b95565b80601f0160208091040260200160405190810160405280929190818152602001828054611a3490614b95565b8015611a815780601f10611a5657610100808354040283529160200191611a81565b820191906000526020600020905b815481529060010190602001808311611a6457829003601f168201915b5050505050828281518110611aa657634e487b7160e01b600052603260045260246000fd5b60200260200101819052508080611abc90614bca565b9150506119b9565b509392505050565b6101fc54611ada8133612235565b6112b8612ce7565b6000611aee8133612235565b6101f954821415611afe57600080fd5b506101f955565b60606000611b1283612105565b9050600081516001600160401b03811115611b3d57634e487b7160e01b600052604160045260246000fd5b604051908082528060200260200182016040528015611b7057816020015b6060815260200190600190039081611b5b5790505b50905060005b8251811015611ac4576101ff6000848381518110611ba457634e487b7160e01b600052603260045260246000fd5b602002602001015181526020019081526020016000208054611bc590614b95565b80601f0160208091040260200160405190810160405280929190818152602001828054611bf190614b95565b8015611c3e5780601f10611c1357610100808354040283529160200191611c3e565b820191906000526020600020905b815481529060010190602001808311611c2157829003601f168201915b5050505050828281518110611c6357634e487b7160e01b600052603260045260246000fd5b60200260200101819052508080611c7990614bca565b915050611b76565b60006101c78281548110611ca557634e487b7160e01b600052603260045260246000fd5b6000918252602090912001546001600160a01b031692915050565b60008281526101916020526040812061163c9083612d41565b600091825261015f602090815260408084206001600160a01b0393909316845291905290205460ff1690565b606060668054610d0890614b95565b6001600160a01b038216331415611d6d5760405162461bcd60e51b815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c6572000000000000006044820152606401610df3565b336000818152606a602090815260408083206001600160a01b03871680855290835292819020805460ff191686151590811790915590519081529192917f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a35050565b6000611de58133612235565b6101f754821415611df557600080fd5b506101f755565b6000611e088133612235565b6101fa54821415611e1857600080fd5b506101fa55565b6000611e2b8133612235565b6101f6546001600160a01b0383811691161415611e4757600080fd5b506101f680546001600160a01b0319166001600160a01b0392909216919091179055565b611e75338361243d565b611e915760405162461bcd60e51b8152600401610df3906149dc565b611e9d84848484612d4d565b50505050565b6000611eaf8133612235565b61020283604051611ec0919061475d565b908152602001604051809103902054821415611edb57600080fd5b816102028460405161188b919061475d565b6060610cbd82612d80565b600081815261019160205260408120610cbd90612ee2565b6000611f1c8133612235565b611f2582612832565b5050565b61012d5460ff1615611f4d5760405162461bcd60e51b8152600401610df390614964565b611f5b6101fd5461095f3390565b61201757611f6881611915565b611fb45760405162461bcd60e51b815260206004820181905260248201527f5468697320776f7264206973206e6f206c6f6e67657220617661696c61626c656044820152606401610df3565b611fbe33826118a0565b3410156120175760405162461bcd60e51b815260206004820152602160248201527f4e6f7420656e6f756768204554482073656e743b20636865636b2070726963656044820152602160f81b6064820152608401610df3565b60006120236101f55490565b90506120346101f580546001019055565b60008181526101ff602090815260409091208351612054928501906141c4565b50600161020083604051612068919061475d565b908152602001604051809103902060008282546120859190614ab1565b9091555061209590508382612eec565b61209f8183612f06565b7fe7619a6b73b99956e487541f2eafbf4cb611a98b8391e31858fe02ba08669f058183856040516110fc93929190614a2d565b6112568282612f91565b6000610200826040516120ef919061475d565b9081526020016040518091039020549050919050565b6060600061211260995490565b90506000838211156121245783612126565b815b90506000816001600160401b0381111561215057634e487b7160e01b600052604160045260246000fd5b604051908082528060200260200182016040528015612179578160200160208202803683370190505b50905060006121888385614b3b565b905060005b838110156121e85761219e82611539565b8382815181106121be57634e487b7160e01b600052603260045260246000fd5b60209081029190910101526121d4600183614ab1565b9150806121e081614bca565b91505061218d565b509095945050505050565b60006121ff8133612235565b6102018260405161128c919061475d565b60006001600160e01b03198216635a05180f60e01b1480610cbd5750610cbd82612fb8565b61223f8282611cd9565b611f2557612257816001600160a01b03166014612fdd565b612262836020612fdd565b6040516020016122739291906147a8565b60408051601f198184030181529082905262461bcd60e51b8252610df3916004016148ff565b6000908152606760205260409020546001600160a01b0316151590565b600081815260696020526040902080546001600160a01b0319166001600160a01b03841690811790915581906122eb82611643565b6001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b804710156123745760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a20696e73756666696369656e742062616c616e63650000006044820152606401610df3565b6000826001600160a01b03168260405160006040518083038185875af1925050503d80600081146123c1576040519150601f19603f3d011682016040523d82523d6000602084013e6123c6565b606091505b5050905080610f295760405162461bcd60e51b815260206004820152603a60248201527f416464726573733a20756e61626c6520746f2073656e642076616c75652c207260448201527f6563697069656e74206d617920686176652072657665727465640000000000006064820152608401610df3565b600061244882612299565b6124a95760405162461bcd60e51b815260206004820152602c60248201527f4552433732313a206f70657261746f7220717565727920666f72206e6f6e657860448201526b34b9ba32b73a103a37b5b2b760a11b6064820152608401610df3565b60006124b483611643565b9050806001600160a01b0316846001600160a01b031614806124ef5750836001600160a01b03166124e484610d8b565b6001600160a01b0316145b8061251f57506001600160a01b038082166000908152606a602090815260408083209388168352929052205460ff165b949350505050565b826001600160a01b031661253a82611643565b6001600160a01b0316146125a25760405162461bcd60e51b815260206004820152602960248201527f4552433732313a207472616e73666572206f6620746f6b656e2074686174206960448201526839903737ba1037bbb760b91b6064820152608401610df3565b6001600160a01b0382166126045760405162461bcd60e51b8152602060048201526024808201527f4552433732313a207472616e7366657220746f20746865207a65726f206164646044820152637265737360e01b6064820152608401610df3565b61260f8383836131be565b61261a6000826122b6565b6001600160a01b0383166000908152606860205260408120805460019290612643908490614b3b565b90915550506001600160a01b0382166000908152606860205260408120805460019290612671908490614ab1565b909155505060008181526067602052604080822080546001600160a01b0319166001600160a01b0386811691821790925591518493918716917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b600082815261015f60205260409020600101546126ef8133612235565b610f2983836131ed565b600061163c836001600160a01b038416613274565b6001600160a01b038116331461277e5760405162461bcd60e51b815260206004820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201526e103937b632b9903337b91039b2b63360891b6064820152608401610df3565b611f2582826132c3565b600061163c836001600160a01b03841661332b565b61012d5460ff166127e75760405162461bcd60e51b815260206004820152601460248201527314185d5cd8589b194e881b9bdd081c185d5cd95960621b6044820152606401610df3565b61012d805460ff191690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b6040516001600160a01b03909116815260200160405180910390a1565b60008181526101ff60205260408120805461284c90614b95565b80601f016020809104026020016040519081016040528092919081815260200182805461287890614b95565b80156128c55780601f1061289a576101008083540402835291602001916128c5565b820191906000526020600020905b8154815290600101906020018083116128a857829003601f168201915b505050505090506001610200826040516128df919061475d565b9081526020016040518091039020546128f89190614b3b565b61020082604051612909919061475d565b90815260405190819003602001902055611f2582613448565b600054610100900460ff168061293b575060005460ff16155b6129575760405162461bcd60e51b8152600401610df39061498e565b600054610100900460ff16158015612979576000805461ffff19166101011790555b612981613488565b612989613488565b61299383836134f2565b8015610f29576000805461ff0019169055505050565b600054610100900460ff16806129c2575060005460ff16155b6129de5760405162461bcd60e51b8152600401610df39061498e565b600054610100900460ff16158015612a00576000805461ffff19166101011790555b612a08613488565b612a10613488565b612a18613488565b80156112b8576000805461ff001916905550565b600054610100900460ff1680612a45575060005460ff16155b612a615760405162461bcd60e51b8152600401610df39061498e565b600054610100900460ff16158015612a83576000805461ffff19166101011790555b612a8b613488565b612a18613587565b600054610100900460ff1680612aac575060005460ff16155b612ac85760405162461bcd60e51b8152600401610df39061498e565b600054610100900460ff16158015612aea576000805461ffff19166101011790555b612a00613488565b600054610100900460ff1680612b0b575060005460ff16155b612b275760405162461bcd60e51b8152600401610df39061498e565b600054610100900460ff16158015612b49576000805461ffff19166101011790555b612b51613488565b61299383836135fd565b61119d8282613787565b60006001600160ff1b03821115612bcf5760405162461bcd60e51b815260206004820152602860248201527f53616665436173743a2076616c756520646f65736e27742066697420696e2061604482015267371034b73a191a9b60c11b6064820152608401610df3565b5090565b60008061020183604051612be7919061475d565b9081526020016040518091039020541115612c0d57610201826040516120ef919061475d565b50506101f75490565b600080821215612bcf5760405162461bcd60e51b815260206004820181905260248201527f53616665436173743a2076616c7565206d75737420626520706f7369746976656044820152606401610df3565b60008061020283604051612c7c919061475d565b9081526020016040518091039020541115612ca257610202826040516120ef919061475d565b50506101f85490565b60006127106101fa5483612cbf9190614add565b612cc99190614ac9565b610cbd9083614b3b565b60006127106101f95483612cbf9190614add565b61012d5460ff1615612d0b5760405162461bcd60e51b8152600401610df390614964565b61012d805460ff191660011790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a2586128153390565b600061163c8383613791565b612d58848484612527565b612d64848484846137c9565b611e9d5760405162461bcd60e51b8152600401610df390614912565b6060612d8b82612299565b612df15760405162461bcd60e51b815260206004820152603160248201527f45524337323155524953746f726167653a2055524920717565727920666f72206044820152703737b732bc34b9ba32b73a103a37b5b2b760791b6064820152608401610df3565b600082815260c9602052604081208054612e0a90614b95565b80601f0160208091040260200160405190810160405280929190818152602001828054612e3690614b95565b8015612e835780601f10612e5857610100808354040283529160200191612e83565b820191906000526020600020905b815481529060010190602001808311612e6657829003601f168201915b505050505090506000612e946138d6565b9050805160001415612ea7575092915050565b815115612ed9578082604051602001612ec1929190614779565b60405160208183030381529060405292505050919050565b61251f846138f6565b6000610cbd825490565b611f258282604051806020016040528060008152506139c0565b612f0f82612299565b612f725760405162461bcd60e51b815260206004820152602e60248201527f45524337323155524953746f726167653a2055524920736574206f66206e6f6e60448201526d32bc34b9ba32b73a103a37b5b2b760911b6064820152608401610df3565b600082815260c9602090815260409091208251610f29928401906141c4565b600082815261015f6020526040902060010154612fae8133612235565b610f2983836132c3565b60006001600160e01b03198216637965db0b60e01b1480610cbd5750610cbd826139f3565b60606000612fec836002614add565b612ff7906002614ab1565b6001600160401b0381111561301c57634e487b7160e01b600052604160045260246000fd5b6040519080825280601f01601f191660200182016040528015613046576020820181803683370190505b509050600360fc1b8160008151811061306f57634e487b7160e01b600052603260045260246000fd5b60200101906001600160f81b031916908160001a905350600f60fb1b816001815181106130ac57634e487b7160e01b600052603260045260246000fd5b60200101906001600160f81b031916908160001a90535060006130d0846002614add565b6130db906001614ab1565b90505b600181111561316f576f181899199a1a9b1b9c1cb0b131b232b360811b85600f166010811061311d57634e487b7160e01b600052603260045260246000fd5b1a60f81b82828151811061314157634e487b7160e01b600052603260045260246000fd5b60200101906001600160f81b031916908160001a90535060049490941c9361316881614b7e565b90506130de565b50831561163c5760405162461bcd60e51b815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e746044820152606401610df3565b61012d5460ff16156131e25760405162461bcd60e51b8152600401610df390614964565b610f29838383613a18565b6131f78282611cd9565b611f2557600082815261015f602090815260408083206001600160a01b03851684529091529020805460ff191660011790556132303390565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b60008181526001830160205260408120546132bb57508154600181810184556000848152602080822090930184905584548482528286019093526040902091909155610cbd565b506000610cbd565b6132cd8282611cd9565b15611f2557600082815261015f602090815260408083206001600160a01b0385168085529252808320805460ff1916905551339285917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45050565b6000818152600183016020526040812054801561343e57600061334f600183614b3b565b855490915060009061336390600190614b3b565b90508181146133e457600086600001828154811061339157634e487b7160e01b600052603260045260246000fd5b90600052602060002001549050808760000184815481106133c257634e487b7160e01b600052603260045260246000fd5b6000918252602080832090910192909255918252600188019052604090208390555b855486908061340357634e487b7160e01b600052603160045260246000fd5b600190038181906000526020600020016000905590558560010160008681526020019081526020016000206000905560019350505050610cbd565b6000915050610cbd565b61345181613ad0565b600081815260c960205260409020805461346a90614b95565b1590506112b857600081815260c9602052604081206112b891614244565b600054610100900460ff16806134a1575060005460ff16155b6134bd5760405162461bcd60e51b8152600401610df39061498e565b600054610100900460ff16158015612a18576000805461ffff191661010117905580156112b8576000805461ff001916905550565b600054610100900460ff168061350b575060005460ff16155b6135275760405162461bcd60e51b8152600401610df39061498e565b600054610100900460ff16158015613549576000805461ffff19166101011790555b825161355c9060659060208601906141c4565b5081516135709060669060208501906141c4565b508015610f29576000805461ff0019169055505050565b600054610100900460ff16806135a0575060005460ff16155b6135bc5760405162461bcd60e51b8152600401610df39061498e565b600054610100900460ff161580156135de576000805461ffff19166101011790555b61012d805460ff1916905580156112b8576000805461ff001916905550565b600054610100900460ff1680613616575060005460ff16155b6136325760405162461bcd60e51b8152600401610df39061498e565b600054610100900460ff16158015613654576000805461ffff19166101011790555b81518351146136c05760405162461bcd60e51b815260206004820152603260248201527f5061796d656e7453706c69747465723a2070617965657320616e6420736861726044820152710cae640d8cadccee8d040dad2e6dac2e8c6d60731b6064820152608401610df3565b60008351116137115760405162461bcd60e51b815260206004820152601a60248201527f5061796d656e7453706c69747465723a206e6f207061796565730000000000006044820152606401610df3565b60005b83518110156135705761377584828151811061374057634e487b7160e01b600052603260045260246000fd5b602002602001015184838151811061376857634e487b7160e01b600052603260045260246000fd5b6020026020010151613b77565b8061377f81614bca565b915050613714565b611f2582826131ed565b60008260000182815481106137b657634e487b7160e01b600052603260045260246000fd5b9060005260206000200154905092915050565b60006001600160a01b0384163b156138cb57604051630a85bd0160e11b81526001600160a01b0385169063150b7a029061380d90339089908890889060040161481d565b602060405180830381600087803b15801561382757600080fd5b505af1925050508015613857575060408051601f3d908101601f19168201909252613854918101906145a6565b60015b6138b1573d808015613885576040519150601f19603f3d011682016040523d82523d6000602084013e61388a565b606091505b5080516138a95760405162461bcd60e51b8152600401610df390614912565b805181602001fd5b6001600160e01b031916630a85bd0160e11b14905061251f565b506001949350505050565b6060604051806060016040528060228152602001614c6760229139905090565b606061390182612299565b6139655760405162461bcd60e51b815260206004820152602f60248201527f4552433732314d657461646174613a2055524920717565727920666f72206e6f60448201526e3732bc34b9ba32b73a103a37b5b2b760891b6064820152608401610df3565b600061396f6138d6565b9050600081511161398f576040518060200160405280600081525061163c565b8061399984613d62565b6040516020016139aa929190614779565b6040516020818303038152906040529392505050565b6139ca8383613e7b565b6139d760008484846137c9565b610f295760405162461bcd60e51b8152600401610df390614912565b60006001600160e01b0319821663780e9d6360e01b1480610cbd5750610cbd82613fba565b6001600160a01b038316613a7357613a6e81609980546000838152609a60205260408120829055600182018355919091527f72a152ddfb8e864297c917af52ea6c1c68aead0fee1a62673fcc7e0c94979d000155565b613a96565b816001600160a01b0316836001600160a01b031614613a9657613a96838261400a565b6001600160a01b038216613aad57610f29816140a7565b826001600160a01b0316826001600160a01b031614610f2957610f298282614180565b6000613adb82611643565b9050613ae9816000846131be565b613af46000836122b6565b6001600160a01b0381166000908152606860205260408120805460019290613b1d908490614b3b565b909155505060008281526067602052604080822080546001600160a01b0319169055518391906001600160a01b038416907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908390a45050565b6001600160a01b038216613be25760405162461bcd60e51b815260206004820152602c60248201527f5061796d656e7453706c69747465723a206163636f756e74206973207468652060448201526b7a65726f206164647265737360a01b6064820152608401610df3565b60008111613c325760405162461bcd60e51b815260206004820152601d60248201527f5061796d656e7453706c69747465723a207368617265732061726520300000006044820152606401610df3565b6001600160a01b03821660009081526101c5602052604090205415613cad5760405162461bcd60e51b815260206004820152602b60248201527f5061796d656e7453706c69747465723a206163636f756e7420616c726561647960448201526a206861732073686172657360a81b6064820152608401610df3565b6101c78054600181019091557fff6df30967a6a678f565c59a19e91e5c0dbb20cfe9f9bf26d7da6dea0fffa24c0180546001600160a01b0319166001600160a01b03841690811790915560009081526101c5602052604090208190556101c354613d18908290614ab1565b6101c355604080516001600160a01b0384168152602081018390527f40c340f65e17194d14ddddb073d3c9f888e3cb52b5aae0c6c7706b4fbc905fac910160405180910390a15050565b606081613d865750506040805180820190915260018152600360fc1b602082015290565b8160005b8115613db05780613d9a81614bca565b9150613da99050600a83614ac9565b9150613d8a565b6000816001600160401b03811115613dd857634e487b7160e01b600052604160045260246000fd5b6040519080825280601f01601f191660200182016040528015613e02576020820181803683370190505b5090505b841561251f57613e17600183614b3b565b9150613e24600a86614be5565b613e2f906030614ab1565b60f81b818381518110613e5257634e487b7160e01b600052603260045260246000fd5b60200101906001600160f81b031916908160001a905350613e74600a86614ac9565b9450613e06565b6001600160a01b038216613ed15760405162461bcd60e51b815260206004820181905260248201527f4552433732313a206d696e7420746f20746865207a65726f20616464726573736044820152606401610df3565b613eda81612299565b15613f275760405162461bcd60e51b815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e746564000000006044820152606401610df3565b613f33600083836131be565b6001600160a01b0382166000908152606860205260408120805460019290613f5c908490614ab1565b909155505060008181526067602052604080822080546001600160a01b0319166001600160a01b03861690811790915590518392907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b60006001600160e01b031982166380ac58cd60e01b1480613feb57506001600160e01b03198216635b5e139f60e01b145b80610cbd57506301ffc9a760e01b6001600160e01b0319831614610cbd565b60006001614017846117ba565b6140219190614b3b565b600083815260986020526040902054909150808214614074576001600160a01b03841660009081526097602090815260408083208584528252808320548484528184208190558352609890915290208190555b5060009182526098602090815260408084208490556001600160a01b039094168352609781528383209183525290812055565b6099546000906140b990600190614b3b565b6000838152609a6020526040812054609980549394509092849081106140ef57634e487b7160e01b600052603260045260246000fd5b90600052602060002001549050806099838154811061411e57634e487b7160e01b600052603260045260246000fd5b6000918252602080832090910192909255828152609a9091526040808220849055858252812055609980548061416457634e487b7160e01b600052603160045260246000fd5b6001900381819060005260206000200160009055905550505050565b600061418b836117ba565b6001600160a01b039093166000908152609760209081526040808320868452825280832085905593825260989052919091209190915550565b8280546141d090614b95565b90600052602060002090601f0160209004810192826141f25760008555614238565b82601f1061420b57805160ff1916838001178555614238565b82800160010185558215614238579182015b8281111561423857825182559160200191906001019061421d565b50612bcf92915061427a565b50805461425090614b95565b6000825580601f10614260575050565b601f0160209004906000526020600020908101906112b891905b5b80821115612bcf576000815560010161427b565b60006001600160401b038311156142a8576142a8614c25565b6142bb601f8401601f1916602001614a5e565b90508281528383830111156142cf57600080fd5b828260208301376000602084830101529392505050565b600082601f8301126142f6578081fd5b8135602061430b61430683614a8e565b614a5e565b80838252828201915082860187848660051b890101111561432a578586fd5b855b858110156143485781358452928401929084019060010161432c565b5090979650505050505050565b600082601f830112614365578081fd5b61163c8383356020850161428f565b600060208284031215614385578081fd5b813561163c81614c3b565b600080604083850312156143a2578081fd5b82356143ad81614c3b565b915060208301356143bd81614c3b565b809150509250929050565b6000806000606084860312156143dc578081fd5b83356143e781614c3b565b925060208401356143f781614c3b565b929592945050506040919091013590565b6000806000806080858703121561441d578081fd5b843561442881614c3b565b9350602085013561443881614c3b565b92506040850135915060608501356001600160401b03811115614459578182fd5b8501601f81018713614469578182fd5b6144788782356020840161428f565b91505092959194509250565b60008060408385031215614496578182fd5b82356144a181614c3b565b9150602083013580151581146143bd578182fd5b600080604083850312156144c7578182fd5b82356144d281614c3b565b915060208301356001600160401b038111156144ec578182fd5b6144f885828601614355565b9150509250929050565b60008060408385031215614514578182fd5b823561451f81614c3b565b946020939093013593505050565b60006020828403121561453e578081fd5b5035919050565b60008060408385031215614557578182fd5b8235915060208301356143bd81614c3b565b6000806040838503121561457b578182fd5b50508035926020909101359150565b60006020828403121561459b578081fd5b813561163c81614c50565b6000602082840312156145b7578081fd5b815161163c81614c50565b6000602082840312156145d3578081fd5b81356001600160401b038111156145e8578182fd5b61251f84828501614355565b60008060008060808587031215614609578182fd5b84356001600160401b038082111561461f578384fd5b61462b88838901614355565b9550602091508187013581811115614641578485fd5b61464d89828a01614355565b955050604087013581811115614661578485fd5b8701601f81018913614671578485fd5b803561467f61430682614a8e565b8082825285820191508584018c878560051b870101111561469e578889fd5b8894505b838510156146c95780356146b581614c3b565b8352600194909401939186019186016146a2565b50965050505060608701359150808211156146e2578283fd5b50614478878288016142e6565b60008060408385031215614701578182fd5b82356001600160401b03811115614716578283fd5b61472285828601614355565b95602094909401359450505050565b60008151808452614749816020860160208601614b52565b601f01601f19169290920160200192915050565b6000825161476f818460208701614b52565b9190910192915050565b6000835161478b818460208801614b52565b83519083019061479f818360208801614b52565b01949350505050565b7f416363657373436f6e74726f6c3a206163636f756e74200000000000000000008152600083516147e0816017850160208801614b52565b7001034b99036b4b9b9b4b733903937b6329607d1b6017918401918201528351614811816028840160208801614b52565b01602801949350505050565b6001600160a01b038581168252841660208201526040810183905260806060820181905260009061485090830184614731565b9695505050505050565b6000602080830181845280855180835260408601915060408160051b8701019250838701855b828110156148ae57603f1988860301845261489c858351614731565b94509285019290850190600101614880565b5092979650505050505050565b6020808252825182820181905260009190848201906040850190845b818110156148f3578351835292840192918401916001016148d7565b50909695505050505050565b60208152600061163c6020830184614731565b60208082526032908201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560408201527131b2b4bb32b91034b6b83632b6b2b73a32b960711b606082015260800190565b60208082526010908201526f14185d5cd8589b194e881c185d5cd95960821b604082015260600190565b6020808252602e908201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160408201526d191e481a5b9a5d1a585b1a5e995960921b606082015260800190565b60208082526031908201527f4552433732313a207472616e736665722063616c6c6572206973206e6f74206f6040820152701ddb995c881b9bdc88185c1c1c9bdd9959607a1b606082015260800190565b838152606060208201526000614a466060830185614731565b905060018060a01b0383166040830152949350505050565b604051601f8201601f191681016001600160401b0381118282101715614a8657614a86614c25565b604052919050565b60006001600160401b03821115614aa757614aa7614c25565b5060051b60200190565b60008219821115614ac457614ac4614bf9565b500190565b600082614ad857614ad8614c0f565b500490565b6000816000190483118215151615614af757614af7614bf9565b500290565b60008083128015600160ff1b850184121615614b1a57614b1a614bf9565b6001600160ff1b0384018313811615614b3557614b35614bf9565b50500390565b600082821015614b4d57614b4d614bf9565b500390565b60005b83811015614b6d578181015183820152602001614b55565b83811115611e9d5750506000910152565b600081614b8d57614b8d614bf9565b506000190190565b600181811c90821680614ba957607f821691505b60208210811415610cf357634e487b7160e01b600052602260045260246000fd5b6000600019821415614bde57614bde614bf9565b5060010190565b600082614bf457614bf4614c0f565b500690565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052601260045260246000fd5b634e487b7160e01b600052604160045260246000fd5b6001600160a01b03811681146112b857600080fd5b6001600160e01b0319811681146112b857600080fdfe68747470733a2f2f63727970746f776f7264732e6172742f6170692f746f6b656e2fa26469706673582212204366306a475b0ba3427c17ce2db95aa9e392bceb83c7673b1c39991ddb43512964736f6c63430008040033