More Info
Private Name Tags
ContractCreator
Latest 25 from a total of 3,091 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Hatch Egg | 5325340 | 2362 days ago | IN | 0 ETH | 0.00004566 | ||||
Hatch Egg | 5325340 | 2362 days ago | IN | 0 ETH | 0.00004566 | ||||
Hatch Egg | 5325324 | 2362 days ago | IN | 0 ETH | 0.00004566 | ||||
Hatch Egg | 5325315 | 2362 days ago | IN | 0 ETH | 0.00004566 | ||||
Hatch Egg | 5325315 | 2362 days ago | IN | 0 ETH | 0.00004566 | ||||
Hatch Egg | 5325314 | 2362 days ago | IN | 0 ETH | 0.00004566 | ||||
Hatch Egg | 5325264 | 2362 days ago | IN | 0 ETH | 0.00001255 | ||||
Hatch Egg | 5324990 | 2362 days ago | IN | 0 ETH | 0.00002967 | ||||
Hatch Egg | 5324972 | 2362 days ago | IN | 0 ETH | 0.00002739 | ||||
Hatch Egg | 5324972 | 2362 days ago | IN | 0 ETH | 0.00002967 | ||||
Withdraw Ether | 5324764 | 2362 days ago | IN | 0 ETH | 0.00016108 | ||||
Update Maintaini... | 5324744 | 2362 days ago | IN | 0 ETH | 0.00013749 | ||||
Hatch Egg | 5324556 | 2362 days ago | IN | 0 ETH | 0.0004721 | ||||
Hatch Egg | 5324542 | 2362 days ago | IN | 0 ETH | 0.00076455 | ||||
Lay Egg | 5324542 | 2362 days ago | IN | 0 ETH | 0.00036123 | ||||
Hatch Egg | 5324192 | 2362 days ago | IN | 0 ETH | 0.00073583 | ||||
Hatch Egg | 5323962 | 2362 days ago | IN | 0 ETH | 0.00077644 | ||||
Hatch Egg | 5323907 | 2362 days ago | IN | 0 ETH | 0.00082617 | ||||
Buy Egg | 5323544 | 2362 days ago | IN | 0.06 ETH | 0.00005245 | ||||
Buy Egg | 5323544 | 2362 days ago | IN | 0.06 ETH | 0.00027495 | ||||
Transform | 5323357 | 2362 days ago | IN | 0 ETH | 0.0014341 | ||||
Lay Egg | 5323213 | 2362 days ago | IN | 0 ETH | 0.00040367 | ||||
Transform | 5323008 | 2362 days ago | IN | 0 ETH | 0.00047211 | ||||
Hatch Egg | 5322895 | 2362 days ago | IN | 0 ETH | 0.00082483 | ||||
Lay Egg | 5322594 | 2362 days ago | IN | 0 ETH | 0.0001907 |
Latest 1 internal transaction
Advanced mode:
Parent Transaction Hash | Block | From | To | |||
---|---|---|---|---|---|---|
5324764 | 2362 days ago | 8.46 ETH |
Loading...
Loading
Contract Name:
EtheremonTransform
Compiler Version
v0.4.19+commit.c4cbbb05
Optimization Enabled:
Yes with 200 runs
Other Settings:
default evmVersion
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2018-01-30 */ pragma solidity ^0.4.16; // copyright [email protected] contract SafeMath { /* function assert(bool assertion) internal { */ /* if (!assertion) { */ /* throw; */ /* } */ /* } // assert no longer needed once solidity is on 0.4.10 */ function safeAdd(uint256 x, uint256 y) pure internal returns(uint256) { uint256 z = x + y; assert((z >= x) && (z >= y)); return z; } function safeSubtract(uint256 x, uint256 y) pure internal returns(uint256) { assert(x >= y); uint256 z = x - y; return z; } function safeMult(uint256 x, uint256 y) pure internal returns(uint256) { uint256 z = x * y; assert((x == 0)||(z/x == y)); return z; } } contract BasicAccessControl { address public owner; // address[] public moderators; uint16 public totalModerators = 0; mapping (address => bool) public moderators; bool public isMaintaining = true; function BasicAccessControl() public { owner = msg.sender; } modifier onlyOwner { require(msg.sender == owner); _; } modifier onlyModerators() { require(msg.sender == owner || moderators[msg.sender] == true); _; } modifier isActive { require(!isMaintaining); _; } function ChangeOwner(address _newOwner) onlyOwner public { if (_newOwner != address(0)) { owner = _newOwner; } } function AddModerator(address _newModerator) onlyOwner public { if (moderators[_newModerator] == false) { moderators[_newModerator] = true; totalModerators += 1; } } function RemoveModerator(address _oldModerator) onlyOwner public { if (moderators[_oldModerator] == true) { moderators[_oldModerator] = false; totalModerators -= 1; } } function UpdateMaintaining(bool _isMaintaining) onlyOwner public { isMaintaining = _isMaintaining; } } contract EtheremonEnum { enum ResultCode { SUCCESS, ERROR_CLASS_NOT_FOUND, ERROR_LOW_BALANCE, ERROR_SEND_FAIL, ERROR_NOT_TRAINER, ERROR_NOT_ENOUGH_MONEY, ERROR_INVALID_AMOUNT, ERROR_OBJ_NOT_FOUND, ERROR_OBJ_INVALID_OWNERSHIP } enum ArrayType { CLASS_TYPE, STAT_STEP, STAT_START, STAT_BASE, OBJ_SKILL } enum PropertyType { ANCESTOR, XFACTOR } } contract EtheremonDataBase is EtheremonEnum, BasicAccessControl, SafeMath { uint64 public totalMonster; uint32 public totalClass; // write function addElementToArrayType(ArrayType _type, uint64 _id, uint8 _value) onlyModerators public returns(uint); function removeElementOfArrayType(ArrayType _type, uint64 _id, uint8 _value) onlyModerators public returns(uint); function setMonsterClass(uint32 _classId, uint256 _price, uint256 _returnPrice, bool _catchable) onlyModerators public returns(uint32); function addMonsterObj(uint32 _classId, address _trainer, string _name) onlyModerators public returns(uint64); function setMonsterObj(uint64 _objId, string _name, uint32 _exp, uint32 _createIndex, uint32 _lastClaimIndex) onlyModerators public; function increaseMonsterExp(uint64 _objId, uint32 amount) onlyModerators public; function decreaseMonsterExp(uint64 _objId, uint32 amount) onlyModerators public; function removeMonsterIdMapping(address _trainer, uint64 _monsterId) onlyModerators public; function addMonsterIdMapping(address _trainer, uint64 _monsterId) onlyModerators public; function clearMonsterReturnBalance(uint64 _monsterId) onlyModerators public returns(uint256 amount); function collectAllReturnBalance(address _trainer) onlyModerators public returns(uint256 amount); function transferMonster(address _from, address _to, uint64 _monsterId) onlyModerators public returns(ResultCode); function addExtraBalance(address _trainer, uint256 _amount) onlyModerators public returns(uint256); function deductExtraBalance(address _trainer, uint256 _amount) onlyModerators public returns(uint256); function setExtraBalance(address _trainer, uint256 _amount) onlyModerators public; // read function getSizeArrayType(ArrayType _type, uint64 _id) constant public returns(uint); function getElementInArrayType(ArrayType _type, uint64 _id, uint _index) constant public returns(uint8); function getMonsterClass(uint32 _classId) constant public returns(uint32 classId, uint256 price, uint256 returnPrice, uint32 total, bool catchable); function getMonsterObj(uint64 _objId) constant public returns(uint64 objId, uint32 classId, address trainer, uint32 exp, uint32 createIndex, uint32 lastClaimIndex, uint createTime); function getMonsterName(uint64 _objId) constant public returns(string name); function getExtraBalance(address _trainer) constant public returns(uint256); function getMonsterDexSize(address _trainer) constant public returns(uint); function getMonsterObjId(address _trainer, uint index) constant public returns(uint64); function getExpectedBalance(address _trainer) constant public returns(uint256); function getMonsterReturn(uint64 _objId) constant public returns(uint256 current, uint256 total); } contract EtheremonTransformData { uint64 public totalEgg = 0; function getHatchingEggId(address _trainer) constant external returns(uint64); function getHatchingEggData(address _trainer) constant external returns(uint64, uint64, uint32, address, uint, uint64); function getTranformedId(uint64 _objId) constant external returns(uint64); function countEgg(uint64 _objId) constant external returns(uint); function setHatchTime(uint64 _eggId, uint _hatchTime) external; function setHatchedEgg(uint64 _eggId, uint64 _newObjId) external; function addEgg(uint64 _objId, uint32 _classId, address _trainer, uint _hatchTime) external returns(uint64); function setTranformed(uint64 _objId, uint64 _newObjId) external; } contract EtheremonWorld is EtheremonEnum { function getGen0COnfig(uint32 _classId) constant public returns(uint32, uint256, uint32); function getTrainerEarn(address _trainer) constant public returns(uint256); function getReturnFromMonster(uint64 _objId) constant public returns(uint256 current, uint256 total); function getClassPropertyValue(uint32 _classId, PropertyType _type, uint index) constant external returns(uint32); function getClassPropertySize(uint32 _classId, PropertyType _type) constant external returns(uint); } interface EtheremonBattle { function isOnBattle(uint64 _objId) constant external returns(bool); function getMonsterLevel(uint64 _objId) constant public returns(uint8); } interface EtheremonTradeInterface { function isOnTrading(uint64 _objId) constant external returns(bool); } contract EtheremonTransform is EtheremonEnum, BasicAccessControl, SafeMath { uint8 constant public STAT_COUNT = 6; uint8 constant public STAT_MAX = 32; uint8 constant public GEN0_NO = 24; struct MonsterClassAcc { uint32 classId; uint256 price; uint256 returnPrice; uint32 total; bool catchable; } struct MonsterObjAcc { uint64 monsterId; uint32 classId; address trainer; string name; uint32 exp; uint32 createIndex; uint32 lastClaimIndex; uint createTime; } struct MonsterEgg { uint64 eggId; uint64 objId; uint32 classId; address trainer; uint hatchTime; uint64 newObjId; } struct BasicObjInfo { uint32 classId; address owner; uint8 level; } // Gen0 has return price & no longer can be caught when this contract is deployed struct Gen0Config { uint32 classId; uint256 originalPrice; uint256 returnPrice; uint32 total; // total caught (not count those from eggs) } // hatching range uint16 public hatchStartTime = 2; // hour uint16 public hatchMaxTime = 46; // hour uint public removeHatchingTimeFee = 0.05 ether; // ETH uint public buyEggFee = 0.06 ether; // ETH uint32[] public randomClassIds; mapping(uint32 => uint8) public layingEggLevels; mapping(uint32 => uint8) public layingEggDeductions; mapping(uint32 => uint8) public transformLevels; mapping(uint32 => uint32) public transformClasses; mapping(uint8 => uint32) public levelExps; address private lastHatchingAddress; mapping(uint32 => Gen0Config) public gen0Config; // linked smart contract address public dataContract; address public worldContract; address public transformDataContract; address public battleContract; address public tradeContract; // events event EventLayEgg(address indexed trainer, uint64 objId, uint64 eggId); event EventHatchEgg(address indexed trainer, uint64 eggId, uint64 objId); event EventTransform(address indexed trainer, uint64 oldObjId, uint64 newObjId); event EventRelease(address indexed trainer, uint64 objId); // modifier modifier requireDataContract { require(dataContract != address(0)); _; } modifier requireTransformDataContract { require(transformDataContract != address(0)); _; } modifier requireBattleContract { require(battleContract != address(0)); _; } modifier requireTradeContract { require(tradeContract != address(0)); _; } // constructor function EtheremonTransform(address _dataContract, address _worldContract, address _transformDataContract, address _battleContract, address _tradeContract) public { dataContract = _dataContract; worldContract = _worldContract; transformDataContract = _transformDataContract; battleContract = _battleContract; tradeContract = _tradeContract; } // helper function getRandom(uint16 maxRan, uint8 index, address priAddress) constant public returns(uint8) { uint256 genNum = uint256(block.blockhash(block.number-1)) + uint256(priAddress); for (uint8 i = 0; i < index && i < 6; i ++) { genNum /= 256; } return uint8(genNum % maxRan); } function addNewObj(address _trainer, uint32 _classId) private returns(uint64) { EtheremonDataBase data = EtheremonDataBase(dataContract); uint64 objId = data.addMonsterObj(_classId, _trainer, "..name me..."); for (uint i=0; i < STAT_COUNT; i+= 1) { uint8 value = getRandom(STAT_MAX, uint8(i), lastHatchingAddress) + data.getElementInArrayType(ArrayType.STAT_START, uint64(_classId), i); data.addElementToArrayType(ArrayType.STAT_BASE, objId, value); } return objId; } // admin & moderators function setContract(address _dataContract, address _worldContract, address _transformDataContract, address _battleContract, address _tradeContract) onlyModerators external { dataContract = _dataContract; worldContract = _worldContract; transformDataContract = _transformDataContract; battleContract = _battleContract; tradeContract = _tradeContract; } function setOriginalPriceGen0() onlyModerators external { gen0Config[1] = Gen0Config(1, 0.3 ether, 0.003 ether, 374); gen0Config[2] = Gen0Config(2, 0.3 ether, 0.003 ether, 408); gen0Config[3] = Gen0Config(3, 0.3 ether, 0.003 ether, 373); gen0Config[4] = Gen0Config(4, 0.2 ether, 0.002 ether, 437); gen0Config[5] = Gen0Config(5, 0.1 ether, 0.001 ether, 497); gen0Config[6] = Gen0Config(6, 0.3 ether, 0.003 ether, 380); gen0Config[7] = Gen0Config(7, 0.2 ether, 0.002 ether, 345); gen0Config[8] = Gen0Config(8, 0.1 ether, 0.001 ether, 518); gen0Config[9] = Gen0Config(9, 0.1 ether, 0.001 ether, 447); gen0Config[10] = Gen0Config(10, 0.2 ether, 0.002 ether, 380); gen0Config[11] = Gen0Config(11, 0.2 ether, 0.002 ether, 354); gen0Config[12] = Gen0Config(12, 0.2 ether, 0.002 ether, 346); gen0Config[13] = Gen0Config(13, 0.2 ether, 0.002 ether, 351); gen0Config[14] = Gen0Config(14, 0.2 ether, 0.002 ether, 338); gen0Config[15] = Gen0Config(15, 0.2 ether, 0.002 ether, 341); gen0Config[16] = Gen0Config(16, 0.35 ether, 0.0035 ether, 384); gen0Config[17] = Gen0Config(17, 1 ether, 0.01 ether, 305); gen0Config[18] = Gen0Config(18, 0.1 ether, 0.001 ether, 427); gen0Config[19] = Gen0Config(19, 1 ether, 0.01 ether, 304); gen0Config[20] = Gen0Config(20, 0.4 ether, 0.05 ether, 82); gen0Config[21] = Gen0Config(21, 1, 1, 123); gen0Config[22] = Gen0Config(22, 0.2 ether, 0.001 ether, 468); gen0Config[23] = Gen0Config(23, 0.5 ether, 0.0025 ether, 302); gen0Config[24] = Gen0Config(24, 1 ether, 0.005 ether, 195); } function updateHatchingRange(uint16 _start, uint16 _max) onlyModerators external { hatchStartTime = _start; hatchMaxTime = _max; } function withdrawEther(address _sendTo, uint _amount) onlyModerators external { // no user money is kept in this contract, only trasaction fee if (_amount > this.balance) { revert(); } _sendTo.transfer(_amount); } function setConfigClass(uint32 _classId, uint8 _layingLevel, uint8 _layingCost, uint8 _transformLevel, uint32 _tranformClass) onlyModerators external { layingEggLevels[_classId] = _layingLevel; layingEggDeductions[_classId] = _layingCost; transformLevels[_classId] = _transformLevel; transformClasses[_classId] = _tranformClass; } function setConfig(uint _removeHatchingTimeFee, uint _buyEggFee) onlyModerators external { removeHatchingTimeFee = _removeHatchingTimeFee; buyEggFee = _buyEggFee; } function genLevelExp() onlyModerators external { uint8 level = 1; uint32 requirement = 100; uint32 sum = requirement; while(level <= 100) { levelExps[level] = sum; level += 1; requirement = (requirement * 11) / 10 + 5; sum += requirement; } } function addRandomClass(uint32 _newClassId) onlyModerators public { if (_newClassId > 0) { for (uint index = 0; index < randomClassIds.length; index++) { if (randomClassIds[index] == _newClassId) { return; } } randomClassIds.push(_newClassId); } } function removeRandomClass(uint32 _oldClassId) onlyModerators public { uint foundIndex = 0; for (; foundIndex < randomClassIds.length; foundIndex++) { if (randomClassIds[foundIndex] == _oldClassId) { break; } } if (foundIndex < randomClassIds.length) { randomClassIds[foundIndex] = randomClassIds[randomClassIds.length-1]; delete randomClassIds[randomClassIds.length-1]; randomClassIds.length--; } } function removeHatchingTimeWithToken(address _trainer) isActive onlyModerators requireDataContract requireTransformDataContract external { EtheremonTransformData transformData = EtheremonTransformData(transformDataContract); MonsterEgg memory egg; (egg.eggId, egg.objId, egg.classId, egg.trainer, egg.hatchTime, egg.newObjId) = transformData.getHatchingEggData(_trainer); // not hatching any egg if (egg.eggId == 0 || egg.trainer != _trainer || egg.newObjId > 0) revert(); transformData.setHatchTime(egg.eggId, 0); } function buyEggWithToken(address _trainer) isActive onlyModerators requireDataContract requireTransformDataContract external { if (randomClassIds.length == 0) { revert(); } EtheremonTransformData transformData = EtheremonTransformData(transformDataContract); // make sure no hatching egg at the same time if (transformData.getHatchingEggId(_trainer) > 0) { revert(); } // add random egg uint8 classIndex = getRandom(uint16(randomClassIds.length), 1, lastHatchingAddress); uint64 eggId = transformData.addEgg(0, randomClassIds[classIndex], _trainer, block.timestamp + (hatchStartTime + getRandom(hatchMaxTime, 0, lastHatchingAddress)) * 3600); // deduct exp EventLayEgg(msg.sender, 0, eggId); } // public function ceil(uint a, uint m) pure public returns (uint) { return ((a + m - 1) / m) * m; } function getLevel(uint32 exp) view public returns (uint8) { uint8 minIndex = 1; uint8 maxIndex = 100; uint8 currentIndex; while (minIndex < maxIndex) { currentIndex = (minIndex + maxIndex) / 2; if (exp < levelExps[currentIndex]) maxIndex = currentIndex; else minIndex = currentIndex + 1; } return minIndex; } function getGen0ObjInfo(uint64 _objId) constant public returns(uint32, uint32, uint256) { EtheremonDataBase data = EtheremonDataBase(dataContract); MonsterObjAcc memory obj; (obj.monsterId, obj.classId, obj.trainer, obj.exp, obj.createIndex, obj.lastClaimIndex, obj.createTime) = data.getMonsterObj(_objId); Gen0Config memory gen0 = gen0Config[obj.classId]; if (gen0.classId != obj.classId) { return (gen0.classId, obj.createIndex, 0); } uint32 totalGap = 0; if (obj.createIndex < gen0.total) totalGap = gen0.total - obj.createIndex; return (obj.classId, obj.createIndex, safeMult(totalGap, gen0.returnPrice)); } function getObjClassId(uint64 _objId) requireDataContract constant public returns(uint32, address, uint8) { EtheremonDataBase data = EtheremonDataBase(dataContract); MonsterObjAcc memory obj; uint32 _ = 0; (obj.monsterId, obj.classId, obj.trainer, obj.exp, _, _, obj.createTime) = data.getMonsterObj(_objId); return (obj.classId, obj.trainer, getLevel(obj.exp)); } function getClassCheckOwner(uint64 _objId, address _trainer) requireDataContract constant public returns(uint32) { EtheremonDataBase data = EtheremonDataBase(dataContract); MonsterObjAcc memory obj; uint32 _ = 0; (obj.monsterId, obj.classId, obj.trainer, obj.exp, _, _, obj.createTime) = data.getMonsterObj(_objId); if (_trainer != obj.trainer) return 0; return obj.classId; } function calculateMaxEggG0(uint64 _objId) constant public returns(uint) { uint32 classId; uint32 createIndex; uint256 totalEarn; (classId, createIndex, totalEarn) = getGen0ObjInfo(_objId); if (classId > GEN0_NO || classId == 20 || classId == 21) return 0; Gen0Config memory config = gen0Config[classId]; // the one from egg can not lay if (createIndex > config.total) return 0; // calculate agv price uint256 avgPrice = config.originalPrice; uint rate = config.originalPrice/config.returnPrice; if (config.total > rate) { uint k = config.total - rate; avgPrice = (config.total * config.originalPrice + config.returnPrice * k * (k+1) / 2) / config.total; } uint256 catchPrice = config.originalPrice; if (createIndex > rate) { catchPrice += config.returnPrice * safeSubtract(createIndex, rate); } if (totalEarn >= catchPrice) { return 0; } return ceil((catchPrice - totalEarn)*15*1000/avgPrice, 10000)/10000; } function canLayEgg(uint64 _objId, uint32 _classId, uint32 _level) constant public returns(bool) { if (_classId <= GEN0_NO) { EtheremonTransformData transformData = EtheremonTransformData(transformDataContract); // legends if (transformData.countEgg(_objId) >= calculateMaxEggG0(_objId)) return false; return true; } else { if (layingEggLevels[_classId] == 0 || _level < layingEggLevels[_classId]) return false; return true; } } function layEgg(uint64 _objId) isActive requireDataContract requireTransformDataContract external { EtheremonTransformData transformData = EtheremonTransformData(transformDataContract); // make sure no hatching egg at the same time if (transformData.getHatchingEggId(msg.sender) > 0) { revert(); } // can not lay egg when trading EtheremonTradeInterface trade = EtheremonTradeInterface(tradeContract); if (trade.isOnTrading(_objId)) revert(); // check obj EtheremonDataBase data = EtheremonDataBase(dataContract); MonsterObjAcc memory obj; uint32 _ = 0; (obj.monsterId, obj.classId, obj.trainer, obj.exp, _, _, obj.createTime) = data.getMonsterObj(_objId); if (obj.monsterId != _objId || obj.trainer != msg.sender) { revert(); } // check lay egg condition uint8 currentLevel = getLevel(obj.exp); uint8 afterLevel = 0; if (!canLayEgg(_objId, obj.classId, currentLevel)) revert(); if (layingEggDeductions[obj.classId] >= currentLevel) revert(); afterLevel = currentLevel - layingEggDeductions[obj.classId]; // add egg uint64 eggId = transformData.addEgg(obj.monsterId, obj.classId, msg.sender, block.timestamp + (hatchStartTime + getRandom(hatchMaxTime, 0, lastHatchingAddress)) * 3600); // deduct exp if (afterLevel < currentLevel) data.decreaseMonsterExp(_objId, obj.exp - levelExps[afterLevel-1]); EventLayEgg(msg.sender, _objId, eggId); } function hatchEgg() isActive requireDataContract requireTransformDataContract external { // use as a seed for random lastHatchingAddress = msg.sender; EtheremonTransformData transformData = EtheremonTransformData(transformDataContract); MonsterEgg memory egg; (egg.eggId, egg.objId, egg.classId, egg.trainer, egg.hatchTime, egg.newObjId) = transformData.getHatchingEggData(msg.sender); // not hatching any egg if (egg.eggId == 0 || egg.trainer != msg.sender) revert(); // need more time if (egg.newObjId > 0 || egg.hatchTime > block.timestamp) { revert(); } uint64 objId = addNewObj(msg.sender, egg.classId); transformData.setHatchedEgg(egg.eggId, objId); EventHatchEgg(msg.sender, egg.eggId, objId); } function removeHatchingTime() isActive requireDataContract requireTransformDataContract external payable { EtheremonTransformData transformData = EtheremonTransformData(transformDataContract); MonsterEgg memory egg; (egg.eggId, egg.objId, egg.classId, egg.trainer, egg.hatchTime, egg.newObjId) = transformData.getHatchingEggData(msg.sender); // not hatching any egg if (egg.eggId == 0 || egg.trainer != msg.sender || egg.newObjId > 0) revert(); if (msg.value != removeHatchingTimeFee) { revert(); } transformData.setHatchTime(egg.eggId, 0); } function checkAncestors(uint32 _classId, address _trainer, uint64 _a1, uint64 _a2, uint64 _a3) constant public returns(bool) { EtheremonWorld world = EtheremonWorld(worldContract); uint index = 0; uint32 temp = 0; // check ancestor uint32[3] memory ancestors; uint32[3] memory requestAncestors; index = world.getClassPropertySize(_classId, PropertyType.ANCESTOR); while (index > 0) { index -= 1; ancestors[index] = world.getClassPropertyValue(_classId, PropertyType.ANCESTOR, index); } if (_a1 > 0) { temp = getClassCheckOwner(_a1, _trainer); if (temp == 0) return false; requestAncestors[0] = temp; } if (_a2 > 0) { temp = getClassCheckOwner(_a2, _trainer); if (temp == 0) return false; requestAncestors[1] = temp; } if (_a3 > 0) { temp = getClassCheckOwner(_a3, _trainer); if (temp == 0) return false; requestAncestors[2] = temp; } if (requestAncestors[0] > 0 && (requestAncestors[0] == requestAncestors[1] || requestAncestors[0] == requestAncestors[2])) return false; if (requestAncestors[1] > 0 && (requestAncestors[1] == requestAncestors[2])) return false; for (index = 0; index < ancestors.length; index++) { temp = ancestors[index]; if (temp > 0 && temp != requestAncestors[0] && temp != requestAncestors[1] && temp != requestAncestors[2]) return false; } return true; } function transform(uint64 _objId, uint64 _a1, uint64 _a2, uint64 _a3) isActive requireDataContract requireTransformDataContract external payable { EtheremonTransformData transformData = EtheremonTransformData(transformDataContract); if (transformData.getTranformedId(_objId) > 0) revert(); EtheremonBattle battle = EtheremonBattle(battleContract); EtheremonTradeInterface trade = EtheremonTradeInterface(tradeContract); if (battle.isOnBattle(_objId) || trade.isOnTrading(_objId)) revert(); EtheremonDataBase data = EtheremonDataBase(dataContract); BasicObjInfo memory objInfo; (objInfo.classId, objInfo.owner, objInfo.level) = getObjClassId(_objId); uint32 transformClass = transformClasses[objInfo.classId]; if (objInfo.classId == 0 || objInfo.owner != msg.sender) revert(); if (transformLevels[objInfo.classId] == 0 || objInfo.level < transformLevels[objInfo.classId]) revert(); if (transformClass == 0) revert(); // gen0 - can not transform if it has bonus egg if (objInfo.classId <= GEN0_NO) { // legends if (getBonusEgg(_objId) > 0) revert(); } else { if (!checkAncestors(objInfo.classId, msg.sender, _a1, _a2, _a3)) revert(); } uint64 newObjId = addNewObj(msg.sender, transformClass); // remove old one data.removeMonsterIdMapping(msg.sender, _objId); transformData.setTranformed(_objId, newObjId); EventTransform(msg.sender, _objId, newObjId); } function buyEgg() isActive requireDataContract requireTransformDataContract external payable { if (msg.value != buyEggFee) { revert(); } if (randomClassIds.length == 0) { revert(); } EtheremonTransformData transformData = EtheremonTransformData(transformDataContract); // make sure no hatching egg at the same time if (transformData.getHatchingEggId(msg.sender) > 0) { revert(); } // add random egg uint8 classIndex = getRandom(uint16(randomClassIds.length), 1, lastHatchingAddress); uint64 eggId = transformData.addEgg(0, randomClassIds[classIndex], msg.sender, block.timestamp + (hatchStartTime + getRandom(hatchMaxTime, 0, lastHatchingAddress)) * 3600); // deduct exp EventLayEgg(msg.sender, 0, eggId); } // read function getBonusEgg(uint64 _objId) constant public returns(uint) { EtheremonTransformData transformData = EtheremonTransformData(transformDataContract); uint totalBonusEgg = calculateMaxEggG0(_objId); if (totalBonusEgg > 0) { return (totalBonusEgg - transformData.countEgg(_objId)); } return 0; } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"constant":false,"inputs":[{"name":"_objId","type":"uint64"},{"name":"_a1","type":"uint64"},{"name":"_a2","type":"uint64"},{"name":"_a3","type":"uint64"}],"name":"transform","outputs":[],"payable":true,"stateMutability":"payable","type":"function"},{"constant":true,"inputs":[],"name":"dataContract","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"uint32"}],"name":"gen0Config","outputs":[{"name":"classId","type":"uint32"},{"name":"originalPrice","type":"uint256"},{"name":"returnPrice","type":"uint256"},{"name":"total","type":"uint32"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"}],"name":"moderators","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"worldContract","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"buyEggFee","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_removeHatchingTimeFee","type":"uint256"},{"name":"_buyEggFee","type":"uint256"}],"name":"setConfig","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_dataContract","type":"address"},{"name":"_worldContract","type":"address"},{"name":"_transformDataContract","type":"address"},{"name":"_battleContract","type":"address"},{"name":"_tradeContract","type":"address"}],"name":"setContract","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"hatchMaxTime","outputs":[{"name":"","type":"uint16"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_objId","type":"uint64"}],"name":"calculateMaxEggG0","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"genLevelExp","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_start","type":"uint16"},{"name":"_max","type":"uint16"}],"name":"updateHatchingRange","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"battleContract","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_isMaintaining","type":"bool"}],"name":"UpdateMaintaining","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"STAT_MAX","outputs":[{"name":"","type":"uint8"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"totalModerators","outputs":[{"name":"","type":"uint16"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_sendTo","type":"address"},{"name":"_amount","type":"uint256"}],"name":"withdrawEther","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"","type":"uint32"}],"name":"transformLevels","outputs":[{"name":"","type":"uint8"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_trainer","type":"address"}],"name":"buyEggWithToken","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"setOriginalPriceGen0","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_classId","type":"uint32"},{"name":"_layingLevel","type":"uint8"},{"name":"_layingCost","type":"uint8"},{"name":"_transformLevel","type":"uint8"},{"name":"_tranformClass","type":"uint32"}],"name":"setConfigClass","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_newModerator","type":"address"}],"name":"AddModerator","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"GEN0_NO","outputs":[{"name":"","type":"uint8"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"uint8"}],"name":"levelExps","outputs":[{"name":"","type":"uint32"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"buyEgg","outputs":[],"payable":true,"stateMutability":"payable","type":"function"},{"constant":true,"inputs":[{"name":"a","type":"uint256"},{"name":"m","type":"uint256"}],"name":"ceil","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"pure","type":"function"},{"constant":true,"inputs":[],"name":"owner","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_objId","type":"uint64"}],"name":"getObjClassId","outputs":[{"name":"","type":"uint32"},{"name":"","type":"address"},{"name":"","type":"uint8"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"hatchStartTime","outputs":[{"name":"","type":"uint16"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"transformDataContract","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"uint32"}],"name":"layingEggDeductions","outputs":[{"name":"","type":"uint8"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"uint32"}],"name":"layingEggLevels","outputs":[{"name":"","type":"uint8"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_classId","type":"uint32"},{"name":"_trainer","type":"address"},{"name":"_a1","type":"uint64"},{"name":"_a2","type":"uint64"},{"name":"_a3","type":"uint64"}],"name":"checkAncestors","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_newClassId","type":"uint32"}],"name":"addRandomClass","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"removeHatchingTime","outputs":[],"payable":true,"stateMutability":"payable","type":"function"},{"constant":false,"inputs":[{"name":"_trainer","type":"address"}],"name":"removeHatchingTimeWithToken","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"removeHatchingTimeFee","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_objId","type":"uint64"}],"name":"getBonusEgg","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"exp","type":"uint32"}],"name":"getLevel","outputs":[{"name":"","type":"uint8"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_objId","type":"uint64"},{"name":"_classId","type":"uint32"},{"name":"_level","type":"uint32"}],"name":"canLayEgg","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_oldModerator","type":"address"}],"name":"RemoveModerator","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_oldClassId","type":"uint32"}],"name":"removeRandomClass","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"maxRan","type":"uint16"},{"name":"index","type":"uint8"},{"name":"priAddress","type":"address"}],"name":"getRandom","outputs":[{"name":"","type":"uint8"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"uint256"}],"name":"randomClassIds","outputs":[{"name":"","type":"uint32"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"hatchEgg","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"","type":"uint32"}],"name":"transformClasses","outputs":[{"name":"","type":"uint32"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_objId","type":"uint64"}],"name":"getGen0ObjInfo","outputs":[{"name":"","type":"uint32"},{"name":"","type":"uint32"},{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"STAT_COUNT","outputs":[{"name":"","type":"uint8"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_objId","type":"uint64"},{"name":"_trainer","type":"address"}],"name":"getClassCheckOwner","outputs":[{"name":"","type":"uint32"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_objId","type":"uint64"}],"name":"layEgg","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"isMaintaining","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_newOwner","type":"address"}],"name":"ChangeOwner","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"tradeContract","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"inputs":[{"name":"_dataContract","type":"address"},{"name":"_worldContract","type":"address"},{"name":"_transformDataContract","type":"address"},{"name":"_battleContract","type":"address"},{"name":"_tradeContract","type":"address"}],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"name":"trainer","type":"address"},{"indexed":false,"name":"objId","type":"uint64"},{"indexed":false,"name":"eggId","type":"uint64"}],"name":"EventLayEgg","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"trainer","type":"address"},{"indexed":false,"name":"eggId","type":"uint64"},{"indexed":false,"name":"objId","type":"uint64"}],"name":"EventHatchEgg","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"trainer","type":"address"},{"indexed":false,"name":"oldObjId","type":"uint64"},{"indexed":false,"name":"newObjId","type":"uint64"}],"name":"EventTransform","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"trainer","type":"address"},{"indexed":false,"name":"objId","type":"uint64"}],"name":"EventRelease","type":"event"}]
Contract Creation Code
60606040526000805460a060020a61ffff02191690556002805460ff191660011762ffff0019166102001764ffff0000001916632e00000017905566b1a2bc2ec5000060035566d529ae9e860000600455341561005b57600080fd5b60405160a08061499f833981016040528080519190602001805191906020018051919060200180519190602001805160008054600160a060020a03338116600160a060020a031992831617909255600d805499831699821699909917909855600e805497821697891697909717909655600f8054958716958816959095179094555050601080549184169185169190911790556011805492909116919092161790556148938061010c6000396000f3006060604052600436106102635763ffffffff60e060020a600035041663085f8ebb81146102685780630d668818146102915780630daf4151146102c057806314d0f1ba1461030d57806318758480146103405780631dbb9867146103535780631e34c5851461037857806320eb2a8714610391578063217b97e4146103c85780632f6a6e20146103f257806333ced32114610412578063418bc2ee14610425578063423b1ca31461044557806348ef5aa8146104585780634e3dc2f1146104705780634efb023e14610499578063522f6815146104ac57806352bb525c146104ce5780635b86ce97146104ea57806366ba2670146105095780636a81af171461051c5780636c81fd6d1461055157806373d65c001461057057806378b475a8146105835780637d635502146105b55780638587be6e146105bd5780638da5cb5b146105d657806390f2dc88146105e957806392c537e91461063f57806393cc6d85146106525780639983ce511461066557806399bf954c146106815780639bd7d6881461069d578063a15b9769146106de578063a3c07c6a146106fa578063a3cb3e9714610702578063a4d5e30e14610721578063afd61d2c14610734578063b2cad9b714610754578063b62d4ce114610770578063b85d62751461079f578063bc602ab7146107be578063c5442f7d146107da578063c993548714610806578063ca9c4b331461081c578063cf790bbb1461082f578063d2fb32c21461084b578063d98e14bd14610895578063e98f402c146108a8578063eb14367d146108d4578063ee4e4416146108f4578063f285329214610907578063ffa640d814610926575b600080fd5b61028f67ffffffffffffffff60043581169060243581169060443581169060643516610939565b005b341561029c57600080fd5b6102a4610d9f565b604051600160a060020a03909116815260200160405180910390f35b34156102cb57600080fd5b6102dc63ffffffff60043516610dae565b60405163ffffffff948516815260208101939093526040808401929092529092166060820152608001905180910390f35b341561031857600080fd5b61032c600160a060020a0360043516610ddd565b604051901515815260200160405180910390f35b341561034b57600080fd5b6102a4610df2565b341561035e57600080fd5b610366610e01565b60405190815260200160405180910390f35b341561038357600080fd5b61028f600435602435610e07565b341561039c57600080fd5b61028f600160a060020a0360043581169060243581169060443581169060643581169060843516610e58565b34156103d357600080fd5b6103db610f0a565b60405161ffff909116815260200160405180910390f35b34156103fd57600080fd5b61036667ffffffffffffffff60043516610f1b565b341561041d57600080fd5b61028f6110e6565b341561043057600080fd5b61028f61ffff60043581169060243516611194565b341561045057600080fd5b6102a461120b565b341561046357600080fd5b61028f600435151561121a565b341561047b57600080fd5b610483611248565b60405160ff909116815260200160405180910390f35b34156104a457600080fd5b6103db61124d565b34156104b757600080fd5b61028f600160a060020a036004351660243561126f565b34156104d957600080fd5b61048363ffffffff60043516611301565b34156104f557600080fd5b61028f600160a060020a0360043516611316565b341561051457600080fd5b61028f6115d1565b341561052757600080fd5b61028f63ffffffff60043581169060ff60243581169160443582169160643516906084351661269b565b341561055c57600080fd5b61028f600160a060020a0360043516612751565b341561057b57600080fd5b6104836127fb565b341561058e57600080fd5b61059c60ff60043516612800565b60405163ffffffff909116815260200160405180910390f35b61028f612818565b34156105c857600080fd5b610366600435602435612a9a565b34156105e157600080fd5b6102a4612ab6565b34156105f457600080fd5b61060967ffffffffffffffff60043516612ac5565b60405163ffffffff9093168352600160a060020a03909116602083015260ff166040808301919091526060909101905180910390f35b341561064a57600080fd5b6103db612beb565b341561065d57600080fd5b6102a4612bfa565b341561067057600080fd5b61048363ffffffff60043516612c09565b341561068c57600080fd5b61048363ffffffff60043516612c1e565b34156106a857600080fd5b61032c63ffffffff60043516600160a060020a036024351667ffffffffffffffff60443581169060643581169060843516612c33565b34156106e957600080fd5b61028f63ffffffff60043516612fa0565b61028f6130a8565b341561070d57600080fd5b61028f600160a060020a0360043516613293565b341561072c57600080fd5b6103666134b7565b341561073f57600080fd5b61036667ffffffffffffffff600435166134bd565b341561075f57600080fd5b61048363ffffffff60043516613569565b341561077b57600080fd5b61032c67ffffffffffffffff6004351663ffffffff602435811690604435166135cc565b34156107aa57600080fd5b61028f600160a060020a03600435166136d0565b34156107c957600080fd5b61028f63ffffffff6004351661377a565b34156107e557600080fd5b61048361ffff6004351660ff60243516600160a060020a03604435166138fc565b341561081157600080fd5b61059c600435613957565b341561082757600080fd5b61028f61398f565b341561083a57600080fd5b61059c63ffffffff60043516613c0c565b341561085657600080fd5b61086b67ffffffffffffffff60043516613c24565b60405163ffffffff9384168152919092166020820152604080820192909252606001905180910390f35b34156108a057600080fd5b610483613e0a565b34156108b357600080fd5b61059c67ffffffffffffffff60043516600160a060020a0360243516613e0f565b34156108df57600080fd5b61028f67ffffffffffffffff60043516613f3b565b34156108ff57600080fd5b61032c61441d565b341561091257600080fd5b61028f600160a060020a0360043516614426565b341561093157600080fd5b6102a461447d565b600080600080610947614710565b600254600090819060ff161561095c57600080fd5b600d54600160a060020a0316151561097357600080fd5b600f54600160a060020a0316151561098a57600080fd5b600f54600160a060020a0316965060008763fd7d79488d836040516020015260405160e060020a63ffffffff841602815267ffffffffffffffff9091166004820152602401602060405180830381600087803b15156109e857600080fd5b6102c65a03f115156109f957600080fd5b5050506040518051905067ffffffffffffffff161115610a1857600080fd5b601054601154600160a060020a039182169750169450856335f097f38c60006040516020015260405160e060020a63ffffffff841602815267ffffffffffffffff9091166004820152602401602060405180830381600087803b1515610a7d57600080fd5b6102c65a03f11515610a8e57600080fd5b5050506040518051905080610b12575084600160a060020a031663a847a71c8c60006040516020015260405160e060020a63ffffffff841602815267ffffffffffffffff9091166004820152602401602060405180830381600087803b1515610af657600080fd5b6102c65a03f11515610b0757600080fd5b505050604051805190505b15610b1c57600080fd5b600d54600160a060020a03169350610b338b612ac5565b60ff166040860152600160a060020a0316602085015263ffffffff16835260096000845163ffffffff9081168252602082019290925260400160002054169150825163ffffffff161580610b9d575033600160a060020a03168360200151600160a060020a031614155b15610ba757600080fd5b60086000845163ffffffff16815260208101919091526040016000205460ff161580610bf9575060086000845163ffffffff168152602081019190915260409081016000205460ff169084015160ff16105b15610c0357600080fd5b63ffffffff82161515610c1557600080fd5b6018835163ffffffff1611610c3f576000610c2f8c6134bd565b1115610c3a57600080fd5b610c58565b610c4d8351338c8c8c612c33565b1515610c5857600080fd5b610c62338361448c565b905083600160a060020a03166360c6ccb2338d60405160e060020a63ffffffff8516028152600160a060020a03909216600483015267ffffffffffffffff166024820152604401600060405180830381600087803b1515610cc257600080fd5b6102c65a03f11515610cd357600080fd5b50505086600160a060020a03166354b670578c8360405160e060020a63ffffffff851602815267ffffffffffffffff928316600482015291166024820152604401600060405180830381600087803b1515610d2d57600080fd5b6102c65a03f11515610d3e57600080fd5b50505033600160a060020a03167f0e0ff0f818cd7a80a3f90089d30ab4a3465f1829f11769f48f05f9974857965f8c8360405167ffffffffffffffff9283168152911660208201526040908101905180910390a25050505050505050505050565b600d54600160a060020a031681565b600c60205260009081526040902080546001820154600283015460039093015463ffffffff9283169391921684565b60016020526000908152604090205460ff1681565b600e54600160a060020a031681565b60045481565b60005433600160a060020a0390811691161480610e425750600160a060020a03331660009081526001602081905260409091205460ff161515145b1515610e4d57600080fd5b600391909155600455565b60005433600160a060020a0390811691161480610e935750600160a060020a03331660009081526001602081905260409091205460ff161515145b1515610e9e57600080fd5b600d805473ffffffffffffffffffffffffffffffffffffffff19908116600160a060020a0397881617909155600e8054821695871695909517909455600f8054851693861693909317909255601080548416918516919091179055601180549092169216919091179055565b6002546301000000900461ffff1681565b600080600080610f29614730565b600080600080610f388a613c24565b91995097509550601863ffffffff89161180610f5a57508763ffffffff166014145b80610f6b57508763ffffffff166015145b15610f7957600098506110d9565b63ffffffff88166000908152600c60205260409081902090608090519081016040908152825463ffffffff908116835260018401546020840152600284015491830191909152600390920154909116606082019081529095505163ffffffff168763ffffffff161115610fef57600098506110d9565b846020015193508460400151856020015181151561100957fe5b04925082856060015163ffffffff16111561106f5782856060015163ffffffff16039150846060015163ffffffff16600283600101848860400151020281151561104f57fe5b048660200151876060015163ffffffff16020181151561106b57fe5b0493505b84602001519050828763ffffffff16111561109c576110948763ffffffff16846146d1565b856040015102015b8086106110ac57600098506110d9565b6127106110cc85613a98898503028115156110c357fe5b04612710612a9a565b8115156110d557fe5b0498505b5050505050505050919050565b600080548190819033600160a060020a03908116911614806111265750600160a060020a03331660009081526001602081905260409091205460ff161515145b151561113157600080fd5b506001915060649050805b606460ff84161161118f5760ff83166000908152600a60208190526040909120805463ffffffff191663ffffffff84811691909117909155600190940193600b840216046005019150818101905061113c565b505050565b60005433600160a060020a03908116911614806111cf5750600160a060020a03331660009081526001602081905260409091205460ff161515145b15156111da57600080fd5b6002805461ffff92831663010000000264ffff00000019949093166101000262ffff00199091161792909216179055565b601054600160a060020a031681565b60005433600160a060020a0390811691161461123557600080fd5b6002805460ff1916911515919091179055565b602081565b60005474010000000000000000000000000000000000000000900461ffff1681565b60005433600160a060020a03908116911614806112aa5750600160a060020a03331660009081526001602081905260409091205460ff161515145b15156112b557600080fd5b30600160a060020a0316318111156112cc57600080fd5b600160a060020a03821681156108fc0282604051600060405180830381858888f1935050505015156112fd57600080fd5b5050565b60086020526000908152604090205460ff1681565b6002546000908190819060ff161561132d57600080fd5b60005433600160a060020a03908116911614806113685750600160a060020a03331660009081526001602081905260409091205460ff161515145b151561137357600080fd5b600d54600160a060020a0316151561138a57600080fd5b600f54600160a060020a031615156113a157600080fd5b60055415156113af57600080fd5b600f54600160a060020a0316925060008363aeb669eb86836040516020015260405160e060020a63ffffffff8416028152600160a060020a039091166004820152602401602060405180830381600087803b151561140c57600080fd5b6102c65a03f1151561141d57600080fd5b5050506040518051905067ffffffffffffffff16111561143c57600080fd5b600554600b546114589190600190600160a060020a03166138fc565b915082600160a060020a0316630bc954dc600060058560ff1681548110151561147d57fe5b90600052602060002090600891828204019190066004029054906101000a900463ffffffff16876114d5600260039054906101000a900461ffff166000600b60009054906101000a9004600160a060020a03166138fc565b60ff16600260019054906101000a900461ffff1601610e100261ffff16420160006040516020015260405163ffffffff86811660e060020a02825267ffffffffffffffff959095166004820152929093166024830152600160a060020a031660448201526064810191909152608401602060405180830381600087803b151561155d57600080fd5b6102c65a03f1151561156e57600080fd5b5050506040518051915050600160a060020a0333167fe5f0ab5952896b20909b1e66e906f383fee56364008709ae6c9a8ac25f43ef7560008360405167ffffffffffffffff9283168152911660208201526040908101905180910390a250505050565b60005433600160a060020a039081169116148061160c5750600160a060020a03331660009081526001602081905260409091205460ff161515145b151561161757600080fd5b608060405190810160409081526001808352670429d069189e0000602080850191909152660aa87bee538000928401929092526101766060840152600052600c90527fd421a5181c571bba3f01190c922c3b2a896fc1d84e86c9f17ac10e67ebef8b5c8151815463ffffffff191663ffffffff9190911617815560208201518160010155604082015181600201556060820151600391909101805463ffffffff191663ffffffff90921691909117905550608060405190810160409081526002808352670429d069189e0000602080850191909152660aa87bee538000928401929092526101986060840152600052600c90527f5d6016397a73f5e079297ac5a36fef17b4d9c3831618e63ab105738020ddd7208151815463ffffffff191663ffffffff9190911617815560208201518160010155604082015181600201556060820151600391909101805463ffffffff191663ffffffff90921691909117905550608060405190810160409081526003808352670429d069189e0000602080850191909152660aa87bee538000928401929092526101756060840152600052600c90527fc0da782485e77ae272268ae0a3ff44c1552ecb60b3743924de17a815e0a3cfd78151815463ffffffff191663ffffffff9190911617815560208201518160010155604082015181600201556060820151600391909101805463ffffffff191663ffffffff909216919091179055506080604051908101604090815260048083526702c68af0bb14000060208085019190915266071afd498d0000928401929092526101b56060840152600052600c90527f5b84bb9e0f5aa9cc45a8bb66468db5d4816d1e75ff86b5e1f1dd8d144dab80978151815463ffffffff191663ffffffff9190911617815560208201518160010155604082015181600201556060820151600391909101805463ffffffff191663ffffffff9092169190911790555060806040519081016040908152600580835267016345785d8a000060208085019190915266038d7ea4c68000928401929092526101f16060840152600052600c90527f2cd9ebf6ff19cdd7ffcc447d7c7d47b5991f5c7392a04512134e765802361fa68151815463ffffffff191663ffffffff9190911617815560208201518160010155604082015181600201556060820151600391909101805463ffffffff191663ffffffff90921691909117905550608060405190810160409081526006808352670429d069189e0000602080850191909152660aa87bee5380009284019290925261017c6060840152600052600c90527f980f427e00e74f6d338adfccc7468518c8c8ea00836d0dce98c5fe154e17bf2b8151815463ffffffff191663ffffffff9190911617815560208201518160010155604082015181600201556060820151600391909101805463ffffffff191663ffffffff909216919091179055506080604051908101604090815260078083526702c68af0bb14000060208085019190915266071afd498d0000928401929092526101596060840152600052600c90527fdae089abd7155aa13ce498edb0d7a7156b783d015031f10c9a3d4f5fcb5189718151815463ffffffff191663ffffffff9190911617815560208201518160010155604082015181600201556060820151600391909101805463ffffffff191663ffffffff9092169190911790555060806040519081016040908152600880835267016345785d8a000060208085019190915266038d7ea4c68000928401929092526102066060840152600052600c90527f5ff1be3842b54290a9d10674244dae5848d2371b5314790c54805c086586e1df8151815463ffffffff191663ffffffff9190911617815560208201518160010155604082015181600201556060820151600391909101805463ffffffff191663ffffffff9092169190911790555060806040519081016040908152600980835267016345785d8a000060208085019190915266038d7ea4c68000928401929092526101bf6060840152600052600c90527f2fb3c9afecd3f0d43923381d3e9f60168c039b98f0b7120382e81b682b7bc3168151815463ffffffff191663ffffffff9190911617815560208201518160010155604082015181600201556060820151600391909101805463ffffffff191663ffffffff9092169190911790555060806040519081016040908152600a8083526702c68af0bb14000060208085019190915266071afd498d00009284019290925261017c6060840152600052600c90527f9e6c92d7be355807bd948171438a5e65aaf9e4c36f1405c1b9ca25d27c4ea3a08151815463ffffffff191663ffffffff9190911617815560208201518160010155604082015181600201556060820151600391909101805463ffffffff191663ffffffff9092169190911790555060806040519081016040908152600b8083526702c68af0bb14000060208085019190915266071afd498d0000928401929092526101626060840152600052600c90527f6a9911425952520efa6de3784a0ac63c35d3c5bb392028ea0beb0dc41a1919578151815463ffffffff191663ffffffff9190911617815560208201518160010155604082015181600201556060820151600391909101805463ffffffff191663ffffffff9092169190911790555060806040519081016040908152600c8083526702c68af0bb14000060208085019190915266071afd498d00009284019290925261015a6060840152600081905290527f37877ab6ac9e279d19a4db3294b259b5a4163c0ed597627ae79e33d80cde4db88151815463ffffffff191663ffffffff9190911617815560208201518160010155604082015181600201556060820151600391909101805463ffffffff191663ffffffff9092169190911790555060806040519081016040908152600d8083526702c68af0bb14000060208085019190915266071afd498d00009284019290925261015f6060840152600052600c90527f551134c3788a756a109c6e227f794518fef985fa2ba3fac727bcd6dac5e98e8f8151815463ffffffff191663ffffffff9190911617815560208201518160010155604082015181600201556060820151600391909101805463ffffffff191663ffffffff9092169190911790555060806040519081016040908152600e8083526702c68af0bb14000060208085019190915266071afd498d0000928401929092526101526060840152600052600c90527f4c711c77a2730b2744c96ef60e2967c2b4247d6a372f8b2e95c748d1459b23808151815463ffffffff191663ffffffff9190911617815560208201518160010155604082015181600201556060820151600391909101805463ffffffff191663ffffffff9092169190911790555060806040519081016040908152600f8083526702c68af0bb14000060208085019190915266071afd498d0000928401929092526101556060840152600052600c90527f977a47af6886c81cccba9ceb5316ec9b4027c59ac276de3e2cb39ec8af72ee7b8151815463ffffffff191663ffffffff9190911617815560208201518160010155604082015181600201556060820151600391909101805463ffffffff191663ffffffff909216919091179055506080604051908101604090815260108083526704db732547630000602080850191909152660c6f3b40b6c000928401929092526101806060840152600052600c90527ffba2bf5b1dd468baf16221045792a70d5cdd656b9f3da14b127c3e81dc5d6de28151815463ffffffff191663ffffffff9190911617815560208201518160010155604082015181600201556060820151600391909101805463ffffffff191663ffffffff90921691909117905550608060405190810160409081526011808352670de0b6b3a7640000602080850191909152662386f26fc10000928401929092526101316060840152600052600c90527f270e7751614d4e91a095cd3ace3f4d517c1b37aa711dfeaf72be0b76abd048398151815463ffffffff191663ffffffff9190911617815560208201518160010155604082015181600201556060820151600391909101805463ffffffff191663ffffffff9092169190911790555060806040519081016040908152601280835267016345785d8a000060208085019190915266038d7ea4c68000928401929092526101ab6060840152600052600c90527f63ad5e8597ed00826582ffe8302b2704b28344c60ae5645ec296a6326e0ed3458151815463ffffffff191663ffffffff9190911617815560208201518160010155604082015181600201556060820151600391909101805463ffffffff191663ffffffff90921691909117905550608060405190810160409081526013808352670de0b6b3a7640000602080850191909152662386f26fc10000928401929092526101306060840152600052600c90527fe02ca69cf2f93f7a389d26d1c6b52e01a88a074c056dfe4bf6a3c69d4a8041e28151815463ffffffff191663ffffffff9190911617815560208201518160010155604082015181600201556060820151600391909101805463ffffffff191663ffffffff9092169190911790555060806040519081016040908152601480835267058d15e17628000060208085019190915266b1a2bc2ec500009284019290925260526060840152600052600c90527f55664edbebd57273ba1f6d1c017cd920bbceea562d5502a6837280a660edef958151815463ffffffff191663ffffffff9190911617815560208201518160010155604082015181600201556060820151600391909101805463ffffffff191663ffffffff909216919091179055506080604051908101604090815260158083526001602080850182905292840152607b6060840152600052600c90527ff77830ee6ca813461e84e66f2fead14ff7f40269cd63d8faab5b6ce1c3d8c07e8151815463ffffffff191663ffffffff9190911617815560208201518160010155604082015181600201556060820151600391909101805463ffffffff191663ffffffff909216919091179055506080604051908101604090815260168083526702c68af0bb14000060208085019190915266038d7ea4c68000928401929092526101d46060840152600052600c90527f9fe279e833bcb8beab045538c3e47062dba2173d3cb9299210a3ae3478eac49d8151815463ffffffff191663ffffffff9190911617815560208201518160010155604082015181600201556060820151600391909101805463ffffffff191663ffffffff909216919091179055506080604051908101604090815260178083526706f05b59d3b200006020808501919091526608e1bc9bf040009284019290925261012e6060840152600052600c90527f6422c4859a0e1cfb624515c5474fb4780841aa90bef78e8ffd8411f6df3c00a78151815463ffffffff191663ffffffff9190911617815560208201518160010155604082015181600201556060820151600391909101805463ffffffff191663ffffffff90921691909117905550608060405190810160409081526018808352670de0b6b3a76400006020808501919091526611c37937e080009284019290925260c36060840152600052600c90527f591a7551fcdfca13c6240947c6945b1b81f85a820d3ef46ea582217b1dd807198151815463ffffffff191663ffffffff9190911617815560208201518160010155604082015181600201556060820151600391909101805463ffffffff191663ffffffff90921691909117905550565b60005433600160a060020a03908116911614806126d65750600160a060020a03331660009081526001602081905260409091205460ff161515145b15156126e157600080fd5b63ffffffff9485166000908152600660209081526040808320805460ff1990811660ff998a161790915560078352818420805482169789169790971790965560088252808320805490961694909616939093179093556009909152919020805463ffffffff191691909216179055565b60005433600160a060020a0390811691161461276c57600080fd5b600160a060020a03811660009081526001602052604090205460ff1615156127f857600160a060020a03811660009081526001602081905260408220805460ff191682179055815461ffff7401000000000000000000000000000000000000000080830482169093011690910275ffff0000000000000000000000000000000000000000199091161790555b50565b601881565b600a6020526000908152604090205463ffffffff1681565b6002546000908190819060ff161561282f57600080fd5b600d54600160a060020a0316151561284657600080fd5b600f54600160a060020a0316151561285d57600080fd5b600454341461286b57600080fd5b600554151561287957600080fd5b600f54600160a060020a0316925060008363aeb669eb33836040516020015260405160e060020a63ffffffff8416028152600160a060020a039091166004820152602401602060405180830381600087803b15156128d657600080fd5b6102c65a03f115156128e757600080fd5b5050506040518051905067ffffffffffffffff16111561290657600080fd5b600554600b546129229190600190600160a060020a03166138fc565b915082600160a060020a0316630bc954dc600060058560ff1681548110151561294757fe5b90600052602060002090600891828204019190066004029054906101000a900463ffffffff163361299f600260039054906101000a900461ffff166000600b60009054906101000a9004600160a060020a03166138fc565b60ff16600260019054906101000a900461ffff1601610e100261ffff16420160006040516020015260405163ffffffff86811660e060020a02825267ffffffffffffffff959095166004820152929093166024830152600160a060020a031660448201526064810191909152608401602060405180830381600087803b1515612a2757600080fd5b6102c65a03f11515612a3857600080fd5b5050506040518051915050600160a060020a0333167fe5f0ab5952896b20909b1e66e906f383fee56364008709ae6c9a8ac25f43ef7560008360405167ffffffffffffffff9283168152911660208201526040908101905180910390a2505050565b60008182600184860103811515612aad57fe5b04029392505050565b600054600160a060020a031681565b600080600080612ad3614757565b600d54600090600160a060020a03161515612aed57600080fd5b50600d54600160a060020a031691506000826307202460888360405160e0015260405160e060020a63ffffffff841602815267ffffffffffffffff909116600482015260240160e060405180830381600087803b1515612b4c57600080fd5b6102c65a03f11515612b5d57600080fd5b505050604051805190602001805190602001805190602001805190602001805190602001805190602001805160e08a0152505063ffffffff9182166080880152600160a060020a039092166040870152919091166020850190815267ffffffffffffffff90921684529150518260400151612bdb8460800151613569565b9550955095505050509193909250565b600254610100900461ffff1681565b600f54600160a060020a031681565b60076020526000908152604090205460ff1681565b60066020526000908152604090205460ff1681565b600080600080612c416147a3565b612c496147a3565b600e54600160a060020a0316945060009350839250846388e9abb68c8580604051602001526040518363ffffffff1660e060020a028152600401808363ffffffff1663ffffffff168152602001826001811115612ca257fe5b60ff16815260200192505050602060405180830381600087803b1515612cc757600080fd5b6102c65a03f11515612cd857600080fd5b50505060405180519450505b6000841115612dab5760018403935084600160a060020a0316635b6263398c6000876000604051602001526040518463ffffffff1660e060020a028152600401808463ffffffff1663ffffffff168152602001836001811115612d4357fe5b60ff1681526020018281526020019350505050602060405180830381600087803b1515612d6f57600080fd5b6102c65a03f11515612d8057600080fd5b50505060405180519050828560038110612d9657fe5b63ffffffff9092166020929092020152612ce4565b60008967ffffffffffffffff161115612dea57612dc8898b613e0f565b925063ffffffff83161515612de05760009550612f92565b63ffffffff831681525b60008867ffffffffffffffff161115612e2c57612e07888b613e0f565b925063ffffffff83161515612e1f5760009550612f92565b63ffffffff831660208201525b60008767ffffffffffffffff161115612e6e57612e49878b613e0f565b925063ffffffff83161515612e615760009550612f92565b63ffffffff831660408201525b6000815163ffffffff16118015612eaf5750602081015163ffffffff16815163ffffffff161480612eaf5750604081015163ffffffff16815163ffffffff16145b15612ebd5760009550612f92565b6000602082015163ffffffff16118015612eea5750604081015163ffffffff16602082015163ffffffff16145b15612ef85760009550612f92565b600093505b6003841015612f8d57818460038110612f1257fe5b6020020151925060008363ffffffff16118015612f3c5750805163ffffffff168363ffffffff1614155b8015612f585750602081015163ffffffff168363ffffffff1614155b8015612f745750604081015163ffffffff168363ffffffff1614155b15612f825760009550612f92565b600190930192612efd565b600195505b505050505095945050505050565b6000805433600160a060020a0390811691161480612fdc5750600160a060020a03331660009081526001602081905260409091205460ff161515145b1515612fe757600080fd5b60008263ffffffff1611156112fd575060005b600554811015613059578163ffffffff1660058281548110151561301a57fe5b90600052602060002090600891828204019190066004029054906101000a900463ffffffff1663ffffffff161415613051576112fd565b600101612ffa565b600580546001810161306b83826147cb565b916000526020600020906008918282040191900660040284909190916101000a81548163ffffffff021916908363ffffffff160217905550505050565b60006130b26147ff565b60025460ff16156130c257600080fd5b600d54600160a060020a031615156130d957600080fd5b600f54600160a060020a031615156130f057600080fd5b600f54600160a060020a031691508163710ad12833600060405160c0015260405160e060020a63ffffffff8416028152600160a060020a03909116600482015260240160c060405180830381600087803b151561314c57600080fd5b6102c65a03f1151561315d57600080fd5b505050604051805190602001805190602001805190602001805190602001805190602001805167ffffffffffffffff90811660a0890152608088019290925250600160a060020a03909116606086015263ffffffff90911660408501529081166020840152168152805167ffffffffffffffff1615806131f3575033600160a060020a03168160600151600160a060020a031614155b8061320c575060008160a0015167ffffffffffffffff16115b1561321657600080fd5b600354341461322457600080fd5b600160a060020a03821663e177573c8251600060405160e060020a63ffffffff851602815267ffffffffffffffff90921660048301526024820152604401600060405180830381600087803b151561327b57600080fd5b6102c65a03f1151561328c57600080fd5b5050505050565b600061329d6147ff565b60025460ff16156132ad57600080fd5b60005433600160a060020a03908116911614806132e85750600160a060020a03331660009081526001602081905260409091205460ff161515145b15156132f357600080fd5b600d54600160a060020a0316151561330a57600080fd5b600f54600160a060020a0316151561332157600080fd5b600f54600160a060020a031691508163710ad12884600060405160c0015260405160e060020a63ffffffff8416028152600160a060020a03909116600482015260240160c060405180830381600087803b151561337d57600080fd5b6102c65a03f1151561338e57600080fd5b505050604051805190602001805190602001805190602001805190602001805190602001805167ffffffffffffffff90811660a0890152608088019290925250600160a060020a03909116606086015263ffffffff90911660408501529081166020840152168152805167ffffffffffffffff161580613424575082600160a060020a03168160600151600160a060020a031614155b8061343d575060008160a0015167ffffffffffffffff16115b1561344757600080fd5b600160a060020a03821663e177573c8251600060405160e060020a63ffffffff851602815267ffffffffffffffff90921660048301526024820152604401600060405180830381600087803b151561349e57600080fd5b6102c65a03f115156134af57600080fd5b505050505050565b60035481565b600f54600090600160a060020a0316816134d684610f1b565b9050600081111561355d5781600160a060020a031663ec0ba0068560006040516020015260405160e060020a63ffffffff841602815267ffffffffffffffff9091166004820152602401602060405180830381600087803b151561353957600080fd5b6102c65a03f1151561354a57600080fd5b5050506040518051905081039250613562565b600092505b5050919050565b600060016064825b8160ff168360ff1610156135c357600260ff848401160460ff81166000908152600a602052604090205490915063ffffffff90811690861610156135b7578091506135be565b8060010192505b613571565b50909392505050565b600080601863ffffffff85161161367f5750600f54600160a060020a03166135f385610f1b565b81600160a060020a031663ec0ba0068760006040516020015260405160e060020a63ffffffff841602815267ffffffffffffffff9091166004820152602401602060405180830381600087803b151561364b57600080fd5b6102c65a03f1151561365c57600080fd5b5050506040518051905010151561367657600091506136c8565b600191506136c8565b63ffffffff841660009081526006602052604090205460ff1615806136be575063ffffffff80851660009081526006602052604090205460ff16908416105b1561367657600091505b509392505050565b60005433600160a060020a039081169116146136eb57600080fd5b600160a060020a03811660009081526001602081905260409091205460ff16151514156127f857600160a060020a03166000908152600160205260408120805460ff19169055805475ffff0000000000000000000000000000000000000000198116740100000000000000000000000000000000000000009182900461ffff9081166000190116909102179055565b6000805433600160a060020a03908116911614806137b65750600160a060020a03331660009081526001602081905260409091205460ff161515145b15156137c157600080fd5b5060005b600554811015613824578163ffffffff166005828154811015156137e557fe5b90600052602060002090600891828204019190066004029054906101000a900463ffffffff1663ffffffff16141561381c57613824565b6001016137c5565b6005548110156112fd5760058054600019810190811061384057fe5b90600052602060002090600891828204019190066004029054906101000a900463ffffffff1660058281548110151561387557fe5b90600052602060002090600891828204019190066004026101000a81548163ffffffff021916908363ffffffff16021790555060056001600580549050038154811015156138bf57fe5b90600052602060002090600891828204019190066004026101000a81549063ffffffff0219169055600580548091906001900361118f91906147cb565b6000600019430140600160a060020a03831601815b8460ff168160ff16108015613929575060068160ff16105b1561393d5761010082049150600101613911565b8561ffff168281151561394c57fe5b069695505050505050565b600580548290811061396557fe5b9060005260206000209060089182820401919006600402915054906101000a900463ffffffff1681565b60006139996147ff565b60025460009060ff16156139ac57600080fd5b600d54600160a060020a031615156139c357600080fd5b600f54600160a060020a031615156139da57600080fd5b600b805473ffffffffffffffffffffffffffffffffffffffff191633600160a060020a0381811692909217909255600f54169350839063710ad12890600060405160c0015260405160e060020a63ffffffff8416028152600160a060020a03909116600482015260240160c060405180830381600087803b1515613a5d57600080fd5b6102c65a03f11515613a6e57600080fd5b505050604051805190602001805190602001805190602001805190602001805190602001805167ffffffffffffffff90811660a08a0152608089019290925250600160a060020a03909116606087015263ffffffff90911660408601529081166020850152168252815167ffffffffffffffff161580613b04575033600160a060020a03168260600151600160a060020a031614155b15613b0e57600080fd5b60008260a0015167ffffffffffffffff161180613b2e5750428260800151115b15613b3857600080fd5b613b4633836040015161448c565b9050600160a060020a0383166337bd186883518360405160e060020a63ffffffff851602815267ffffffffffffffff928316600482015291166024820152604401600060405180830381600087803b1515613ba057600080fd5b6102c65a03f11515613bb157600080fd5b5050600160a060020a03331690507f1ed4c19c1b2053a18834a9630d21a5641a6904102ee9d604c131cedad3cb665f83518360405167ffffffffffffffff9283168152911660208201526040908101905180910390a2505050565b60096020526000908152604090205463ffffffff1681565b600080600080613c32614757565b613c3a614730565b600d54600160a060020a031692506000836307202460898360405160e0015260405160e060020a63ffffffff841602815267ffffffffffffffff909116600482015260240160e060405180830381600087803b1515613c9857600080fd5b6102c65a03f11515613ca957600080fd5b505050604051805190602001805190602001805190602001805190602001805190602001805190602001805160e08b01525063ffffffff90811660c08a015290811660a08901529081166080880152600160a060020a039091166040870152166020850190815267ffffffffffffffff9091168452600c906000905163ffffffff1663ffffffff16815260200190815260200160002060806040519081016040908152825463ffffffff908116835260018401546020808501919091526002850154928401929092526003909301549092166060820152925083015163ffffffff16825163ffffffff1614613dad5781518360a00151909750955060009450613dff565b506000606082015163ffffffff168360a0015163ffffffff161015613dda578260a0015182606001510390505b82602001518360a00151613df88363ffffffff1685604001516146e5565b9650965096505b505050509193909250565b600681565b600080613e1a614757565b600d54600090600160a060020a03161515613e3457600080fd5b50600d54600160a060020a031691506000826307202460878360405160e0015260405160e060020a63ffffffff841602815267ffffffffffffffff909116600482015260240160e060405180830381600087803b1515613e9357600080fd5b6102c65a03f11515613ea457600080fd5b505050604051805190602001805190602001805190602001805190602001805190602001805190602001805160e08a0152505063ffffffff9182166080880152600160a060020a03909216604087019081529216602086015267ffffffffffffffff909216845290915051600160a060020a03868116911614613f2a5760009350613f32565b816020015193505b50505092915050565b6000806000613f48614757565b60025460009081908190819060ff1615613f6157600080fd5b600d54600160a060020a03161515613f7857600080fd5b600f54600160a060020a03161515613f8f57600080fd5b600f54600160a060020a0316975060008863aeb669eb33836040516020015260405160e060020a63ffffffff8416028152600160a060020a039091166004820152602401602060405180830381600087803b1515613fec57600080fd5b6102c65a03f11515613ffd57600080fd5b5050506040518051905067ffffffffffffffff16111561401c57600080fd5b601154600160a060020a031696508663a847a71c8a60006040516020015260405160e060020a63ffffffff841602815267ffffffffffffffff9091166004820152602401602060405180830381600087803b151561407957600080fd5b6102c65a03f1151561408a57600080fd5b505050604051805190501561409e57600080fd5b600d54600160a060020a03169550600093508563072024608a8660405160e0015260405160e060020a63ffffffff841602815267ffffffffffffffff909116600482015260240160e060405180830381600087803b15156140fe57600080fd5b6102c65a03f1151561410f57600080fd5b505050604051805190602001805190602001805190602001805190602001805190602001805190602001805160e08d0152505063ffffffff91821660808b0152600160a060020a0390921660408a015291909116602088015267ffffffffffffffff918216875294508916855167ffffffffffffffff161415806141a9575033600160a060020a03168560400151600160a060020a031614155b156141b357600080fd5b6141c08560800151613569565b9250600091506141d88986602001518560ff166135cc565b15156141e357600080fd5b8260ff1660076000876020015163ffffffff16815260208101919091526040016000205460ff161061421457600080fd5b60076000866020015163ffffffff16815260208101919091526040016000205460ff1683039150600160a060020a038816630bc954dc86518760200151600254600b54339161427b91630100000090910461ffff1690600090600160a060020a03166138fc565b60ff16600260019054906101000a900461ffff1601610e100261ffff16420160006040516020015260405163ffffffff86811660e060020a02825267ffffffffffffffff959095166004820152929093166024830152600160a060020a031660448201526064810191909152608401602060405180830381600087803b151561430357600080fd5b6102c65a03f1151561431457600080fd5b5050506040518051905090508260ff168260ff1610156143c15760ff6000198301166000908152600a6020526040902054600160a060020a038716906331afa55f908b9063ffffffff1660808901510360405163ffffffff84811660e060020a02825267ffffffffffffffff93909316600482015291166024820152604401600060405180830381600087803b15156143ac57600080fd5b6102c65a03f115156143bd57600080fd5b5050505b33600160a060020a03167fe5f0ab5952896b20909b1e66e906f383fee56364008709ae6c9a8ac25f43ef758a8360405167ffffffffffffffff9283168152911660208201526040908101905180910390a2505050505050505050565b60025460ff1681565b60005433600160a060020a0390811691161461444157600080fd5b600160a060020a038116156127f85760008054600160a060020a03831673ffffffffffffffffffffffffffffffffffffffff1990911617905550565b601154600160a060020a031681565b600d54600090600160a060020a03168180808363fc4d20f58789846040516020015260405163ffffffff84811660e060020a028252929092166004830152600160a060020a0316602482015260606044820152600c60648201527f2e2e6e616d65206d652e2e2e0000000000000000000000000000000000000000608482015260a401602060405180830381600087803b151561452857600080fd5b6102c65a03f1151561453957600080fd5b5050506040518051935060009250505b60068210156146c65783600160a060020a03166362b21ad760028863ffffffff16856000604051602001526040518463ffffffff1660e060020a0281526004018084600481111561459657fe5b60ff1681526020018367ffffffffffffffff1667ffffffffffffffff1681526020018281526020019350505050602060405180830381600087803b15156145dc57600080fd5b6102c65a03f115156145ed57600080fd5b5050506040518051600b54909150614612906020908590600160a060020a03166138fc565b01905083600160a060020a03166326bda739600385846000604051602001526040518463ffffffff1660e060020a0281526004018084600481111561465357fe5b60ff1681526020018367ffffffffffffffff1667ffffffffffffffff1681526020018260ff1660ff1681526020019350505050602060405180830381600087803b151561469f57600080fd5b6102c65a03f115156146b057600080fd5b5050506040518051905050600182019150614549565b509095945050505050565b600080828410156146de57fe5b5050900390565b600082820283158061470157508284828115156146fe57fe5b04145b151561470957fe5b9392505050565b606060405190810160409081526000808352602083018190529082015290565b60806040519081016040908152600080835260208301819052908201819052606082015290565b61010060405190810160409081526000808352602083018190529082015260608101614781614834565b8152600060208201819052604082018190526060820181905260809091015290565b60606040519081016040526003815b6000815260001990910190602001816147b25790505090565b81548183558181151161118f57600701600890048160070160089004836000526020600020918201910161118f9190614846565b60c06040519081016040908152600080835260208301819052908201819052606082018190526080820181905260a082015290565b60206040519081016040526000815290565b61486491905b80821115614860576000815560010161484c565b5090565b905600a165627a7a72305820af4dbb3cc3e6dcf37382e3f0f4f21a1d7b0c248dc9597fb69acd89b231c0f8ae0029000000000000000000000000abc1c404424bdf24c19a5cc5ef8f47781d18eb3e0000000000000000000000001fc7bd85293f3982f40d52698df8d26be89360d6000000000000000000000000fdf4411669fc6e8951a6ae987307d7582fda7a050000000000000000000000000c28bf52d0d4d9447e86d7e7f0e317f273d3c9a30000000000000000000000004ba72f0f8dad13709ee28a992869e79d0fe47030
Deployed Bytecode
0x6060604052600436106102635763ffffffff60e060020a600035041663085f8ebb81146102685780630d668818146102915780630daf4151146102c057806314d0f1ba1461030d57806318758480146103405780631dbb9867146103535780631e34c5851461037857806320eb2a8714610391578063217b97e4146103c85780632f6a6e20146103f257806333ced32114610412578063418bc2ee14610425578063423b1ca31461044557806348ef5aa8146104585780634e3dc2f1146104705780634efb023e14610499578063522f6815146104ac57806352bb525c146104ce5780635b86ce97146104ea57806366ba2670146105095780636a81af171461051c5780636c81fd6d1461055157806373d65c001461057057806378b475a8146105835780637d635502146105b55780638587be6e146105bd5780638da5cb5b146105d657806390f2dc88146105e957806392c537e91461063f57806393cc6d85146106525780639983ce511461066557806399bf954c146106815780639bd7d6881461069d578063a15b9769146106de578063a3c07c6a146106fa578063a3cb3e9714610702578063a4d5e30e14610721578063afd61d2c14610734578063b2cad9b714610754578063b62d4ce114610770578063b85d62751461079f578063bc602ab7146107be578063c5442f7d146107da578063c993548714610806578063ca9c4b331461081c578063cf790bbb1461082f578063d2fb32c21461084b578063d98e14bd14610895578063e98f402c146108a8578063eb14367d146108d4578063ee4e4416146108f4578063f285329214610907578063ffa640d814610926575b600080fd5b61028f67ffffffffffffffff60043581169060243581169060443581169060643516610939565b005b341561029c57600080fd5b6102a4610d9f565b604051600160a060020a03909116815260200160405180910390f35b34156102cb57600080fd5b6102dc63ffffffff60043516610dae565b60405163ffffffff948516815260208101939093526040808401929092529092166060820152608001905180910390f35b341561031857600080fd5b61032c600160a060020a0360043516610ddd565b604051901515815260200160405180910390f35b341561034b57600080fd5b6102a4610df2565b341561035e57600080fd5b610366610e01565b60405190815260200160405180910390f35b341561038357600080fd5b61028f600435602435610e07565b341561039c57600080fd5b61028f600160a060020a0360043581169060243581169060443581169060643581169060843516610e58565b34156103d357600080fd5b6103db610f0a565b60405161ffff909116815260200160405180910390f35b34156103fd57600080fd5b61036667ffffffffffffffff60043516610f1b565b341561041d57600080fd5b61028f6110e6565b341561043057600080fd5b61028f61ffff60043581169060243516611194565b341561045057600080fd5b6102a461120b565b341561046357600080fd5b61028f600435151561121a565b341561047b57600080fd5b610483611248565b60405160ff909116815260200160405180910390f35b34156104a457600080fd5b6103db61124d565b34156104b757600080fd5b61028f600160a060020a036004351660243561126f565b34156104d957600080fd5b61048363ffffffff60043516611301565b34156104f557600080fd5b61028f600160a060020a0360043516611316565b341561051457600080fd5b61028f6115d1565b341561052757600080fd5b61028f63ffffffff60043581169060ff60243581169160443582169160643516906084351661269b565b341561055c57600080fd5b61028f600160a060020a0360043516612751565b341561057b57600080fd5b6104836127fb565b341561058e57600080fd5b61059c60ff60043516612800565b60405163ffffffff909116815260200160405180910390f35b61028f612818565b34156105c857600080fd5b610366600435602435612a9a565b34156105e157600080fd5b6102a4612ab6565b34156105f457600080fd5b61060967ffffffffffffffff60043516612ac5565b60405163ffffffff9093168352600160a060020a03909116602083015260ff166040808301919091526060909101905180910390f35b341561064a57600080fd5b6103db612beb565b341561065d57600080fd5b6102a4612bfa565b341561067057600080fd5b61048363ffffffff60043516612c09565b341561068c57600080fd5b61048363ffffffff60043516612c1e565b34156106a857600080fd5b61032c63ffffffff60043516600160a060020a036024351667ffffffffffffffff60443581169060643581169060843516612c33565b34156106e957600080fd5b61028f63ffffffff60043516612fa0565b61028f6130a8565b341561070d57600080fd5b61028f600160a060020a0360043516613293565b341561072c57600080fd5b6103666134b7565b341561073f57600080fd5b61036667ffffffffffffffff600435166134bd565b341561075f57600080fd5b61048363ffffffff60043516613569565b341561077b57600080fd5b61032c67ffffffffffffffff6004351663ffffffff602435811690604435166135cc565b34156107aa57600080fd5b61028f600160a060020a03600435166136d0565b34156107c957600080fd5b61028f63ffffffff6004351661377a565b34156107e557600080fd5b61048361ffff6004351660ff60243516600160a060020a03604435166138fc565b341561081157600080fd5b61059c600435613957565b341561082757600080fd5b61028f61398f565b341561083a57600080fd5b61059c63ffffffff60043516613c0c565b341561085657600080fd5b61086b67ffffffffffffffff60043516613c24565b60405163ffffffff9384168152919092166020820152604080820192909252606001905180910390f35b34156108a057600080fd5b610483613e0a565b34156108b357600080fd5b61059c67ffffffffffffffff60043516600160a060020a0360243516613e0f565b34156108df57600080fd5b61028f67ffffffffffffffff60043516613f3b565b34156108ff57600080fd5b61032c61441d565b341561091257600080fd5b61028f600160a060020a0360043516614426565b341561093157600080fd5b6102a461447d565b600080600080610947614710565b600254600090819060ff161561095c57600080fd5b600d54600160a060020a0316151561097357600080fd5b600f54600160a060020a0316151561098a57600080fd5b600f54600160a060020a0316965060008763fd7d79488d836040516020015260405160e060020a63ffffffff841602815267ffffffffffffffff9091166004820152602401602060405180830381600087803b15156109e857600080fd5b6102c65a03f115156109f957600080fd5b5050506040518051905067ffffffffffffffff161115610a1857600080fd5b601054601154600160a060020a039182169750169450856335f097f38c60006040516020015260405160e060020a63ffffffff841602815267ffffffffffffffff9091166004820152602401602060405180830381600087803b1515610a7d57600080fd5b6102c65a03f11515610a8e57600080fd5b5050506040518051905080610b12575084600160a060020a031663a847a71c8c60006040516020015260405160e060020a63ffffffff841602815267ffffffffffffffff9091166004820152602401602060405180830381600087803b1515610af657600080fd5b6102c65a03f11515610b0757600080fd5b505050604051805190505b15610b1c57600080fd5b600d54600160a060020a03169350610b338b612ac5565b60ff166040860152600160a060020a0316602085015263ffffffff16835260096000845163ffffffff9081168252602082019290925260400160002054169150825163ffffffff161580610b9d575033600160a060020a03168360200151600160a060020a031614155b15610ba757600080fd5b60086000845163ffffffff16815260208101919091526040016000205460ff161580610bf9575060086000845163ffffffff168152602081019190915260409081016000205460ff169084015160ff16105b15610c0357600080fd5b63ffffffff82161515610c1557600080fd5b6018835163ffffffff1611610c3f576000610c2f8c6134bd565b1115610c3a57600080fd5b610c58565b610c4d8351338c8c8c612c33565b1515610c5857600080fd5b610c62338361448c565b905083600160a060020a03166360c6ccb2338d60405160e060020a63ffffffff8516028152600160a060020a03909216600483015267ffffffffffffffff166024820152604401600060405180830381600087803b1515610cc257600080fd5b6102c65a03f11515610cd357600080fd5b50505086600160a060020a03166354b670578c8360405160e060020a63ffffffff851602815267ffffffffffffffff928316600482015291166024820152604401600060405180830381600087803b1515610d2d57600080fd5b6102c65a03f11515610d3e57600080fd5b50505033600160a060020a03167f0e0ff0f818cd7a80a3f90089d30ab4a3465f1829f11769f48f05f9974857965f8c8360405167ffffffffffffffff9283168152911660208201526040908101905180910390a25050505050505050505050565b600d54600160a060020a031681565b600c60205260009081526040902080546001820154600283015460039093015463ffffffff9283169391921684565b60016020526000908152604090205460ff1681565b600e54600160a060020a031681565b60045481565b60005433600160a060020a0390811691161480610e425750600160a060020a03331660009081526001602081905260409091205460ff161515145b1515610e4d57600080fd5b600391909155600455565b60005433600160a060020a0390811691161480610e935750600160a060020a03331660009081526001602081905260409091205460ff161515145b1515610e9e57600080fd5b600d805473ffffffffffffffffffffffffffffffffffffffff19908116600160a060020a0397881617909155600e8054821695871695909517909455600f8054851693861693909317909255601080548416918516919091179055601180549092169216919091179055565b6002546301000000900461ffff1681565b600080600080610f29614730565b600080600080610f388a613c24565b91995097509550601863ffffffff89161180610f5a57508763ffffffff166014145b80610f6b57508763ffffffff166015145b15610f7957600098506110d9565b63ffffffff88166000908152600c60205260409081902090608090519081016040908152825463ffffffff908116835260018401546020840152600284015491830191909152600390920154909116606082019081529095505163ffffffff168763ffffffff161115610fef57600098506110d9565b846020015193508460400151856020015181151561100957fe5b04925082856060015163ffffffff16111561106f5782856060015163ffffffff16039150846060015163ffffffff16600283600101848860400151020281151561104f57fe5b048660200151876060015163ffffffff16020181151561106b57fe5b0493505b84602001519050828763ffffffff16111561109c576110948763ffffffff16846146d1565b856040015102015b8086106110ac57600098506110d9565b6127106110cc85613a98898503028115156110c357fe5b04612710612a9a565b8115156110d557fe5b0498505b5050505050505050919050565b600080548190819033600160a060020a03908116911614806111265750600160a060020a03331660009081526001602081905260409091205460ff161515145b151561113157600080fd5b506001915060649050805b606460ff84161161118f5760ff83166000908152600a60208190526040909120805463ffffffff191663ffffffff84811691909117909155600190940193600b840216046005019150818101905061113c565b505050565b60005433600160a060020a03908116911614806111cf5750600160a060020a03331660009081526001602081905260409091205460ff161515145b15156111da57600080fd5b6002805461ffff92831663010000000264ffff00000019949093166101000262ffff00199091161792909216179055565b601054600160a060020a031681565b60005433600160a060020a0390811691161461123557600080fd5b6002805460ff1916911515919091179055565b602081565b60005474010000000000000000000000000000000000000000900461ffff1681565b60005433600160a060020a03908116911614806112aa5750600160a060020a03331660009081526001602081905260409091205460ff161515145b15156112b557600080fd5b30600160a060020a0316318111156112cc57600080fd5b600160a060020a03821681156108fc0282604051600060405180830381858888f1935050505015156112fd57600080fd5b5050565b60086020526000908152604090205460ff1681565b6002546000908190819060ff161561132d57600080fd5b60005433600160a060020a03908116911614806113685750600160a060020a03331660009081526001602081905260409091205460ff161515145b151561137357600080fd5b600d54600160a060020a0316151561138a57600080fd5b600f54600160a060020a031615156113a157600080fd5b60055415156113af57600080fd5b600f54600160a060020a0316925060008363aeb669eb86836040516020015260405160e060020a63ffffffff8416028152600160a060020a039091166004820152602401602060405180830381600087803b151561140c57600080fd5b6102c65a03f1151561141d57600080fd5b5050506040518051905067ffffffffffffffff16111561143c57600080fd5b600554600b546114589190600190600160a060020a03166138fc565b915082600160a060020a0316630bc954dc600060058560ff1681548110151561147d57fe5b90600052602060002090600891828204019190066004029054906101000a900463ffffffff16876114d5600260039054906101000a900461ffff166000600b60009054906101000a9004600160a060020a03166138fc565b60ff16600260019054906101000a900461ffff1601610e100261ffff16420160006040516020015260405163ffffffff86811660e060020a02825267ffffffffffffffff959095166004820152929093166024830152600160a060020a031660448201526064810191909152608401602060405180830381600087803b151561155d57600080fd5b6102c65a03f1151561156e57600080fd5b5050506040518051915050600160a060020a0333167fe5f0ab5952896b20909b1e66e906f383fee56364008709ae6c9a8ac25f43ef7560008360405167ffffffffffffffff9283168152911660208201526040908101905180910390a250505050565b60005433600160a060020a039081169116148061160c5750600160a060020a03331660009081526001602081905260409091205460ff161515145b151561161757600080fd5b608060405190810160409081526001808352670429d069189e0000602080850191909152660aa87bee538000928401929092526101766060840152600052600c90527fd421a5181c571bba3f01190c922c3b2a896fc1d84e86c9f17ac10e67ebef8b5c8151815463ffffffff191663ffffffff9190911617815560208201518160010155604082015181600201556060820151600391909101805463ffffffff191663ffffffff90921691909117905550608060405190810160409081526002808352670429d069189e0000602080850191909152660aa87bee538000928401929092526101986060840152600052600c90527f5d6016397a73f5e079297ac5a36fef17b4d9c3831618e63ab105738020ddd7208151815463ffffffff191663ffffffff9190911617815560208201518160010155604082015181600201556060820151600391909101805463ffffffff191663ffffffff90921691909117905550608060405190810160409081526003808352670429d069189e0000602080850191909152660aa87bee538000928401929092526101756060840152600052600c90527fc0da782485e77ae272268ae0a3ff44c1552ecb60b3743924de17a815e0a3cfd78151815463ffffffff191663ffffffff9190911617815560208201518160010155604082015181600201556060820151600391909101805463ffffffff191663ffffffff909216919091179055506080604051908101604090815260048083526702c68af0bb14000060208085019190915266071afd498d0000928401929092526101b56060840152600052600c90527f5b84bb9e0f5aa9cc45a8bb66468db5d4816d1e75ff86b5e1f1dd8d144dab80978151815463ffffffff191663ffffffff9190911617815560208201518160010155604082015181600201556060820151600391909101805463ffffffff191663ffffffff9092169190911790555060806040519081016040908152600580835267016345785d8a000060208085019190915266038d7ea4c68000928401929092526101f16060840152600052600c90527f2cd9ebf6ff19cdd7ffcc447d7c7d47b5991f5c7392a04512134e765802361fa68151815463ffffffff191663ffffffff9190911617815560208201518160010155604082015181600201556060820151600391909101805463ffffffff191663ffffffff90921691909117905550608060405190810160409081526006808352670429d069189e0000602080850191909152660aa87bee5380009284019290925261017c6060840152600052600c90527f980f427e00e74f6d338adfccc7468518c8c8ea00836d0dce98c5fe154e17bf2b8151815463ffffffff191663ffffffff9190911617815560208201518160010155604082015181600201556060820151600391909101805463ffffffff191663ffffffff909216919091179055506080604051908101604090815260078083526702c68af0bb14000060208085019190915266071afd498d0000928401929092526101596060840152600052600c90527fdae089abd7155aa13ce498edb0d7a7156b783d015031f10c9a3d4f5fcb5189718151815463ffffffff191663ffffffff9190911617815560208201518160010155604082015181600201556060820151600391909101805463ffffffff191663ffffffff9092169190911790555060806040519081016040908152600880835267016345785d8a000060208085019190915266038d7ea4c68000928401929092526102066060840152600052600c90527f5ff1be3842b54290a9d10674244dae5848d2371b5314790c54805c086586e1df8151815463ffffffff191663ffffffff9190911617815560208201518160010155604082015181600201556060820151600391909101805463ffffffff191663ffffffff9092169190911790555060806040519081016040908152600980835267016345785d8a000060208085019190915266038d7ea4c68000928401929092526101bf6060840152600052600c90527f2fb3c9afecd3f0d43923381d3e9f60168c039b98f0b7120382e81b682b7bc3168151815463ffffffff191663ffffffff9190911617815560208201518160010155604082015181600201556060820151600391909101805463ffffffff191663ffffffff9092169190911790555060806040519081016040908152600a8083526702c68af0bb14000060208085019190915266071afd498d00009284019290925261017c6060840152600052600c90527f9e6c92d7be355807bd948171438a5e65aaf9e4c36f1405c1b9ca25d27c4ea3a08151815463ffffffff191663ffffffff9190911617815560208201518160010155604082015181600201556060820151600391909101805463ffffffff191663ffffffff9092169190911790555060806040519081016040908152600b8083526702c68af0bb14000060208085019190915266071afd498d0000928401929092526101626060840152600052600c90527f6a9911425952520efa6de3784a0ac63c35d3c5bb392028ea0beb0dc41a1919578151815463ffffffff191663ffffffff9190911617815560208201518160010155604082015181600201556060820151600391909101805463ffffffff191663ffffffff9092169190911790555060806040519081016040908152600c8083526702c68af0bb14000060208085019190915266071afd498d00009284019290925261015a6060840152600081905290527f37877ab6ac9e279d19a4db3294b259b5a4163c0ed597627ae79e33d80cde4db88151815463ffffffff191663ffffffff9190911617815560208201518160010155604082015181600201556060820151600391909101805463ffffffff191663ffffffff9092169190911790555060806040519081016040908152600d8083526702c68af0bb14000060208085019190915266071afd498d00009284019290925261015f6060840152600052600c90527f551134c3788a756a109c6e227f794518fef985fa2ba3fac727bcd6dac5e98e8f8151815463ffffffff191663ffffffff9190911617815560208201518160010155604082015181600201556060820151600391909101805463ffffffff191663ffffffff9092169190911790555060806040519081016040908152600e8083526702c68af0bb14000060208085019190915266071afd498d0000928401929092526101526060840152600052600c90527f4c711c77a2730b2744c96ef60e2967c2b4247d6a372f8b2e95c748d1459b23808151815463ffffffff191663ffffffff9190911617815560208201518160010155604082015181600201556060820151600391909101805463ffffffff191663ffffffff9092169190911790555060806040519081016040908152600f8083526702c68af0bb14000060208085019190915266071afd498d0000928401929092526101556060840152600052600c90527f977a47af6886c81cccba9ceb5316ec9b4027c59ac276de3e2cb39ec8af72ee7b8151815463ffffffff191663ffffffff9190911617815560208201518160010155604082015181600201556060820151600391909101805463ffffffff191663ffffffff909216919091179055506080604051908101604090815260108083526704db732547630000602080850191909152660c6f3b40b6c000928401929092526101806060840152600052600c90527ffba2bf5b1dd468baf16221045792a70d5cdd656b9f3da14b127c3e81dc5d6de28151815463ffffffff191663ffffffff9190911617815560208201518160010155604082015181600201556060820151600391909101805463ffffffff191663ffffffff90921691909117905550608060405190810160409081526011808352670de0b6b3a7640000602080850191909152662386f26fc10000928401929092526101316060840152600052600c90527f270e7751614d4e91a095cd3ace3f4d517c1b37aa711dfeaf72be0b76abd048398151815463ffffffff191663ffffffff9190911617815560208201518160010155604082015181600201556060820151600391909101805463ffffffff191663ffffffff9092169190911790555060806040519081016040908152601280835267016345785d8a000060208085019190915266038d7ea4c68000928401929092526101ab6060840152600052600c90527f63ad5e8597ed00826582ffe8302b2704b28344c60ae5645ec296a6326e0ed3458151815463ffffffff191663ffffffff9190911617815560208201518160010155604082015181600201556060820151600391909101805463ffffffff191663ffffffff90921691909117905550608060405190810160409081526013808352670de0b6b3a7640000602080850191909152662386f26fc10000928401929092526101306060840152600052600c90527fe02ca69cf2f93f7a389d26d1c6b52e01a88a074c056dfe4bf6a3c69d4a8041e28151815463ffffffff191663ffffffff9190911617815560208201518160010155604082015181600201556060820151600391909101805463ffffffff191663ffffffff9092169190911790555060806040519081016040908152601480835267058d15e17628000060208085019190915266b1a2bc2ec500009284019290925260526060840152600052600c90527f55664edbebd57273ba1f6d1c017cd920bbceea562d5502a6837280a660edef958151815463ffffffff191663ffffffff9190911617815560208201518160010155604082015181600201556060820151600391909101805463ffffffff191663ffffffff909216919091179055506080604051908101604090815260158083526001602080850182905292840152607b6060840152600052600c90527ff77830ee6ca813461e84e66f2fead14ff7f40269cd63d8faab5b6ce1c3d8c07e8151815463ffffffff191663ffffffff9190911617815560208201518160010155604082015181600201556060820151600391909101805463ffffffff191663ffffffff909216919091179055506080604051908101604090815260168083526702c68af0bb14000060208085019190915266038d7ea4c68000928401929092526101d46060840152600052600c90527f9fe279e833bcb8beab045538c3e47062dba2173d3cb9299210a3ae3478eac49d8151815463ffffffff191663ffffffff9190911617815560208201518160010155604082015181600201556060820151600391909101805463ffffffff191663ffffffff909216919091179055506080604051908101604090815260178083526706f05b59d3b200006020808501919091526608e1bc9bf040009284019290925261012e6060840152600052600c90527f6422c4859a0e1cfb624515c5474fb4780841aa90bef78e8ffd8411f6df3c00a78151815463ffffffff191663ffffffff9190911617815560208201518160010155604082015181600201556060820151600391909101805463ffffffff191663ffffffff90921691909117905550608060405190810160409081526018808352670de0b6b3a76400006020808501919091526611c37937e080009284019290925260c36060840152600052600c90527f591a7551fcdfca13c6240947c6945b1b81f85a820d3ef46ea582217b1dd807198151815463ffffffff191663ffffffff9190911617815560208201518160010155604082015181600201556060820151600391909101805463ffffffff191663ffffffff90921691909117905550565b60005433600160a060020a03908116911614806126d65750600160a060020a03331660009081526001602081905260409091205460ff161515145b15156126e157600080fd5b63ffffffff9485166000908152600660209081526040808320805460ff1990811660ff998a161790915560078352818420805482169789169790971790965560088252808320805490961694909616939093179093556009909152919020805463ffffffff191691909216179055565b60005433600160a060020a0390811691161461276c57600080fd5b600160a060020a03811660009081526001602052604090205460ff1615156127f857600160a060020a03811660009081526001602081905260408220805460ff191682179055815461ffff7401000000000000000000000000000000000000000080830482169093011690910275ffff0000000000000000000000000000000000000000199091161790555b50565b601881565b600a6020526000908152604090205463ffffffff1681565b6002546000908190819060ff161561282f57600080fd5b600d54600160a060020a0316151561284657600080fd5b600f54600160a060020a0316151561285d57600080fd5b600454341461286b57600080fd5b600554151561287957600080fd5b600f54600160a060020a0316925060008363aeb669eb33836040516020015260405160e060020a63ffffffff8416028152600160a060020a039091166004820152602401602060405180830381600087803b15156128d657600080fd5b6102c65a03f115156128e757600080fd5b5050506040518051905067ffffffffffffffff16111561290657600080fd5b600554600b546129229190600190600160a060020a03166138fc565b915082600160a060020a0316630bc954dc600060058560ff1681548110151561294757fe5b90600052602060002090600891828204019190066004029054906101000a900463ffffffff163361299f600260039054906101000a900461ffff166000600b60009054906101000a9004600160a060020a03166138fc565b60ff16600260019054906101000a900461ffff1601610e100261ffff16420160006040516020015260405163ffffffff86811660e060020a02825267ffffffffffffffff959095166004820152929093166024830152600160a060020a031660448201526064810191909152608401602060405180830381600087803b1515612a2757600080fd5b6102c65a03f11515612a3857600080fd5b5050506040518051915050600160a060020a0333167fe5f0ab5952896b20909b1e66e906f383fee56364008709ae6c9a8ac25f43ef7560008360405167ffffffffffffffff9283168152911660208201526040908101905180910390a2505050565b60008182600184860103811515612aad57fe5b04029392505050565b600054600160a060020a031681565b600080600080612ad3614757565b600d54600090600160a060020a03161515612aed57600080fd5b50600d54600160a060020a031691506000826307202460888360405160e0015260405160e060020a63ffffffff841602815267ffffffffffffffff909116600482015260240160e060405180830381600087803b1515612b4c57600080fd5b6102c65a03f11515612b5d57600080fd5b505050604051805190602001805190602001805190602001805190602001805190602001805190602001805160e08a0152505063ffffffff9182166080880152600160a060020a039092166040870152919091166020850190815267ffffffffffffffff90921684529150518260400151612bdb8460800151613569565b9550955095505050509193909250565b600254610100900461ffff1681565b600f54600160a060020a031681565b60076020526000908152604090205460ff1681565b60066020526000908152604090205460ff1681565b600080600080612c416147a3565b612c496147a3565b600e54600160a060020a0316945060009350839250846388e9abb68c8580604051602001526040518363ffffffff1660e060020a028152600401808363ffffffff1663ffffffff168152602001826001811115612ca257fe5b60ff16815260200192505050602060405180830381600087803b1515612cc757600080fd5b6102c65a03f11515612cd857600080fd5b50505060405180519450505b6000841115612dab5760018403935084600160a060020a0316635b6263398c6000876000604051602001526040518463ffffffff1660e060020a028152600401808463ffffffff1663ffffffff168152602001836001811115612d4357fe5b60ff1681526020018281526020019350505050602060405180830381600087803b1515612d6f57600080fd5b6102c65a03f11515612d8057600080fd5b50505060405180519050828560038110612d9657fe5b63ffffffff9092166020929092020152612ce4565b60008967ffffffffffffffff161115612dea57612dc8898b613e0f565b925063ffffffff83161515612de05760009550612f92565b63ffffffff831681525b60008867ffffffffffffffff161115612e2c57612e07888b613e0f565b925063ffffffff83161515612e1f5760009550612f92565b63ffffffff831660208201525b60008767ffffffffffffffff161115612e6e57612e49878b613e0f565b925063ffffffff83161515612e615760009550612f92565b63ffffffff831660408201525b6000815163ffffffff16118015612eaf5750602081015163ffffffff16815163ffffffff161480612eaf5750604081015163ffffffff16815163ffffffff16145b15612ebd5760009550612f92565b6000602082015163ffffffff16118015612eea5750604081015163ffffffff16602082015163ffffffff16145b15612ef85760009550612f92565b600093505b6003841015612f8d57818460038110612f1257fe5b6020020151925060008363ffffffff16118015612f3c5750805163ffffffff168363ffffffff1614155b8015612f585750602081015163ffffffff168363ffffffff1614155b8015612f745750604081015163ffffffff168363ffffffff1614155b15612f825760009550612f92565b600190930192612efd565b600195505b505050505095945050505050565b6000805433600160a060020a0390811691161480612fdc5750600160a060020a03331660009081526001602081905260409091205460ff161515145b1515612fe757600080fd5b60008263ffffffff1611156112fd575060005b600554811015613059578163ffffffff1660058281548110151561301a57fe5b90600052602060002090600891828204019190066004029054906101000a900463ffffffff1663ffffffff161415613051576112fd565b600101612ffa565b600580546001810161306b83826147cb565b916000526020600020906008918282040191900660040284909190916101000a81548163ffffffff021916908363ffffffff160217905550505050565b60006130b26147ff565b60025460ff16156130c257600080fd5b600d54600160a060020a031615156130d957600080fd5b600f54600160a060020a031615156130f057600080fd5b600f54600160a060020a031691508163710ad12833600060405160c0015260405160e060020a63ffffffff8416028152600160a060020a03909116600482015260240160c060405180830381600087803b151561314c57600080fd5b6102c65a03f1151561315d57600080fd5b505050604051805190602001805190602001805190602001805190602001805190602001805167ffffffffffffffff90811660a0890152608088019290925250600160a060020a03909116606086015263ffffffff90911660408501529081166020840152168152805167ffffffffffffffff1615806131f3575033600160a060020a03168160600151600160a060020a031614155b8061320c575060008160a0015167ffffffffffffffff16115b1561321657600080fd5b600354341461322457600080fd5b600160a060020a03821663e177573c8251600060405160e060020a63ffffffff851602815267ffffffffffffffff90921660048301526024820152604401600060405180830381600087803b151561327b57600080fd5b6102c65a03f1151561328c57600080fd5b5050505050565b600061329d6147ff565b60025460ff16156132ad57600080fd5b60005433600160a060020a03908116911614806132e85750600160a060020a03331660009081526001602081905260409091205460ff161515145b15156132f357600080fd5b600d54600160a060020a0316151561330a57600080fd5b600f54600160a060020a0316151561332157600080fd5b600f54600160a060020a031691508163710ad12884600060405160c0015260405160e060020a63ffffffff8416028152600160a060020a03909116600482015260240160c060405180830381600087803b151561337d57600080fd5b6102c65a03f1151561338e57600080fd5b505050604051805190602001805190602001805190602001805190602001805190602001805167ffffffffffffffff90811660a0890152608088019290925250600160a060020a03909116606086015263ffffffff90911660408501529081166020840152168152805167ffffffffffffffff161580613424575082600160a060020a03168160600151600160a060020a031614155b8061343d575060008160a0015167ffffffffffffffff16115b1561344757600080fd5b600160a060020a03821663e177573c8251600060405160e060020a63ffffffff851602815267ffffffffffffffff90921660048301526024820152604401600060405180830381600087803b151561349e57600080fd5b6102c65a03f115156134af57600080fd5b505050505050565b60035481565b600f54600090600160a060020a0316816134d684610f1b565b9050600081111561355d5781600160a060020a031663ec0ba0068560006040516020015260405160e060020a63ffffffff841602815267ffffffffffffffff9091166004820152602401602060405180830381600087803b151561353957600080fd5b6102c65a03f1151561354a57600080fd5b5050506040518051905081039250613562565b600092505b5050919050565b600060016064825b8160ff168360ff1610156135c357600260ff848401160460ff81166000908152600a602052604090205490915063ffffffff90811690861610156135b7578091506135be565b8060010192505b613571565b50909392505050565b600080601863ffffffff85161161367f5750600f54600160a060020a03166135f385610f1b565b81600160a060020a031663ec0ba0068760006040516020015260405160e060020a63ffffffff841602815267ffffffffffffffff9091166004820152602401602060405180830381600087803b151561364b57600080fd5b6102c65a03f1151561365c57600080fd5b5050506040518051905010151561367657600091506136c8565b600191506136c8565b63ffffffff841660009081526006602052604090205460ff1615806136be575063ffffffff80851660009081526006602052604090205460ff16908416105b1561367657600091505b509392505050565b60005433600160a060020a039081169116146136eb57600080fd5b600160a060020a03811660009081526001602081905260409091205460ff16151514156127f857600160a060020a03166000908152600160205260408120805460ff19169055805475ffff0000000000000000000000000000000000000000198116740100000000000000000000000000000000000000009182900461ffff9081166000190116909102179055565b6000805433600160a060020a03908116911614806137b65750600160a060020a03331660009081526001602081905260409091205460ff161515145b15156137c157600080fd5b5060005b600554811015613824578163ffffffff166005828154811015156137e557fe5b90600052602060002090600891828204019190066004029054906101000a900463ffffffff1663ffffffff16141561381c57613824565b6001016137c5565b6005548110156112fd5760058054600019810190811061384057fe5b90600052602060002090600891828204019190066004029054906101000a900463ffffffff1660058281548110151561387557fe5b90600052602060002090600891828204019190066004026101000a81548163ffffffff021916908363ffffffff16021790555060056001600580549050038154811015156138bf57fe5b90600052602060002090600891828204019190066004026101000a81549063ffffffff0219169055600580548091906001900361118f91906147cb565b6000600019430140600160a060020a03831601815b8460ff168160ff16108015613929575060068160ff16105b1561393d5761010082049150600101613911565b8561ffff168281151561394c57fe5b069695505050505050565b600580548290811061396557fe5b9060005260206000209060089182820401919006600402915054906101000a900463ffffffff1681565b60006139996147ff565b60025460009060ff16156139ac57600080fd5b600d54600160a060020a031615156139c357600080fd5b600f54600160a060020a031615156139da57600080fd5b600b805473ffffffffffffffffffffffffffffffffffffffff191633600160a060020a0381811692909217909255600f54169350839063710ad12890600060405160c0015260405160e060020a63ffffffff8416028152600160a060020a03909116600482015260240160c060405180830381600087803b1515613a5d57600080fd5b6102c65a03f11515613a6e57600080fd5b505050604051805190602001805190602001805190602001805190602001805190602001805167ffffffffffffffff90811660a08a0152608089019290925250600160a060020a03909116606087015263ffffffff90911660408601529081166020850152168252815167ffffffffffffffff161580613b04575033600160a060020a03168260600151600160a060020a031614155b15613b0e57600080fd5b60008260a0015167ffffffffffffffff161180613b2e5750428260800151115b15613b3857600080fd5b613b4633836040015161448c565b9050600160a060020a0383166337bd186883518360405160e060020a63ffffffff851602815267ffffffffffffffff928316600482015291166024820152604401600060405180830381600087803b1515613ba057600080fd5b6102c65a03f11515613bb157600080fd5b5050600160a060020a03331690507f1ed4c19c1b2053a18834a9630d21a5641a6904102ee9d604c131cedad3cb665f83518360405167ffffffffffffffff9283168152911660208201526040908101905180910390a2505050565b60096020526000908152604090205463ffffffff1681565b600080600080613c32614757565b613c3a614730565b600d54600160a060020a031692506000836307202460898360405160e0015260405160e060020a63ffffffff841602815267ffffffffffffffff909116600482015260240160e060405180830381600087803b1515613c9857600080fd5b6102c65a03f11515613ca957600080fd5b505050604051805190602001805190602001805190602001805190602001805190602001805190602001805160e08b01525063ffffffff90811660c08a015290811660a08901529081166080880152600160a060020a039091166040870152166020850190815267ffffffffffffffff9091168452600c906000905163ffffffff1663ffffffff16815260200190815260200160002060806040519081016040908152825463ffffffff908116835260018401546020808501919091526002850154928401929092526003909301549092166060820152925083015163ffffffff16825163ffffffff1614613dad5781518360a00151909750955060009450613dff565b506000606082015163ffffffff168360a0015163ffffffff161015613dda578260a0015182606001510390505b82602001518360a00151613df88363ffffffff1685604001516146e5565b9650965096505b505050509193909250565b600681565b600080613e1a614757565b600d54600090600160a060020a03161515613e3457600080fd5b50600d54600160a060020a031691506000826307202460878360405160e0015260405160e060020a63ffffffff841602815267ffffffffffffffff909116600482015260240160e060405180830381600087803b1515613e9357600080fd5b6102c65a03f11515613ea457600080fd5b505050604051805190602001805190602001805190602001805190602001805190602001805190602001805160e08a0152505063ffffffff9182166080880152600160a060020a03909216604087019081529216602086015267ffffffffffffffff909216845290915051600160a060020a03868116911614613f2a5760009350613f32565b816020015193505b50505092915050565b6000806000613f48614757565b60025460009081908190819060ff1615613f6157600080fd5b600d54600160a060020a03161515613f7857600080fd5b600f54600160a060020a03161515613f8f57600080fd5b600f54600160a060020a0316975060008863aeb669eb33836040516020015260405160e060020a63ffffffff8416028152600160a060020a039091166004820152602401602060405180830381600087803b1515613fec57600080fd5b6102c65a03f11515613ffd57600080fd5b5050506040518051905067ffffffffffffffff16111561401c57600080fd5b601154600160a060020a031696508663a847a71c8a60006040516020015260405160e060020a63ffffffff841602815267ffffffffffffffff9091166004820152602401602060405180830381600087803b151561407957600080fd5b6102c65a03f1151561408a57600080fd5b505050604051805190501561409e57600080fd5b600d54600160a060020a03169550600093508563072024608a8660405160e0015260405160e060020a63ffffffff841602815267ffffffffffffffff909116600482015260240160e060405180830381600087803b15156140fe57600080fd5b6102c65a03f1151561410f57600080fd5b505050604051805190602001805190602001805190602001805190602001805190602001805190602001805160e08d0152505063ffffffff91821660808b0152600160a060020a0390921660408a015291909116602088015267ffffffffffffffff918216875294508916855167ffffffffffffffff161415806141a9575033600160a060020a03168560400151600160a060020a031614155b156141b357600080fd5b6141c08560800151613569565b9250600091506141d88986602001518560ff166135cc565b15156141e357600080fd5b8260ff1660076000876020015163ffffffff16815260208101919091526040016000205460ff161061421457600080fd5b60076000866020015163ffffffff16815260208101919091526040016000205460ff1683039150600160a060020a038816630bc954dc86518760200151600254600b54339161427b91630100000090910461ffff1690600090600160a060020a03166138fc565b60ff16600260019054906101000a900461ffff1601610e100261ffff16420160006040516020015260405163ffffffff86811660e060020a02825267ffffffffffffffff959095166004820152929093166024830152600160a060020a031660448201526064810191909152608401602060405180830381600087803b151561430357600080fd5b6102c65a03f1151561431457600080fd5b5050506040518051905090508260ff168260ff1610156143c15760ff6000198301166000908152600a6020526040902054600160a060020a038716906331afa55f908b9063ffffffff1660808901510360405163ffffffff84811660e060020a02825267ffffffffffffffff93909316600482015291166024820152604401600060405180830381600087803b15156143ac57600080fd5b6102c65a03f115156143bd57600080fd5b5050505b33600160a060020a03167fe5f0ab5952896b20909b1e66e906f383fee56364008709ae6c9a8ac25f43ef758a8360405167ffffffffffffffff9283168152911660208201526040908101905180910390a2505050505050505050565b60025460ff1681565b60005433600160a060020a0390811691161461444157600080fd5b600160a060020a038116156127f85760008054600160a060020a03831673ffffffffffffffffffffffffffffffffffffffff1990911617905550565b601154600160a060020a031681565b600d54600090600160a060020a03168180808363fc4d20f58789846040516020015260405163ffffffff84811660e060020a028252929092166004830152600160a060020a0316602482015260606044820152600c60648201527f2e2e6e616d65206d652e2e2e0000000000000000000000000000000000000000608482015260a401602060405180830381600087803b151561452857600080fd5b6102c65a03f1151561453957600080fd5b5050506040518051935060009250505b60068210156146c65783600160a060020a03166362b21ad760028863ffffffff16856000604051602001526040518463ffffffff1660e060020a0281526004018084600481111561459657fe5b60ff1681526020018367ffffffffffffffff1667ffffffffffffffff1681526020018281526020019350505050602060405180830381600087803b15156145dc57600080fd5b6102c65a03f115156145ed57600080fd5b5050506040518051600b54909150614612906020908590600160a060020a03166138fc565b01905083600160a060020a03166326bda739600385846000604051602001526040518463ffffffff1660e060020a0281526004018084600481111561465357fe5b60ff1681526020018367ffffffffffffffff1667ffffffffffffffff1681526020018260ff1660ff1681526020019350505050602060405180830381600087803b151561469f57600080fd5b6102c65a03f115156146b057600080fd5b5050506040518051905050600182019150614549565b509095945050505050565b600080828410156146de57fe5b5050900390565b600082820283158061470157508284828115156146fe57fe5b04145b151561470957fe5b9392505050565b606060405190810160409081526000808352602083018190529082015290565b60806040519081016040908152600080835260208301819052908201819052606082015290565b61010060405190810160409081526000808352602083018190529082015260608101614781614834565b8152600060208201819052604082018190526060820181905260809091015290565b60606040519081016040526003815b6000815260001990910190602001816147b25790505090565b81548183558181151161118f57600701600890048160070160089004836000526020600020918201910161118f9190614846565b60c06040519081016040908152600080835260208301819052908201819052606082018190526080820181905260a082015290565b60206040519081016040526000815290565b61486491905b80821115614860576000815560010161484c565b5090565b905600a165627a7a72305820af4dbb3cc3e6dcf37382e3f0f4f21a1d7b0c248dc9597fb69acd89b231c0f8ae0029
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
000000000000000000000000abc1c404424bdf24c19a5cc5ef8f47781d18eb3e0000000000000000000000001fc7bd85293f3982f40d52698df8d26be89360d6000000000000000000000000fdf4411669fc6e8951a6ae987307d7582fda7a050000000000000000000000000c28bf52d0d4d9447e86d7e7f0e317f273d3c9a30000000000000000000000004ba72f0f8dad13709ee28a992869e79d0fe47030
-----Decoded View---------------
Arg [0] : _dataContract (address): 0xABC1c404424BDF24C19A5cC5EF8F47781D18Eb3E
Arg [1] : _worldContract (address): 0x1fC7bD85293f3982f40D52698DF8D26be89360d6
Arg [2] : _transformDataContract (address): 0xfdF4411669fC6e8951A6aE987307D7582FDA7A05
Arg [3] : _battleContract (address): 0x0c28bf52d0d4D9447e86d7E7F0e317F273D3C9a3
Arg [4] : _tradeContract (address): 0x4bA72F0F8DAd13709EE28a992869E79d0fE47030
-----Encoded View---------------
5 Constructor Arguments found :
Arg [0] : 000000000000000000000000abc1c404424bdf24c19a5cc5ef8f47781d18eb3e
Arg [1] : 0000000000000000000000001fc7bd85293f3982f40d52698df8d26be89360d6
Arg [2] : 000000000000000000000000fdf4411669fc6e8951a6ae987307d7582fda7a05
Arg [3] : 0000000000000000000000000c28bf52d0d4d9447e86d7e7f0e317f273d3c9a3
Arg [4] : 0000000000000000000000004ba72f0f8dad13709ee28a992869e79d0fe47030
Swarm Source
bzzr://af4dbb3cc3e6dcf37382e3f0f4f21a1d7b0c248dc9597fb69acd89b231c0f8ae
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 26 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|
Loading...
Loading
[ Download: CSV Export ]
[ Download: CSV Export ]
A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.