0x6080604052600436106102f65760003560e01c80634f7041a51161018f578063a6a94c01116100e1578063d76996981161008a578063f2fde38b11610064578063f2fde38b146108cd578063f71d4440146108ed578063f7be8b001461090357600080fd5b8063d76996981461083a578063dd62ed3e1461085a578063df5f3d21146108ad57600080fd5b8063c424e777116100bb578063c424e777146107d4578063c5d32bb2146107f4578063cc1776d31461082457600080fd5b8063a6a94c011461076f578063a9059cbb1461079f578063bc8af3d1146107bf57600080fd5b8063809d458d1161014357806395d89b411161011d57806395d89b411461071a5780639ada70471461072f578063a457c2d71461074f57600080fd5b8063809d458d146106ba5780638a8c523c146106da5780638da5cb5b146106ef57600080fd5b80636724348211610174578063672434821461064257806370a0823114610662578063715018a6146106a557600080fd5b80634f7041a5146106125780635600231a1461062857600080fd5b806318160ddd11610248578063355496ca116101fc578063454aa669116101d6578063454aa669146105a557806345d29ef3146105c55780634626402b146105e557600080fd5b8063355496ca146105455780633950935114610565578063436d33401461058557600080fd5b806323b872dd1161022d57806323b872dd146104e95780632472020014610509578063313ce5671461052957600080fd5b806318160ddd146104b457806319039bc5146104c957600080fd5b80630de6b510116102aa57806314f4f38d1161028457806314f4f38d146104225780631694505e146104425780631698755f1461049457600080fd5b80630de6b510146103b55780630e375a5c146103e257806312185a391461040257600080fd5b806306fdde03116102db57806306fdde031461034d578063095ea7b31461036f5780630c9e36ea1461039f57600080fd5b8063048b87ba1461030257806306cf931b1461032b57600080fd5b366102fd57005b600080fd5b34801561030e57600080fd5b50610318600e5481565b6040519081526020015b60405180910390f35b34801561033757600080fd5b5061034b610346366004612663565b610919565b005b34801561035957600080fd5b5061036261092f565b604051610322919061269c565b34801561037b57600080fd5b5061038f61038a366004612708565b6109c1565b6040519015158152602001610322565b3480156103ab57600080fd5b5061031860135481565b3480156103c157600080fd5b506103186103d0366004612734565b60116020526000908152604090205481565b3480156103ee57600080fd5b5061034b6103fd366004612787565b6109db565b34801561040e57600080fd5b5061034b61041d36600461287c565b610a7a565b34801561042e57600080fd5b5061034b61043d366004612895565b610af7565b34801561044e57600080fd5b5060065461046f9073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610322565b3480156104a057600080fd5b5061034b6104af366004612708565b610ba4565b3480156104c057600080fd5b50600254610318565b3480156104d557600080fd5b5061034b6104e4366004612734565b610c7d565b3480156104f557600080fd5b5061038f6105043660046128b2565b610ccc565b34801561051557600080fd5b5061034b610524366004612895565b610cf0565b34801561053557600080fd5b5060405160128152602001610322565b34801561055157600080fd5b5061034b610560366004612663565b610dbe565b34801561057157600080fd5b5061038f610580366004612708565b610e1c565b34801561059157600080fd5b5061034b6105a036600461287c565b610e68565b3480156105b157600080fd5b5061034b6105c036600461287c565b610ee0565b3480156105d157600080fd5b5061034b6105e036600461287c565b610f2f565b3480156105f157600080fd5b50600f5461046f9073ffffffffffffffffffffffffffffffffffffffff1681565b34801561061e57600080fd5b5061031860095481565b34801561063457600080fd5b50600c5461038f9060ff1681565b34801561064e57600080fd5b5061034b61065d36600461293f565b610fa7565b34801561066e57600080fd5b5061031861067d366004612734565b73ffffffffffffffffffffffffffffffffffffffff1660009081526020819052604090205490565b3480156106b157600080fd5b5061034b6110a3565b3480156106c657600080fd5b5061034b6106d5366004612734565b6110b7565b3480156106e657600080fd5b5061034b61124e565b3480156106fb57600080fd5b5060055473ffffffffffffffffffffffffffffffffffffffff1661046f565b34801561072657600080fd5b5061036261132a565b34801561073b57600080fd5b5061034b61074a36600461287c565b611339565b34801561075b57600080fd5b5061038f61076a366004612708565b6113b1565b34801561077b57600080fd5b5061038f61078a366004612734565b60076020526000908152604090205460ff1681565b3480156107ab57600080fd5b5061038f6107ba366004612708565b611482565b3480156107cb57600080fd5b5061034b611490565b3480156107e057600080fd5b5061034b6107ef36600461287c565b611498565b34801561080057600080fd5b5061038f61080f366004612734565b60106020526000908152604090205460ff1681565b34801561083057600080fd5b50610318600a5481565b34801561084657600080fd5b5061034b610855366004612708565b611535565b34801561086657600080fd5b506103186108753660046129ab565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260016020908152604080832093909416825291909152205490565b3480156108b957600080fd5b5061034b6108c836600461287c565b611548565b3480156108d957600080fd5b5061034b6108e8366004612734565b611555565b3480156108f957600080fd5b50610318600b5481565b34801561090f57600080fd5b50610318600d5481565b61092161160c565b61092b828261168d565b5050565b60606003805461093e906129d9565b80601f016020809104026020016040519081016040528092919081815260200182805461096a906129d9565b80156109b75780601f1061098c576101008083540402835291602001916109b7565b820191906000526020600020905b81548152906001019060200180831161099a57829003601f168201915b5050505050905090565b6000336109cf818585611732565b60019150505b92915050565b6109e361160c565b60005b8251811015610a75578160106000858481518110610a0657610a06612a2c565b60209081029190910181015173ffffffffffffffffffffffffffffffffffffffff16825281019190915260400160002080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001691151591909117905580610a6d81612a8a565b9150506109e6565b505050565b610a8261160c565b6064811115610af2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f31303025204d617800000000000000000000000000000000000000000000000060448201526064015b60405180910390fd5b600a55565b610aff61160c565b600c5481151560ff909116151503610b73576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f53746174757320616c72656164792073657400000000000000000000000000006044820152606401610ae9565b600c80547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016911515919091179055565b610bac61160c565b8173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb610be760055473ffffffffffffffffffffffffffffffffffffffff1690565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e084901b16815273ffffffffffffffffffffffffffffffffffffffff9091166004820152602481018490526044016020604051808303816000875af1158015610c59573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a759190612ac2565b610c8561160c565b601280547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b600033610cda8582856118e5565b610ce58585856119bc565b506001949350505050565b610cf861160c565b801515601260149054906101000a900460ff16151503610d74576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f50726f74656374696f6e20616c726561647920736574000000000000000000006044820152606401610ae9565b6012805491151574010000000000000000000000000000000000000000027fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff909216919091179055565b610dc661160c565b73ffffffffffffffffffffffffffffffffffffffff91909116600090815260106020526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016911515919091179055565b33600081815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff871684529091528120549091906109cf9082908690610e63908790612adf565b611732565b610e7061160c565b6064811115610edb576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f31303025204d61780000000000000000000000000000000000000000000000006044820152606401610ae9565b600955565b610ee861160c565b60055460405173ffffffffffffffffffffffffffffffffffffffff9091169082156108fc029083906000818181858888f1935050505015801561092b573d6000803e3d6000fd5b610f3761160c565b6064811115610fa2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601c60248201527f576569676874206d757374206265206c657373207468616e20313030000000006044820152606401610ae9565b600e55565b610faf61160c565b8281811461103f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602d60248201527f4e756d626572206f6620726563697069656e747320616e6420616d6f756e747360448201527f20646f6e2774206d6174636821000000000000000000000000000000000000006064820152608401610ae9565b60005b8181101561109b576110933387878481811061106057611060612a2c565b90506020020160208101906110759190612734565b86868581811061108757611087612a2c565b90506020020135611de6565b600101611042565b505050505050565b6110ab61160c565b6110b56000612055565b565b6110bf61160c565b3073ffffffffffffffffffffffffffffffffffffffff821603611164576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f46656520416464726573732063616e6e6f7420626520436f6e7472616374204160448201527f64647265737300000000000000000000000000000000000000000000000000006064820152608401610ae9565b73ffffffffffffffffffffffffffffffffffffffff8116611207576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f46656520416464726573732063616e6e6f74206265207a65726f20616464726560448201527f73730000000000000000000000000000000000000000000000000000000000006064820152608401610ae9565b600f80547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b61125661160c565b60085460ff16156112c3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f54726164696e6720697320616c726561647920656e61626c65640000000000006044820152606401610ae9565b600880547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790556040517fb3da2db3dfc3778f99852546c6e9ab39ec253f9de7b0847afec61bd27878e923906113209043815260200190565b60405180910390a1565b60606004805461093e906129d9565b61134161160c565b60648111156113ac576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f31303025204d61780000000000000000000000000000000000000000000000006044820152606401610ae9565b600b55565b33600081815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff8716845290915281205490919083811015611475576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760448201527f207a65726f0000000000000000000000000000000000000000000000000000006064820152608401610ae9565b610ce58286868403611732565b6000336109cf8185856119bc565b6110b56120cc565b6114a061160c565b604b8110611530576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603360248201527f4c6f6e67657220706572696f6473206172656e2774207265616c6c792066726f60448201527f6e74756e6e696e672c2061726520746865793f000000000000000000000000006064820152608401610ae9565b601355565b61153d61160c565b61092b308383611732565b61155061160c565b600d55565b61155d61160c565b73ffffffffffffffffffffffffffffffffffffffff8116611600576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f64647265737300000000000000000000000000000000000000000000000000006064820152608401610ae9565b61160981612055565b50565b60055473ffffffffffffffffffffffffffffffffffffffff1633146110b5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610ae9565b73ffffffffffffffffffffffffffffffffffffffff8216600090815260076020526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016821580159190911790915561092b5760405173ffffffffffffffffffffffffffffffffffffffff831681527fa7c795ed1bc74d7b88cec74abc7260882a8ddb33a77a5d7ab8ce4c9cc06edddb9060200160405180910390a15050565b73ffffffffffffffffffffffffffffffffffffffff83166117d4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460448201527f72657373000000000000000000000000000000000000000000000000000000006064820152608401610ae9565b73ffffffffffffffffffffffffffffffffffffffff8216611877576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f20616464726560448201527f73730000000000000000000000000000000000000000000000000000000000006064820152608401610ae9565b73ffffffffffffffffffffffffffffffffffffffff83811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b73ffffffffffffffffffffffffffffffffffffffff8381166000908152600160209081526040808320938616835292905220547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146119b657818110156119a9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000006044820152606401610ae9565b6119b68484848403611732565b50505050565b60008111611a26576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f57687920697320697420736f2048454156593f3f3f00000000000000000000006044820152606401610ae9565b60085460009060ff16611aa65773ffffffffffffffffffffffffffffffffffffffff831660009081526010602052604090205460ff16158015611a8f575073ffffffffffffffffffffffffffffffffffffffff831660009081526007602052604090205460ff16155b15611aa657611a9d8361223b565b611aa63261223b565b60125474010000000000000000000000000000000000000000900460ff1615611bff5773ffffffffffffffffffffffffffffffffffffffff831660009081526010602052604090205460ff16158015611b25575073ffffffffffffffffffffffffffffffffffffffff831660009081526007602052604090205460ff16155b15611b535773ffffffffffffffffffffffffffffffffffffffff831660009081526011602052604090204390555b73ffffffffffffffffffffffffffffffffffffffff841660009081526010602052604090205460ff16158015611baf575073ffffffffffffffffffffffffffffffffffffffff841660009081526007602052604090205460ff16155b15611bff5760135473ffffffffffffffffffffffffffffffffffffffff8516600090815260116020526040902054611be79043612af2565b1015611bff57611bf68461223b565b611bff3261223b565b73ffffffffffffffffffffffffffffffffffffffff841660009081526010602052604090205460ff1680611c58575073ffffffffffffffffffffffffffffffffffffffff831660009081526010602052604090205460ff165b15611c6557506000611d8e565b611c6e846122e1565b15611ccb5750600b546040805173ffffffffffffffffffffffffffffffffffffffff86168152602081018490527f06cbcd62abf490bff55e603dd3a3c9e1c491dcc198aff6a3d01085b51bd85bbb910160405180910390a1611d8e565b73ffffffffffffffffffffffffffffffffffffffff831660009081526007602052604090205460ff1615611d5b57611d02326122e1565b15611d495750600b5460408051328152602081018490527f06cbcd62abf490bff55e603dd3a3c9e1c491dcc198aff6a3d01085b51bd85bbb910160405180910390a1611d4e565b50600a545b611d566120cc565b611d8e565b73ffffffffffffffffffffffffffffffffffffffff841660009081526007602052604090205460ff1615611d8e57506009545b80600003611da657611da1848484611de6565b6119b6565b60006064611db48385612b05565b611dbe9190612b1c565b9050611dcb853083611de6565b611ddf8585611dda8487612af2565b611de6565b5050505050565b73ffffffffffffffffffffffffffffffffffffffff8316611e89576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f20616460448201527f64726573730000000000000000000000000000000000000000000000000000006064820152608401610ae9565b73ffffffffffffffffffffffffffffffffffffffff8216611f2c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201527f65737300000000000000000000000000000000000000000000000000000000006064820152608401610ae9565b73ffffffffffffffffffffffffffffffffffffffff831660009081526020819052604090205481811015611fe2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e742065786365656473206260448201527f616c616e636500000000000000000000000000000000000000000000000000006064820152608401610ae9565b73ffffffffffffffffffffffffffffffffffffffff848116600081815260208181526040808320878703905593871680835291849020805487019055925185815290927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a36119b6565b6005805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b600c5460ff1615806120e55750600854610100900460ff165b156120ec57565b600880547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff16610100179055306000908152602081905260408120549050600d548110156121375750565b600e541561218557600060c882600e546121519190612b05565b61215b9190612b1c565b905061216f61216a8284612af2565b6123a3565b801561217f5761217f8147612528565b5061218e565b61218e816123a3565b600f54604051479173ffffffffffffffffffffffffffffffffffffffff169082156108fc029083906000818181858888f193505050501580156121d5573d6000803e3d6000fd5b5060408051838152602081018390527f1dd752215a032300374db6d4ee568fa4110c439ca62fbb86943ad33cd9f691bc910160405180910390a15050600880547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff169055565b60125473ffffffffffffffffffffffffffffffffffffffff1615611609576012546040517fa10566ca00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8381166004830152600160248301529091169063a10566ca90604401600060405180830381600087803b1580156122cd57600080fd5b505af1158015611ddf573d6000803e3d6000fd5b60125460009073ffffffffffffffffffffffffffffffffffffffff1615612396576012546040517f20bae1cb00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8481166004830152909116906320bae1cb90602401602060405180830381865afa158015612372573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109d59190612ac2565b506000919050565b919050565b60408051600280825260608201835260009260208301908036833701905050905030816000815181106123d8576123d8612a2c565b73ffffffffffffffffffffffffffffffffffffffff928316602091820292909201810191909152600654604080517fad5c46480000000000000000000000000000000000000000000000000000000081529051919093169263ad5c46489260048083019391928290030181865afa158015612457573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061247b9190612b57565b8160018151811061248e5761248e612a2c565b73ffffffffffffffffffffffffffffffffffffffff92831660209182029290920101526006546040517f791ac94700000000000000000000000000000000000000000000000000000000815291169063791ac947906124fa908590600090869030904290600401612b74565b600060405180830381600087803b15801561251457600080fd5b505af115801561109b573d6000803e3d6000fd5b60065473ffffffffffffffffffffffffffffffffffffffff1663f305d71982308560008061256b60055473ffffffffffffffffffffffffffffffffffffffff1690565b60405160e088901b7fffffffff0000000000000000000000000000000000000000000000000000000016815273ffffffffffffffffffffffffffffffffffffffff958616600482015260248101949094526044840192909252606483015290911660848201524260a482015260c40160606040518083038185885af11580156125f8573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190611ddf9190612bff565b73ffffffffffffffffffffffffffffffffffffffff8116811461160957600080fd5b803561239e8161261d565b801515811461160957600080fd5b803561239e8161264a565b6000806040838503121561267657600080fd5b82356126818161261d565b915060208301356126918161264a565b809150509250929050565b600060208083528351808285015260005b818110156126c9578581018301518582016040015282016126ad565b5060006040828601015260407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8301168501019250505092915050565b6000806040838503121561271b57600080fd5b82356127268161261d565b946020939093013593505050565b60006020828403121561274657600080fd5b81356127518161261d565b9392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000806040838503121561279a57600080fd5b823567ffffffffffffffff808211156127b257600080fd5b818501915085601f8301126127c657600080fd5b81356020828211156127da576127da612758565b8160051b6040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0603f8301168101818110868211171561281d5761281d612758565b60405292835281830193508481018201928984111561283b57600080fd5b948201945b83861015612860576128518661263f565b85529482019493820193612840565b965061286f9050878201612658565b9450505050509250929050565b60006020828403121561288e57600080fd5b5035919050565b6000602082840312156128a757600080fd5b81356127518161264a565b6000806000606084860312156128c757600080fd5b83356128d28161261d565b925060208401356128e28161261d565b929592945050506040919091013590565b60008083601f84011261290557600080fd5b50813567ffffffffffffffff81111561291d57600080fd5b6020830191508360208260051b850101111561293857600080fd5b9250929050565b6000806000806040858703121561295557600080fd5b843567ffffffffffffffff8082111561296d57600080fd5b612979888389016128f3565b9096509450602087013591508082111561299257600080fd5b5061299f878288016128f3565b95989497509550505050565b600080604083850312156129be57600080fd5b82356129c98161261d565b915060208301356126918161261d565b600181811c908216806129ed57607f821691505b602082108103612a26577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203612abb57612abb612a5b565b5060010190565b600060208284031215612ad457600080fd5b81516127518161264a565b808201808211156109d5576109d5612a5b565b818103818111156109d5576109d5612a5b565b80820281158282048414176109d5576109d5612a5b565b600082612b52577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b600060208284031215612b6957600080fd5b81516127518161261d565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b81811015612bd157845173ffffffffffffffffffffffffffffffffffffffff1683529383019391830191600101612b9f565b505073ffffffffffffffffffffffffffffffffffffffff969096166060850152505050608001529392505050565b600080600060608486031215612c1457600080fd5b835192506020840151915060408401519050925092509256fea264697066735822122068336ccf253564f3214f6b9055e75e6621bf01e01a593be5df40b986e0c4b44c64736f6c63430008130033
0x60806040526012805460ff60a01b1916600160a01b1790553480156200002457600080fd5b506040516200357a3803806200357a83398101604081905262000047916200060f565b6040518060400160405280600b81526020016a2a34b3b2b91028bab2b2b760a91b815250604051806040016040528060068152602001652a28aaa2a2a760d11b81525081600390816200009b9190620006e5565b506004620000aa8282620006e5565b505050620000c7620000c16200035660201b60201c565b6200035a565b620000f233620000da6012600a620008c6565b620000ec90655af3107a4000620008d7565b620003ac565b6000737a250d5630b4cf539739df2c5dacb4c659f2488d90506000816001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200014c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200017291906200060f565b6001600160a01b031663c9c6539630846001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015620001c0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001e691906200060f565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af115801562000234573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200025a91906200060f565b600680546001600160a01b0319166001600160a01b03851617905590506200028481600162000474565b600654620002a29030906001600160a01b0316600160ff1b620004e2565b600a600981905580556063600b55600c805460ff19166001179055620002c6601290565b620002d390600a620008c6565b620002e49064174876e800620008d7565b600d5550506000600e8190556004601355600f80546001600160a01b0319166001600160a01b0393841617815530825260106020526040808320805460ff1990811660019081179092553385528285208054821683179055925490941683529091208054909116909117905562000907565b3390565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6001600160a01b038216620004085760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f20616464726573730060448201526064015b60405180910390fd5b80600260008282546200041c9190620008f1565b90915550506001600160a01b038216600081815260208181526040808320805486019055518481527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a35b5050565b6001600160a01b0382166000908152600760205260409020805460ff1916821580159190911790915562000470576040516001600160a01b03831681527fa7c795ed1bc74d7b88cec74abc7260882a8ddb33a77a5d7ab8ce4c9cc06edddb9060200160405180910390a15050565b6001600160a01b038316620005465760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401620003ff565b6001600160a01b038216620005a95760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401620003ff565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b505050565b6000602082840312156200062257600080fd5b81516001600160a01b03811681146200063a57600080fd5b9392505050565b634e487b7160e01b600052604160045260246000fd5b600181811c908216806200066c57607f821691505b6020821081036200068d57634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200060a57600081815260208120601f850160051c81016020861015620006bc5750805b601f850160051c820191505b81811015620006dd57828155600101620006c8565b505050505050565b81516001600160401b0381111562000701576200070162000641565b620007198162000712845462000657565b8462000693565b602080601f831160018114620007515760008415620007385750858301515b600019600386901b1c1916600185901b178555620006dd565b600085815260208120601f198616915b82811015620007825788860151825594840194600190910190840162000761565b5085821015620007a15787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b634e487b7160e01b600052601160045260246000fd5b600181815b8085111562000808578160001904821115620007ec57620007ec620007b1565b80851615620007fa57918102915b93841c9390800290620007cc565b509250929050565b6000826200082157506001620008c0565b816200083057506000620008c0565b8160018114620008495760028114620008545762000874565b6001915050620008c0565b60ff841115620008685762000868620007b1565b50506001821b620008c0565b5060208310610133831016604e8410600b841016171562000899575081810a620008c0565b620008a58383620007c7565b8060001904821115620008bc57620008bc620007b1565b0290505b92915050565b60006200063a60ff84168362000810565b8082028115828204841417620008c057620008c0620007b1565b80820180821115620008c057620008c0620007b1565b612c6380620009176000396000f3fe6080604052600436106102f65760003560e01c80634f7041a51161018f578063a6a94c01116100e1578063d76996981161008a578063f2fde38b11610064578063f2fde38b146108cd578063f71d4440146108ed578063f7be8b001461090357600080fd5b8063d76996981461083a578063dd62ed3e1461085a578063df5f3d21146108ad57600080fd5b8063c424e777116100bb578063c424e777146107d4578063c5d32bb2146107f4578063cc1776d31461082457600080fd5b8063a6a94c011461076f578063a9059cbb1461079f578063bc8af3d1146107bf57600080fd5b8063809d458d1161014357806395d89b411161011d57806395d89b411461071a5780639ada70471461072f578063a457c2d71461074f57600080fd5b8063809d458d146106ba5780638a8c523c146106da5780638da5cb5b146106ef57600080fd5b80636724348211610174578063672434821461064257806370a0823114610662578063715018a6146106a557600080fd5b80634f7041a5146106125780635600231a1461062857600080fd5b806318160ddd11610248578063355496ca116101fc578063454aa669116101d6578063454aa669146105a557806345d29ef3146105c55780634626402b146105e557600080fd5b8063355496ca146105455780633950935114610565578063436d33401461058557600080fd5b806323b872dd1161022d57806323b872dd146104e95780632472020014610509578063313ce5671461052957600080fd5b806318160ddd146104b457806319039bc5146104c957600080fd5b80630de6b510116102aa57806314f4f38d1161028457806314f4f38d146104225780631694505e146104425780631698755f1461049457600080fd5b80630de6b510146103b55780630e375a5c146103e257806312185a391461040257600080fd5b806306fdde03116102db57806306fdde031461034d578063095ea7b31461036f5780630c9e36ea1461039f57600080fd5b8063048b87ba1461030257806306cf931b1461032b57600080fd5b366102fd57005b600080fd5b34801561030e57600080fd5b50610318600e5481565b6040519081526020015b60405180910390f35b34801561033757600080fd5b5061034b610346366004612663565b610919565b005b34801561035957600080fd5b5061036261092f565b604051610322919061269c565b34801561037b57600080fd5b5061038f61038a366004612708565b6109c1565b6040519015158152602001610322565b3480156103ab57600080fd5b5061031860135481565b3480156103c157600080fd5b506103186103d0366004612734565b60116020526000908152604090205481565b3480156103ee57600080fd5b5061034b6103fd366004612787565b6109db565b34801561040e57600080fd5b5061034b61041d36600461287c565b610a7a565b34801561042e57600080fd5b5061034b61043d366004612895565b610af7565b34801561044e57600080fd5b5060065461046f9073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610322565b3480156104a057600080fd5b5061034b6104af366004612708565b610ba4565b3480156104c057600080fd5b50600254610318565b3480156104d557600080fd5b5061034b6104e4366004612734565b610c7d565b3480156104f557600080fd5b5061038f6105043660046128b2565b610ccc565b34801561051557600080fd5b5061034b610524366004612895565b610cf0565b34801561053557600080fd5b5060405160128152602001610322565b34801561055157600080fd5b5061034b610560366004612663565b610dbe565b34801561057157600080fd5b5061038f610580366004612708565b610e1c565b34801561059157600080fd5b5061034b6105a036600461287c565b610e68565b3480156105b157600080fd5b5061034b6105c036600461287c565b610ee0565b3480156105d157600080fd5b5061034b6105e036600461287c565b610f2f565b3480156105f157600080fd5b50600f5461046f9073ffffffffffffffffffffffffffffffffffffffff1681565b34801561061e57600080fd5b5061031860095481565b34801561063457600080fd5b50600c5461038f9060ff1681565b34801561064e57600080fd5b5061034b61065d36600461293f565b610fa7565b34801561066e57600080fd5b5061031861067d366004612734565b73ffffffffffffffffffffffffffffffffffffffff1660009081526020819052604090205490565b3480156106b157600080fd5b5061034b6110a3565b3480156106c657600080fd5b5061034b6106d5366004612734565b6110b7565b3480156106e657600080fd5b5061034b61124e565b3480156106fb57600080fd5b5060055473ffffffffffffffffffffffffffffffffffffffff1661046f565b34801561072657600080fd5b5061036261132a565b34801561073b57600080fd5b5061034b61074a36600461287c565b611339565b34801561075b57600080fd5b5061038f61076a366004612708565b6113b1565b34801561077b57600080fd5b5061038f61078a366004612734565b60076020526000908152604090205460ff1681565b3480156107ab57600080fd5b5061038f6107ba366004612708565b611482565b3480156107cb57600080fd5b5061034b611490565b3480156107e057600080fd5b5061034b6107ef36600461287c565b611498565b34801561080057600080fd5b5061038f61080f366004612734565b60106020526000908152604090205460ff1681565b34801561083057600080fd5b50610318600a5481565b34801561084657600080fd5b5061034b610855366004612708565b611535565b34801561086657600080fd5b506103186108753660046129ab565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260016020908152604080832093909416825291909152205490565b3480156108b957600080fd5b5061034b6108c836600461287c565b611548565b3480156108d957600080fd5b5061034b6108e8366004612734565b611555565b3480156108f957600080fd5b50610318600b5481565b34801561090f57600080fd5b50610318600d5481565b61092161160c565b61092b828261168d565b5050565b60606003805461093e906129d9565b80601f016020809104026020016040519081016040528092919081815260200182805461096a906129d9565b80156109b75780601f1061098c576101008083540402835291602001916109b7565b820191906000526020600020905b81548152906001019060200180831161099a57829003601f168201915b5050505050905090565b6000336109cf818585611732565b60019150505b92915050565b6109e361160c565b60005b8251811015610a75578160106000858481518110610a0657610a06612a2c565b60209081029190910181015173ffffffffffffffffffffffffffffffffffffffff16825281019190915260400160002080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001691151591909117905580610a6d81612a8a565b9150506109e6565b505050565b610a8261160c565b6064811115610af2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f31303025204d617800000000000000000000000000000000000000000000000060448201526064015b60405180910390fd5b600a55565b610aff61160c565b600c5481151560ff909116151503610b73576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f53746174757320616c72656164792073657400000000000000000000000000006044820152606401610ae9565b600c80547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016911515919091179055565b610bac61160c565b8173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb610be760055473ffffffffffffffffffffffffffffffffffffffff1690565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e084901b16815273ffffffffffffffffffffffffffffffffffffffff9091166004820152602481018490526044016020604051808303816000875af1158015610c59573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a759190612ac2565b610c8561160c565b601280547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b600033610cda8582856118e5565b610ce58585856119bc565b506001949350505050565b610cf861160c565b801515601260149054906101000a900460ff16151503610d74576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f50726f74656374696f6e20616c726561647920736574000000000000000000006044820152606401610ae9565b6012805491151574010000000000000000000000000000000000000000027fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff909216919091179055565b610dc661160c565b73ffffffffffffffffffffffffffffffffffffffff91909116600090815260106020526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016911515919091179055565b33600081815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff871684529091528120549091906109cf9082908690610e63908790612adf565b611732565b610e7061160c565b6064811115610edb576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f31303025204d61780000000000000000000000000000000000000000000000006044820152606401610ae9565b600955565b610ee861160c565b60055460405173ffffffffffffffffffffffffffffffffffffffff9091169082156108fc029083906000818181858888f1935050505015801561092b573d6000803e3d6000fd5b610f3761160c565b6064811115610fa2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601c60248201527f576569676874206d757374206265206c657373207468616e20313030000000006044820152606401610ae9565b600e55565b610faf61160c565b8281811461103f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602d60248201527f4e756d626572206f6620726563697069656e747320616e6420616d6f756e747360448201527f20646f6e2774206d6174636821000000000000000000000000000000000000006064820152608401610ae9565b60005b8181101561109b576110933387878481811061106057611060612a2c565b90506020020160208101906110759190612734565b86868581811061108757611087612a2c565b90506020020135611de6565b600101611042565b505050505050565b6110ab61160c565b6110b56000612055565b565b6110bf61160c565b3073ffffffffffffffffffffffffffffffffffffffff821603611164576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f46656520416464726573732063616e6e6f7420626520436f6e7472616374204160448201527f64647265737300000000000000000000000000000000000000000000000000006064820152608401610ae9565b73ffffffffffffffffffffffffffffffffffffffff8116611207576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f46656520416464726573732063616e6e6f74206265207a65726f20616464726560448201527f73730000000000000000000000000000000000000000000000000000000000006064820152608401610ae9565b600f80547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b61125661160c565b60085460ff16156112c3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f54726164696e6720697320616c726561647920656e61626c65640000000000006044820152606401610ae9565b600880547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790556040517fb3da2db3dfc3778f99852546c6e9ab39ec253f9de7b0847afec61bd27878e923906113209043815260200190565b60405180910390a1565b60606004805461093e906129d9565b61134161160c565b60648111156113ac576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f31303025204d61780000000000000000000000000000000000000000000000006044820152606401610ae9565b600b55565b33600081815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff8716845290915281205490919083811015611475576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760448201527f207a65726f0000000000000000000000000000000000000000000000000000006064820152608401610ae9565b610ce58286868403611732565b6000336109cf8185856119bc565b6110b56120cc565b6114a061160c565b604b8110611530576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603360248201527f4c6f6e67657220706572696f6473206172656e2774207265616c6c792066726f60448201527f6e74756e6e696e672c2061726520746865793f000000000000000000000000006064820152608401610ae9565b601355565b61153d61160c565b61092b308383611732565b61155061160c565b600d55565b61155d61160c565b73ffffffffffffffffffffffffffffffffffffffff8116611600576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f64647265737300000000000000000000000000000000000000000000000000006064820152608401610ae9565b61160981612055565b50565b60055473ffffffffffffffffffffffffffffffffffffffff1633146110b5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610ae9565b73ffffffffffffffffffffffffffffffffffffffff8216600090815260076020526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016821580159190911790915561092b5760405173ffffffffffffffffffffffffffffffffffffffff831681527fa7c795ed1bc74d7b88cec74abc7260882a8ddb33a77a5d7ab8ce4c9cc06edddb9060200160405180910390a15050565b73ffffffffffffffffffffffffffffffffffffffff83166117d4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460448201527f72657373000000000000000000000000000000000000000000000000000000006064820152608401610ae9565b73ffffffffffffffffffffffffffffffffffffffff8216611877576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f20616464726560448201527f73730000000000000000000000000000000000000000000000000000000000006064820152608401610ae9565b73ffffffffffffffffffffffffffffffffffffffff83811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b73ffffffffffffffffffffffffffffffffffffffff8381166000908152600160209081526040808320938616835292905220547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146119b657818110156119a9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000006044820152606401610ae9565b6119b68484848403611732565b50505050565b60008111611a26576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f57687920697320697420736f2048454156593f3f3f00000000000000000000006044820152606401610ae9565b60085460009060ff16611aa65773ffffffffffffffffffffffffffffffffffffffff831660009081526010602052604090205460ff16158015611a8f575073ffffffffffffffffffffffffffffffffffffffff831660009081526007602052604090205460ff16155b15611aa657611a9d8361223b565b611aa63261223b565b60125474010000000000000000000000000000000000000000900460ff1615611bff5773ffffffffffffffffffffffffffffffffffffffff831660009081526010602052604090205460ff16158015611b25575073ffffffffffffffffffffffffffffffffffffffff831660009081526007602052604090205460ff16155b15611b535773ffffffffffffffffffffffffffffffffffffffff831660009081526011602052604090204390555b73ffffffffffffffffffffffffffffffffffffffff841660009081526010602052604090205460ff16158015611baf575073ffffffffffffffffffffffffffffffffffffffff841660009081526007602052604090205460ff16155b15611bff5760135473ffffffffffffffffffffffffffffffffffffffff8516600090815260116020526040902054611be79043612af2565b1015611bff57611bf68461223b565b611bff3261223b565b73ffffffffffffffffffffffffffffffffffffffff841660009081526010602052604090205460ff1680611c58575073ffffffffffffffffffffffffffffffffffffffff831660009081526010602052604090205460ff165b15611c6557506000611d8e565b611c6e846122e1565b15611ccb5750600b546040805173ffffffffffffffffffffffffffffffffffffffff86168152602081018490527f06cbcd62abf490bff55e603dd3a3c9e1c491dcc198aff6a3d01085b51bd85bbb910160405180910390a1611d8e565b73ffffffffffffffffffffffffffffffffffffffff831660009081526007602052604090205460ff1615611d5b57611d02326122e1565b15611d495750600b5460408051328152602081018490527f06cbcd62abf490bff55e603dd3a3c9e1c491dcc198aff6a3d01085b51bd85bbb910160405180910390a1611d4e565b50600a545b611d566120cc565b611d8e565b73ffffffffffffffffffffffffffffffffffffffff841660009081526007602052604090205460ff1615611d8e57506009545b80600003611da657611da1848484611de6565b6119b6565b60006064611db48385612b05565b611dbe9190612b1c565b9050611dcb853083611de6565b611ddf8585611dda8487612af2565b611de6565b5050505050565b73ffffffffffffffffffffffffffffffffffffffff8316611e89576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f20616460448201527f64726573730000000000000000000000000000000000000000000000000000006064820152608401610ae9565b73ffffffffffffffffffffffffffffffffffffffff8216611f2c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201527f65737300000000000000000000000000000000000000000000000000000000006064820152608401610ae9565b73ffffffffffffffffffffffffffffffffffffffff831660009081526020819052604090205481811015611fe2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e742065786365656473206260448201527f616c616e636500000000000000000000000000000000000000000000000000006064820152608401610ae9565b73ffffffffffffffffffffffffffffffffffffffff848116600081815260208181526040808320878703905593871680835291849020805487019055925185815290927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a36119b6565b6005805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b600c5460ff1615806120e55750600854610100900460ff165b156120ec57565b600880547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff16610100179055306000908152602081905260408120549050600d548110156121375750565b600e541561218557600060c882600e546121519190612b05565b61215b9190612b1c565b905061216f61216a8284612af2565b6123a3565b801561217f5761217f8147612528565b5061218e565b61218e816123a3565b600f54604051479173ffffffffffffffffffffffffffffffffffffffff169082156108fc029083906000818181858888f193505050501580156121d5573d6000803e3d6000fd5b5060408051838152602081018390527f1dd752215a032300374db6d4ee568fa4110c439ca62fbb86943ad33cd9f691bc910160405180910390a15050600880547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff169055565b60125473ffffffffffffffffffffffffffffffffffffffff1615611609576012546040517fa10566ca00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8381166004830152600160248301529091169063a10566ca90604401600060405180830381600087803b1580156122cd57600080fd5b505af1158015611ddf573d6000803e3d6000fd5b60125460009073ffffffffffffffffffffffffffffffffffffffff1615612396576012546040517f20bae1cb00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8481166004830152909116906320bae1cb90602401602060405180830381865afa158015612372573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109d59190612ac2565b506000919050565b919050565b60408051600280825260608201835260009260208301908036833701905050905030816000815181106123d8576123d8612a2c565b73ffffffffffffffffffffffffffffffffffffffff928316602091820292909201810191909152600654604080517fad5c46480000000000000000000000000000000000000000000000000000000081529051919093169263ad5c46489260048083019391928290030181865afa158015612457573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061247b9190612b57565b8160018151811061248e5761248e612a2c565b73ffffffffffffffffffffffffffffffffffffffff92831660209182029290920101526006546040517f791ac94700000000000000000000000000000000000000000000000000000000815291169063791ac947906124fa908590600090869030904290600401612b74565b600060405180830381600087803b15801561251457600080fd5b505af115801561109b573d6000803e3d6000fd5b60065473ffffffffffffffffffffffffffffffffffffffff1663f305d71982308560008061256b60055473ffffffffffffffffffffffffffffffffffffffff1690565b60405160e088901b7fffffffff0000000000000000000000000000000000000000000000000000000016815273ffffffffffffffffffffffffffffffffffffffff958616600482015260248101949094526044840192909252606483015290911660848201524260a482015260c40160606040518083038185885af11580156125f8573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190611ddf9190612bff565b73ffffffffffffffffffffffffffffffffffffffff8116811461160957600080fd5b803561239e8161261d565b801515811461160957600080fd5b803561239e8161264a565b6000806040838503121561267657600080fd5b82356126818161261d565b915060208301356126918161264a565b809150509250929050565b600060208083528351808285015260005b818110156126c9578581018301518582016040015282016126ad565b5060006040828601015260407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8301168501019250505092915050565b6000806040838503121561271b57600080fd5b82356127268161261d565b946020939093013593505050565b60006020828403121561274657600080fd5b81356127518161261d565b9392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000806040838503121561279a57600080fd5b823567ffffffffffffffff808211156127b257600080fd5b818501915085601f8301126127c657600080fd5b81356020828211156127da576127da612758565b8160051b6040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0603f8301168101818110868211171561281d5761281d612758565b60405292835281830193508481018201928984111561283b57600080fd5b948201945b83861015612860576128518661263f565b85529482019493820193612840565b965061286f9050878201612658565b9450505050509250929050565b60006020828403121561288e57600080fd5b5035919050565b6000602082840312156128a757600080fd5b81356127518161264a565b6000806000606084860312156128c757600080fd5b83356128d28161261d565b925060208401356128e28161261d565b929592945050506040919091013590565b60008083601f84011261290557600080fd5b50813567ffffffffffffffff81111561291d57600080fd5b6020830191508360208260051b850101111561293857600080fd5b9250929050565b6000806000806040858703121561295557600080fd5b843567ffffffffffffffff8082111561296d57600080fd5b612979888389016128f3565b9096509450602087013591508082111561299257600080fd5b5061299f878288016128f3565b95989497509550505050565b600080604083850312156129be57600080fd5b82356129c98161261d565b915060208301356126918161261d565b600181811c908216806129ed57607f821691505b602082108103612a26577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203612abb57612abb612a5b565b5060010190565b600060208284031215612ad457600080fd5b81516127518161264a565b808201808211156109d5576109d5612a5b565b818103818111156109d5576109d5612a5b565b80820281158282048414176109d5576109d5612a5b565b600082612b52577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b600060208284031215612b6957600080fd5b81516127518161261d565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b81811015612bd157845173ffffffffffffffffffffffffffffffffffffffff1683529383019391830191600101612b9f565b505073ffffffffffffffffffffffffffffffffffffffff969096166060850152505050608001529392505050565b600080600060608486031215612c1457600080fd5b835192506020840151915060408401519050925092509256fea264697066735822122068336ccf253564f3214f6b9055e75e6621bf01e01a593be5df40b986e0c4b44c64736f6c63430008130033000000000000000000000000c23d371f60ac74375cc4e2c0d17d1cc51942aaad