60806040526103e8600b5560405180602001604052806000815250600c90805190602001906200003192919062000418565b506000600d60006101000a81548160ff0219169083151502179055503480156200005a57600080fd5b50733cc6cdda760b79bafa08df41ecfa224f810dceb660016040518060400160405280600981526020017f547265656c656d6d6100000000000000000000000000000000000000000000008152506040518060400160405280600481526020017f54524545000000000000000000000000000000000000000000000000000000008152508160029080519060200190620000f692919062000418565b5080600390805190602001906200010f92919062000418565b50620001206200034560201b60201c565b6000819055505050620001486200013c6200034a60201b60201c565b6200035260201b60201c565b60006daaeb6d7670e522a718067333cd4e73ffffffffffffffffffffffffffffffffffffffff163b11156200033d57801562000203576daaeb6d7670e522a718067333cd4e73ffffffffffffffffffffffffffffffffffffffff16637d3e3dbe30846040518363ffffffff1660e01b8152600401620001c99291906200050d565b600060405180830381600087803b158015620001e457600080fd5b505af1158015620001f9573d6000803e3d6000fd5b505050506200033c565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614620002bd576daaeb6d7670e522a718067333cd4e73ffffffffffffffffffffffffffffffffffffffff1663a0af290330846040518363ffffffff1660e01b8152600401620002839291906200050d565b600060405180830381600087803b1580156200029e57600080fd5b505af1158015620002b3573d6000803e3d6000fd5b505050506200033b565b6daaeb6d7670e522a718067333cd4e73ffffffffffffffffffffffffffffffffffffffff16634420e486306040518263ffffffff1660e01b81526004016200030691906200053a565b600060405180830381600087803b1580156200032157600080fd5b505af115801562000336573d6000803e3d6000fd5b505050505b5b5b5050620005bb565b600090565b600033905090565b6000600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b828054620004269062000586565b90600052602060002090601f0160209004810192826200044a576000855562000496565b82601f106200046557805160ff191683800117855562000496565b8280016001018555821562000496579182015b828111156200049557825182559160200191906001019062000478565b5b509050620004a59190620004a9565b5090565b5b80821115620004c4576000816000905550600101620004aa565b5090565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000620004f582620004c8565b9050919050565b6200050781620004e8565b82525050565b6000604082019050620005246000830185620004fc565b620005336020830184620004fc565b9392505050565b6000602082019050620005516000830184620004fc565b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806200059f57607f821691505b602082108103620005b557620005b462000557565b5b50919050565b61324980620005cb6000396000f3fe6080604052600436106101a05760003560e01c80636352211e116100ec578063a22cb4651161008a578063c87b56dd11610064578063c87b56dd14610585578063d5abeb01146105c2578063e985e9c5146105ed578063f2fde38b1461062a576101a7565b8063a22cb465146104f6578063b88d4fde1461051f578063bf24c0de14610548576101a7565b8063820527cf116100c6578063820527cf1461046057806387491c60146104895780638da5cb5b146104a057806395d89b41146104cb576101a7565b80636352211e146103cf57806370a082311461040c578063715018a614610449576101a7565b806323b872dd1161015957806341f434341161013357806341f434341461032557806342842e0e1461035057806355234ec0146103795780635c975abb146103a4576101a7565b806323b872dd146102ce578063333171bb146102f75780633ccfd60b1461030e576101a7565b806301ffc9a7146101ac57806306fdde03146101e9578063081812fc14610214578063095ea7b31461025157806309a3beef1461027a57806318160ddd146102a3576101a7565b366101a757005b600080fd5b3480156101b857600080fd5b506101d360048036038101906101ce91906125a7565b610653565b6040516101e091906125ef565b60405180910390f35b3480156101f557600080fd5b506101fe610735565b60405161020b91906126a3565b60405180910390f35b34801561022057600080fd5b5061023b600480360381019061023691906126fb565b6107c7565b6040516102489190612769565b60405180910390f35b34801561025d57600080fd5b50610278600480360381019061027391906127b0565b610843565b005b34801561028657600080fd5b506102a1600480360381019061029c9190612925565b61085c565b005b3480156102af57600080fd5b506102b8610890565b6040516102c59190612990565b60405180910390f35b3480156102da57600080fd5b506102f560048036038101906102f091906129ab565b6108a7565b005b34801561030357600080fd5b5061030c6108f6565b005b34801561031a57600080fd5b5061032361092a565b005b34801561033157600080fd5b5061033a610978565b6040516103479190612a5d565b60405180910390f35b34801561035c57600080fd5b50610377600480360381019061037291906129ab565b61098a565b005b34801561038557600080fd5b5061038e6109d9565b60405161039b9190612990565b60405180910390f35b3480156103b057600080fd5b506103b96109fa565b6040516103c691906125ef565b60405180910390f35b3480156103db57600080fd5b506103f660048036038101906103f191906126fb565b610a0d565b6040516104039190612769565b60405180910390f35b34801561041857600080fd5b50610433600480360381019061042e9190612a78565b610a23565b6040516104409190612990565b60405180910390f35b34801561045557600080fd5b5061045e610af2565b005b34801561046c57600080fd5b5061048760048036038101906104829190612aa5565b610b06565b005b34801561049557600080fd5b5061049e610c29565b005b3480156104ac57600080fd5b506104b5610c47565b6040516104c29190612769565b60405180910390f35b3480156104d757600080fd5b506104e0610c71565b6040516104ed91906126a3565b60405180910390f35b34801561050257600080fd5b5061051d60048036038101906105189190612b1a565b610d03565b005b34801561052b57600080fd5b5061054660048036038101906105419190612bfb565b610d1c565b005b34801561055457600080fd5b5061056f600480360381019061056a91906126fb565b610d6d565b60405161057c91906126a3565b60405180910390f35b34801561059157600080fd5b506105ac60048036038101906105a791906126fb565b610e0d565b6040516105b991906126a3565b60405180910390f35b3480156105ce57600080fd5b506105d7610f5c565b6040516105e49190612990565b60405180910390f35b3480156105f957600080fd5b50610614600480360381019061060f9190612c7e565b610f62565b60405161062191906125ef565b60405180910390f35b34801561063657600080fd5b50610651600480360381019061064c9190612a78565b610ff6565b005b60007f80ac58cd000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061071e57507f5b5e139f000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b8061072e575061072d82611079565b5b9050919050565b60606002805461074490612ced565b80601f016020809104026020016040519081016040528092919081815260200182805461077090612ced565b80156107bd5780601f10610792576101008083540402835291602001916107bd565b820191906000526020600020905b8154815290600101906020018083116107a057829003601f168201915b5050505050905090565b60006107d2826110e3565b610808576040517fcf4700e400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6006600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b8161084d81611131565b610857838361122e565b505050565b610864611338565b81600a6000838152602001908152602001600020908051906020019061088b929190612455565b505050565b600061089a6113b6565b6001546000540303905090565b823373ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16146108e5576108e433611131565b5b6108f08484846113bb565b50505050565b6108fe611338565b600d60009054906101000a900460ff1615600d60006101000a81548160ff021916908315150217905550565b610932611338565b60004790503373ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f1935050505061097557600080fd5b50565b6daaeb6d7670e522a718067333cd4e81565b823373ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16146109c8576109c733611131565b5b6109d38484846113cb565b50505050565b6000806109e4610890565b600b546109f19190612d4d565b90508091505090565b600d60009054906101000a900460ff1681565b6000610a18826113eb565b600001519050919050565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610a8a576040517f8f4eb60400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160009054906101000a900467ffffffffffffffff1667ffffffffffffffff169050919050565b610afa611338565b610b04600061167a565b565b610b0e611338565b600d60009054906101000a900460ff1615610b5e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b5590612dcd565b60405180910390fd5b6000610b68610890565b9050600b54600182610b7a9190612ded565b1115610bbb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bb290612eb5565b60405180910390fd5b81600a60008381526020019081526020016000209080519060200190610be2929190612455565b50610bee336001611740565b7f90ddedd5a25821bba11fbb98de02ec1f75c1be90ae147d6450ce873e7b78b5d833604051610c1d9190612769565b60405180910390a15050565b610c31611338565b6000610c3b610890565b905080600b8190555050565b6000600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b606060038054610c8090612ced565b80601f0160208091040260200160405190810160405280929190818152602001828054610cac90612ced565b8015610cf95780601f10610cce57610100808354040283529160200191610cf9565b820191906000526020600020905b815481529060010190602001808311610cdc57829003601f168201915b5050505050905090565b81610d0d81611131565b610d17838361175e565b505050565b833373ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614610d5a57610d5933611131565b5b610d66858585856118d5565b5050505050565b600a6020528060005260406000206000915090508054610d8c90612ced565b80601f0160208091040260200160405190810160405280929190818152602001828054610db890612ced565b8015610e055780601f10610dda57610100808354040283529160200191610e05565b820191906000526020600020905b815481529060010190602001808311610de857829003601f168201915b505050505081565b6060610e18826110e3565b610e57576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e4e90612f47565b60405180910390fd5b60006040518060400160405280600781526020017f697066733a2f2f0000000000000000000000000000000000000000000000000081525090506000600a60008581526020019081526020016000208054610eb190612ced565b80601f0160208091040260200160405190810160405280929190818152602001828054610edd90612ced565b8015610f2a5780601f10610eff57610100808354040283529160200191610f2a565b820191906000526020600020905b815481529060010190602001808311610f0d57829003601f168201915b505050505090508181604051602001610f44929190612fa3565b60405160208183030381529060405292505050919050565b600b5481565b6000600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b610ffe611338565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361106d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161106490613039565b60405180910390fd5b6110768161167a565b50565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b6000816110ee6113b6565b111580156110fd575060005482105b801561112a575060046000838152602001908152602001600020600001601c9054906101000a900460ff16155b9050919050565b60006daaeb6d7670e522a718067333cd4e73ffffffffffffffffffffffffffffffffffffffff163b111561122b576daaeb6d7670e522a718067333cd4e73ffffffffffffffffffffffffffffffffffffffff1663c617113430836040518363ffffffff1660e01b81526004016111a8929190613059565b602060405180830381865afa1580156111c5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111e99190613097565b61122a57806040517fede71dcc0000000000000000000000000000000000000000000000000000000081526004016112219190612769565b60405180910390fd5b5b50565b600061123982610a0d565b90508073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036112a0576040517f943f7b8c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff166112bf611951565b73ffffffffffffffffffffffffffffffffffffffff16141580156112f157506112ef816112ea611951565b610f62565b155b15611328576040517fcfb3b94200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611333838383611959565b505050565b611340611951565b73ffffffffffffffffffffffffffffffffffffffff1661135e610c47565b73ffffffffffffffffffffffffffffffffffffffff16146113b4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113ab90613110565b60405180910390fd5b565b600090565b6113c6838383611a0b565b505050565b6113e683838360405180602001604052806000815250610d1c565b505050565b6113f36124db565b6000829050806114016113b6565b11158015611410575060005481105b15611643576000600460008381526020019081526020016000206040518060600160405290816000820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016000820160149054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815260200160008201601c9054906101000a900460ff1615151515815250509050806040015161164157600073ffffffffffffffffffffffffffffffffffffffff16816000015173ffffffffffffffffffffffffffffffffffffffff1614611525578092505050611675565b5b60011561164057818060019003925050600460008381526020019081526020016000206040518060600160405290816000820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016000820160149054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815260200160008201601c9054906101000a900460ff1615151515815250509050600073ffffffffffffffffffffffffffffffffffffffff16816000015173ffffffffffffffffffffffffffffffffffffffff161461163b578092505050611675565b611526565b5b505b6040517fdf2d9b4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b919050565b6000600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b61175a828260405180602001604052806000815250611efa565b5050565b611766611951565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036117ca576040517fb06307db00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80600760006117d7611951565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff16611884611951565b73ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31836040516118c991906125ef565b60405180910390a35050565b6118e0848484611a0b565b6118ff8373ffffffffffffffffffffffffffffffffffffffff16611f0c565b8015611914575061191284848484611f2f565b155b1561194b576040517fd1a57ed600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50505050565b600033905090565b826006600084815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550818373ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a4505050565b6000611a16826113eb565b90506000816000015173ffffffffffffffffffffffffffffffffffffffff16611a3d611951565b73ffffffffffffffffffffffffffffffffffffffff161480611a705750611a6f8260000151611a6a611951565b610f62565b5b80611ab55750611a7e611951565b73ffffffffffffffffffffffffffffffffffffffff16611a9d846107c7565b73ffffffffffffffffffffffffffffffffffffffff16145b905080611aee576040517f59c896be00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8473ffffffffffffffffffffffffffffffffffffffff16826000015173ffffffffffffffffffffffffffffffffffffffff1614611b57576040517fa114810000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603611bbd576040517fea553b3400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611bca858585600161207f565b611bda6000848460000151611959565b6001600560008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160008282829054906101000a900467ffffffffffffffff160392506101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055506001600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160008282829054906101000a900467ffffffffffffffff160192506101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550836004600085815260200190815260200160002060000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550426004600085815260200190815260200160002060000160146101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055506000600184019050600073ffffffffffffffffffffffffffffffffffffffff166004600083815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1603611e8a57600054811015611e895782600001516004600083815260200190815260200160002060000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555082602001516004600083815260200190815260200160002060000160146101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055505b5b50828473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4611ef38585856001612085565b5050505050565b611f07838383600161208b565b505050565b6000808273ffffffffffffffffffffffffffffffffffffffff163b119050919050565b60008373ffffffffffffffffffffffffffffffffffffffff1663150b7a02611f55611951565b8786866040518563ffffffff1660e01b8152600401611f779493929190613185565b6020604051808303816000875af1925050508015611fb357506040513d601f19601f82011682018060405250810190611fb091906131e6565b60015b61202c573d8060008114611fe3576040519150601f19603f3d011682016040523d82523d6000602084013e611fe8565b606091505b506000815103612024576040517fd1a57ed600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b805181602001fd5b63150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614915050949350505050565b50505050565b50505050565b600080549050600073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16036120f7576040517f2e07630000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008403612131576040517fb562e8dd00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61213e600086838761207f565b83600560008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160008282829054906101000a900467ffffffffffffffff160192506101000a81548167ffffffffffffffff021916908367ffffffffffffffff16021790555083600560008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160088282829054906101000a900467ffffffffffffffff160192506101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550846004600083815260200190815260200160002060000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550426004600083815260200190815260200160002060000160146101000a81548167ffffffffffffffff021916908367ffffffffffffffff16021790555060008190506000858201905083801561230857506123078773ffffffffffffffffffffffffffffffffffffffff16611f0c565b5b156123cd575b818773ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a461237d6000888480600101955088611f2f565b6123b3576040517fd1a57ed600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80820361230e5782600054146123c857600080fd5b612438565b5b818060010192508773ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a48082036123ce575b81600081905550505061244e6000868387612085565b5050505050565b82805461246190612ced565b90600052602060002090601f01602090048101928261248357600085556124ca565b82601f1061249c57805160ff19168380011785556124ca565b828001600101855582156124ca579182015b828111156124c95782518255916020019190600101906124ae565b5b5090506124d7919061251e565b5090565b6040518060600160405280600073ffffffffffffffffffffffffffffffffffffffff168152602001600067ffffffffffffffff1681526020016000151581525090565b5b8082111561253757600081600090555060010161251f565b5090565b6000604051905090565b600080fd5b600080fd5b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b6125848161254f565b811461258f57600080fd5b50565b6000813590506125a18161257b565b92915050565b6000602082840312156125bd576125bc612545565b5b60006125cb84828501612592565b91505092915050565b60008115159050919050565b6125e9816125d4565b82525050565b600060208201905061260460008301846125e0565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b83811015612644578082015181840152602081019050612629565b83811115612653576000848401525b50505050565b6000601f19601f8301169050919050565b60006126758261260a565b61267f8185612615565b935061268f818560208601612626565b61269881612659565b840191505092915050565b600060208201905081810360008301526126bd818461266a565b905092915050565b6000819050919050565b6126d8816126c5565b81146126e357600080fd5b50565b6000813590506126f5816126cf565b92915050565b60006020828403121561271157612710612545565b5b600061271f848285016126e6565b91505092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061275382612728565b9050919050565b61276381612748565b82525050565b600060208201905061277e600083018461275a565b92915050565b61278d81612748565b811461279857600080fd5b50565b6000813590506127aa81612784565b92915050565b600080604083850312156127c7576127c6612545565b5b60006127d58582860161279b565b92505060206127e6858286016126e6565b9150509250929050565b600080fd5b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b61283282612659565b810181811067ffffffffffffffff82111715612851576128506127fa565b5b80604052505050565b600061286461253b565b90506128708282612829565b919050565b600067ffffffffffffffff8211156128905761288f6127fa565b5b61289982612659565b9050602081019050919050565b82818337600083830152505050565b60006128c86128c384612875565b61285a565b9050828152602081018484840111156128e4576128e36127f5565b5b6128ef8482856128a6565b509392505050565b600082601f83011261290c5761290b6127f0565b5b813561291c8482602086016128b5565b91505092915050565b6000806040838503121561293c5761293b612545565b5b600083013567ffffffffffffffff81111561295a5761295961254a565b5b612966858286016128f7565b9250506020612977858286016126e6565b9150509250929050565b61298a816126c5565b82525050565b60006020820190506129a56000830184612981565b92915050565b6000806000606084860312156129c4576129c3612545565b5b60006129d28682870161279b565b93505060206129e38682870161279b565b92505060406129f4868287016126e6565b9150509250925092565b6000819050919050565b6000612a23612a1e612a1984612728565b6129fe565b612728565b9050919050565b6000612a3582612a08565b9050919050565b6000612a4782612a2a565b9050919050565b612a5781612a3c565b82525050565b6000602082019050612a726000830184612a4e565b92915050565b600060208284031215612a8e57612a8d612545565b5b6000612a9c8482850161279b565b91505092915050565b600060208284031215612abb57612aba612545565b5b600082013567ffffffffffffffff811115612ad957612ad861254a565b5b612ae5848285016128f7565b91505092915050565b612af7816125d4565b8114612b0257600080fd5b50565b600081359050612b1481612aee565b92915050565b60008060408385031215612b3157612b30612545565b5b6000612b3f8582860161279b565b9250506020612b5085828601612b05565b9150509250929050565b600067ffffffffffffffff821115612b7557612b746127fa565b5b612b7e82612659565b9050602081019050919050565b6000612b9e612b9984612b5a565b61285a565b905082815260208101848484011115612bba57612bb96127f5565b5b612bc58482856128a6565b509392505050565b600082601f830112612be257612be16127f0565b5b8135612bf2848260208601612b8b565b91505092915050565b60008060008060808587031215612c1557612c14612545565b5b6000612c238782880161279b565b9450506020612c348782880161279b565b9350506040612c45878288016126e6565b925050606085013567ffffffffffffffff811115612c6657612c6561254a565b5b612c7287828801612bcd565b91505092959194509250565b60008060408385031215612c9557612c94612545565b5b6000612ca38582860161279b565b9250506020612cb48582860161279b565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680612d0557607f821691505b602082108103612d1857612d17612cbe565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000612d58826126c5565b9150612d63836126c5565b925082821015612d7657612d75612d1e565b5b828203905092915050565b7f4d696e74696e6720697320706175736564000000000000000000000000000000600082015250565b6000612db7601183612615565b9150612dc282612d81565b602082019050919050565b60006020820190508181036000830152612de681612daa565b9050919050565b6000612df8826126c5565b9150612e03836126c5565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115612e3857612e37612d1e565b5b828201905092915050565b7f536f7272792c2077652068617665207265616368656420746865206d6178207360008201527f7570706c79000000000000000000000000000000000000000000000000000000602082015250565b6000612e9f602583612615565b9150612eaa82612e43565b604082019050919050565b60006020820190508181036000830152612ece81612e92565b9050919050565b7f4552433732314d657461646174613a2055524920717565727920666f72206e6f60008201527f6e6578697374656e7420746f6b656e0000000000000000000000000000000000602082015250565b6000612f31602f83612615565b9150612f3c82612ed5565b604082019050919050565b60006020820190508181036000830152612f6081612f24565b9050919050565b600081905092915050565b6000612f7d8261260a565b612f878185612f67565b9350612f97818560208601612626565b80840191505092915050565b6000612faf8285612f72565b9150612fbb8284612f72565b91508190509392505050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000613023602683612615565b915061302e82612fc7565b604082019050919050565b6000602082019050818103600083015261305281613016565b9050919050565b600060408201905061306e600083018561275a565b61307b602083018461275a565b9392505050565b60008151905061309181612aee565b92915050565b6000602082840312156130ad576130ac612545565b5b60006130bb84828501613082565b91505092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b60006130fa602083612615565b9150613105826130c4565b602082019050919050565b60006020820190508181036000830152613129816130ed565b9050919050565b600081519050919050565b600082825260208201905092915050565b600061315782613130565b613161818561313b565b9350613171818560208601612626565b61317a81612659565b840191505092915050565b600060808201905061319a600083018761275a565b6131a7602083018661275a565b6131b46040830185612981565b81810360608301526131c6818461314c565b905095945050505050565b6000815190506131e08161257b565b92915050565b6000602082840312156131fc576131fb612545565b5b600061320a848285016131d1565b9150509291505056fea264697066735822122033f27d72b27a106323c45633078c41b2043806f7dcf5ff261804d191703ee44364736f6c634300080d0033