0x6080604052426000554360015561227e8061001b6000396000f30060806040526004361061011c5763ffffffff7c010000000000000000000000000000000000000000000000000000000060003504166306a0501481146101215780630d8e6e2c1461014f578063152583de146101d957806315dae03e1461033257806317d7de7c14610347578063188ec3561461035c5780631f4cefd21461038357806342cbb15c146103985780634911b4e0146103ad5780634e633c2c146103d85780634ecf870d146103ed5780636dbb1896146104ec5780638afa7cee146105415780639c3024a7146105565780639d422139146105fd578063a56e3d44146103d8578063e6765e1614610612578063ebb4998e14610627578063f42f2a9e146106ce578063f6044b95146106e3578063fa5da74e146106f8575b600080fd5b34801561012d57600080fd5b506101366107a4565b6040805163ffffffff9092168252519081900360200190f35b34801561015b57600080fd5b506101646107a9565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561019e578181015183820152602001610186565b50505050905090810190601f1680156101cb5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3480156101e557600080fd5b506101ee6107e0565b60405180806020018060200180602001848103845287818151815260200191508051906020019080838360005b8381101561023357818101518382015260200161021b565b50505050905090810190601f1680156102605780820380516001836020036101000a031916815260200191505b50848103835286518152865160209182019188019080838360005b8381101561029357818101518382015260200161027b565b50505050905090810190601f1680156102c05780820380516001836020036101000a031916815260200191505b50848103825285518152855160209182019187019080838360005b838110156102f35781810151838201526020016102db565b50505050905090810190601f1680156103205780820380516001836020036101000a031916815260200191505b50965050505050505060405180910390f35b34801561033e57600080fd5b50610164610808565b34801561035357600080fd5b5061016461083f565b34801561036857600080fd5b50610371610876565b60408051918252519081900360200190f35b34801561038f57600080fd5b5061037161087c565b3480156103a457600080fd5b50610371610881565b3480156103b957600080fd5b506103c2610887565b6040805160ff9092168252519081900360200190f35b3480156103e457600080fd5b5061013661088c565b3480156103f957600080fd5b50604080516101208181019092526104739160048035926024359236929161016491604490600990839083908082843750506040805186358801803560208181028481018201909552818452979a999888019792965090820194509250829190850190849080828437509497506108919650505050505050565b6040805163ffffffff86168152602081018590529081018360c080838360005b838110156104ab578181015183820152602001610493565b5050505090500182600960200280838360005b838110156104d65781810151838201526020016104be565b5050505090500194505050505060405180910390f35b3480156104f857600080fd5b5060408051602060048035808201358381028086018501909652808552610371953695939460249493850192918291850190849080828437509497506108f09650505050505050565b34801561054d57600080fd5b50610136610887565b34801561056257600080fd5b506040805160c0818101909252610136916004803592369260e49190602490600690839083908082843750506040805161012081810190925294979695818101959450925060099150839083908082843750506040805186358801803560208181028481018201909552818452979a9998880197929650908201945092508291908501908490808284375094975061092d9650505050505050565b34801561060957600080fd5b506103c261088c565b34801561061e57600080fd5b5061016461094f565b34801561063357600080fd5b50604080516101208181019092526106a991600480359236926101449190602490600990839083908082843750506040805186358801803560208181028481018201909552818452979a999888019792965090820194509250829190850190849080828437509497506109869650505050505050565b6040805163ffffffff9094168452602084019290925282820152519081900360600190f35b3480156106da57600080fd5b506103c26109aa565b3480156106ef57600080fd5b506103c26107a4565b34801561070457600080fd5b506040805160c08181019092526104739160048035926024359236929161010491604490600690839083908082843750506040805161012081810190925294979695818101959450925060099150839083908082843750506040805186358801803560208181028481018201909552818452979a999888019792965090820194509250829190850190849080828437509497506109af9650505050505050565b600081565b60408051808201909152600881527f76312e30302e3031000000000000000000000000000000000000000000000000602082015290565b60608060606107ed61083f565b6107f5610808565b6107fd6107a9565b925092509250909192565b60408051808201909152600481527f6361726400000000000000000000000000000000000000000000000000000000602082015290565b60408051808201909152600b81527f766964656f20706f6b6572000000000000000000000000000000000000000000602082015290565b60005490565b602290565b60015490565b600281565b600181565b60008061089c612164565b6108a4612183565b6108ac6121a3565b8815156108bf57600094508493506108e4565b6108ca886005610b63565b90506108d6818a610c7c565b6001955060008a9003945092505b50945094509450949050565b6000805b82518110156109275782516103209084908390811061090f57fe5b602090810290910101510291909101906001016108f4565b50919050565b60008415801561093e575081516005145b15610947575060015b949350505050565b60408051808201909152600881527f76312e30342e3031000000000000000000000000000000000000000000000000602082015290565b6000806000808611156109a157506001915050610320840260005b93509350939050565b600381565b6000806109ba612164565b6109c2612183565b6109ca6121a3565b6109d26121a3565b6109da6121c2565b60006109e46121c2565b8d1515806109f457508951600514155b15610a055760009850889750610b52565b610a0e8c610cdd565b9e509450610a1b8a610d45565b6040805161014081018252875160ff90811660c083019081528451151560e084015260006101008401819052610120840181905260208085019283528551608080820188528d8301518616825282890151151582840152818801849052600160608084019190915287890192909252875180820189528e89015187168152898901511515818501528089018590526002818401528288015287518082018952828f015187168152828a01511515818501528089018590526003818401528188015287518082018952818f015190961686528801511515918501919091529483015260049382019390935260a08201529081529094509250610b1c838e610e1d565b9250610b2783610f81565b9250610b33838f611088565b91509150819750610b4b610b46826111dc565b61123d565b6002995096505b505050505095509550955095915050565b610b6b6121a3565b610b736121dc565b60008080805b60348360ff161015610bad57828560ff821660348110610b9557fe5b60ff9092166020929092020152600190920191610b79565b600092505b868360ff161015610c7157610bcc8860008660340361133b565b91508461ffff831660348110610bde57fe5b6020020151905084603385900360348110610bf557fe5b60200201518561ffff841660348110610c0a57fe5b60ff90921660209290920201528085603386900360348110610c2857fe5b60ff928316602091909102919091015281908790851660058110610c4857fe5b60ff9092166020929092020152600190930192610c648861135c565b9750600190920191610bb2565b505050505092915050565b610c84612164565b60808301516060840151604085015160208087015160ff9485169493841661010002939283166201000002921663010000000290876000602002015160ff1660029190910a021717171781526060810191909152919050565b610ce56121a3565b506040805160a0810182528251603f64010000000090910481168252835163010000009004811660208301528351620100009004811692820192909252825161010090048216606080830191909152835190921660808201529101519091565b610d4d6121a3565b8151600514610d5b57600080fd5b6000826000815181101515610d6c57fe5b602090810291909101015160ff16118152815160009083906001908110610d8f57fe5b60209081029190910181015160ff169190911190820152815160009083906002908110610db857fe5b602090810291909101015160ff16116040820152815160009083906003908110610dde57fe5b602090810291909101015160ff16116060820152815160009083906004908110610e0457fe5b602090810291909101015160ff16116080820152919050565b610e256121c2565b600080610e306121a3565b610e386121a3565b600087955060009450600093505b600560ff85161015610e8657875160ff851660058110610e6257fe5b6020908102919091015101511515610e7b578460010194505b600190930192610e46565b6040805160a0810182528951515160ff90811682528a51602090810151518216908301528a51830151518116928201929092528951606090810151518316908201528951608090810151518316908201529350610ee7908890871685611373565b915060009050600093505b60058460ff161015610c7157855160ff851660058110610f0e57fe5b6020908102919091015101511515610f76576001810190829060ff1660058110610f3457fe5b6020020151865160ff861660058110610f4957fe5b602002015160ff918216905286518591821660058110610f6557fe5b602002015160ff9091166060909101525b600190930192610ef2565b610f896121c2565b6000806000806000610f996121fc565b87965060009550600591505b6001820360ff168660ff16101561107d5760001993508594505b8160ff168560ff161015611019578651600085900b9060ff871660058110610fe357fe5b60200201515160000b131561100e57865160ff86166005811061100257fe5b60200201515193508492505b600190940193610fbf565b865160ff87166005811061102957fe5b6020020151875190915060ff84166005811061104157fe5b6020020151875160ff88166005811061105657fe5b60200201528651819060ff85166005811061106d57fe5b6020020152600190950194610fa5565b505050505050919050565b60006110926121c2565b600061109c6121c2565b6110a586611546565b9150915081156110be57610320850293509150816111d3565b6110c78661159d565b909250905081156110e0576032850293509150816111d3565b6110e9866115e8565b90925090508115611102576019850293509150816111d3565b61110b86611767565b90925090508115611124576009850293509150816111d3565b61112d86611857565b90925090508115611146576006850293509150816111d3565b61114f86611945565b90925090508115611168576004850293509150816111d3565b61117186611a69565b9092509050811561118a576003850293509150816111d3565b61119386611b79565b909250905081156111ac576002850293509150816111d3565b6111b586611c8a565b909250905081156111cb578493509150816111d3565b600093508592505b50509250929050565b6111e46121c2565b60005b600560ff8216101561092757825160ff82166005811061120357fe5b60200201518251845160ff84166005811061121a57fe5b60200201516060015160ff166005811061123057fe5b60200201526001016111e7565b611245612164565b6040805160a080820183528451515160ff9081168352855160209081015151821681850152865185015151821684860152865160609081015151831681860152875160809081015151909316838601528551808501875288515183015115158152885183015183015115158184015288518701518301511515818801528851820151830151151581830152885184015183015115158185015286519485018752885151870151151585528851830151870151151592850192909252875186015186015115158487015287518101518601511515908401528651820151909401511515908201526113359290611dae565b92915050565b600082821161134657fe5b8261135385858503611fb9565b01949350505050565b604080518281529051908190036020019020919050565b61137b6121a3565b6113836121dc565b6000808080805b60348460ff1610156113be57838660ff8216603481106113a657fe5b60ff909216602092909202015260019093019261138a565b6113c788611fd7565b9750600093505b60058460ff16101561147557858860ff8616600581106113ea57fe5b602002015160ff16603481106113fc57fe5b602002015192508560338690036034811061141357fe5b6020020151868960ff87166005811061142857fe5b602002015160ff166034811061143a57fe5b60ff9092166020929092020152828660338790036034811061145857fe5b60ff909216602092909202015260019485019493909301926113ce565b600093505b888460ff161015611539576114948a60008760340361133b565b91508561ffff8316603481106114a657fe5b60200201519050856033869003603481106114bd57fe5b60200201518661ffff8416603481106114d257fe5b60ff909216602092909202015280866033879003603481106114f057fe5b60ff92831660209190910291909101528190889086166005811061151057fe5b60ff909216602092909202015260019094019361152c8a61135c565b995060019093019261147a565b5050505050509392505050565b60006115506121c2565b5081600061155d8261159d565b5090508080156115835750815161157c9060045b6020020151516120cb565b60ff166008145b156115975760019250611595826120f9565b505b50915091565b60006115a76121c2565b50816000806115b583611857565b5091506115c183611945565b5090508180156115ce5750805b1561159557600193506115e0836120f9565b505050915091565b60006115f26121c2565b5081518290600090819081908190819061160c9082611571565b865190955061161c906001611571565b865190945061162c906002611571565b865190935061163c906003611571565b865190925061164c906004611571565b90508360ff168560ff1614801561166857508260ff168460ff16145b801561167957508160ff168360ff16145b156116dd57855160019750879060005b60200201519015156040909101528551600190815b6020020151901515604090910152855160019060025b6020020151901515604090910152855160019060035b602002015190151560409091015261175d565b8260ff168460ff161480156116f757508160ff168360ff16145b801561170857508060ff168260ff16145b1561175d578551600197508790815b6020020151901515604090910152855160019060025b6020020151901515604090910152855160019060035b602002015190151560409182015286516080015160019101525b5050505050915091565b60006117716121c2565b5081518290600090819081908190819061178b9082611571565b865190955061179b906001611571565b86519094506117ab906002611571565b86519093506117bb906003611571565b86519092506117cb906004611571565b90508360ff168560ff161480156117f757508160ff168360ff161480156117f757508060ff168360ff16145b1561180f5760019650611809866120f9565b5061175d565b8360ff168560ff1614801561182957508260ff168560ff16145b801561183a57508060ff168260ff16145b1561175d576001965061184c866120f9565b505050505050915091565b60006118616121c2565b50815182906118789060015b60200201515161213c565b815160ff919091169061188c90600061186d565b60ff161461189d5760009150611940565b80516118aa90600261186d565b815160ff91909116906118be90600061186d565b60ff16146118cf5760009150611940565b80516118dc90600361186d565b815160ff91909116906118f090600061186d565b60ff16146119015760009150611940565b805161190e90600461186d565b815160ff919091169061192290600061186d565b60ff16146119335760009150611940565b60019150611597816120f9565b915091565b600061194f6121c2565b508151829060009081908190819081906119699082611571565b8651909550611979906001611571565b8651909450611989906002611571565b8651909350611999906003611571565b86519092506119a9906004611571565b905060048560ff16101580156119c757506001850360ff168460ff16145b80156119db57506001840360ff168360ff16145b80156119ef57506001830360ff168260ff16145b8015611a0357506001820360ff168160ff16145b15611a175760019650611a15866120f9565b505b8460ff16600c148015611a2d57508360ff166003145b8015611a3c57508260ff166002145b8015611a4b57508160ff166001145b801561183a575060ff8116151561175d576001965061184c866120f9565b6000611a736121c2565b50815182906000908190819081908190611a8d9082611571565b8651909550611a9d906001611571565b8651909450611aad906002611571565b8651909350611abd906003611571565b8651909250611acd906004611571565b90508360ff168560ff16148015611ae957508260ff168460ff16145b15611b1e578551516001604090910181905286519097508790815b6020020151901515604090910152855160019060026116ca565b8260ff168460ff16148015611b3857508260ff168260ff16145b15611b4b5785516001975087908161169e565b8160ff168360ff16148015611b6557508060ff168260ff16145b1561175d578551600197508790600261172d565b6000611b836121c2565b50815182906000908190819081908190611b9d9082611571565b8651909550611bad906001611571565b8651909450611bbd906002611571565b8651909350611bcd906003611571565b8651909250611bdd906004611571565b90508360ff168560ff16148015611bf957508160ff168360ff16145b15611c0d5785516001975087906000611689565b8360ff168560ff16148015611c2757508060ff168260ff16145b15611c5e578551516001604091820181905287516020015182018190528751606001519091018190528651909750879060046116ca565b8260ff168460ff1614801561170857508060ff168260ff16141561175d57855160019750879081611717565b6000611c946121c2565b50815182906000908190819081908190611cae9082611571565b8651909550611cbe906001611571565b8651909450611cce906002611571565b8651909350611cde906003611571565b8651909250611cee906004611571565b90508360ff168560ff16148015611d09575060098560ff1610155b15611d28578551516001604090910181905286519097508790816116ca565b8260ff168460ff16148015611d41575060098460ff1610155b15611d5457855160019750879081611b04565b8160ff168360ff16148015611d6d575060098360ff1610155b15611d8157855160019750879060026116b4565b8060ff168260ff16148015611d9a575060098260ff1610155b1561175d5785516001975087906003611743565b611db6612164565b60808401516060850151604086015160208088015160ff9485169493841661010002939283166201000002921663010000000290886000602002015160ff1660029190910a0217171717815260808301516000901515600114611e1a576000611e1d565b60015b600f1660029190910a02600484600360200201511515600114611e41576000611e44565b60015b600f16600291820a0290600890869060200201511515600114611e68576000611e6b565b60015b600f1660029190910a02600c86600160200201511515600114611e8f576000611e92565b60015b600f1660029190910a02601087600060200201511515600114611eb6576000611eb9565b60015b600f1660029190910a02171717178160016020020152600082600460200201511515600114611ee9576000611eec565b60015b600f1660029190910a02600483600360200201511515600114611f10576000611f13565b60015b600f16600291820a0290600890859060200201511515600114611f37576000611f3a565b60015b600f1660029190910a02600c85600160200201511515600114611f5e576000611f61565b60015b600f1660029190910a02601086600060200201511515600114611f85576000611f88565b60015b600f1660ff16600102600019169060020a0217171717816002600681101515611fad57fe5b60200201529392505050565b6000808211611fc457fe5b8183811515611fcf57fe5b069392505050565b611fdf6121a3565b50806000808080805b60048560ff1610156120c15760001992508493505b60058460ff16101561205057600083900b8660ff86166005811061201d57fe5b602002015160000b1315612045578560ff85166005811061203a57fe5b602002015192508391505b600190930192611ffd565b8560ff86166005811061205f57fe5b602002015190508560ff83166005811061207557fe5b60200201518660ff87166005811061208957fe5b60ff9283166020919091029190910152819087908416600581106120a957fe5b60ff9092166020929092020152600190940193611fe8565b5050505050919050565b6000808260ff16101580156120e45750603c8260ff1611155b15156120ec57fe5b50600460ff821604919050565b6121016121c2565b508051516001604091820181905282516020015182018190528251820151820181905282516060015182018190528251608001519091015290565b6000808260ff16101580156121555750603c8260ff1611155b151561215d57fe5b5060031690565b60c0604051908101604052806006906020820280388339509192915050565b610120604051908101604052806009906020820280388339509192915050565b60a0604051908101604052806005906020820280388339509192915050565b610280604051908101604052806121d7612223565b905290565b610680604051908101604052806034906020820280388339509192915050565b60408051608081018252600080825260208201819052918101829052606081019190915290565b610280604051908101604052806005905b61223c6121fc565b81526020019060019003908161223457905050905600a165627a7a72305820df94769c16d089bad0acf85feb99728a5de5cbdd266fb77dc94db9f46a4330090029