0x60a060405234801561001057600080fd5b5061001961002a565b6001600160a01b0316608052610067565b60006040516100389061005a565b604051809103906000f080158015610054573d6000803e3d6000fd5b50905090565b6113a58061071783390190565b60805161068f61008860003960008181605601526101c3015261068f6000f3fe608060405234801561001057600080fd5b506004361061004c5760003560e01c80635c60da1b146100515780636a373128146100a257806393c44847146100b5578063f0118ba6146100fe575b600080fd5b6100787f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b6100786100b0366004610449565b610111565b6100f16040518060400160405280600581526020017f352e372e3100000000000000000000000000000000000000000000000000000081525081565b60405161009991906104f1565b61007861010c366004610449565b61013b565b6000806000610121868686610190565b9150915061012f8282610200565b925050505b9392505050565b600080600061014b868686610190565b91509150600061015b8383610200565b905073ffffffffffffffffffffffffffffffffffffffff81163b61012f576101856000848461021c565b979650505050505050565b6000606060008585856040516020016101ab93929190610542565b604051602081830303815290604052905060006101e87f000000000000000000000000000000000000000000000000000000000000000083610380565b82516020909301929092209791965090945050505050565b8051602082012060009061021484826103f6565b949350505050565b60008347101561028d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f437265617465323a20696e73756666696369656e742062616c616e636500000060448201526064015b60405180910390fd5b81516000036102f8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f437265617465323a2062797465636f6465206c656e677468206973207a65726f6044820152606401610284565b8282516020840186f5905073ffffffffffffffffffffffffffffffffffffffff8116610134576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601960248201527f437265617465323a204661696c6564206f6e206465706c6f79000000000000006044820152606401610284565b60607f600b380380600b3d393df3363d3d373d3d3d3d60368038038091363936013d738360601b7f5af43d3d93803e603457fd5bf3000000000000000000000000000000000000008485516040516020016103df9594939291906105da565b604051602081830303815290604052905092915050565b60006101348383306000604051836040820152846020820152828152600b8101905060ff815360559020949350505050565b80356bffffffffffffffffffffffff8116811461044457600080fd5b919050565b60008060006040848603121561045e57600080fd5b833567ffffffffffffffff8082111561047657600080fd5b818601915086601f83011261048a57600080fd5b81358181111561049957600080fd5b8760208260061b85010111156104ae57600080fd5b6020928301955093506104c49186019050610428565b90509250925092565b60005b838110156104e85781810151838201526020016104d0565b50506000910152565b60208152600082518060208401526105108160408501602087016104cd565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169190910160400192915050565b6040808252818101849052600090856060840183805b888110156105b657833573ffffffffffffffffffffffffffffffffffffffff8116808214610584578384fd5b84525060206bffffffffffffffffffffffff6105a1868301610428565b16908401529284019291840191600101610558565b50508093505050506bffffffffffffffffffffffff83166020830152949350505050565b8581527fffffffffffffffffffffffffffffffffffffffff000000000000000000000000851660208201527fffffffffffffffffffffffffff0000000000000000000000000000000000000084166034820152600083516106428160418501602088016104cd565b60419201918201929092526061019594505050505056fea264697066735822122038e379539767215d1a587ae26fcd9a9162c2c75030a0039ae23066c50519da3964736f6c63430008130033608060405234801561001057600080fd5b50611385806100206000396000f3fe608060405234801561001057600080fd5b50600436106100725760003560e01c8063ec29dbde11610050578063ec29dbde14610100578063ed2a2f9d14610121578063f7e83aee1461014a57600080fd5b806322a8d6fc146100775780636465e69f1461009d57806393c44847146100b7575b600080fd5b61008a610085366004610cf7565b61016d565b6040519081526020015b60405180910390f35b6100a5600981565b60405160ff9091168152602001610094565b6100f36040518060400160405280600581526020017f352e372e3100000000000000000000000000000000000000000000000000000081525081565b6040516100949190610d39565b61011361010e366004610cf7565b610182565b604051610094929190610da5565b61012d6402540be40081565b6040516bffffffffffffffffffffffff9091168152602001610094565b61015d610158366004610e2e565b6101ad565b6040519015158152602001610094565b600061017983836104bc565b90505b92915050565b6060600061018e610552565b8060200190518101906101a19190610f91565b915091505b9250929050565b6000806101bc86868686610582565b90506000806101cb8686610182565b915091506000816bffffffffffffffffffffffff1611801561020057506402540be4006bffffffffffffffffffffffff821611155b61026b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f496e76616c6964207468726573686f6c6420776569676874000000000000000060448201526064015b60405180910390fd5b6000610281835161027c8b8b61016d565b61078a565b905060008060005b846bffffffffffffffffffffffff16826bffffffffffffffffffffffff161080156102b357508381105b15610424576000610303886102c98f8f866107a0565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506107ba92505050565b90505b848410801561035e575086848151811061032257610322611098565b60200260200101516000015173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614155b156103735761036c846110f6565b9350610306565b8484106103dc576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f496e76616c6964207369676e65720000000000000000000000000000000000006044820152606401610262565b8684815181106103ee576103ee611098565b60200260200101516020015183610405919061112e565b9250610410846110f6565b9350508061041d906110f6565b9050610289565b50836bffffffffffffffffffffffff16816bffffffffffffffffffffffff1610156104ab576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f496e73756666696369656e742076616c696461746f72207765696768740000006044820152606401610262565b5060019a9950505050505050505050565b6000806104cb6104488461115a565b90506104d860418261119c565b1561053f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601960248201527f496e76616c6964207369676e617475726573206c656e677468000000000000006044820152606401610262565b61054a6041826111b0565b949350505050565b60608060203603803580820391506040519250602081018301604052808352602083018183823750919392505050565b600061058e85856107de565b63ffffffff1661059e8686610814565b63ffffffff16111561060c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f496e76616c6964206d65726b6c6520696e646578206d657461646174610000006044820152606401610262565b600061066f61065085858080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061083592505050565b61065a8888610840565b6106648989610814565b63ffffffff16610876565b905061078061067e858561091f565b610688888861092f565b836106938a8a6107de565b61069d8b8b610958565b604080517fffffffff0000000000000000000000000000000000000000000000000000000060e097881b811660208084019190915260248301979097527f48595045524c414e45000000000000000000000000000000000000000000000060448301528251808303602d018152604d83018452805190880120606d830152608d8201959095529290951b90921660ad82015260b1808201929092528351808203909201825260d10190925281519101207f19457468657265756d205369676e6564204d6573736167653a0a3332000000006000908152601c91909152603c902090565b9695505050505050565b60008183106107995781610179565b5090919050565b3660006107ae858585610969565b91509150935093915050565b60008060006107c985856109af565b915091506107d6816109f1565b509392505050565b600082610444836107f08260046111c4565b61ffff1692610801939291906111df565b61080a91611209565b60e01c9392505050565b600082602083610825826004611251565b60ff1692610801939291906111df565b805160209091012090565b610848610c96565b82604483610858610400836111c4565b61ffff1692610869939291906111df565b810190610179919061126a565b8260005b60208110156107d657600183821c16600085836020811061089d5761089d611098565b60200201519050816001036108dd57604080516020810183905290810185905260600160405160208183030381529060405280519060200120935061090a565b60408051602081018690529081018290526060016040516020818303038152906040528051906020012093505b50508080610917906110f6565b91505061087a565b60006108016009600584866111df565b600082818361093f826020611251565b60ff169261094f939291906111df565b610179916112e9565b60008260248361093f826020611251565b36600080610978604185611325565b6109849061044861133c565b9050600061099360418361133c565b90506109a18183888a6111df565b935093505050935093915050565b60008082516041036109e55760208301516040840151606085015160001a6109d987828585610ba7565b945094505050506101a6565b506000905060026101a6565b6000816004811115610a0557610a05610e9a565b03610a0d5750565b6001816004811115610a2157610a21610e9a565b03610a88576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f45434453413a20696e76616c6964207369676e617475726500000000000000006044820152606401610262565b6002816004811115610a9c57610a9c610e9a565b03610b03576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e677468006044820152606401610262565b6003816004811115610b1757610b17610e9a565b03610ba4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c60448201527f75650000000000000000000000000000000000000000000000000000000000006064820152608401610262565b50565b6000807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a0831115610bde5750600090506003610c8d565b6040805160008082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa158015610c32573d6000803e3d6000fd5b50506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0015191505073ffffffffffffffffffffffffffffffffffffffff8116610c8657600060019250925050610c8d565b9150600090505b94509492505050565b6040518061040001604052806020906020820280368337509192915050565b60008083601f840112610cc757600080fd5b50813567ffffffffffffffff811115610cdf57600080fd5b6020830191508360208285010111156101a657600080fd5b60008060208385031215610d0a57600080fd5b823567ffffffffffffffff811115610d2157600080fd5b610d2d85828601610cb5565b90969095509350505050565b600060208083528351808285015260005b81811015610d6657858101830151858201604001528201610d4a565b5060006040828601015260407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8301168501019250505092915050565b60408082528351828201819052600091906020906060850190828801855b82811015610e0c578151805173ffffffffffffffffffffffffffffffffffffffff1685528501516bffffffffffffffffffffffff16858501529285019290840190600101610dc3565b5050506bffffffffffffffffffffffff95909516930192909252509092915050565b60008060008060408587031215610e4457600080fd5b843567ffffffffffffffff80821115610e5c57600080fd5b610e6888838901610cb5565b90965094506020870135915080821115610e8157600080fd5b50610e8e87828801610cb5565b95989497509550505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040805190810167ffffffffffffffff81118282101715610f1b57610f1b610ec9565b60405290565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff81118282101715610f6857610f68610ec9565b604052919050565b80516bffffffffffffffffffffffff81168114610f8c57600080fd5b919050565b6000806040808486031215610fa557600080fd5b835167ffffffffffffffff80821115610fbd57600080fd5b818601915086601f830112610fd157600080fd5b8151602082821115610fe557610fe5610ec9565b610ff3818360051b01610f21565b828152818101935060069290921b84018101918983111561101357600080fd5b938101935b8285101561107d5785858b0312156110305760008081fd5b611038610ef8565b855173ffffffffffffffffffffffffffffffffffffffff8116811461105d5760008081fd5b815261106a868401610f70565b8184015284529385019392810192611018565b965061108a888201610f70565b955050505050509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203611127576111276110c7565b5060010190565b6bffffffffffffffffffffffff818116838216019080821115611153576111536110c7565b5092915050565b8181038181111561017c5761017c6110c7565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000826111ab576111ab61116d565b500690565b6000826111bf576111bf61116d565b500490565b61ffff818116838216019080821115611153576111536110c7565b600080858511156111ef57600080fd5b838611156111fc57600080fd5b5050820193919092039150565b7fffffffff0000000000000000000000000000000000000000000000000000000081358181169160048510156112495780818660040360031b1b83161692505b505092915050565b60ff818116838216019081111561017c5761017c6110c7565b600061040080838503121561127e57600080fd5b83601f84011261128d57600080fd5b60405181810181811067ffffffffffffffff821117156112af576112af610ec9565b6040529083019080858311156112c457600080fd5b845b838110156112de5780358252602091820191016112c6565b509095945050505050565b8035602083101561017c577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff602084900360031b1b1692915050565b808202811582820484141761017c5761017c6110c7565b8082018082111561017c5761017c6110c756fea2646970667358221220515a06315250499d1de24710ab993ddc7ded3ed3ca03dbb3dee8763f00a572cf64736f6c63430008130033