function award(bytes32 secretKey_D) public {
        
        require(Drawer == msg.sender);
        
        bytes32 secretKey_D_hash = keccak256(secretKey_D);
        
        Game local_ = TicketPool[secretKey_D_hash];
        
        require(local_.Time != 0 && !local_.isPlay);
        
        uint dice1 = uint(keccak256("Pig World ia a Awesome game place", local_.SecretKey_P, secretKey_D)) % 6 + 1;
        uint dice2 = uint(keccak256(secretKey_D, "So you will like us so much!!!!", local_.SecretKey_P)) % 6 + 1;
        uint dice3 = uint(keccak256(local_.SecretKey_P, secretKey_D, "Don't think this is unfair", "Our game are always provably fair...")) % 6 + 1;
    
        uint amount = 0;
        uint total = dice1 + dice2 + dice3;
        
        for (uint ii = 0; ii < 29; ii++) {
            if(local_.Bets[ii] == 0x00) continue;
            
            uint bet_amount = uint(local_.Bets[ii]) * 10000000000000000;
            
            if(ii >= 23)
                if (dice1 == ii - 22 || dice2 == ii - 22 || dice3 == ii - 22) {
                    uint8 count = 1;
                    if (dice1 == ii - 22) count++;
                    if (dice2 == ii - 22) count++;
                    if (dice3 == ii - 22) count++;
                    amount += count * bet_amount;
                }

            if(ii <= 8)
                if (dice1 == dice2 && dice2 == dice3 && dice1 == dice3) {
                    if (ii == 8) {
                        amount += 31 * bet_amount;
                    }
    
                    if(ii >= 2 && ii <= 7)
                        if (dice1 == ii - 1) {
                            amount += 181 * bet_amount;
                        }
    
                } else {
                    
                    if (ii == 0 && total <= 10) {
                        amount += 2 * bet_amount;
                    }
                    
                    if (ii == 1 && total >= 11) {
                        amount += 2 * bet_amount;
                    }
                }
                
            if(ii >= 9 && ii <= 22){
                if (ii == 9 && total == 4) {
                    amount += 61 * bet_amount;
                }
                if (ii == 10 && total == 5) {
                    amount += 31 * bet_amount;
                }
                if (ii == 11 && total == 6) {
                    amount += 18 * bet_amount;
                }
                if (ii == 12 && total == 7) {
                    amount += 13 * bet_amount;
                }
                if (ii == 13 && total == 8) {
                    amount += 9 * bet_amount;
                }
                if (ii == 14 && total == 9) {
                    amount += 8 * bet_amount;
                }
                if (ii == 15 && total == 10) {
                    amount += 7 * bet_amount;
                }
                if (ii == 16 && total == 11) {
                    amount += 7 * bet_amount;
                }
                if (ii == 17 && total == 12) {
                    amount += 8 * bet_amount;
                }
                if (ii == 18 && total == 13) {
                    amount += 9 * bet_amount;
                }
                if (ii == 19 && total == 14) {
                    amount += 13 * bet_amount;
                }
                if (ii == 20 && total == 15) {
                    amount += 18 * bet_amount;
                }
                if (ii == 21 && total == 16) {
                    amount += 31 * bet_amount;
                }
                if (ii == 22 && total == 17) {
                    amount += 61 * bet_amount;
                }
            }
        }
        
        Result(secretKey_D_hash, secretKey_D, TicketPool[secretKey_D_hash].Buyer, dice1, dice2, dice3, amount, block.timestamp);
        TicketPool[secretKey_D_hash].isPlay = true;
        
        if(amount != 0){
            TicketPool[secretKey_D_hash].Result = amount;
            if (address(this).balance >= amount && TicketPool[secretKey_D_hash].Buyer.send(amount)) {
                TicketPool[secretKey_D_hash].isPay = true;
                Pay(secretKey_D_hash,TicketPool[secretKey_D_hash].Buyer, amount);
            } else {
                Owe(secretKey_D_hash, TicketPool[secretKey_D_hash].Buyer, amount);
                TicketPool[secretKey_D_hash].isPay = false;
            } 
         } else {
            TicketPool[secretKey_D_hash].isPay = true;
        }
        
    }