0x6080604052604051806060016040528060218152602001620045ec602191396008908051906020019062000035929190620001f1565b5066b1a2bc2ec50000600955610457600a556032600b55600b54600a546200005e9190620002f9565b600c5563627529e06010556362758c506011556362759a606012553480156200008657600080fd5b506040516200460d3803806200460d8339818101604052810190620000ac9190620002b8565b6040518060400160405280600881526020017f46726f6f746965730000000000000000000000000000000000000000000000008152506040518060400160405280600881526020017f46524f4f54494553000000000000000000000000000000000000000000000000815250816002908051906020019062000130929190620001f1565b50806003908051906020019062000149929190620001f1565b506200015a620001ec60201b60201c565b600081905550505081600d60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600e60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550505062000420565b600090565b828054620001ff9062000372565b90600052602060002090601f0160209004810192826200022357600085556200026f565b82601f106200023e57805160ff19168380011785556200026f565b828001600101855582156200026f579182015b828111156200026e57825182559160200191906001019062000251565b5b5090506200027e919062000282565b5090565b5b808211156200029d57600081600090555060010162000283565b5090565b600081519050620002b28162000406565b92915050565b60008060408385031215620002cc57600080fd5b6000620002dc85828601620002a1565b9250506020620002ef85828601620002a1565b9150509250929050565b6000620003068262000368565b9150620003138362000368565b925082821015620003295762000328620003a8565b5b828203905092915050565b6000620003418262000348565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060028204905060018216806200038b57607f821691505b60208210811415620003a257620003a1620003d7565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b620004118162000334565b81146200041d57600080fd5b50565b6141bc80620004306000396000f3fe6080604052600436106101ee5760003560e01c806395d89b411161010d578063b88d4fde116100a0578063de87396c1161006f578063de87396c146106cf578063e985e9c5146106f8578063ef81b4d414610735578063f851a44014610760578063f92c45b71461078b576101ee565b8063b88d4fde14610627578063c10f410b14610650578063c87b56dd14610667578063d5abeb01146106a4576101ee565b8063a035b1fe116100dc578063a035b1fe1461058c578063a0712d68146105b7578063a22cb465146105d3578063a96af0f4146105fc576101ee565b806395d89b41146104f15780639a8a589b1461051c5780639ba52b67146105475780639e852f7514610570576101ee565b806342842e0e1161018557806355f804b31161015457806355f804b3146104235780636352211e1461044c5780636c0360eb1461048957806370a08231146104b4576101ee565b806342842e0e1461036957806346ad0bdd146103925780634e1931d3146103bd57806355a3b2c1146103e6576101ee565b80631342ff4c116101c15780631342ff4c146102c157806318160ddd146102ea5780631e6d487a1461031557806323b872dd14610340576101ee565b806301ffc9a7146101f357806306fdde0314610230578063081812fc1461025b578063095ea7b314610298575b600080fd5b3480156101ff57600080fd5b5061021a600480360381019061021591906132e1565b6107b6565b6040516102279190613864565b60405180910390f35b34801561023c57600080fd5b50610245610898565b60405161025291906138c4565b60405180910390f35b34801561026757600080fd5b50610282600480360381019061027d9190613374565b61092a565b60405161028f91906137fd565b60405180910390f35b3480156102a457600080fd5b506102bf60048036038101906102ba9190613212565b6109a6565b005b3480156102cd57600080fd5b506102e860048036038101906102e39190613374565b610ab1565b005b3480156102f657600080fd5b506102ff610ccf565b60405161030c9190613a46565b60405180910390f35b34801561032157600080fd5b5061032a610ce6565b6040516103379190613a46565b60405180910390f35b34801561034c57600080fd5b506103676004803603810190610362919061310c565b610cec565b005b34801561037557600080fd5b50610390600480360381019061038b919061310c565b610cfc565b005b34801561039e57600080fd5b506103a7610d1c565b6040516103b49190613a46565b60405180910390f35b3480156103c957600080fd5b506103e460048036038101906103df91906133f1565b610d22565b005b3480156103f257600080fd5b5061040d600480360381019061040891906130a7565b610dcc565b60405161041a9190613a46565b60405180910390f35b34801561042f57600080fd5b5061044a60048036038101906104459190613333565b610de4565b005b34801561045857600080fd5b50610473600480360381019061046e9190613374565b610e8e565b60405161048091906137fd565b60405180910390f35b34801561049557600080fd5b5061049e610ea4565b6040516104ab91906138c4565b60405180910390f35b3480156104c057600080fd5b506104db60048036038101906104d691906130a7565b610f32565b6040516104e89190613a46565b60405180910390f35b3480156104fd57600080fd5b50610506611002565b60405161051391906138c4565b60405180910390f35b34801561052857600080fd5b50610531611094565b60405161053e9190613a46565b60405180910390f35b34801561055357600080fd5b5061056e6004803603810190610569919061324e565b61109a565b005b61058a6004803603810190610585919061339d565b6111dc565b005b34801561059857600080fd5b506105a161153c565b6040516105ae9190613a46565b60405180910390f35b6105d160048036038101906105cc9190613374565b611542565b005b3480156105df57600080fd5b506105fa60048036038101906105f591906131d6565b6117a8565b005b34801561060857600080fd5b50610611611920565b60405161061e9190613a46565b60405180910390f35b34801561063357600080fd5b5061064e6004803603810190610649919061315b565b611926565b005b34801561065c57600080fd5b506106656119a2565b005b34801561067357600080fd5b5061068e60048036038101906106899190613374565b611a8c565b60405161069b91906138c4565b60405180910390f35b3480156106b057600080fd5b506106b9611b2b565b6040516106c69190613a46565b60405180910390f35b3480156106db57600080fd5b506106f660048036038101906106f191906130d0565b611b31565b005b34801561070457600080fd5b5061071f600480360381019061071a91906130d0565b611c47565b60405161072c9190613864565b60405180910390f35b34801561074157600080fd5b5061074a611cdb565b60405161075791906137fd565b60405180910390f35b34801561076c57600080fd5b50610775611d01565b60405161078291906137fd565b60405180910390f35b34801561079757600080fd5b506107a0611d27565b6040516107ad9190613a46565b60405180910390f35b60007f80ac58cd000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061088157507f5b5e139f000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b80610891575061089082611d2d565b5b9050919050565b6060600280546108a790613d4f565b80601f01602080910402602001604051908101604052809291908181526020018280546108d390613d4f565b80156109205780601f106108f557610100808354040283529160200191610920565b820191906000526020600020905b81548152906001019060200180831161090357829003601f168201915b5050505050905090565b600061093582611d97565b61096b576040517fcf4700e400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6006600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b60006109b182610e8e565b90508073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610a19576040517f943f7b8c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16610a38611de5565b73ffffffffffffffffffffffffffffffffffffffff1614158015610a6a5750610a6881610a63611de5565b611c47565b155b15610aa1576040517fcfb3b94200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610aac838383611ded565b505050565b600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610b41576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b38906138e6565b60405180910390fd5b601254421015610b86576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b7d90613926565b60405180910390fd5b600b5481600f60008073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610bd49190613b36565b1115610c15576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c0c90613966565b60405180910390fd5b600a5481610c21610ccf565b610c2b9190613b36565b1115610c6c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c63906139e6565b60405180910390fd5b80600f60008073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254610cbb9190613b36565b92505081905550610ccc3382611e9f565b50565b6000610cd9611ebd565b6001546000540303905090565b60115481565b610cf7838383611ec2565b505050565b610d1783838360405180602001604052806000815250611926565b505050565b60105481565b600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610db2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610da9906138e6565b60405180910390fd5b826010819055508160118190555080601281905550505050565b600f6020528060005260406000206000915090505481565b600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610e74576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e6b906138e6565b60405180910390fd5b8060089080519060200190610e8a929190612e88565b5050565b6000610e9982612378565b600001519050919050565b60088054610eb190613d4f565b80601f0160208091040260200160405190810160405280929190818152602001828054610edd90613d4f565b8015610f2a5780601f10610eff57610100808354040283529160200191610f2a565b820191906000526020600020905b815481529060010190602001808311610f0d57829003601f168201915b505050505081565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610f9a576040517f8f4eb60400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160009054906101000a900467ffffffffffffffff1667ffffffffffffffff169050919050565b60606003805461101190613d4f565b80601f016020809104026020016040519081016040528092919081815260200182805461103d90613d4f565b801561108a5780601f1061105f5761010080835404028352916020019161108a565b820191906000526020600020905b81548152906001019060200180831161106d57829003601f168201915b5050505050905090565b60125481565b600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461112a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611121906138e6565b60405180910390fd5b606060008351141561113e5781905061116a565b828051906020012082604051602001611158929190613774565b60405160208183030381529060405290505b8473ffffffffffffffffffffffffffffffffffffffff168482604051611190919061379c565b60006040518083038185875af1925050503d80600081146111cd576040519150601f19603f3d011682016040523d82523d6000602084013e6111d2565b606091505b5050505050505050565b81600c54816111e9610ccf565b6111f39190613b36565b1115611234576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161122b906139c6565b60405180910390fd5b600954816112429190613bf4565b341015611284576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161127b906139a6565b60405180910390fd5b80600f60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546112d39190613b36565b92505081905550601154421061136b576003600f60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541115611366576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161135d90613946565b60405180910390fd5b6113ef565b6002600f60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205411156113ee576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113e590613906565b60405180910390fd5b5b601054421015611434576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161142b90613986565b60405180910390fd5b60003330604051602001611449929190613748565b60405160208183030381529060405280519060200120905060008160405160200161147491906137d7565b60405160208183030381529060405280519060200120905060006114988286612607565b9050600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161461152a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161152190613a06565b60405180910390fd5b6115343387611e9f565b505050505050565b60095481565b80600c548161154f610ccf565b6115599190613b36565b111561159a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611591906139c6565b60405180910390fd5b600954816115a89190613bf4565b3410156115ea576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115e1906139a6565b60405180910390fd5b80600f60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546116399190613b36565b9250508190555060115442106116d1576003600f60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205411156116cc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116c390613946565b60405180910390fd5b611755565b6002600f60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541115611754576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161174b90613906565b60405180910390fd5b5b60115442101561179a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161179190613a26565b60405180910390fd5b6117a43383611e9f565b5050565b6117b0611de5565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611815576040517fb06307db00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8060076000611822611de5565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff166118cf611de5565b73ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31836040516119149190613864565b60405180910390a35050565b600c5481565b611931848484611ec2565b6119508373ffffffffffffffffffffffffffffffffffffffff166126da565b80156119655750611963848484846126fd565b155b1561199c576040517fd1a57ed600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50505050565b600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611a32576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a29906138e6565b60405180910390fd5b600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc479081150290604051600060405180830381858888f1935050505050565b6060611a9782611d97565b611acd576040517fa14c4b5000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000611ad761285d565b9050600081511415611af85760405180602001604052806000815250611b23565b80611b02846128ef565b604051602001611b139291906137b3565b6040516020818303038152906040525b915050919050565b600a5481565b600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611bc1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bb8906138e6565b60405180910390fd5b81600d60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600e60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050565b6000600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600b5481565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b600081611da2611ebd565b11158015611db1575060005482105b8015611dde575060046000838152602001908152602001600020600001601c9054906101000a900460ff16155b9050919050565b600033905090565b826006600084815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550818373ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a4505050565b611eb9828260405180602001604052806000815250612a9c565b5050565b600090565b6000611ecd82612378565b90508373ffffffffffffffffffffffffffffffffffffffff16816000015173ffffffffffffffffffffffffffffffffffffffff1614611f38576040517fa114810000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008473ffffffffffffffffffffffffffffffffffffffff16611f59611de5565b73ffffffffffffffffffffffffffffffffffffffff161480611f885750611f8785611f82611de5565b611c47565b5b80611fcd5750611f96611de5565b73ffffffffffffffffffffffffffffffffffffffff16611fb58461092a565b73ffffffffffffffffffffffffffffffffffffffff16145b905080612006576040517f59c896be00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16141561206d576040517fea553b3400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61207a8585856001612aae565b61208660008487611ded565b6001600560008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160008282829054906101000a900467ffffffffffffffff160392506101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055506001600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160008282829054906101000a900467ffffffffffffffff160192506101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055506000600460008581526020019081526020016000209050848160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550428160000160146101000a81548167ffffffffffffffff021916908367ffffffffffffffff16021790555060006001850190506000600460008381526020019081526020016000209050600073ffffffffffffffffffffffffffffffffffffffff168160000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141561230657600054821461230557878160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555084602001518160000160146101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055505b5b505050828473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a46123718585856001612ab4565b5050505050565b612380612f0e565b60008290508061238e611ebd565b1115801561239d575060005481105b156125d0576000600460008381526020019081526020016000206040518060600160405290816000820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016000820160149054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815260200160008201601c9054906101000a900460ff161515151581525050905080604001516125ce57600073ffffffffffffffffffffffffffffffffffffffff16816000015173ffffffffffffffffffffffffffffffffffffffff16146124b2578092505050612602565b5b6001156125cd57818060019003925050600460008381526020019081526020016000206040518060600160405290816000820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016000820160149054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815260200160008201601c9054906101000a900460ff1615151515815250509050600073ffffffffffffffffffffffffffffffffffffffff16816000015173ffffffffffffffffffffffffffffffffffffffff16146125c8578092505050612602565b6124b3565b5b505b6040517fdf2d9b4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b919050565b600080600080604185511461262257600093505050506126d4565b6020850151925060408501519150606085015160001a9050601b8160ff16101561265657601b816126539190613b8c565b90505b601b8160ff161415801561266e5750601c8160ff1614155b1561267f57600093505050506126d4565b600186828585604051600081526020016040526040516126a2949392919061387f565b6020604051602081039080840390855afa1580156126c4573d6000803e3d6000fd5b5050506020604051035193505050505b92915050565b6000808273ffffffffffffffffffffffffffffffffffffffff163b119050919050565b60008373ffffffffffffffffffffffffffffffffffffffff1663150b7a02612723611de5565b8786866040518563ffffffff1660e01b81526004016127459493929190613818565b602060405180830381600087803b15801561275f57600080fd5b505af192505050801561279057506040513d601f19601f8201168201806040525081019061278d919061330a565b60015b61280a573d80600081146127c0576040519150601f19603f3d011682016040523d82523d6000602084013e6127c5565b606091505b50600081511415612802576040517fd1a57ed600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b805181602001fd5b63150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614915050949350505050565b60606008805461286c90613d4f565b80601f016020809104026020016040519081016040528092919081815260200182805461289890613d4f565b80156128e55780601f106128ba576101008083540402835291602001916128e5565b820191906000526020600020905b8154815290600101906020018083116128c857829003601f168201915b5050505050905090565b60606000821415612937576040518060400160405280600181526020017f30000000000000000000000000000000000000000000000000000000000000008152509050612a97565b600082905060005b6000821461296957808061295290613db2565b915050600a826129629190613bc3565b915061293f565b60008167ffffffffffffffff8111156129ab577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040519080825280601f01601f1916602001820160405280156129dd5781602001600182028036833780820191505090505b5090505b60008514612a90576001826129f69190613c4e565b9150600a85612a059190613e33565b6030612a119190613b36565b60f81b818381518110612a4d577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600a85612a899190613bc3565b94506129e1565b8093505050505b919050565b612aa98383836001612aba565b505050565b50505050565b50505050565b600080549050600073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff161415612b27576040517f2e07630000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000841415612b62576040517fb562e8dd00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b612b6f6000868387612aae565b83600560008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160008282829054906101000a900467ffffffffffffffff160192506101000a81548167ffffffffffffffff021916908367ffffffffffffffff16021790555083600560008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160088282829054906101000a900467ffffffffffffffff160192506101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550846004600083815260200190815260200160002060000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550426004600083815260200190815260200160002060000160146101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550600081905060008582019050838015612d395750612d388773ffffffffffffffffffffffffffffffffffffffff166126da565b5b15612dff575b818773ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4612dae60008884806001019550886126fd565b612de4576040517fd1a57ed600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80821415612d3f578260005414612dfa57600080fd5b612e6b565b5b818060010192508773ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a480821415612e00575b816000819055505050612e816000868387612ab4565b5050505050565b828054612e9490613d4f565b90600052602060002090601f016020900481019282612eb65760008555612efd565b82601f10612ecf57805160ff1916838001178555612efd565b82800160010185558215612efd579182015b82811115612efc578251825591602001919060010190612ee1565b5b509050612f0a9190612f51565b5090565b6040518060600160405280600073ffffffffffffffffffffffffffffffffffffffff168152602001600067ffffffffffffffff1681526020016000151581525090565b5b80821115612f6a576000816000905550600101612f52565b5090565b6000612f81612f7c84613a86565b613a61565b905082815260208101848484011115612f9957600080fd5b612fa4848285613d0d565b509392505050565b6000612fbf612fba84613ab7565b613a61565b905082815260208101848484011115612fd757600080fd5b612fe2848285613d0d565b509392505050565b600081359050612ff98161412a565b92915050565b60008135905061300e81614141565b92915050565b60008135905061302381614158565b92915050565b60008151905061303881614158565b92915050565b600082601f83011261304f57600080fd5b813561305f848260208601612f6e565b91505092915050565b600082601f83011261307957600080fd5b8135613089848260208601612fac565b91505092915050565b6000813590506130a18161416f565b92915050565b6000602082840312156130b957600080fd5b60006130c784828501612fea565b91505092915050565b600080604083850312156130e357600080fd5b60006130f185828601612fea565b925050602061310285828601612fea565b9150509250929050565b60008060006060848603121561312157600080fd5b600061312f86828701612fea565b935050602061314086828701612fea565b925050604061315186828701613092565b9150509250925092565b6000806000806080858703121561317157600080fd5b600061317f87828801612fea565b945050602061319087828801612fea565b93505060406131a187828801613092565b925050606085013567ffffffffffffffff8111156131be57600080fd5b6131ca8782880161303e565b91505092959194509250565b600080604083850312156131e957600080fd5b60006131f785828601612fea565b925050602061320885828601612fff565b9150509250929050565b6000806040838503121561322557600080fd5b600061323385828601612fea565b925050602061324485828601613092565b9150509250929050565b6000806000806080858703121561326457600080fd5b600061327287828801612fea565b945050602061328387828801613092565b935050604085013567ffffffffffffffff8111156132a057600080fd5b6132ac87828801613068565b925050606085013567ffffffffffffffff8111156132c957600080fd5b6132d58782880161303e565b91505092959194509250565b6000602082840312156132f357600080fd5b600061330184828501613014565b91505092915050565b60006020828403121561331c57600080fd5b600061332a84828501613029565b91505092915050565b60006020828403121561334557600080fd5b600082013567ffffffffffffffff81111561335f57600080fd5b61336b84828501613068565b91505092915050565b60006020828403121561338657600080fd5b600061339484828501613092565b91505092915050565b600080604083850312156133b057600080fd5b60006133be85828601613092565b925050602083013567ffffffffffffffff8111156133db57600080fd5b6133e78582860161303e565b9150509250929050565b60008060006060848603121561340657600080fd5b600061341486828701613092565b935050602061342586828701613092565b925050604061343686828701613092565b9150509250925092565b61344981613c82565b82525050565b61346061345b82613c82565b613dfb565b82525050565b61346f81613c94565b82525050565b61347e81613ca0565b82525050565b61349561349082613ca0565b613e0d565b82525050565b6134ac6134a782613caa565b613e17565b82525050565b60006134bd82613ae8565b6134c78185613afe565b93506134d7818560208601613d1c565b6134e081613f20565b840191505092915050565b60006134f682613ae8565b6135008185613b0f565b9350613510818560208601613d1c565b80840191505092915050565b600061352782613af3565b6135318185613b1a565b9350613541818560208601613d1c565b61354a81613f20565b840191505092915050565b600061356082613af3565b61356a8185613b2b565b935061357a818560208601613d1c565b80840191505092915050565b6000613593601c83613b2b565b915061359e82613f3e565b601c82019050919050565b60006135b6600a83613b1a565b91506135c182613f67565b602082019050919050565b60006135d9600583613b1a565b91506135e482613f90565b602082019050919050565b60006135fc601783613b1a565b915061360782613fb9565b602082019050919050565b600061361f600583613b1a565b915061362a82613fe2565b602082019050919050565b6000613642600683613b1a565b915061364d8261400b565b602082019050919050565b6000613665601983613b1a565b915061367082614034565b602082019050919050565b6000613688601483613b1a565b91506136938261405d565b602082019050919050565b60006136ab601383613b1a565b91506136b682614086565b602082019050919050565b60006136ce601283613b1a565b91506136d9826140af565b602082019050919050565b60006136f1601583613b1a565b91506136fc826140d8565b602082019050919050565b6000613714601683613b1a565b915061371f82614101565b602082019050919050565b61373381613cf6565b82525050565b61374281613d00565b82525050565b6000613754828561344f565b601482019150613764828461344f565b6014820191508190509392505050565b6000613780828561349b565b60048201915061379082846134eb565b91508190509392505050565b60006137a882846134eb565b915081905092915050565b60006137bf8285613555565b91506137cb8284613555565b91508190509392505050565b60006137e282613586565b91506137ee8284613484565b60208201915081905092915050565b60006020820190506138126000830184613440565b92915050565b600060808201905061382d6000830187613440565b61383a6020830186613440565b613847604083018561372a565b818103606083015261385981846134b2565b905095945050505050565b60006020820190506138796000830184613466565b92915050565b60006080820190506138946000830187613475565b6138a16020830186613739565b6138ae6040830185613475565b6138bb6060830184613475565b95945050505050565b600060208201905081810360008301526138de818461351c565b905092915050565b600060208201905081810360008301526138ff816135a9565b9050919050565b6000602082019050818103600083015261391f816135cc565b9050919050565b6000602082019050818103600083015261393f816135ef565b9050919050565b6000602082019050818103600083015261395f81613612565b9050919050565b6000602082019050818103600083015261397f81613635565b9050919050565b6000602082019050818103600083015261399f81613658565b9050919050565b600060208201905081810360008301526139bf8161367b565b9050919050565b600060208201905081810360008301526139df8161369e565b9050919050565b600060208201905081810360008301526139ff816136c1565b9050919050565b60006020820190508181036000830152613a1f816136e4565b9050919050565b60006020820190508181036000830152613a3f81613707565b9050919050565b6000602082019050613a5b600083018461372a565b92915050565b6000613a6b613a7c565b9050613a778282613d81565b919050565b6000604051905090565b600067ffffffffffffffff821115613aa157613aa0613ef1565b5b613aaa82613f20565b9050602081019050919050565b600067ffffffffffffffff821115613ad257613ad1613ef1565b5b613adb82613f20565b9050602081019050919050565b600081519050919050565b600081519050919050565b600082825260208201905092915050565b600081905092915050565b600082825260208201905092915050565b600081905092915050565b6000613b4182613cf6565b9150613b4c83613cf6565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115613b8157613b80613e64565b5b828201905092915050565b6000613b9782613d00565b9150613ba283613d00565b92508260ff03821115613bb857613bb7613e64565b5b828201905092915050565b6000613bce82613cf6565b9150613bd983613cf6565b925082613be957613be8613e93565b5b828204905092915050565b6000613bff82613cf6565b9150613c0a83613cf6565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615613c4357613c42613e64565b5b828202905092915050565b6000613c5982613cf6565b9150613c6483613cf6565b925082821015613c7757613c76613e64565b5b828203905092915050565b6000613c8d82613cd6565b9050919050565b60008115159050919050565b6000819050919050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b82818337600083830152505050565b60005b83811015613d3a578082015181840152602081019050613d1f565b83811115613d49576000848401525b50505050565b60006002820490506001821680613d6757607f821691505b60208210811415613d7b57613d7a613ec2565b5b50919050565b613d8a82613f20565b810181811067ffffffffffffffff82111715613da957613da8613ef1565b5b80604052505050565b6000613dbd82613cf6565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415613df057613def613e64565b5b600182019050919050565b6000613e0682613e21565b9050919050565b6000819050919050565b6000819050919050565b6000613e2c82613f31565b9050919050565b6000613e3e82613cf6565b9150613e4983613cf6565b925082613e5957613e58613e93565b5b828206905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000601f19601f8301169050919050565b60008160601b9050919050565b7f19457468657265756d205369676e6564204d6573736167653a0a333200000000600082015250565b7f4f6e6c79206f776e657200000000000000000000000000000000000000000000600082015250565b7f4d61782032000000000000000000000000000000000000000000000000000000600082015250565b7f52657365727665206d696e74206e6f7420616374697665000000000000000000600082015250565b7f4d61782033000000000000000000000000000000000000000000000000000000600082015250565b7f4d61782035300000000000000000000000000000000000000000000000000000600082015250565b7f57686974656c697374206d696e74206e6f742061637469766500000000000000600082015250565b7f496e73756666696369656e74207061796d656e74000000000000000000000000600082015250565b7f53616c6520737570706c79207265616368656400000000000000000000000000600082015250565b7f4d617820737570706c7920726561636865640000000000000000000000000000600082015250565b7f5369676e657220646f6573206e6f74206d617463680000000000000000000000600082015250565b7f5075626c6963206d696e74206e6f742061637469766500000000000000000000600082015250565b61413381613c82565b811461413e57600080fd5b50565b61414a81613c94565b811461415557600080fd5b50565b61416181613caa565b811461416c57600080fd5b50565b61417881613cf6565b811461418357600080fd5b5056fea2646970667358221220fee20fa5c4602f929580a77260c0762e2149691e79d8a6f8b4166f614f9f73f964736f6c6343000804003368747470733a2f2f6d657461646174612e74686566726f6f746965732e636f6d2f0000000000000000000000000e61a8fb14f6ac999646212d30b2192cd02080dd0000000000000000000000001f979d06b999d058a6a950452260beacf2f9d903