0x6080604052610d05600955610d05600a556001600b5566071afd498d0000600c55600a600d556032600e556002600f556000601060006101000a81548160ff0219169083151502179055503480156200005757600080fd5b506040518060400160405280600c81526020017f4d656761204d63706570657300000000000000000000000000000000000000008152506040518060400160405280600281526020017f4d4d0000000000000000000000000000000000000000000000000000000000008152508160029081620000d5919062000997565b508060039081620000e7919062000997565b5050506000620000fc620001b560201b60201c565b905080600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a350620001af33600f54620001bd60201b60201c565b62000c56565b600033905090565b620001df828260405180602001604052806000815250620001e360201b60201c565b5050565b620001f88383836001620001fd60201b60201c565b505050565b600080549050600073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16036200026a576040517f2e07630000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008403620002a5576040517fb562e8dd00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b620002ba60008683876200055060201b60201c565b83600560008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160008282829054906101000a900467ffffffffffffffff160192506101000a81548167ffffffffffffffff021916908367ffffffffffffffff16021790555083600560008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160088282829054906101000a900467ffffffffffffffff160192506101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550846004600083815260200190815260200160002060000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550426004600083815260200190815260200160002060000160146101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550600081905060005b858110156200052b57818773ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4838015620004dd5750620004db60008884886200055660201b60201c565b155b1562000515576040517fd1a57ed600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8180600101925050808060010191505062000458565b508060008190555050620005496000868387620006f460201b60201c565b5050505050565b50505050565b6000620005848473ffffffffffffffffffffffffffffffffffffffff16620006fa60201b62001ccc1760201c565b15620006e7578373ffffffffffffffffffffffffffffffffffffffff1663150b7a02620005b6620001b560201b60201c565b8786866040518563ffffffff1660e01b8152600401620005da949392919062000b6e565b6020604051808303816000875af19250505080156200061957506040513d601f19601f8201168201806040525081019062000616919062000c24565b60015b62000696573d80600081146200064c576040519150601f19603f3d011682016040523d82523d6000602084013e62000651565b606091505b5060008151036200068e576040517fd1a57ed600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b805181602001fd5b63150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614915050620006ec565b600190505b949350505050565b50505050565b6000808273ffffffffffffffffffffffffffffffffffffffff163b119050919050565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806200079f57607f821691505b602082108103620007b557620007b462000757565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b6000600883026200081f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82620007e0565b6200082b8683620007e0565b95508019841693508086168417925050509392505050565b6000819050919050565b6000819050919050565b600062000878620008726200086c8462000843565b6200084d565b62000843565b9050919050565b6000819050919050565b620008948362000857565b620008ac620008a3826200087f565b848454620007ed565b825550505050565b600090565b620008c3620008b4565b620008d081848462000889565b505050565b5b81811015620008f857620008ec600082620008b9565b600181019050620008d6565b5050565b601f82111562000947576200091181620007bb565b6200091c84620007d0565b810160208510156200092c578190505b620009446200093b85620007d0565b830182620008d5565b50505b505050565b600082821c905092915050565b60006200096c600019846008026200094c565b1980831691505092915050565b600062000987838362000959565b9150826002028217905092915050565b620009a2826200071d565b67ffffffffffffffff811115620009be57620009bd62000728565b5b620009ca825462000786565b620009d7828285620008fc565b600060209050601f83116001811462000a0f5760008415620009fa578287015190505b62000a06858262000979565b86555062000a76565b601f19841662000a1f86620007bb565b60005b8281101562000a495784890151825560018201915060208501945060208101905062000a22565b8683101562000a69578489015162000a65601f89168262000959565b8355505b6001600288020188555050505b505050505050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600062000aab8262000a7e565b9050919050565b62000abd8162000a9e565b82525050565b62000ace8162000843565b82525050565b600081519050919050565b600082825260208201905092915050565b60005b8381101562000b1057808201518184015260208101905062000af3565b60008484015250505050565b6000601f19601f8301169050919050565b600062000b3a8262000ad4565b62000b46818562000adf565b935062000b5881856020860162000af0565b62000b638162000b1c565b840191505092915050565b600060808201905062000b85600083018762000ab2565b62000b94602083018662000ab2565b62000ba3604083018562000ac3565b818103606083015262000bb7818462000b2d565b905095945050505050565b600080fd5b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b62000bfe8162000bc7565b811462000c0a57600080fd5b50565b60008151905062000c1e8162000bf3565b92915050565b60006020828403121562000c3d5762000c3c62000bc2565b5b600062000c4d8482850162000c0d565b91505092915050565b613ec18062000c666000396000f3fe6080604052600436106102045760003560e01c80636d7c4a4b11610118578063a7027357116100a0578063d5abeb011161006f578063d5abeb0114610734578063e985e9c51461075f578063f2fde38b1461079c578063f892c6e2146107c5578063f968adbe146107f057610204565b8063a702735714610678578063b88d4fde146106a3578063c87b56dd146106cc578063d12397301461070957610204565b80638da5cb5b116100e75780638da5cb5b146105a557806391b7f5ed146105d057806395d89b41146105f9578063a035b1fe14610624578063a22cb4651461064f57610204565b80636d7c4a4b1461051157806370a082311461053a578063715018a6146105775780637ba5e6211461058e57610204565b80632f745c591161019b578063453c23101161016a578063453c2310146104185780634f6ccce71461044357806355f804b3146104805780636352211e146104a95780636c0360eb146104e657610204565b80632f745c591461037057806336f5b9a3146103ad5780633ccfd60b146103d857806342842e0e146103ef57610204565b80630c23bb3f116101d75780630c23bb3f146102d757806318160ddd1461030057806323b872dd1461032b5780632db115441461035457610204565b806301ffc9a71461020957806306fdde0314610246578063081812fc14610271578063095ea7b3146102ae575b600080fd5b34801561021557600080fd5b50610230600480360381019061022b9190612d85565b61081b565b60405161023d9190612dcd565b60405180910390f35b34801561025257600080fd5b5061025b610965565b6040516102689190612e78565b60405180910390f35b34801561027d57600080fd5b5061029860048036038101906102939190612ed0565b6109f7565b6040516102a59190612f3e565b60405180910390f35b3480156102ba57600080fd5b506102d560048036038101906102d09190612f85565b610a73565b005b3480156102e357600080fd5b506102fe60048036038101906102f99190612ed0565b610b7d565b005b34801561030c57600080fd5b50610315610c03565b6040516103229190612fd4565b60405180910390f35b34801561033757600080fd5b50610352600480360381019061034d9190612fef565b610c11565b005b61036e60048036038101906103699190612ed0565b610c21565b005b34801561037c57600080fd5b5061039760048036038101906103929190612f85565b610df6565b6040516103a49190612fd4565b60405180910390f35b3480156103b957600080fd5b506103c2610fcc565b6040516103cf9190612fd4565b60405180910390f35b3480156103e457600080fd5b506103ed610fd2565b005b3480156103fb57600080fd5b5061041660048036038101906104119190612fef565b6110fd565b005b34801561042457600080fd5b5061042d61111d565b60405161043a9190612fd4565b60405180910390f35b34801561044f57600080fd5b5061046a60048036038101906104659190612ed0565b611123565b6040516104779190612fd4565b60405180910390f35b34801561048c57600080fd5b506104a760048036038101906104a29190613177565b611267565b005b3480156104b557600080fd5b506104d060048036038101906104cb9190612ed0565b6112f6565b6040516104dd9190612f3e565b60405180910390f35b3480156104f257600080fd5b506104fb61130c565b6040516105089190612e78565b60405180910390f35b34801561051d57600080fd5b5061053860048036038101906105339190612ed0565b61139a565b005b34801561054657600080fd5b50610561600480360381019061055c91906131c0565b611420565b60405161056e9190612fd4565b60405180910390f35b34801561058357600080fd5b5061058c6114ef565b005b34801561059a57600080fd5b506105a361162c565b005b3480156105b157600080fd5b506105ba6116d4565b6040516105c79190612f3e565b60405180910390f35b3480156105dc57600080fd5b506105f760048036038101906105f29190612ed0565b6116fe565b005b34801561060557600080fd5b5061060e611784565b60405161061b9190612e78565b60405180910390f35b34801561063057600080fd5b50610639611816565b6040516106469190612fd4565b60405180910390f35b34801561065b57600080fd5b5061067660048036038101906106719190613219565b61181c565b005b34801561068457600080fd5b5061068d611993565b60405161069a9190612fd4565b60405180910390f35b3480156106af57600080fd5b506106ca60048036038101906106c591906132fa565b611999565b005b3480156106d857600080fd5b506106f360048036038101906106ee9190612ed0565b6119ec565b6040516107009190612e78565b60405180910390f35b34801561071557600080fd5b5061071e611a68565b60405161072b9190612dcd565b60405180910390f35b34801561074057600080fd5b50610749611a7b565b6040516107569190612fd4565b60405180910390f35b34801561076b57600080fd5b506107866004803603810190610781919061337d565b611a81565b6040516107939190612dcd565b60405180910390f35b3480156107a857600080fd5b506107c360048036038101906107be91906131c0565b611b15565b005b3480156107d157600080fd5b506107da611cc0565b6040516107e79190612fd4565b60405180910390f35b3480156107fc57600080fd5b50610805611cc6565b6040516108129190612fd4565b60405180910390f35b60007f80ac58cd000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806108e657507f5b5e139f000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b8061094e57507f780e9d63000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b8061095e575061095d82611cef565b5b9050919050565b606060028054610974906133ec565b80601f01602080910402602001604051908101604052809291908181526020018280546109a0906133ec565b80156109ed5780601f106109c2576101008083540402835291602001916109ed565b820191906000526020600020905b8154815290600101906020018083116109d057829003601f168201915b5050505050905090565b6000610a0282611d59565b610a38576040517fcf4700e400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6006600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b6000610a7e826112f6565b90508073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610ae5576040517f943f7b8c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16610b04611d93565b73ffffffffffffffffffffffffffffffffffffffff1614158015610b365750610b3481610b2f611d93565b611a81565b155b15610b6d576040517fcfb3b94200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610b78838383611d9b565b505050565b610b85611d93565b73ffffffffffffffffffffffffffffffffffffffff16610ba36116d4565b73ffffffffffffffffffffffffffffffffffffffff1614610bf9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bf090613469565b60405180910390fd5b80600a8190555050565b600060015460005403905090565b610c1c838383611e4d565b505050565b601060009054906101000a900460ff16610c70576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c67906134d5565b60405180910390fd5b6001600954610c7f9190613524565b81610c88610c03565b610c929190613524565b10610cd2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cc9906135a4565b60405180910390fd5b6000600c5490506000600e549050600a54610ceb610c03565b108015610d0057506000610cfe3361233c565b145b8015610d0e5750600b548311155b15610d1d5760009150600b5490505b8083610d283361233c565b610d329190613524565b1115610d73576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d6a90613610565b60405180910390fd5b60008390506000610d833361233c565b03610d9857600184610d959190613630565b90505b8281610da49190613664565b341015610de6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ddd906136f2565b60405180910390fd5b610df0338561240b565b50505050565b6000610e0183611420565b8210610e39576040517f0ddac30e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008054905060008060005b83811015610fc1576000600460008381526020019081526020016000206040518060600160405290816000820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016000820160149054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815260200160008201601c9054906101000a900460ff1615151515815250509050806040015115610f225750610fb4565b600073ffffffffffffffffffffffffffffffffffffffff16816000015173ffffffffffffffffffffffffffffffffffffffff1614610f6257806000015192505b8773ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610fb257868403610fa9578195505050505050610fc6565b83806001019450505b505b8080600101915050610e45565b600080fd5b92915050565b600f5481565b610fda611d93565b73ffffffffffffffffffffffffffffffffffffffff16610ff86116d4565b73ffffffffffffffffffffffffffffffffffffffff161461104e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161104590613469565b60405180910390fd5b60003373ffffffffffffffffffffffffffffffffffffffff164760405161107490613743565b60006040518083038185875af1925050503d80600081146110b1576040519150601f19603f3d011682016040523d82523d6000602084013e6110b6565b606091505b50509050806110fa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110f1906137a4565b60405180910390fd5b50565b61111883838360405180602001604052806000815250611999565b505050565b600e5481565b60008060005490506000805b8281101561122f576000600460008381526020019081526020016000206040518060600160405290816000820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016000820160149054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815260200160008201601c9054906101000a900460ff16151515158152505090508060400151611221578583036112185781945050505050611262565b82806001019350505b50808060010191505061112f565b506040517fa723001c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b919050565b61126f611d93565b73ffffffffffffffffffffffffffffffffffffffff1661128d6116d4565b73ffffffffffffffffffffffffffffffffffffffff16146112e3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112da90613469565b60405180910390fd5b80601190816112f29190613970565b5050565b600061130182612429565b600001519050919050565b60118054611319906133ec565b80601f0160208091040260200160405190810160405280929190818152602001828054611345906133ec565b80156113925780601f1061136757610100808354040283529160200191611392565b820191906000526020600020905b81548152906001019060200180831161137557829003601f168201915b505050505081565b6113a2611d93565b73ffffffffffffffffffffffffffffffffffffffff166113c06116d4565b73ffffffffffffffffffffffffffffffffffffffff1614611416576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161140d90613469565b60405180910390fd5b80600b8190555050565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611487576040517f8f4eb60400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160009054906101000a900467ffffffffffffffff1667ffffffffffffffff169050919050565b6114f7611d93565b73ffffffffffffffffffffffffffffffffffffffff166115156116d4565b73ffffffffffffffffffffffffffffffffffffffff161461156b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161156290613469565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a36000600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b611634611d93565b73ffffffffffffffffffffffffffffffffffffffff166116526116d4565b73ffffffffffffffffffffffffffffffffffffffff16146116a8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161169f90613469565b60405180910390fd5b601060009054906101000a900460ff1615601060006101000a81548160ff021916908315150217905550565b6000600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b611706611d93565b73ffffffffffffffffffffffffffffffffffffffff166117246116d4565b73ffffffffffffffffffffffffffffffffffffffff161461177a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161177190613469565b60405180910390fd5b80600c8190555050565b606060038054611793906133ec565b80601f01602080910402602001604051908101604052809291908181526020018280546117bf906133ec565b801561180c5780601f106117e15761010080835404028352916020019161180c565b820191906000526020600020905b8154815290600101906020018083116117ef57829003601f168201915b5050505050905090565b600c5481565b611824611d93565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611888576040517fb06307db00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8060076000611895611d93565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff16611942611d93565b73ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31836040516119879190612dcd565b60405180910390a35050565b600b5481565b6119a4848484611e4d565b6119b0848484846126a5565b6119e6576040517fd1a57ed600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50505050565b60606119f782611d59565b611a36576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a2d90613ab4565b60405180910390fd5b6011611a4183612823565b604051602001611a52929190613bdf565b6040516020818303038152906040529050919050565b601060009054906101000a900460ff1681565b60095481565b6000600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b611b1d611d93565b73ffffffffffffffffffffffffffffffffffffffff16611b3b6116d4565b73ffffffffffffffffffffffffffffffffffffffff1614611b91576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b8890613469565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611c00576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bf790613c80565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a380600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600a5481565b600d5481565b6000808273ffffffffffffffffffffffffffffffffffffffff163b119050919050565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b6000805482108015611d8c575060046000838152602001908152602001600020600001601c9054906101000a900460ff16155b9050919050565b600033905090565b826006600084815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550818373ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a4505050565b6000611e5882612429565b90506000816000015173ffffffffffffffffffffffffffffffffffffffff16611e7f611d93565b73ffffffffffffffffffffffffffffffffffffffff161480611eb25750611eb18260000151611eac611d93565b611a81565b5b80611ef75750611ec0611d93565b73ffffffffffffffffffffffffffffffffffffffff16611edf846109f7565b73ffffffffffffffffffffffffffffffffffffffff16145b905080611f30576040517f59c896be00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8473ffffffffffffffffffffffffffffffffffffffff16826000015173ffffffffffffffffffffffffffffffffffffffff1614611f99576040517fa114810000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603611fff576040517fea553b3400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61200c8585856001612983565b61201c6000848460000151611d9b565b6001600560008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160008282829054906101000a900467ffffffffffffffff160392506101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055506001600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160008282829054906101000a900467ffffffffffffffff160192506101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550836004600085815260200190815260200160002060000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550426004600085815260200190815260200160002060000160146101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055506000600184019050600073ffffffffffffffffffffffffffffffffffffffff166004600083815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16036122cc576000548110156122cb5782600001516004600083815260200190815260200160002060000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555082602001516004600083815260200190815260200160002060000160146101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055505b5b50828473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a46123358585856001612989565b5050505050565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036123a3576040517f35ebb31900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160089054906101000a900467ffffffffffffffff1667ffffffffffffffff169050919050565b61242582826040518060200160405280600081525061298f565b5050565b612431612cd6565b600082905060005481101561266e576000600460008381526020019081526020016000206040518060600160405290816000820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016000820160149054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815260200160008201601c9054906101000a900460ff1615151515815250509050806040015161266c57600073ffffffffffffffffffffffffffffffffffffffff16816000015173ffffffffffffffffffffffffffffffffffffffff16146125505780925050506126a0565b5b60011561266b57818060019003925050600460008381526020019081526020016000206040518060600160405290816000820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016000820160149054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815260200160008201601c9054906101000a900460ff1615151515815250509050600073ffffffffffffffffffffffffffffffffffffffff16816000015173ffffffffffffffffffffffffffffffffffffffff16146126665780925050506126a0565b612551565b5b505b6040517fdf2d9b4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b919050565b60006126c68473ffffffffffffffffffffffffffffffffffffffff16611ccc565b15612816578373ffffffffffffffffffffffffffffffffffffffff1663150b7a026126ef611d93565b8786866040518563ffffffff1660e01b81526004016127119493929190613cf5565b6020604051808303816000875af192505050801561274d57506040513d601f19601f8201168201806040525081019061274a9190613d56565b60015b6127c6573d806000811461277d576040519150601f19603f3d011682016040523d82523d6000602084013e612782565b606091505b5060008151036127be576040517fd1a57ed600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b805181602001fd5b63150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161491505061281b565b600190505b949350505050565b60606000820361286a576040518060400160405280600181526020017f3000000000000000000000000000000000000000000000000000000000000000815250905061297e565b600082905060005b6000821461289c57808061288590613d83565b915050600a826128959190613dfa565b9150612872565b60008167ffffffffffffffff8111156128b8576128b761304c565b5b6040519080825280601f01601f1916602001820160405280156128ea5781602001600182028036833780820191505090505b5090505b60008514612977576001826129039190613630565b9150600a856129129190613e2b565b603061291e9190613524565b60f81b81838151811061293457612933613e5c565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600a856129709190613dfa565b94506128ee565b8093505050505b919050565b50505050565b50505050565b61299c83838360016129a1565b505050565b600080549050600073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1603612a0d576040517f2e07630000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008403612a47576040517fb562e8dd00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b612a546000868387612983565b83600560008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160008282829054906101000a900467ffffffffffffffff160192506101000a81548167ffffffffffffffff021916908367ffffffffffffffff16021790555083600560008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160088282829054906101000a900467ffffffffffffffff160192506101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550846004600083815260200190815260200160002060000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550426004600083815260200190815260200160002060000160146101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550600081905060005b85811015612cb957818773ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4838015612c6d5750612c6b60008884886126a5565b155b15612ca4576040517fd1a57ed600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b81806001019250508080600101915050612bf2565b508060008190555050612ccf6000868387612989565b5050505050565b6040518060600160405280600073ffffffffffffffffffffffffffffffffffffffff168152602001600067ffffffffffffffff1681526020016000151581525090565b6000604051905090565b600080fd5b600080fd5b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b612d6281612d2d565b8114612d6d57600080fd5b50565b600081359050612d7f81612d59565b92915050565b600060208284031215612d9b57612d9a612d23565b5b6000612da984828501612d70565b91505092915050565b60008115159050919050565b612dc781612db2565b82525050565b6000602082019050612de26000830184612dbe565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b83811015612e22578082015181840152602081019050612e07565b60008484015250505050565b6000601f19601f8301169050919050565b6000612e4a82612de8565b612e548185612df3565b9350612e64818560208601612e04565b612e6d81612e2e565b840191505092915050565b60006020820190508181036000830152612e928184612e3f565b905092915050565b6000819050919050565b612ead81612e9a565b8114612eb857600080fd5b50565b600081359050612eca81612ea4565b92915050565b600060208284031215612ee657612ee5612d23565b5b6000612ef484828501612ebb565b91505092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000612f2882612efd565b9050919050565b612f3881612f1d565b82525050565b6000602082019050612f536000830184612f2f565b92915050565b612f6281612f1d565b8114612f6d57600080fd5b50565b600081359050612f7f81612f59565b92915050565b60008060408385031215612f9c57612f9b612d23565b5b6000612faa85828601612f70565b9250506020612fbb85828601612ebb565b9150509250929050565b612fce81612e9a565b82525050565b6000602082019050612fe96000830184612fc5565b92915050565b60008060006060848603121561300857613007612d23565b5b600061301686828701612f70565b935050602061302786828701612f70565b925050604061303886828701612ebb565b9150509250925092565b600080fd5b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b61308482612e2e565b810181811067ffffffffffffffff821117156130a3576130a261304c565b5b80604052505050565b60006130b6612d19565b90506130c2828261307b565b919050565b600067ffffffffffffffff8211156130e2576130e161304c565b5b6130eb82612e2e565b9050602081019050919050565b82818337600083830152505050565b600061311a613115846130c7565b6130ac565b90508281526020810184848401111561313657613135613047565b5b6131418482856130f8565b509392505050565b600082601f83011261315e5761315d613042565b5b813561316e848260208601613107565b91505092915050565b60006020828403121561318d5761318c612d23565b5b600082013567ffffffffffffffff8111156131ab576131aa612d28565b5b6131b784828501613149565b91505092915050565b6000602082840312156131d6576131d5612d23565b5b60006131e484828501612f70565b91505092915050565b6131f681612db2565b811461320157600080fd5b50565b600081359050613213816131ed565b92915050565b600080604083850312156132305761322f612d23565b5b600061323e85828601612f70565b925050602061324f85828601613204565b9150509250929050565b600067ffffffffffffffff8211156132745761327361304c565b5b61327d82612e2e565b9050602081019050919050565b600061329d61329884613259565b6130ac565b9050828152602081018484840111156132b9576132b8613047565b5b6132c48482856130f8565b509392505050565b600082601f8301126132e1576132e0613042565b5b81356132f184826020860161328a565b91505092915050565b6000806000806080858703121561331457613313612d23565b5b600061332287828801612f70565b945050602061333387828801612f70565b935050604061334487828801612ebb565b925050606085013567ffffffffffffffff81111561336557613364612d28565b5b613371878288016132cc565b91505092959194509250565b6000806040838503121561339457613393612d23565b5b60006133a285828601612f70565b92505060206133b385828601612f70565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061340457607f821691505b602082108103613417576134166133bd565b5b50919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000613453602083612df3565b915061345e8261341d565b602082019050919050565b6000602082019050818103600083015261348281613446565b9050919050565b7f4d696e74696e67206973206e6f74206c697665207965742e0000000000000000600082015250565b60006134bf601883612df3565b91506134ca82613489565b602082019050919050565b600060208201905081810360008301526134ee816134b2565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061352f82612e9a565b915061353a83612e9a565b9250828201905080821115613552576135516134f5565b5b92915050565b7f4e6f206d6f726500000000000000000000000000000000000000000000000000600082015250565b600061358e600783612df3565b915061359982613558565b602082019050919050565b600060208201905081810360008301526135bd81613581565b9050919050565b7f4d6178207065722077616c6c6574000000000000000000000000000000000000600082015250565b60006135fa600e83612df3565b9150613605826135c4565b602082019050919050565b60006020820190508181036000830152613629816135ed565b9050919050565b600061363b82612e9a565b915061364683612e9a565b925082820390508181111561365e5761365d6134f5565b5b92915050565b600061366f82612e9a565b915061367a83612e9a565b925082820261368881612e9a565b9150828204841483151761369f5761369e6134f5565b5b5092915050565b7f506c656173652073656e642074686520657861637420616d6f756e742e000000600082015250565b60006136dc601d83612df3565b91506136e7826136a6565b602082019050919050565b6000602082019050818103600083015261370b816136cf565b9050919050565b600081905092915050565b50565b600061372d600083613712565b91506137388261371d565b600082019050919050565b600061374e82613720565b9150819050919050565b7f5472616e73666572206661696c65642e00000000000000000000000000000000600082015250565b600061378e601083612df3565b915061379982613758565b602082019050919050565b600060208201905081810360008301526137bd81613781565b9050919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b6000600883026138267fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff826137e9565b61383086836137e9565b95508019841693508086168417925050509392505050565b6000819050919050565b600061386d61386861386384612e9a565b613848565b612e9a565b9050919050565b6000819050919050565b61388783613852565b61389b61389382613874565b8484546137f6565b825550505050565b600090565b6138b06138a3565b6138bb81848461387e565b505050565b5b818110156138df576138d46000826138a8565b6001810190506138c1565b5050565b601f821115613924576138f5816137c4565b6138fe846137d9565b8101602085101561390d578190505b613921613919856137d9565b8301826138c0565b50505b505050565b600082821c905092915050565b600061394760001984600802613929565b1980831691505092915050565b60006139608383613936565b9150826002028217905092915050565b61397982612de8565b67ffffffffffffffff8111156139925761399161304c565b5b61399c82546133ec565b6139a78282856138e3565b600060209050601f8311600181146139da57600084156139c8578287015190505b6139d28582613954565b865550613a3a565b601f1984166139e8866137c4565b60005b82811015613a10578489015182556001820191506020850194506020810190506139eb565b86831015613a2d5784890151613a29601f891682613936565b8355505b6001600288020188555050505b505050505050565b7f4552433732314d657461646174613a2055524920717565727920666f72206e6f60008201527f6e6578697374656e7420746f6b656e0000000000000000000000000000000000602082015250565b6000613a9e602f83612df3565b9150613aa982613a42565b604082019050919050565b60006020820190508181036000830152613acd81613a91565b9050919050565b600081905092915050565b60008154613aec816133ec565b613af68186613ad4565b94506001821660008114613b115760018114613b2657613b59565b60ff1983168652811515820286019350613b59565b613b2f856137c4565b60005b83811015613b5157815481890152600182019150602081019050613b32565b838801955050505b50505092915050565b6000613b6d82612de8565b613b778185613ad4565b9350613b87818560208601612e04565b80840191505092915050565b7f2e6a736f6e000000000000000000000000000000000000000000000000000000600082015250565b6000613bc9600583613ad4565b9150613bd482613b93565b600582019050919050565b6000613beb8285613adf565b9150613bf78284613b62565b9150613c0282613bbc565b91508190509392505050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000613c6a602683612df3565b9150613c7582613c0e565b604082019050919050565b60006020820190508181036000830152613c9981613c5d565b9050919050565b600081519050919050565b600082825260208201905092915050565b6000613cc782613ca0565b613cd18185613cab565b9350613ce1818560208601612e04565b613cea81612e2e565b840191505092915050565b6000608082019050613d0a6000830187612f2f565b613d176020830186612f2f565b613d246040830185612fc5565b8181036060830152613d368184613cbc565b905095945050505050565b600081519050613d5081612d59565b92915050565b600060208284031215613d6c57613d6b612d23565b5b6000613d7a84828501613d41565b91505092915050565b6000613d8e82612e9a565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203613dc057613dbf6134f5565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000613e0582612e9a565b9150613e1083612e9a565b925082613e2057613e1f613dcb565b5b828204905092915050565b6000613e3682612e9a565b9150613e4183612e9a565b925082613e5157613e50613dcb565b5b828206905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fdfea26469706673582212205742942ce990659989da112ddd5250b55e03991117e601177681a76dff75545364736f6c63430008120033