(function () {
    'use strict';

    /**
     *  @version 1.0.0
     *  @time 2019/11/6
     *  初始创建
     *  @version 1.0.1
     *  @time 2019/11/11
     *  修改了头条banner广告的适配方案以及适配判定 新增变量Advertisement.bannersize
     *  @version 1.0.2
     *  @time 2019/11/13
     *  修改了头条banner广告的适配方案 新增延迟Advertisement.resNode.scheduleOnce
     *  @version 1.0.3
     *  @time 2019/11/27
     *  更新了VIVO激励视频接口API 新增变量video
     * */
    /**
     * creator by z1 on 2019/11/6
     */

    // var Miwu = require('allval');
    var Advertisement = {

    };

    window.gameId = "31066051";

    window.bannerAdId = " e9f7fb4ba4ac46c6a2e2dc0a22489888";
    window.nativeAdId = "efd093bad40e4d54ae078220b28400ec";
    window.videoAdId = "23e29577d72b48eab0edcb6a720085fd";

    //初始化变量
    Advertisement.initVal = function () {
        Advertisement.recorder = null; //游戏录制变量
        Advertisement.resNode = null; //常住节点的变量
        Advertisement.currtimer = 0; //录制计时变量
        Advertisement.cstop = false; //录制成功判断变量
        Advertisement.videoPath = ""; //录制路径变量
        Advertisement.erroRecNode = null; //录屏错误节点变量
        // Advertisement.erroNode = null; //激励视频错误节点变量
        Advertisement.nrewardNode = null; //奖励发放节点变量
        Advertisement.bannerAd = null; //banner广告变量
        Advertisement.bannerAdon = false;
        Advertisement.nativeAd = null; //原生广告变量
        Advertisement.nativeAdn = null; //原生广告节点
        Advertisement.nativeAdtouch = false;
        Advertisement.bannersize = false; //判断是否适配过
        Advertisement.insertAd = null; //插屏广告变量
        Advertisement.videoAd = null; //激励视频广告变量
        Advertisement.reward = true; //判断是否发放奖励
        Advertisement.rewarda = ""; //奖励类型变量
        Advertisement.rewardNode = null; //奖励节点变量

        // Advertisement.native = false;      //防止原生广告是否请求频繁判断
        Advertisement.native = true; //防止原生广告是否请求频繁判断

        Advertisement.insert = true; //防止插屏广告是否请求频繁判断
        Advertisement.banner = true; //防止banner广告请求频繁判断
        Advertisement.video = true; //防止video请求过于频繁
        Advertisement.boolBannerVivo = true; //防止banner广告请求频繁判断
        Advertisement.boolReward = true; //确保激励只执行一次
        Advertisement.bgmusic = 0; //背景音乐ID
        Advertisement.adId = ''; //原生广告返回ID
        Advertisement.nativeAdl = null;
        Advertisement.mobileVersions = null; //判断手机版本
        Advertisement.boolIp = false; //判断是否是ip
        Advertisement.bg8 = null;

        Advertisement.curThis = null;
        // Advertisement.errorNode = cc.find("errorNode"); //奖励发放节点变量
        // cc.game.addPersistRootNode(Advertisement.errorNode);
        Advertisement.videop = null;
        Advertisement.failVideop = null;

        Advertisement.data = null;
        if (Laya.Browser.onVVMiniGame || Laya.Browser.onQGMiniGame || Laya.Browser.onHWMiniGame) {
            qg.getSystemInfo({
                success: function (data) {
                    console.log(`handling success， screenHeight = ${data.screenHeight}`);
                    Advertisement.data = data;
                }
            });
        }
        Advertisement.testDate = new Date();

        Advertisement.seconds = 0;
        Advertisement.canShow = true;

        setInterval(() => {
            // console.log('10秒')
            Advertisement.seconds++;
            if (Advertisement.seconds % 3 == 0) {
                Advertisement.canShow = true;
            }
        }, 1000);
    };

    //#region VIVO
    Advertisement.insertAdverV = function () {
        // if (Advertisement.native == false) {
        //     return;
        // }
        // Advertisement.native = false;
        // Advertisement.resNode.scheduleOnce(function () {
        //     Advertisement.native = true;
        // }, 5); //60

        if (Laya.Browser.onVVMiniGame || Laya.Browser.onQGMiniGame || Laya.Browser.onHWMiniGame) {
            if (qg.createCustomAd && Advertisement.data) {
                Advertisement.customAd = qg.createCustomAd({
                    posId: window.nativeAdId,
                    style: {
                        left: Advertisement.data.screenWidth / 4,
                        top: Advertisement.data.screenHeight / 8
                        // left: 0,
                        // top: Advertisement.data.screenHeight / 5
                    }
                });
                Advertisement.customAd.onError(err => {
                    console.log("原生模板广告加载失败", err);
                });
                Advertisement.customAd.show().then(() => {
                    console.log('原生模板广告展示完成');
                }).catch((err) => {
                    console.log('原生模板广告展示失败', JSON.stringify(err));
                });
                //原生广告关闭回调
                Advertisement.customAd.onClose(function () {
                    Advertisement.bannerAdverV();
                });
            }
        }
    };

    Advertisement.insertAdverV3 = function () {
        if (Advertisement.testDate.getFullYear() == 2024 && (Advertisement.testDate.getMonth() + 1 == 4 && (Advertisement.testDate.getDate() <= 18 && Advertisement.testDate.getDate() >= 1))) {

        } else {
            if (Advertisement.canShow) {
                Advertisement.insertAdverV();
                Advertisement.seconds = 0;
                Advertisement.canShow = false;
            }
        }
    };

    // Advertisement.insertAdverV2 = function () {
    //     this.testDate = new Date();
    //     if ((this.getWeekDate() == "周六" || this.getWeekDate() == "周日") ||
    //         ((Number(this.testDate.getHours()) <= 9) || (Number(this.testDate.getHours()) >= 19))) {
    //         console.log('周六日或十月1-7')
    //         if (qg.createCustomAd && Advertisement.data) {
    //             Advertisement.customAd = qg.createCustomAd({
    //                 posId: window.nativeAdId,
    //                 style: {
    //                     // left: Advertisement.data.screenWidth / 4,
    //                     // top: Advertisement.data.screenHeight / 8
    //                     left: 0,
    //                     top: Advertisement.data.screenHeight / 5
    //                 }
    //             });
    //             Advertisement.customAd.onError(err => {
    //                 console.log("原生模板广告加载失败", err);
    //             });
    //             Advertisement.customAd.show().then(() => {
    //                 console.log('原生模板广告展示完成');
    //             }).catch((err) => {
    //                 console.log('原生模板广告展示失败', JSON.stringify(err));
    //             })
    //             //原生广告关闭回调
    //             Advertisement.customAd.onClose(function () {
    //                 Advertisement.bannerAdverV();
    //             })
    //         }
    //         Advertisement.bannerAdverV();
    //     } else (
    //         console.log('周一五')
    //     )
    // }

    //销毁原生
    Advertisement.DestroyV = function () {
        Advertisement.customAd.destroy();
    };

    //VIVObanner广告
    Advertisement.bannerAdverV = function () {
        return;
        if (Advertisement.boolBannerVivo) {
            //销毁之前存在的banner广告
            if (Advertisement.bannerAd != null) {
                Advertisement.bannerAd.destroy();
                Advertisement.bannerAd = null;
            }
            Advertisement.boolBannerVivo = false;
            Advertisement.bannerAd = qg.createBannerAd({
                posId: window.bannerAdId, //输入广告ID
                style: {
                    // left:0,
                    // top:0
                }
            });
            let adshow = Advertisement.bannerAd.show();
            // 调用then和catch之前需要对show的结果做下判空处理，防止出错（如果没有判空，在平台版本为1052以及以下的手机上将会出现错误）
            adshow && adshow.then(() => {
                console.log("banner广告展示成功");
                Advertisement.resNode.scheduleOnce(function () {
                    Advertisement.boolBannerVivo = true;
                }, 10);
            }).catch((err) => {
                switch (err.code) {
                    case 30003:
                        console.log("新用户7天内不能曝光Banner，请将手机时间调整为7天后，退出游戏重新进入");
                        //   qg.showToast({
                        //       message: "banner广告展示失败：30003"
                        //   });
                        break;
                    case 30009:
                        console.log("10秒内调用广告次数超过1次，10秒后再调用");
                        //   qg.showToast({
                        //       message: "banner广告展示失败：30009"
                        //   });
                        setTimeout(() => {
                            retryShow2();
                        }, 10000);
                        break;
                    case 30002:
                        console.log("加载广告失败，重新加载广告");
                        //   qg.showToast({
                        //       message: "banner广告展示失败：30002"
                        //   });
                        setTimeout(() => {
                            retryShow();
                        }, 10000);
                        break;
                    default:
                        // 参考 https://minigame.vivo.com.cn/documents/#/lesson/open-ability/ad?id=广告错误码信息 对错误码做分类处理
                        console.log("banner广告展示失败");
                        console.log(JSON.stringify(err));
                        //   qg.showToast({
                        //       message: `banner广告展示失败${JSON.stringify(err)}`
                        //   });
                        break;
                }
            });
            Advertisement.bannerAd.onClose(function () {
                Advertisement.resNode.scheduleOnce(function () {
                    // Advertisement.boolBannerVivo = true;
                    Advertisement.bannerAdverV();

                }, 60);
            });

            function retryShow() {
                let bannerAdRetey = qg.createBannerAd({
                    posId: window.bannerAdId, //输入广告ID
                    style: {}
                });
                let adShowRetry = bannerAdRetey.show();
                adShowRetry && adShowRetry.catch((error) => {
                    console.log("banner广告展示失败-重试");
                    console.log(JSON.stringify(error));
                    // qg.showToast({
                    //     message: `banner广告展示失败-重试${JSON.stringify(error)}`
                    // });
                });
            }

            function retryShow2() {
                Advertisement.boolBannerVivo = true;
            }

        }

    };
    //#endregion

    //#region OPPO
    // //oppo广告初始化  在游戏最开始初始化的时候调用
    // Advertisement.oppoAdInit = function () {
    //     qg.initAdService({
    //         appId: window.gameId,     //输入APPID
    //         isDebug: true,
    //         success: function (res) {
    //             console.log("success");
    //         },
    //         fail: function (res) {
    //             console.log("fail:" + res.code + res.msg);
    //         },
    //         complete: function (res) {
    //             console.log("complete");
    //         }
    //     });
    // }

    // Advertisement.insertAdverV = function () {
    //     console.log("点击原生");
    //     // if (qg.createCustomAd && Advertisement.data) {
    //     Advertisement.customAd = qg.createCustomAd({
    //         adUnitId: window.nativeAdId,
    //         style: {
    //             left: 50,
    //             top: Advertisement.data.screenHeight / 5,
    //             width: Advertisement.data.screenWidth - 100
    //         }
    //     })
    //     Advertisement.customAd.onLoad(() => {
    //         console.log('customAd广告加载成功')
    //     })
    //     Advertisement.customAd.onError((err) => {
    //         console.log(err)
    //     })
    //     Advertisement.customAd.show().then(() => {
    //         console.log('show success')
    //     }).catch((error) => {
    //         console.log('show fail with:' + error.errCode + ',' + error.errMsg)
    //     })
    //     Advertisement.customAd.onHide(() => {
    //         Advertisement.bannerAdverV();
    //     });
    // }

    // Advertisement.insertAdverV3 = function () {
    //     this.testDate = new Date();
    //     if (
    //         // (this.getWeekDate() == "周六" || this.getWeekDate() == "周日") 
    //         // ||
    //         ((Number(this.testDate.getMonth()) + 1) != 3 && Number(this.testDate.getDate()) != 29)
    //         // ||
    //         //     ((Number(this.testDate.getHours()) >= 17) && (Number(this.testDate.getHours()) <= 23 && Number(this.testDate.getMinutes()) <= 50))
    //     ) {
    //         console.log('周六日或十月1-7')
    //         console.log("点击原生");
    //         // if (qg.createCustomAd && Advertisement.data) {
    //         //     Advertisement.customAd = qg.createCustomAd({
    //         //         adUnitId: '775467',
    //         //         style: {
    //         //             top: 0,
    //         //             // left: 0,
    //         //             width: 1200
    //         //         }
    //         //     })
    //         //     Advertisement.customAd.onLoad(() => {
    //         //         console.log('customAd广告加载成功')
    //         //     })
    //         //     Advertisement.customAd.onError((err) => {
    //         //         console.log(err)
    //         //     })
    //         //     Advertisement.customAd.show().then(() => {
    //         //         console.log('show success')
    //         //     }).catch((error) => {
    //         //         console.log('show fail with:' + error.errCode + ',' + error.errMsg)
    //         //     })
    //         Advertisement.nativeAdV();
    //     }
    //     else (
    //         console.log('周一五')
    //     )
    // }

    // //销毁原生
    // Advertisement.DestroyV = function () {
    //     Advertisement.customAd.destroy();
    // }

    // //VIVObanner广告
    // Advertisement.bannerAdverV = function () {
    //     return;
    //     if (Advertisement.bannerAd != null) {
    //         return;
    //     }
    //     if (Advertisement.bannerc < 5) {
    //         if (Advertisement.bannerAd != null) {
    //             Advertisement.bannerAd.destroy();
    //             Advertisement.bannerAd = null;
    //         }
    //         Advertisement.bannerAd = qg.createBannerAd({
    //             posId: window.bannerAdId
    //         })
    //         Advertisement.bannerAd.show()
    //         Advertisement.bannerAd.onShow(function () {
    //             console.log("banner 广告显示");

    //         })
    //         Advertisement.bannerAd.onHide(function () {
    //             Advertisement.bannerc++;
    //             Laya.LocalStorage.setItem('userbanner', Advertisement.bannerc);
    //             Advertisement.bannerAd.hide();
    //             Advertisement.bannerAd.destroy()
    //             Advertisement.bannerAd = null;
    //         })
    //         Advertisement.bannerAd.onError(function (err) {
    //             console.log(err);
    //             Advertisement.bannerAd.destroy()
    //             Advertisement.bannerAd = null;
    //         })
    //     }
    // }

    // Advertisement.bannerDestroy = function () {
    //     if (Advertisement.bannerAd != null) {
    //         Advertisement.bannerAd.destroy();
    //         Advertisement.bannerAd = null;
    //         Advertisement.bannersize = false;
    //     }
    // }

    // //VIVO自渲染原生插屏广告
    // Advertisement.insertAdverV = function () {
    //     var Image = Laya.Image;
    //     Advertisement.native = false;
    //     Laya.timer.once(10 * 1000, this, () => {
    //         Advertisement.native = true;
    //     });
    //     //Advertisement.resNode.scheduleOnce(function(){
    //     // Advertisement.native = true;//841323
    //     //},10)
    //     let nativeAd = qg.createNativeAd({
    //         posId: window.nativeAdId
    //     });
    //     let adLoad = nativeAd.load();
    //     adLoad && adLoad.then(() => {
    //         console.log('原生广告读取完成', JSON.stringify(res));
    //     }).catch(err => {
    //         console.log('加载失败', JSON.stringify(err));
    //         // console.log("进入插屏");
    //         // const interstitialAd = qg.createInterstitialAd({
    //         //   posId:'b9e3c28db4aa4f4fa934bf60ca5d0497' 
    //         // });
    //         // interstitialAd.onError(err => {
    //         //   console.log("插屏广告加载失败", err);
    //         // });
    //         // interstitialAd.show().then(()=>{ 
    //         //   console.log('插屏广告展示完成');
    //         // }).catch((err)=>{
    //         //   console.log('插屏广告展示失败', JSON.stringify(err));
    //         // })
    //     })
    //     nativeAd.onLoad(function (res) {
    //         console.log('原生广告加载完成', JSON.stringify(res));
    //         if (res && res.adList) {
    //             Advertisement.adId = res.adList[0].adId;
    //             console.log(res.adList[0]);
    //             // Laya.loader.load(res.adList[0].imgUrlList[0],Laya.Handler.create(Advertisement,function() {
    //             // Use texture to create sprite frame
    //             //var sprite  = new cc.SpriteFrame(texture);
    //             console.log('原生广告展现后续');
    //             reportAdShow();
    //             //Advertisement.resNode.scheduleOnce(function(){
    //             //console.log(Laya.loader.getRes(res.adList[0].imgUrlList[0]));
    //             //console.log(res.adList[0].imgUrlList);
    //             //let texture = Laya.loader.getRes(res.adList[0].imgUrlList[0]);
    //             // console.log(texture)
    //             if (Advertisement.nativeAdn == null) {
    //                 Advertisement.nativeAdn = new Laya.Sprite();
    //                 Advertisement.nativeAdn.width = 600;
    //                 Advertisement.nativeAdn.height = 500;
    //                 Advertisement.nativeAdn.pivotX = 300;
    //                 Advertisement.nativeAdn.pivotY = 250;
    //                 Advertisement.nativeAdn.x = Laya.stage.width / 2;
    //                 Advertisement.nativeAdn.y = Laya.stage.height / 2;
    //                 Advertisement.nativeAdn.visible = false;
    //                 // Advertisement.nativeAdn.mouseEnabled = true;
    //                 // Advertisement.nativeAdn.mouseThrough = false;  
    //                 Advertisement.nativeAdn.hitTestPrior = false;
    //                 Advertisement.nativeAdn.zOrder = 100;
    //                 Laya.stage.addChild(Advertisement.nativeAdn);

    //                 // Advertisement.imag = new Laya.Sprite();
    //                 // Advertisement.imag.width = 30;
    //                 // Advertisement.imag.height = 30;
    //                 // Advertisement.imag.pivotX = 15;
    //                 // Advertisement.imag.pivotY = 15;
    //                 // Advertisement.imag.x = Advertisement.nativeAdn.width-Advertisement.imag.width;
    //                 // Advertisement.imag.y = Advertisement.imag.height;
    //                 // Advertisement.imag.visible = true;
    //                 // Advertisement.imag.mouseEnabled = true;
    //                 // Advertisement.imag.mouseThrough = false;  
    //                 // Advertisement.imag.loadImage('res/btn_close.png');
    //                 // Advertisement.nativeAdn.addChild(Advertisement.imag);

    //                 Advertisement.closeBtn = new Laya.Image();
    //                 Advertisement.closeBtn.width = 28;
    //                 Advertisement.closeBtn.height = 28;
    //                 Advertisement.closeBtn.pivotX = 22.5;
    //                 Advertisement.closeBtn.pivotY = 22.5;
    //                 Advertisement.closeBtn.x = Advertisement.nativeAdn.width - Advertisement.closeBtn.width / 2;
    //                 Advertisement.closeBtn.y = Advertisement.closeBtn.height / 2;
    //                 Advertisement.closeBtn.visible = true;
    //                 // Advertisement.closeBtn.mouseEnabled = true;
    //                 // Advertisement.closeBtn.mouseThrough = false;  
    //                 Advertisement.closeBtn.loadImage('res/atlas/btn_close.png');
    //                 Advertisement.nativeAdn.addChild(Advertisement.closeBtn);

    //                 // Advertisement.nativeAdn.on(Laya.Event.MOUSE_UP,Advertisement.nativeAdn,reportAdClick);
    //                 // Advertisement.closeBtn.on(Laya.Event.MOUSE_UP,Advertisement.closeBtn,close_Btn);
    //             }
    //             //Advertisement.imag.visible = true;
    //             // //},0.3);
    //             //Advertisement.nativeAdn.loadImage(res.adList[0].imgUrlList[0]);
    //             Advertisement.nativeAdn.texture = res.adList[0].imgUrlList[0];
    //             console.log(Advertisement.nativeAdn.texture, '原生广告图片');
    //             //Advertisement.closet = false;
    //             //Advertisement.nativeAdn.texture = texture;
    //             //Advertisement.nativeAdl.text = res.adList[0].title;
    //             //console.log( Advertisement.imag,'图片');
    //             // var dialog = new Image(res.adList[0].imgUrlList[0]);
    //             // dialog.pos(0,0);
    //             // dialog.anchorX = 0;
    //             // dialog.anchorY = 0;
    //             // dialog.width = 640;
    //             // dialog.height = 480;

    //             // Advertisement.nativeAdn.addChild(dialog);
    //             // console.log(dialog);
    //             // console.log(dialog.source);
    //             // Laya.loader.load('http://pfs.pinduoduo.com/phone_adx/5f5d6df62b38bd897bab7dec3e1455be.jpg?sign=q-sign-algorithm%3Dsha1%26q-ak%3DoHMACf6FzEmrUMOe8Hman8EKSbi2WB3e%26q-sign-time%3D1599709456%3B1600055056%26q-key-time%3D1599709456%3B1600055056%26q-header-list%3D%26q-url-param-list%3D%26q-signature%3D6f0bf19129f54fd2b744802a36a6ec721c5094a1',Laya.Handler.create(this, function(){
    //             //   let texture = Laya.loader.getRes('http://pfs.pinduoduo.com/phone_adx/5f5d6df62b38bd897bab7dec3e1455be.jpg?sign=q-sign-algorithm%3Dsha1%26q-ak%3DoHMACf6FzEmrUMOe8Hman8EKSbi2WB3e%26q-sign-time%3D1599709456%3B1600055056%26q-key-time%3D1599709456%3B1600055056%26q-header-list%3D%26q-url-param-list%3D%26q-signature%3D6f0bf19129f54fd2b744802a36a6ec721c5094a1');
    //             //   console.log(texture);
    //             //   let sp = new Laya.Sprite();
    //             //   sp.texture = texture;
    //             //   Laya.stage.addChild(sp);
    //             // }));
    //             //  Advertisement.imag.skin = res.adList[0].imgUrlList[0];
    //             //  console.log(Advertisement.imag.skin,'图片皮肤显示');
    //             //  console.log( Advertisement.imag,'图片');
    //             if (Advertisement.adLabel == null) {
    //                 let te = new Laya.Label();
    //                 te.text = "广告";
    //                 te.fontSize = 30;
    //                 te.color = "#FFFFFF";
    //                 te.bottom = 0;
    //                 te.right = 0;
    //                 Advertisement.adLabel = te;
    //                 Advertisement.nativeAdn.addChild(te);
    //             }
    //             // if(Advertisement.advs == "shop")
    //             // {
    //             //   Advertisement.nativeAdn.x = Laya.stage.width/2;
    //             //   Advertisement.nativeAdn.y = Laya.stage.height/3.5;
    //             // }
    //             // else
    //             // {
    //             //   Advertisement.nativeAdn.x = Laya.stage.width/2;
    //             //   Advertisement.nativeAdn.y = Laya.stage.height/2.5;
    //             // }
    //             Advertisement.nativeAdn.visible = true;
    //             Advertisement.nativeAdn.on(Laya.Event.MOUSE_UP, Advertisement.nativeAdn, reportAdClick);
    //             Advertisement.closeBtn.on(Laya.Event.MOUSE_DOWN, Advertisement.closeBtn, close_Btn);
    //             // }));
    //         }
    //     })
    //     // 注意：需要先调用reportAdShow上报广告曝光，才能调用reportAdClick去上报点击！！！
    //     function close_Btn() {
    //         Advertisement.nativeAdn.visible = false;
    //         Advertisement.closet = true;
    //     }
    //     function reportAdShow() {
    //         nativeAd.reportAdShow({ adId: Advertisement.adId });
    //     }
    //     function reportAdClick() {
    //         if (Advertisement.closet) {
    //             Advertisement.closet = false;
    //             return;
    //         }
    //         // if(Advertisement.nativeAdtouch)
    //         // {
    //         //   return;
    //         // }
    //         // Advertisement.nativeAdtouch = true;
    //         nativeAd.reportAdClick({ adId: Advertisement.adId });
    //     }
    // }

    // //Cocos OPPO原生
    // Advertisement.insertAdverV = function () {
    //     Advertisement.native = false;
    //     Advertisement.resNode.scheduleOnce(function () {
    //         Advertisement.native = true;
    //     }, 10)
    //     let nativeAd = qg.createNativeAd({
    //         posId: window.nativeAdId,
    //     });
    //     let adLoad = nativeAd.load();
    //     adLoad && adLoad.then(() => {
    //         console.log('原生广告读取完成', JSON.stringify(res));
    //     }).catch(err => {
    //         console.log('加载失败', JSON.stringify(err));
    //     })
    //     nativeAd.onLoad(function (res) {
    //         console.log('原生广告加载完成', JSON.stringify(res));
    //         if (res && res.adList) {
    //             Advertisement.adId = res.adList[0].adId;
    //             // cc.loader.load(res.adList[0].imgUrlList[0], function (err, texture) {
    //             cc.assetManager.loadRemote(res.adList[0].iconUrlList[0], { ext: '.png' }, function (err, texture) {
    //                 console.log(11111111);
    //                 if (err) {
    //                     console.log(222222222);
    //                     console.log(err);
    //                 }
    //                 console.log(33333333);
    //                 // Use texture to create sprite frame
    //                 var sprite = new cc.SpriteFrame(texture);
    //                 reportAdShow();
    //                 // Advertisement.resNode.scheduleOnce(function(){
    //                 Advertisement.nativeAdn.active = true;
    //                 // },0.3);
    //                 Advertisement.nativeAdimg.getComponent(cc.Sprite).spriteFrame = sprite;
    //                 Advertisement.nativeAdl.getComponent(cc.Label).string = res.adList[0].title;
    //                 Advertisement.nativeAdn.on(cc.Node.EventType.TOUCH_START, reportAdClick, Advertisement.nativeAdn);
    //             });
    //         }
    //     })
    //     // 注意：需要先调用reportAdShow上报广告曝光，才能调用reportAdClick去上报点击！！！
    //     function reportAdShow() {
    //         nativeAd.reportAdShow({ adId: Advertisement.adId });
    //     }
    //     function reportAdClick() {
    //         // if(Advertisement.nativeAdtouch)
    //         // {
    //         //   return;
    //         // }
    //         Advertisement.nativeAdtouch = true;
    //         nativeAd.reportAdClick({ adId: Advertisement.adId });
    //     }
    //     // this.customAd.show().then(() => {
    //     //     console.log("show success");
    //     // }).catch((error) => {
    //     //     console.log("show fail with:" + error.errCode + "," + error.errMsg);
    //     // });
    // }
    //#endregion

    //#region 通用
    //获取当前是周几
    Advertisement.getWeekDate = function () {
        var now = new Date();
        var day = now.getDay();
        var weeks = new Array(
            "周日",
            "周一",
            "周二",
            "周三",
            "周四",
            "周五",
            "周六",
        );
        var week = weeks[day];
        console.log(week);
        return week;
    };

    //  import Advertisement = require('');
    // import Advertisement from "";
    // let Advertisement = require("Advertisement_API");
    // Advertisement.rewarda = 'reward1';
    // Advertisement.videop = this;
    // Advertisement.videoAdverV();
    // //VIVO激励视频

    Advertisement.videoAdverV = function (e, t) {
        Advertisement.videop = e;
        Advertisement.failVideop = t;

        if (Laya.Browser.onVVMiniGame || Laya.Browser.onQGMiniGame || Laya.Browser.onHWMiniGame) {
            if (Advertisement.videoAd == null) {
                Advertisement.videoAd = qg.createRewardedVideoAd({
                    posId: window.videoAdId //输入广告ID
                });
                Advertisement.videoAd.onLoad(() => {
                    console.log("激励视频已加载");
                    // cc.audioEngine.pauseAll();
                    var adshow = Advertisement.videoAd.show();
                    // 调用then和catch之前需要对show的结果做下判空处理，防止出错（如果没有判空，在平台版本为1052以及以下的手机上将会出现错误）
                    Advertisement.reward = true;
                    adshow && adshow.then(() => {
                        console.log("激励视频广告显示成功");
                    }).catch(err => {
                        console.log("激励视频广告显示失败", err);
                        Advertisement.errorNode.opacity = 255;
                        setTimeout(() => {
                            Advertisement.errorNode.opacity = 0;
                        }, 3000);
                    });
                });
                Advertisement.videoAd.onError(err => {
                    console.log("激励视频异常", err);
                });
                Advertisement.videoAd.onClose(res => {
                    if (res && res.isEnded) {
                        if (Advertisement.reward) //判断是否发放过奖励
                        {
                            Advertisement.reward = false;
                            // cc.audioEngine.resumeAll();

                            Advertisement.videop && Advertisement.videop();
                            Advertisement.videop = null;
                            Advertisement.failVideop = null;
                        }
                    } else {
                        console.log("播放中途退出，不下发游戏奖励");
                        // cc.audioEngine.resumeAll();

                        Advertisement.failVideop && Advertisement.failVideop();
                        Advertisement.videop = null;
                        Advertisement.failVideop = null;
                    }
                });
            }
            var adload = Advertisement.videoAd.load();

            // 调用then和catch之前需要对load的结果做下判空处理，防止出错（如果没有判空，在平台版本为1052以及以下的手机上将会出现错误）
            adload && adload.then(() => {
                console.log("激励视频广告加载成功");
            }).catch(err => {
                console.log("激励视频广告加载失败", err);
                // Advertisement.errorNode.opacity = 255;
                // setTimeout(() => {
                //     Advertisement.errorNode.opacity = 0;
                // }, 3000);
                qg.showToast({
                    message: "当前无广告，请稍后尝试"
                });
            });
        } else {
            Advertisement.videop && Advertisement.videop();
            Advertisement.videop = null;
            Advertisement.failVideop = null;
        }
    };

    Advertisement.bannerDestroy = function () {
        if (Advertisement.bannerAd != null) {
            Advertisement.bannerAd.destroy();
            Advertisement.bannerAd = null;
            Advertisement.bannersize = false;
        }
    };

    // module.exports = Advertisement;

    class Platforms_Android {
    	constructor() {
    		this.gType = 3;
    		this.isHW = false;
    		this.bannerFlushTime = 60;
    		this.curBannerTime = 0;
    		this.insertCD = 0;
    		this.curInsertCDtime = 0;
    		this.hasPayNoAd = "0";
    		this.mapbtn = new Map();
    		this.onInit(null);
    	}
    	static getInstance() {
    		if (this.mInstance === null) {
    			this.mInstance = new Platforms_Android();
    		}
    		return this.mInstance;
    	}
    	onInit(isHW = false) {
    		console.log("===================android init==================");
    		console.log("==onInit==");
    		if (isHW) {
    			this.isHW = isHW;
    		}
    		console.log("==Laya.Browser.onAndroid==" + Laya.Browser.onAndroid);
    		console.log(new Date().getTime());
    		if (Laya.Browser.onAndroid) {
    			try {
    				this.bridge = window["PlatformClass"].createClass("demo.JSBridge");
    				this.InitGetGGType();
    			}
    			catch (error) {
    				console.log("==error==");
    			}
    		}
    		this.hasPayNoAd = Laya.LocalStorage.getItem("pay_no_ads");
    		this.InitGetGGType();
    		setInterval(() => {
    			this.curBannerTime++;
    			if (this.curBannerTime >= this.bannerFlushTime) {
    				this.curBannerTime = 0;
    				this.showBanner();
    				console.log("=========bannercall=========");
    			}
    		}, 1000);
    		this.showBanner();
    	}
    	getBridge() {
    		if (this.bridge == null || typeof (this.bridge) == 'undefined') {
    			this.bridge = window["PlatformClass"].createClass("demo.JSBridge");
    		}
    		return this.bridge;
    	}
    	addNoAdsNode(node) {
    		this.mapbtn.set(node, true);
    	}
    	showBanner() {
    		console.log("onShowBanner");
    		if (this.gType == 0) {
    			console.log("gType:0");
    			return;
    		}
    		if (this.hasPayNoAd == "1") {
    			console.log("hasPayNoAd:1");
    			return;
    		}
    		if (Laya.Browser.onAndroid) {
    			this.getBridge().call("onShowBannerAD");
    		}
    	}
    	showRewardedVideo(_successCallback, _errorCallback = null, _CloseCallback = null) {
    		console.log("onShowRewardedVideo");
    		let ziji = this;
    		if (Laya.Browser.onAndroid) {
    			console.log("android:gType" + this.gType);
    			if (this.gType == 0) {
    				_successCallback && _successCallback();
    				return;
    			}
    			if (this.hasPayNoAd == "1") {
    				console.log("hasPayNoAd:1");
    				_successCallback && _successCallback();
    				return;
    			}
    			this.getBridge().callWithBack((res) => {
    				let data = JSON.parse(res);
    				switch (data.code) {
    					case "200":
    						console.log("video success");
    						_successCallback && _successCallback();
    						ziji.androidToast("视频观看完成，获得奖励");
    						break;
    					case "201":
    						console.log("video fail");
    						ziji.androidToast("视频未加载完成，请稍后再试");
    						_errorCallback && _errorCallback();
    						break;
    					case "202":
    						console.log("video close");
    						_CloseCallback && _CloseCallback();
    						ziji.androidToast("未完整观看视频，无法获得奖励");
    						break;
    				}
    			}, "onShowVideoAD");
    		}
    		else {
    			console.log("window");
    			_successCallback && _successCallback();
    		}
    	}
    	showInsertAd() {
    		console.log("onShowInsertAd");
    		console.log(" gType: " + this.gType);
    		console.log("已经过: " + (new Date().getTime() - this.curInsertCDtime));
    		if (this.gType == 0) {
    			return;
    		}
    		if (this.hasPayNoAd == "1") {
    			console.log("hasPayNoAd:1");
    			return;
    		}
    		if (new Date().getTime() - this.curInsertCDtime < this.insertCD) {
    			console.log("==inserttimecd==");
    			return;
    		}
    		this.curInsertCDtime = new Date().getTime();
    		if (Laya.Browser.onAndroid) {
    			this.getBridge().call("onShowInsertAD");
    		}
    	}
    	yszc() {
    		if (Laya.Browser.onAndroid)
    			this.getBridge().call("yszc");
    		console.log("yszc");
    	}
    	hasMore() {
    		if (Laya.Browser.onAndroid)
    			return this.getBridge().call("hasMore");
    	}
    	moreGame() {
    		if (Laya.Browser.onAndroid)
    			this.getBridge().call("moreGame");
    		console.log("moreGame");
    	}
    	getLanguageType() {
    		if (Laya.Browser.onAndroid)
    			return this.getBridge().call("getLanguageType");
    	}
    	androidToast(str) {
    		if (Laya.Browser.onAndroid)
    			this.getBridge().call("androidToast", str);
    	}
    	payForBuy(id, price, gooditem, _successCallback, _falseCallback = null) {
    		console.log("pay");
    		console.log("==Laya.Browser.onAndroid==" + Laya.Browser.onAndroid);
    		if (Laya.Browser.onAndroid) {
    			this.getBridge().callWithBack((res) => {
    				let data = JSON.parse(res);
    				let paysucc = data.paysucc;
    				let pid = data.pid;
    				if (paysucc == 1) {
    					_successCallback && _successCallback.runWith(pid);
    				}
    				else {
    					_falseCallback && _falseCallback.runWith(pid);
    				}
    			}, "payForBuy", id, price, gooditem);
    		}
    		else {
    			_successCallback && _successCallback.runWith(id);
    		}
    	}
    	paySuccessNoads() {
    		Laya.LocalStorage.setItem("pay_no_ads", "1");
    		Platforms_Android.getInstance().hasPayNoAd = "1";
    		console.log(this.mapbtn.size);
    		for (let key of this.mapbtn.keys()) {
    			if (key.visible) {
    				key.visible = false;
    			}
    			console.log(key);
    		}
    	}
    	doOrder(_successCallback, id = 0) {
    		console.log("doOrder");
    		if (Laya.Browser.onAndroid) {
    			this.getBridge().callWithBack((res) => {
    				let data = JSON.parse(res);
    				let pid = data.orderPayID;
    				_successCallback && _successCallback.runWith(pid);
    			}, "doOrder");
    		}
    		else {
    			_successCallback && _successCallback.runWith(id);
    		}
    	}
    	InitGetGGType() {
    		let self = this;
    		console.log("InitGetGGType");
    		if (Laya.Browser.onAndroid) {
    			console.log("==getggtype==");
    			this.getBridge().callWithBack((res) => {
    				let data = JSON.parse(res);
    				self.gType = data.gType;
    				if (this.isHW) {
    					self.gType = 3;
    				}
    				self.setInsertCD();
    			}, "getGGType");
    		}
    		else {
    			self.setInsertCD();
    		}
    	}
    	setInsertCD() {
    		if (this.getGGType() == 3) {
    			this.insertCD = 1;
    		}
    		else if (this.getGGType() == 2) {
    			this.insertCD = 20;
    		}
    		else if (this.getGGType() == 1) {
    			this.insertCD = 60;
    		}
    	}
    	getGGType() {
    		return this.gType;
    	}
    }
    Platforms_Android.mInstance = null;

    class TipsTool {
    	constructor() {
    		this.pref = null;
    	}
    	static GetInstance() {
    		if (this._instance == null) {
    			this._instance = new TipsTool();
    		}
    		return this._instance;
    	}
    	ShowTips(text) {
    		if (this.pref == null) {
    			Laya.loader.load("DxPrefab/Tips.prefab", Laya.Handler.create(this, (pre) => {
    				this.pref = pre;
    				this.ShowTips(text);
    			}));
    		}
    		else {
    			var _OBJ = this.pref.create();
    			_OBJ.zOrder = 10001;
    			_OBJ.text = text;
    			Laya.stage.addChild(_OBJ);
    		}
    	}
    }
    TipsTool._instance = null;

    class Platforms_VivoH5Game {
    	constructor() {
    		this.NATIVE_AD_COOL_TIME = 3;
    		this.NATIVE_BANNER_AD_COOL_TIME = 30;
    		this.m_bannerAd = null;
    		this.m_videoAd = null;
    		this.m_insertAd = null;
    		this.m_nativeAd = null;
    		this.m_nativeBannerAd = null;
    		this.m_pInfo = 1091;
    		this.m_qgInstance = null;
    		this.m_videoAdIsLoaded = false;
    		this.m_videoSuccessBack = null;
    		this.m_videoFailBack = null;
    		this.m_videoErrorBack = null;
    		this.qg = window['qg'];
    		this.nativeAdDelay = 0;
    		this.nativeBannerDelay = 0;
    		this.bannerDelay = 0;
    		this.isInsertDelay = false;
    		this.pack_Name = 'com.llwx.hlttdmx.vivominigame';
    		this.app_ID = '105536865';
    		this.Media_ID = '010cb437dd05473fb8e06ed74eebb5ed';
    		this.video_ID = PlatformAdManager.getInstance().vivoVideoId;
    		this.nativeAd_ID = '';
    		this.nativeBannerAd_ID = '';
    		this.banner_ID = PlatformAdManager.getInstance().vivoBannerId;
    		this.customNative_ID = PlatformAdManager.getInstance().vivoCustomAdId;
    		this.boxBanner_ID = "092e8d0ebcc64b9c8153934d4e846a3c";
    		this.boxPortal_ID = "d5006a08612d40988519c66fd59401ed";
    		this.insert_ID = '';
    		this.nativeIcon_ID = '';
    		this.screenWidth = 0;
    		this.screenHeight = 0;
    		this.screenSize = null;
    		this.resTemp = null;
    		this.canShowInsert = true;
    		this.customAd = null;
    		this.boxBannerAd = null;
    		this.boxPortalAd = null;
    	}
    	setScreenSize() {
    		this.screenSize = new Laya.Size(Laya.stage.width, Laya.stage.height);
    	}
    	onInit(_callback) {
    		_callback && _callback();
    		this.setScreenSize();
    		this.onLogin();
    		console.log("===================vivo quickgame init==================");
    	}
    	onLogin() {
    		if (!this.qg)
    			this.qg = window['qg'];
    		if (!this.qg)
    			return;
    		this.qg.getSystemInfo({
    			success: (data) => {
    				this.screenWidth = data.screenWidth;
    				this.screenHeight = data.screenHeight;
    				this.m_pInfo = data.platformVersionCode;
    				this.createVideo(this.video_ID, null);
    			}
    		});
    		console.log('===== VivoH5GameAPI onLogin =====', this.qg);
    	}
    	createBanner(style) {
    		this.hideBanner();
    		if (this.qg) {
    			if (style == '0') {
    				this.m_bannerAd = this.qg.createBannerAd({
    					posId: this.banner_ID,
    					style: {},
    				});
    				console.log('style:', this.m_bannerAd);
    			}
    			else {
    				let width = this.screenWidth > 1080 ? 1080 : this.screenWidth;
    				this.m_bannerAd = this.qg.createBannerAd({
    					posId: this.banner_ID,
    					style: { left: (this.screenWidth - width) / 2, top: -150 },
    				});
    			}
    			console.log('===== VivoH5GameAPI createBannerAd =====');
    		}
    	}
    	showBanner(style) {
    		if (this.m_pInfo < 1031) {
    			console.log("===== Platform 不支持banner 展示 " + this.m_pInfo.toString());
    			return;
    		}
    		this.createBanner(style);
    		if (this.m_bannerAd) {
    			this.m_bannerAd.show && this.m_bannerAd.show();
    			this.m_bannerAd.offLoad();
    			this.m_bannerAd.onLoad(() => {
    				this.m_bannerAd.show();
    				this.bannerDelay = 10;
    				Laya.timer.once(this.bannerDelay * 1000, this, () => { this.bannerDelay = 0; });
    				console.log("===== VivoH5GameAPI onShowBanner Success =====");
    			});
    			this.m_bannerAd.offError();
    			this.m_bannerAd.onError((err) => {
    				console.log("===== VivoH5GameAPI Banner错误： " + JSON.stringify(err));
    			});
    		}
    		console.log("===== Show vivo Banner Ad =====");
    	}
    	hideBanner() {
    		if (this.m_bannerAd) {
    			this.m_bannerAd.destroy();
    			this.m_bannerAd = null;
    			console.log('===== VivoH5GameAPI onHideBanner =====');
    		}
    		console.log("===== Hide Banner Ad =====");
    	}
    	createVideo(id, callBack) {
    		if (this.m_pInfo < 1041) {
    			console.log("===== 激励视频创建失败 Platform " + this.m_pInfo.toString());
    			return;
    		}
    		if (this.qg) {
    			if (this.m_videoAd)
    				this.m_videoAd = null;
    			this.m_videoAd = this.qg.createRewardedVideoAd({
    				posId: this.video_ID
    			});
    			if (this.m_videoAd) {
    				this.m_videoAd.onLoad(() => {
    					this.m_videoAdIsLoaded = true;
    					console.log("===== VivoH5GameAPI onShowRewardedVideo Loaded =====");
    				});
    				this.m_videoAd.onError((err) => {
    					this.m_videoErrorBack && this.m_videoErrorBack();
    					Laya.timer.once(60000, this, () => {
    						this.m_videoAd.load();
    					});
    					console.log("===== VivoH5GameAPI onShowRewardedVideo Fail ", err.errCode, err.errMsg);
    				});
    				this.m_videoAdIsLoaded = true;
    			}
    		}
    		console.log('===== VivoH5GameAPI createRewardedVideoAd =====');
    	}
    	showVideo(_successCallback, _failCallback) {
    		if (this.m_pInfo < 1041) {
    			console.log("===== Platform 不支持视频广告 " + this.m_pInfo.toString());
    			return;
    		}
    		this.m_videoSuccessBack = _successCallback;
    		this.m_videoFailBack = _failCallback;
    		this.m_videoErrorBack = _failCallback;
    		if (this.m_videoAd) {
    			const onClose = (res) => {
    				if (res && res.isEnded) {
    					this.m_videoAdIsLoaded = false;
    					this.m_videoSuccessBack && this.m_videoSuccessBack();
    					console.log('视频成功回调奖励');
    					Laya.timer.once(1000, this, () => {
    						this.m_videoAd.load();
    					});
    					console.log("===== VivoH5GameAPI onShowRewardedVideo Success =====");
    					TipsTool.GetInstance().ShowTips("视频观看完成，获得奖励");
    				}
    				else {
    					this.m_videoAdIsLoaded = false;
    					this.m_videoFailBack && this.m_videoFailBack();
    					Laya.timer.once(1000, this, () => {
    						this.m_videoAd.load();
    					});
    					TipsTool.GetInstance().ShowTips("未完整观看视频，无法获得奖励");
    					console.log("=====  VivoH5GameAPI onShowRewardedVideo Cancel =====");
    				}
    				Laya.SoundManager.setMusicVolume(0.35);
    				this.m_videoAd.offClose(onClose);
    			};
    			this.m_videoAd.onClose(onClose);
    			if (this.m_videoAdIsLoaded) {
    				Laya.timer.once(200, this, () => {
    					this.m_videoAd.show();
    					Laya.SoundManager.setMusicVolume(0);
    				});
    			}
    			else {
    				this.m_videoFailBack && this.m_videoFailBack();
    				TipsTool.GetInstance().ShowTips("视频未加载完成，请稍后再试");
    			}
    		}
    		console.log("VivoH5GameAPI onShowRewardedVideo:", this.video_ID);
    	}
    	createInsertAd() {
    		if (this.qg) {
    			this.m_insertAd = this.qg.createInterstitialAd({
    				posId: this.insert_ID
    			});
    		}
    		console.log('===== VivoH5GameAPI createInsertAd =====');
    	}
    	showInsertAd() {
    		if (this.isInsertDelay) {
    			console.log('===== 插屏冷却中~ =====');
    			return;
    		}
    		if (this.m_pInfo < 1031) {
    			console.log("===== Platform 不支持插屏" + this.m_pInfo.toString());
    			return;
    		}
    		this.createInsertAd();
    		console.log('===== VivoH5GameAPI onShowInsertAd =====');
    		if (this.m_insertAd) {
    			this.m_insertAd.offError();
    			this.m_insertAd.onError((err) => {
    				console.log("===== VivoH5GameAPI onShowInsertAd Fail " + err.errCode);
    			});
    			let nInsert = this.m_insertAd.show();
    			let self = this;
    			nInsert && nInsert.then(() => {
    				self.isInsertDelay = true;
    				Laya.timer.once(60000, this, () => { self.isInsertDelay = false; });
    				console.log("===== VivoH5GameAPI onShowInsertAd Suceess =====");
    			}).catch((err) => {
    				this.m_insertAd.load().then(() => {
    					this.m_insertAd.show();
    				});
    			});
    		}
    	}
    	createNativeAd() {
    		if (this.m_pInfo < 1053) {
    			console.log("===== Platform " + this.m_pInfo.toString());
    			return;
    		}
    		this.m_nativeAd = this.qg.createNativeAd({
    			posId: this.nativeAd_ID,
    		});
    		console.log('===== VivoH5GameAPI createNativeAd =====');
    	}
    	showNativeAd(_succCallback, _failCallback) {
    		if (this.nativeAdDelay > 0) {
    			console.log('===== 原生广告冷却中 插屏 =====');
    			_failCallback && _failCallback();
    			return;
    		}
    		if (this.m_pInfo < 1053) {
    			console.log("===== Platform 太低不支持原生 " + this.m_pInfo.toString());
    			_failCallback && _failCallback();
    			return;
    		}
    		this.createNativeAd();
    		if (this.m_nativeAd) {
    			this.m_nativeAd.load();
    			this.m_nativeAd.offLoad();
    			this.m_nativeAd.onLoad((res) => {
    				if (!this.canShowInsert) {
    					console.log("=================== VIVO ======================> 好像错过了显示插屏的场景了 ");
    					return;
    				}
    				if (res && res.adList) {
    					let resTemp = res.adList[res.adList.length - 1];
    					if (resTemp) {
    						Platforms_VivoH5Game.resNative = resTemp;
    						localStorage.setItem("insertAdRes", JSON.stringify(resTemp));
    						_succCallback && _succCallback(resTemp);
    						this.nativeAdDelay = this.NATIVE_AD_COOL_TIME;
    						Laya.timer.once(this.nativeAdDelay * 1000, this, () => { this.nativeAdDelay = 0; });
    						console.log('vivo 原生', resTemp);
    						this.m_nativeAd.reportAdShow({
    							adId: resTemp.adId,
    						});
    					}
    					else {
    						console.log('原生拉取失败');
    					}
    				}
    			});
    			this.m_nativeAd.offError();
    			this.m_nativeAd.onError((err) => {
    				console.log("===== Native Error: " + err.errCode + "," + err.errMsg);
    				_failCallback && _failCallback();
    			});
    		}
    		console.log('===== vivoH5GameAPI onShowNativeAd =====');
    	}
    	onNativeAdClick(_id) {
    		if (this.m_nativeAd) {
    			this.m_nativeAd.reportAdClick({
    				adId: _id
    			});
    		}
    		console.log('===== VivoH5GameAPI onNativeAdClick:' + _id);
    	}
    	createNativeBannerAd() {
    		if (this.m_pInfo < 1053) {
    			console.log("===== Platform " + this.m_pInfo.toString());
    			return;
    		}
    		this.m_nativeBannerAd = this.qg.createNativeAd({
    			posId: this.nativeBannerAd_ID,
    		});
    		console.log('===== VivoH5GameAPI createNativeAd Banner =====');
    	}
    	showNativeBannerAd(_succCallback, _failCallback) {
    		if (this.nativeBannerDelay > 0) {
    			_failCallback && _failCallback();
    			console.log('===== 原生广告冷却中 Banner =====');
    			return;
    		}
    		if (this.m_pInfo < 1053) {
    			_failCallback && _failCallback();
    			console.log("===== Platform 太低不支持原生 " + this.m_pInfo.toString());
    			return;
    		}
    		this.createNativeBannerAd();
    		if (this.m_nativeBannerAd) {
    			this.m_nativeBannerAd.load();
    			this.m_nativeBannerAd.offLoad();
    			this.m_nativeBannerAd.onLoad((res) => {
    				if (res && res.adList) {
    					let resTemp = res.adList[res.adList.length - 1];
    					if (resTemp) {
    						Platforms_VivoH5Game.resNativeBanner = resTemp;
    						_succCallback && _succCallback(resTemp);
    						this.nativeBannerDelay = this.NATIVE_BANNER_AD_COOL_TIME;
    						Laya.timer.once(this.nativeBannerDelay * 1000, this, () => { this.nativeBannerDelay = 0; });
    						console.log('vivo 原生', resTemp);
    						this.m_nativeBannerAd.reportAdShow({
    							adId: resTemp.adId,
    						});
    					}
    					else {
    						console.log('原生拉取失败');
    						_failCallback && _failCallback();
    					}
    				}
    			});
    			this.m_nativeBannerAd.offError();
    			this.m_nativeBannerAd.onError((err) => {
    				console.log("===== Native Error: " + err.errCode + "," + err.errMsg);
    				_failCallback && _failCallback();
    			});
    		}
    		console.log('===== vivoH5GameAPI onShowNativeAd Banner =====');
    	}
    	onNativeBannerAdClick(_id) {
    		if (this.m_nativeBannerAd) {
    			this.m_nativeBannerAd.reportAdClick({
    				adId: _id
    			});
    		}
    		console.log('===== VivoH5GameAPI onNative Banner AdClick:' + _id);
    	}
    	showCustomAd() {
    		if (this.qg.createCustomAd) {
    			if (this.customAd != null) {
    				this.customAd.destroy();
    				this.customAd = null;
    			}
    			let width = this.screenWidth > 1080 ? 1080 : this.screenWidth;
    			let height = width / 1.24137;
    			console.log("计算得到的广告尺寸 ==> w:" + width + "  h:" + height);
    			this.customAd = this.qg.createCustomAd({
    				posId: this.customNative_ID,
    				style: { left: (this.screenWidth - width) / 2, top: (this.screenHeight - height) / 2 }
    			});
    			this.customAd.offError();
    			this.customAd.onError(err => {
    				console.log("原生模板广告加载失败", JSON.stringify(err));
    			});
    			this.customAd.show().then(() => {
    				console.log('原生模板广告展示完成');
    			}).catch((err) => {
    				console.log('原生模板广告展示失败', JSON.stringify(err));
    			});
    		}
    		else {
    			console.log("================ VIVO 不支持原生模板广告 ==================== > ");
    		}
    	}
    	hideCustomAd() {
    		if (this.customAd != null) {
    			this.customAd.destroy();
    			this.customAd = null;
    		}
    	}
    	showBoxBannerAd() {
    		if (this.qg.createBoxBannerAd) {
    			this.boxBannerAd = this.qg.createBoxBannerAd({
    				posId: this.boxBanner_ID
    			});
    			this.boxBannerAd.onError(function (err) { console.log("盒子横幅广告加载失败", err); });
    			this.boxBannerAd.show().then(function () { console.log('show success'); });
    		}
    		else {
    			console.log('暂不支持互推盒子相关 API');
    		}
    	}
    	hideBoxBannerAd() {
    		if (this.boxBannerAd != null) {
    			this.boxBannerAd.destroy();
    			this.boxBannerAd = null;
    		}
    	}
    	showBoxBannerAd_realShow() {
    		if (this.boxBannerAd) {
    			this.boxBannerAd.show().then(function () { console.log('show success'); });
    		}
    	}
    	hideBoxBannerAd_realHide() {
    		if (this.boxBannerAd) {
    			this.boxBannerAd.hide().then(function () {
    				console.log('hide success');
    			}).catch(function (error) {
    				console.log('hide fail with:' + error.errCode + ',' + error.errMsg);
    			});
    		}
    	}
    	showBoxPortalAd() {
    		if (this.qg.createBoxPortalAd) {
    			this.boxPortalAd = this.qg.createBoxPortalAd({
    				posId: this.boxPortal_ID,
    				marginTop: 600
    			});
    			this.boxPortalAd.onError(function (err) {
    				console.log("盒子九宫格广告加载失败 ==> " + JSON.stringify(err));
    			});
    			this.boxPortalAd.onClose(function () {
    				console.log('close');
    				if (this.boxPortalAd.isDestroyed) {
    					return;
    				}
    				this.boxPortalAd.show();
    			});
    			this.boxPortalAd.show().then(function () {
    				console.log('show success');
    			});
    		}
    		else {
    			console.log('暂不支持互推盒子相关 API');
    		}
    	}
    	hideBoxPortalAd() {
    		if (this.boxPortalAd) {
    			this.boxPortalAd.isDestroyed = true;
    			this.boxPortalAd.destroy();
    			this.boxPortalAd = null;
    		}
    	}
    	exitApplication() {
    		if (this.qg) {
    			this.qg.exitApplication(null);
    		}
    	}
    	saveDataToCache(_key, _value, _IsNumber) {
    		localStorage.setItem(_key, _value);
    	}
    	onShake() {
    		if (this.qg)
    			this.qg.vibrateShort();
    	}
    	readDataFromCache(_key, _IsNumber) {
    		let ret;
    		if (_IsNumber)
    			ret = parseInt(localStorage.getItem(_key));
    		else
    			ret = localStorage.getItem(_key);
    		return ret;
    	}
    	ReportAnalytics(eventName, data) {
    	}
    	getGGTypeToCheck() {
    		return 1;
    	}
    	onShareVideo(_callback) {
    		throw new Error("Method not implemented.");
    	}
    	showVideoAward() {
    		throw new Error("Method not implemented.");
    	}
    	showVideoFail() {
    		throw new Error("Method not implemented.");
    	}
    	createNativeIconAd() {
    		throw new Error("Method not implemented.");
    	}
    	showNativeIconAd(id, callBack) {
    		throw new Error("Method not implemented.");
    	}
    	onNativeIconAdClick(_id) {
    		throw new Error("Method not implemented.");
    	}
    	addDesktop(_callback) {
    		if (this.qg != null && this.qg != undefined) {
    			this.qg.hasShortcutInstalled({
    				success: (res) => {
    					if (res == false) {
    						this.qg.installShortcut({
    							success: () => {
    								setTimeout(() => {
    									this.qg.hasShortcutInstalled({
    										success: (res) => {
    											if (res == false) {
    												_callback && _callback(false);
    												console.log("============>:取消创建桌面图标");
    											}
    											else {
    												_callback && _callback(true);
    												console.log("============>:成功创建桌面图标");
    											}
    										}
    									});
    								}, 500);
    							}
    						});
    					}
    					else {
    						console.log("存在图标");
    					}
    				},
    				fail: (err) => { },
    				complete: () => { }
    			});
    		}
    	}
    	getDestTop(_callback) {
    		if (this.qg) {
    			this.qg.hasShortcutInstalled({
    				success: function (status) {
    					if (status) {
    						_callback && _callback(true);
    						console.log('已创建');
    					}
    					else {
    						_callback && _callback(false);
    						console.log('未创建');
    					}
    				}
    			});
    		}
    	}
    	startRecordScreen() {
    		throw new Error("Method not implemented.");
    	}
    	stopRecordScreen() {
    		throw new Error("Method not implemented.");
    	}
    	createMoreGamesBtn() {
    		throw new Error("Method not implemented.");
    	}
    	showMoreGamesBtn() {
    		throw new Error("Method not implemented.");
    	}
    	jumpToGame(_packageName) {
    		throw new Error("Method not implemented.");
    	}
    	addColorBookmark() {
    		throw new Error("Method not implemented.");
    	}
    	addSubscribeApp() {
    		throw new Error("Method not implemented.");
    	}
    	PlayShock() {
    		if (this.qg) {
    			this.qg.vibrateShort();
    		}
    	}
    	startRecorder() { }
    	pauseRecorder() { }
    	resumeRecorder() { }
    	stopRecorder() { }
    	onShowAppBox() { }
    }
    Platforms_VivoH5Game.resNative = null;
    Platforms_VivoH5Game.resNativeBanner = null;
    Platforms_VivoH5Game.instance = null;

    class Platforms_OppoH5Game {
    	constructor() {
    		this.InsertAdId = "";
    		this.qg = window["qg"];
    		this.bannerAd = null;
    		this.interstitialAd = null;
    		this.rewardedVideoAd = null;
    		this.m_videoAdIsLoaded = false;
    		this.nativeAd = null;
    		this.resTemp = null;
    		this.resIconTemp = null;
    		this.nativeIconAd = null;
    		this.systemInfo = null;
    		this.isShowNative = true;
    		this.gameBannerAd = null;
    		this.gameBannerAdId = "425963";
    	}
    	onInit(_callback) {
    		if (this.qg !== null && this.qg !== undefined) {
    			this.systemInfo = this.qg.getSystemInfoSync();
    			this.qg.setEnableDebug({
    				enableDebug: false,
    				success: function () {
    					console.log("test consol log");
    				},
    				complete: function () {
    				},
    				fail: function () {
    				}
    			});
    			this.qg.reportMonitor('game_scene', 0);
    		}
    		else {
    			this.qg = null;
    			console.error("qg==NULL");
    		}
    		_callback && _callback();
    		this.isShowNative = true;
    		console.log("oppoH5GameAPI=============================>:onInit");
    	}
    	onLogin() {
    		Laya.LocalStorage.setItem("bannerHideCount", "0");
    	}
    	showBanner(id) {
    		if (!this.isShowNative) {
    			console.log('oppo 一分钟banner广告冷却');
    			return;
    		}
    		if (!Laya.LocalStorage.getItem("bannerHideCount")) {
    			Laya.LocalStorage.setItem("bannerHideCount", "0");
    		}
    		console.log("展示Banner ==============> " + parseInt(Laya.LocalStorage.getItem("bannerHideCount")));
    		if (this.qg !== null && this.qg !== undefined && parseInt(Laya.LocalStorage.getItem("bannerHideCount")) < 5) {
    			if (this.systemInfo.platformVersionCode < 1051) {
    				console.log("版本号过低 无法创建横幅广告");
    				return;
    			}
    			this.hideBanner();
    			this.bannerAd = this.qg.createBannerAd({
    				adUnitId: id
    			});
    			this.bannerAd.show();
    			this.bannerAd.onShow(() => {
    				console.log("横幅广告调用 onShow");
    			});
    			this.bannerAd.onHide(() => {
    				Laya.LocalStorage.setItem("bannerHideCount", (parseInt(Laya.LocalStorage.getItem("bannerHideCount")) + 1).toString());
    				console.log("手动隐藏Banner:" + Laya.LocalStorage.getItem("bannerHideCount"));
    			});
    			this.bannerAd.onLoad(function () {
    				console.log('banner 广告加载成功');
    			});
    			this.bannerAd.onError(function (err) {
    				console.log("banner 拉取 失败：", err.errCode, "errMsg:", err.errMsg);
    			});
    		}
    		else {
    		}
    		console.log("oppoH5GameAPI showBanner:", id);
    	}
    	hideBanner() {
    		if (this.bannerAd) {
    			this.bannerAd.destroy();
    			this.bannerAd = null;
    		}
    		console.log("oppoH5GameAPI hideBanner");
    	}
    	createVideo(id, callBack) {
    		console.log("创建激励视频=============:" + id);
    		if (this.qg !== null && this.qg !== undefined) {
    			if (this.systemInfo.platformVersionCode < 1051) {
    				console.log("版本号过低 无法创建激励视频广告");
    				return;
    			}
    			if (this.rewardedVideoAd) {
    				this.rewardedVideoAd.destroy();
    				this.rewardedVideoAd = null;
    			}
    			this.rewardedVideoAd = this.qg.createRewardedVideoAd({
    				adUnitId: id
    			});
    			this.rewardedVideoAd.load();
    			this.rewardedVideoAd.onLoad(() => {
    				console.log("激励视频加载成功");
    				this.m_videoAdIsLoaded = true;
    				callBack && callBack();
    			});
    			this.rewardedVideoAd.onError((err) => {
    				console.log(id);
    				console.log('激励视频错误码 =====>:' + JSON.stringify(err));
    				TipsTool.GetInstance().ShowTips('视频创建失败，请稍后试试吧！');
    				this.m_videoAdIsLoaded = false;
    			});
    		}
    		console.log("Create RewardeVideoAd");
    	}
    	showVideo(id, _successCallback, _failCallback) {
    		if (this.qg) {
    			TipsTool.GetInstance().ShowTips("开始拉取视频，请稍候");
    			this.createVideo(id, () => {
    				if (this.rewardedVideoAd && this.m_videoAdIsLoaded) {
    					this.rewardedVideoAd.show();
    					const onClose = (res) => {
    						if (res.isEnded) {
    							console.log('激励视频广告完成，发放奖励');
    							_successCallback && _successCallback();
    						}
    						else {
    							console.log('激励视频广告取消关闭，不发放奖励');
    							TipsTool.GetInstance().ShowTips('未观看完整视频无法获取奖励');
    							_failCallback && _failCallback();
    						}
    						this.rewardedVideoAd.offClose(onClose);
    					};
    					this.rewardedVideoAd.onError(function (err) {
    						TipsTool.GetInstance().ShowTips('视频加载失败，请稍后试试吧！');
    						console.log("视频错误========", err.errCode, err.errMsg);
    					});
    					this.rewardedVideoAd.onClose(onClose);
    				}
    				else {
    					TipsTool.GetInstance().ShowTips('广告还未准备好,请稍后再试');
    				}
    			});
    		}
    		else {
    			TipsTool.GetInstance().ShowTips('广告还未准备好,请稍后再试');
    		}
    		console.log("显示OPPO RewardeVideoAd:", id);
    	}
    	showVideoAward() {
    		this.videoType = "";
    		this.arg = null;
    	}
    	showVideoFail() {
    		this.videoType = "";
    		this.arg = null;
    	}
    	createInsertAd() {
    	}
    	showInsertAd() {
    		if (this.qg != null && this.qg != undefined) {
    			if (this.systemInfo.platformVersionCode < 1051) {
    				console.log("版本号过低 无法创建插屏广告");
    				return;
    			}
    			if (this.interstitialAd) {
    				this.interstitialAd.destroy();
    				this.interstitialAd = null;
    			}
    			this.interstitialAd = this.qg.createInsertAd({
    				adUnitId: this.InsertAdId
    			});
    			this.interstitialAd.load();
    			this.interstitialAd.onLoad(() => {
    				console.log('OPPOH5GameAPI InsertAd load success');
    				this.interstitialAd.show();
    			});
    			this.interstitialAd.onError((res) => {
    				console.log('OPPOH5GameAPI InsertAd load Error:' + res);
    				this.interstitialAd.destroy();
    				this.interstitialAd = null;
    			});
    			const onClose = (res) => {
    				this.interstitialAd.offClose(onClose);
    				this.interstitialAd.destroy();
    				this.interstitialAd = null;
    			};
    			this.interstitialAd.onClose(onClose);
    		}
    		console.log("oppoH5GameAPI showInsertAd");
    	}
    	createNativeAd() {
    	}
    	showNativeAd(id, callBack) {
    		if (!this.isShowNative) {
    			console.log('oppo 一分钟原生广告冷却');
    			return;
    		}
    		if (this.qg) {
    			if (this.nativeAd) {
    				this.nativeAd.destroy();
    				this.nativeAd = null;
    			}
    			if (this.nativeAd == null) {
    				this.nativeAd = this.qg.createNativeAd({
    					adUnitId: id
    				});
    			}
    			this.nativeAd.load();
    			const loadNative = (res) => {
    				console.log("原生广告加载", res.adList[0]);
    				if (res && res.adList && res.adList[0] != undefined) {
    					this.resTemp = null;
    					this.resTemp = res.adList[0];
    					console.log("原生广告资源:", res.adList[0].imgUrlList);
    					callBack && callBack(res.adList[0], this.nativeAd);
    				}
    				this.nativeAd.reportAdShow({
    					adId: res.adList[0].adId
    				});
    				this.nativeAd.offLoad(loadNative);
    			};
    			this.nativeAd.onLoad(loadNative);
    			this.nativeAd.onError((err) => {
    				console.log("原生错误========", JSON.stringify(err));
    				this.nativeAd.offError();
    			});
    		}
    		else {
    			callBack(null);
    		}
    		console.log("Show NativeAd:", '-' + id + '-');
    	}
    	onNativeAdClick(_id) {
    		if (this.nativeAd) {
    			this.nativeAd.reportAdClick({
    				adId: _id
    			});
    			console.log("点击原生三图广告：", _id);
    		}
    	}
    	createNativeIconAd() {
    	}
    	showNativeIconAd(id, callBack) {
    		if (!this.isShowNative) {
    			console.log('oppo 一分钟原生广告冷却');
    			return;
    		}
    		if (this.qg) {
    			if (this.nativeIconAd == null) {
    				this.nativeIconAd = this.qg.createNativeAd({
    					adUnitId: id
    				});
    			}
    			this.nativeIconAd.load();
    			const loadNative = (res) => {
    				console.log("原生icon广告加载======", res.adList[0].icon);
    				if (res && res.adList && res.adList[0] != undefined) {
    					this.resIconTemp = null;
    					this.resIconTemp = res.adList[0];
    					console.log("原生Icon 资源是又有的=====:" + res.adList[0].icon);
    					callBack && callBack(res.adList[0], this.nativeIconAd);
    				}
    				this.nativeIconAd.reportAdShow({
    					adId: res.adList[0].adId
    				});
    				this.nativeIconAd.offLoad(loadNative);
    			};
    			this.nativeIconAd.onLoad(loadNative);
    			this.nativeIconAd.onError((err) => {
    				console.log("原生icon错误=======", err.errCode + "errMsg:" + err.errMsg);
    			});
    		}
    		console.log("Show NativeAd_Icon: ", '-' + id + '-');
    	}
    	onNativeIconAdClick(_id) {
    		if (this.nativeIconAd) {
    			this.nativeIconAd.reportAdClick({ adId: _id });
    		}
    	}
    	addDesktop(_callback) {
    		if (this.qg != null && this.qg != undefined) {
    			if (this.systemInfo.platformVersionCode < 1044) {
    				console.log("版本号过低 无法创建桌面图标");
    				return;
    			}
    			this.qg.hasShortcutInstalled({
    				success: (res) => {
    					if (res == false) {
    						this.qg.installShortcut({
    							success: () => {
    								setTimeout(() => {
    									this.qg.hasShortcutInstalled({
    										success: (res) => {
    											if (res == false) {
    												_callback && _callback(false);
    												console.log("============>:取消创建桌面图标");
    											}
    											else {
    												_callback && _callback(true);
    												console.log("============>:成功创建桌面图标");
    											}
    										}
    									});
    								}, 500);
    							}
    						});
    					}
    					else {
    						console.log("存在图标");
    					}
    				},
    				fail: (err) => { },
    				complete: () => { }
    			});
    		}
    	}
    	getDestTop(_callback) {
    		if (this.qg) {
    			this.qg.hasShortcutInstalled({
    				success: (res) => {
    					if (res == false) {
    						_callback && _callback(false);
    						console.log("============>:没有图标");
    					}
    					else {
    						_callback && _callback(true);
    						console.log("============>:有桌面图标");
    					}
    				}
    			});
    		}
    	}
    	PlayShock() {
    		if (this.qg) {
    			this.qg.vibrateShort({
    				success: function (res) { console.log("震动成功"); },
    				fail: function (res) { console.log(`vibrateShort调用失败`); },
    				complete: function (res) { }
    			});
    		}
    	}
    	showMoreGamesBtn() {
    		if (this.qg) {
    			this.qg.navigateToMiniGame({
    				success: function () { },
    				fail: function (res) {
    					console.log(JSON.stringify(res));
    				}
    			});
    		}
    	}
    	jumpToGame(_packageName) {
    		if (this.qg !== null && this.qg !== undefined) {
    			let obj = { pkgName: _packageName };
    			console.log("oppoH5GameAPI=============================jumpToGame>:", _packageName);
    			this.qg.navigateToMiniGame(obj);
    		}
    	}
    	showGameBannerAd(failCallback) {
    		if (this.qg) {
    			if (this.systemInfo.platformVersionCode < 1090) {
    				console.log("暂不支持 互推轮播广告 ==========> " + this.systemInfo.platformVersionCode);
    				failCallback && failCallback();
    				return;
    			}
    			this.hideBanner();
    			if (this.gameBannerAd) {
    				this.gameBannerAd.destroy();
    				this.gameBannerAd = null;
    			}
    			console.log("oppo miniGame: screenWidth  " + this.systemInfo.screenWidth);
    			console.log("oppo miniGame: screenHieght  " + this.systemInfo.screenHeight);
    			let targetTop = this.systemInfo.screenHeight - 280;
    			this.gameBannerAd = this.qg.createGameBannerAd({
    				adUnitId: this.gameBannerAdId,
    				style: {
    					top: targetTop,
    					left: 100,
    					orientation: 'horizontal'
    				}
    			});
    			this.gameBannerAd.show().then(function () {
    				console.log('互推轮播 ===========> show success');
    			}).catch(function (err) {
    				console.log('互推轮播 ===========> show fail with:' + JSON.stringify(err));
    			});
    		}
    	}
    	hideGameBannerAd() {
    		if (this.gameBannerAd) {
    			this.gameBannerAd.destroy();
    			this.gameBannerAd = null;
    		}
    	}
    	;
    	exitApplication() {
    		console.log("================================> 退出游戏");
    		TipsTool.GetInstance().ShowTips("即将退出游戏");
    		if (this.qg) {
    			this.qg.exitApplication({
    				data: "",
    				success: () => { console.log("oppo 退出游戏 ========> success"); },
    				fail: () => { console.log("oppo 退出游戏 ========> fail"); },
    				complete: () => { console.log("oppo 退出游戏 ========> complete"); },
    			});
    		}
    	}
    }

    var Platform;
    (function (Platform) {
    	Platform[Platform["huawei_H5"] = 0] = "huawei_H5";
    })(Platform || (Platform = {}));
    class SDK_config {
    }
    SDK_config.apkConfig = {
    	isHW: false,
    	bannerCDTime: 15,
    	ggType: 3,
    };
    SDK_config.platform = Platform.huawei_H5;
    SDK_config.bannerFlushTime = 30;
    SDK_config.nativeTest = true;
    SDK_config.HWTest = true;
    SDK_config.mainSceneName = "Scene/testAndroidScene.scene";
    SDK_config.GameIdConfig = {
    	huaweiID: {
    		bannerFlushTime: SDK_config.HWTest ? 60 : 30,
    		appId: "还没填",
    		bannerAdId: SDK_config.HWTest ? "x0kvs12iu6" : "x0kvs12iu6",
    		InsertAdId: SDK_config.HWTest ? "y7llq8azbe" : "y7llq8azbe",
    		NativeAdIconId: SDK_config.HWTest ? "" : "",
    		rewardedVideoAdId: SDK_config.HWTest ? "u2k89ub7vq" : "还没填",
    		NativeAdId: SDK_config.HWTest ? "i7ik1b3mgg" : "还没填",
    		NativeSplahId: SDK_config.HWTest ? "testu7m3hc4gvm" : "b4raryx7ui",
    	}
    };

    class UI_Config {
    }
    UI_Config.UIRes = "UI/";
    UI_Config.DebugLog = true;

    class UIPanel extends Laya.Script {
    	open(obj = null) {
    		if (!this.owner.visible) {
    			this.owner.visible = true;
    		}
    		this.openArg = obj;
    		this.onOpen(obj);
    	}
    	onOpen(obj) {
    	}
    	close(obj = null) {
    		if (this.owner.visible) {
    			this.owner.visible = false;
    		}
    		this.onClose(obj);
    	}
    	isOpen() {
    		return this.owner.visible;
    	}
    	onClose(obj) {
    	}
    }

    class UI_Manager {
    	static getInstance() {
    		if (UI_Manager.instance == null) {
    			UI_Manager.instance = new UI_Manager();
    		}
    		return UI_Manager.instance;
    	}
    	onInit() {
    		this.rootNode = Laya.stage;
    	}
    	loadUI(name, cb) {
    		Laya.loader.create(name, Laya.Handler.create(this, function (issuccess) {
    			let cellView = Laya.loader.getRes(name);
    			let cell = new Laya.View();
    			cell.createView(cellView);
    			cb(cell);
    			Laya.stage.addChild(cell);
    		}));
    	}
    	showUI(name, obj = null, cb = null, zodrer = 999) {
    		let self = this;
    		let curnode = Laya.stage.getChildByName(name);
    		if (curnode == null) {
    			this.loadUI(UI_Config.UIRes + name + ".json", function (node) {
    				if (!self.rootNode) {
    					self.rootNode = Laya.stage;
    				}
    				self.rootNode.addChild(node);
    				node.getComponent(UIPanel).open(obj);
    				cb && cb(node);
    			});
    			return;
    		}
    		curnode.getComponent(UIPanel).open(obj);
    		cb && cb(curnode);
    	}
    	hideUI(name, obj = null) {
    		let self = this;
    		let curnode = this.rootNode.getChildByName(name);
    		if (curnode != null) {
    			curnode.getComponent(UIPanel).close(obj);
    		}
    	}
    	showUIWithNode(node, obj = null) {
    		node.getComponent(UIPanel).open(obj);
    	}
    }
    UI_Manager.instance = null;

    class UIWindow extends UIPanel {
    }

    class InvokeConfig {
    }
    InvokeConfig.onInit = "onInit";
    InvokeConfig.getGGtype = "getGGtype";
    InvokeConfig.showInsert = "showInsert";
    InvokeConfig.showBanner = "showBanner";
    InvokeConfig.showVideo = "showVideo";
    InvokeConfig.more = "more";
    InvokeConfig.yszc = "yszc";
    InvokeConfig.exit = "exit";
    InvokeConfig.pay = "pay";
    InvokeConfig.doOrder = "doOrder";
    InvokeConfig.androidToast = "androidToast";
    InvokeConfig.showUI = "showUI";
    InvokeConfig.createNative = "createNative";
    InvokeConfig.onNativeAdClick = "onNativeAdClick";
    InvokeConfig.hideBanner = "hideBanner";
    InvokeConfig.hideInsertNativeAd = "hideInsertNativeAd";
    InvokeConfig.toastShow = "toastShow";
    InvokeConfig.addNativeNode = "addNativeNode";
    InvokeConfig.addDesktop = "addDesktop";
    InvokeConfig.hasShortcutInstalled = "hasShortcutInstalled";

    var self;
    class UI_NativeAd extends UIWindow {
    	constructor() {
    		super(...arguments);
    		this.nativeType = 1;
    		this.closeBtn = null;
    	}
    	onDisable() {
    		console.log('onDisable');
    		this.bg_click && this.bg_click.off(Laya.Event.MOUSE_OVER, self, self.onClickAd);
    		this.btn_clickAd && this.btn_clickAd.off(Laya.Event.CLICK, self, self.onClickAd);
    		this.closeBtn && this.closeBtn.off(Laya.Event.CLICK, this, self.close);
    	}
    	onClickAd(e) {
    		e.stopPropagation();
    		console.log('onClickAd');
    		try {
    			this.delcb.onNativeAdClick(this.delcb.res.adList[0].adId);
    			this.close();
    		}
    		catch (error) {
    			console.log(error);
    		}
    	}
    	onOpen(obj) {
    		console.log('UI_NativeAd=====onOpen======');
    		self = this;
    		this.delcb = obj;
    		self.title = this.owner.getChildByName("title");
    		self.ad_desc = this.owner.getChildByName("ad_desc");
    		self.adSource = this.owner.getChildByName("adSource");
    		self.picture_ad = this.owner.getChildByName("picture_ad");
    		self.btn_clickAd = this.owner.getChildByName("btn_clickAd");
    		self.clickBtnTxt = this.owner.getChildByName("btn_clickAd").getChildByName("clickBtnTxt");
    		self.bg_click = this.owner.getChildByName("bg_click");
    		self.closeBtn = this.owner.getChildByName("closeBtn");
    		self.bg_click.on(Laya.Event.MOUSE_OVER, self, self.onClickAd);
    		self.btn_clickAd.on(Laya.Event.CLICK, self, self.onClickAd);
    		self.closeBtn && self.closeBtn.on(Laya.Event.CLICK, this, self.close);
    		if (this.delcb) {
    			if (this.delcb.adType && this.delcb.adType == 1) {
    				let winHeight = Laya.stage.height;
    				let winWidth = Laya.stage.width;
    				console.log("width=" + winWidth + ",height=" + winHeight);
    				let scale = 1;
    				if (winWidth > winHeight) {
    					let prehe = winHeight * 3 / 5;
    					scale = prehe / self.owner.height;
    					self.owner.scaleX = scale;
    					self.owner.scaleY = scale;
    				}
    				else {
    					let prehe = winWidth * 9 / 10;
    					scale = prehe / self.owner.width;
    					console.log('scale:' + scale);
    					self.owner.scaleX = scale;
    					self.owner.scaleY = scale;
    				}
    				self.owner.x = (winWidth - self.owner.width * scale) / 2;
    				self.owner.y = (winHeight - self.owner.height * scale) / 2;
    			}
    			if (this.nativeType == 0) {
    			}
    			this.delcb.pnode = this.owner;
    			window['SDK_Manager'].Invoke(InvokeConfig.addNativeNode, this.delcb);
    		}
    		console.log("on open");
    	}
    	onClose(arg) {
    		self = this;
    		if (self.delcb) {
    			self.delcb.onClose && self.delcb.onClose;
    		}
    		console.log('===onClose==');
    	}
    	initLayer(res) {
    		self = this;
    		console.log('=========');
    		this.delcb.res = res;
    		try {
    			if (res.adList[0].title) {
    				self.title.text = res.adList[0].title;
    			}
    			else {
    				self.title.text = '';
    			}
    			if (res.adList[0].desc) {
    				self.ad_desc.text = res.adList[0].desc;
    			}
    			else {
    				self.ad_desc.text = '';
    			}
    			if (res.adList[0].clickBtnTxt) {
    				self.clickBtnTxt.text = res.adList[0].clickBtnTxt;
    			}
    			else {
    				self.clickBtnTxt.text = '';
    			}
    			if (res.adList[0].source) {
    				self.adSource.text = res.adList[0].source;
    			}
    			else {
    				self.adSource.text = '';
    			}
    			self.picture_ad.texture = null;
    			if (res.adList[0].imgUrlList) {
    				console.log('imgurllist');
    				var iconUrl = res.adList[0].imgUrlList;
    				if (Array.isArray(iconUrl)) {
    					iconUrl = res.adList[0].imgUrlList[0];
    				}
    				Laya.loader.load(iconUrl, Laya.Handler.create(this, function () {
    					try {
    						let texture = Laya.loader.getRes(iconUrl);
    						let newFrame = new Laya.Texture(texture);
    						self.picture_ad.texture = newFrame;
    					}
    					catch (e) {
    						console.error("加载广告图片出错了!!");
    					}
    				}));
    			}
    			if (res.adList[0].iconUrlList) {
    				console.log('iconUrlList');
    				var iconUrl = res.adList[0].iconUrlList;
    				if (Array.isArray(iconUrl)) {
    					iconUrl = res.adList[0].iconUrlList[0];
    				}
    				Laya.loader.load(iconUrl, Laya.Handler.create(this, function () {
    					try {
    						let texture = Laya.loader.getRes(iconUrl);
    						let newFrame = new Laya.Texture(texture);
    						self.picture_ad.texture = newFrame;
    					}
    					catch (e) {
    						console.error("加载广告图片出错了!!");
    					}
    				}));
    			}
    		}
    		catch (error) {
    			console.log(error);
    			console.log(error.message);
    		}
    	}
    }

    var nativeAd;
    var bannerAd;
    var rewardedVideoAd;
    var hbs;
    var qg$1 = window['qg'];;
    class hwH5GameAPI {
    	constructor() {
    		this.lastTimeRecord3 = 0;
    		this.lastNativeInsertTimeRecord3 = 0;
    		this.isVideoReady = false;
    		this.allNativeImageNode = new Map();
    		this.counttime = 0;
    		this.id = 0;
    	}
    	showVivoNativeBannerAD() {
    		throw new Error("Method not implemented.");
    	}
    	hideVivoNativeBannerAD() {
    		throw new Error("Method not implemented.");
    	}
    	showVivoNativeAD() {
    		throw new Error("Method not implemented.");
    	}
    	onInit(_callback) {
    		hbs = window['hbs'];
    		qg$1 = window['qg'];
    		if (SDK_config.nativeTest) {
    			_callback && _callback();
    		}
    		try {
    			let self = this;
    			hbs.onHide(function () {
    				console.log("==hide==");
    			});
    			this.gamelogin(_callback);
    			hbs.onShow(function () {
    				console.log("==onShow==");
    				self.allNativeImageNode.forEach(function (value, key) {
    					if (key.visible && key.parent) {
    						let id = key.getComponent(UI_NativeAd).delcb.res.adList[0].adId;
    						console.log("==reportAdShow=id=" + id);
    						nativeAd.reportAdShow({
    							adId: id
    						});
    					}
    				});
    			});
    		}
    		catch (error) {
    			console.log(error);
    		}
    	}
    	exitgame(res) {
    		qg$1.exitApplication(res);
    	}
    	gamelogin(_callback) {
    		console.log("Sign-in");
    		qg$1.gameLoginWithReal({
    			forceLogin: 1,
    			appid: SDK_config.GameIdConfig.huaweiID.appId,
    			success: function (data) {
    				console.log(" game login with real success:" + JSON.stringify(data));
    				_callback && _callback();
    			},
    			fail: function (data, code) {
    				console.log("game login with real fail:" + data + ", code:" + code);
    				if (code == 7004 || code == 2012) {
    					console.log("玩家取消登录，返回游戏界面让玩家重新登录。");
    					UI_Manager.getInstance().showUI("HWPriverPolicy");
    				}
    				if (code == 7021) {
    					this.platformAPI && this.platformAPI.exitgame();
    					console.log("The player has canceled identity verification. Forbid the player from entering the game.");
    				}
    			}
    		});
    	}
    	huaweiLogin(cb) {
    		console.log("==========hw login=================");
    		let self = this;
    		var loginSuccess = -1;
    		if (!hbs) {
    			cb();
    			return;
    		}
    		hbs.gameLogin({
    			forceLogin: 0,
    			appid: SDK_config.GameIdConfig.huaweiID.appId,
    			success: function (data) {
    				console.log("game login: success");
    				self.showFloatingWin();
    				loginSuccess = 0;
    				if (cb) {
    					cb();
    				}
    			},
    			fail: function (data, code) {
    				console.log("DUWENJUN game login fail:" + data + ", code:" + code);
    				loginSuccess = -1;
    				if (cb) {
    					cb();
    				}
    			}
    		});
    		var cbShow = function () {
    			console.log("--------on show----------");
    			this.showFloatingWin();
    			console.log("--------on show----loginSuccess------");
    		}.bind(this);
    		var cbHide = function () {
    			console.log("--------on hide----------");
    			this.hideFloatingWin();
    		}.bind(this);
    		hbs.onShow(cbShow);
    		hbs.onHide(cbHide);
    	}
    	showFloatingWin() {
    		let self = this;
    		hbs.showFloatWindow({
    			appid: SDK_config.GameIdConfig.huaweiID.appId,
    			success: function () {
    				console.log("show float window success.");
    			},
    			fail: function (data, code) {
    				console.log("show float window fail:" + data + ", code:" + code);
    			}
    		});
    	}
    	hideFloatingWin() {
    		let self = this;
    		hbs.hideFloatWindow({
    			appid: SDK_config.GameIdConfig.huaweiID.appId,
    			success: function () {
    				console.log("hide float window success");
    			},
    			fail: function (data, code) {
    				console.log("hide float window fail:" + data + ", code:" + code);
    			}
    		});
    	}
    	share(_callback) {
    	}
    	shareVideo(_successCallback, _failCallback) {
    	}
    	createBanner() {
    		let height = 700;
    		console.log(height);
    		bannerAd = qg$1.createBannerAd({
    			adUnitId: SDK_config.GameIdConfig.huaweiID.bannerAdId,
    			style: {
    				top: height,
    				left: 0,
    				height: 57,
    				width: 360
    			},
    			adIntervals: SDK_config.GameIdConfig.huaweiID.bannerFlushTime,
    		});
    	}
    	showBanner(_arg) {
    		let self = this;
    		console.log("展示 showBanner============");
    		let sbanner = function () {
    			if (SDK_config.nativeTest) {
    				self.createNative(function (adres) {
    					let del = {
    						onNativeAdClick: self.onNativeAdClick,
    						res: adres,
    					};
    					UI_Manager.getInstance().showUI('NativeAD_banner', del);
    				}, SDK_config.GameIdConfig.huaweiID.NativeAdId);
    				return;
    			}
    			if (!bannerAd) {
    				self.createBanner();
    			}
    			bannerAd.show();
    			bannerAd.onError(function (err) {
    				console.log("banner 拉取 失败：", err.errCode, "errMsg:", err.errMsg);
    				bannerAd.offError();
    			});
    		};
    		if (this.flushbanner) {
    			clearInterval(this.flushbanner);
    		}
    		sbanner();
    		this.flushbanner = setInterval(function () {
    			self.counttime++;
    			if (self.counttime == SDK_config.GameIdConfig.huaweiID.bannerFlushTime) {
    				self.counttime = 0;
    			}
    		}, 1000);
    		console.log("vivoH5GameAPI showBanner");
    	}
    	hideBanner() {
    		if (SDK_config.nativeTest) {
    			UI_Manager.getInstance().hideUI('demo_banner');
    			return;
    		}
    		if (bannerAd) {
    			bannerAd.hide();
    		}
    		console.log("vivoH5GameAPI hideBanner");
    	}
    	createVideo() {
    		console.log('===preload huawei Video==');
    		if (!hbs) {
    			return;
    		}
    		let self = this;
    		if (rewardedVideoAd) {
    			rewardedVideoAd.destroy();
    		}
    		rewardedVideoAd = hbs.createRewardedVideoAd({
    			adUnitId: SDK_config.GameIdConfig.huaweiID.rewardedVideoAdId,
    			success: (code) => {
    				console.log("ad demo : loadAndShowVideoAd createRewardedVideoAd: success");
    			},
    			fail: (data, code) => {
    				console.log("ad demo : loadAndShowVideoAd createRewardedVideoAd fail: " + data + "," + code);
    			},
    			complete: () => {
    				console.log("ad demo : loadAndShowVideoAd createRewardedVideoAd complete");
    			}
    		});
    		let onloadcb = function () {
    			console.log('ad loaded.');
    			self.isVideoReady = true;
    			rewardedVideoAd.offLoad(onloadcb);
    		};
    		rewardedVideoAd.onLoad(onloadcb);
    		let onerrcb = function (e) {
    			self.isVideoReady = false;
    			console.error('load ad error:' + JSON.stringify(e));
    			const errCode = e.errCode;
    			const errMsg = e.errMsg;
    			self.hwVideocallback.onAdFailed('load ad error:' + JSON.stringify(e));
    			rewardedVideoAd.offError(onerrcb);
    			setTimeout(() => {
    				self.createVideo();
    				console.error('加载失败3秒继续加载:');
    			}, 3000);
    		};
    		rewardedVideoAd.onError(onerrcb);
    		let cbc = function (res) {
    			console.log('ad onClose: ' + res.isEnded);
    			if (res.isEnded) {
    				self.hwVideocallback.onVideoPlayComplete();
    			}
    			else {
    				self.hwVideocallback.onAdClose();
    			}
    			rewardedVideoAd.destroy();
    			rewardedVideoAd = null;
    			self.createVideo();
    		};
    		rewardedVideoAd.offClose(cbc);
    		rewardedVideoAd.onClose(cbc);
    		rewardedVideoAd.load();
    	}
    	showVideo(_successCallback, _failCallback, _showCallback, _closeCallback) {
    		console.log('===show==' + SDK_config.GameIdConfig.huaweiID.rewardedVideoAdId);
    		this.hwVideocallback = { onVideoPlayComplete: _successCallback, onAdFailed: _failCallback, onAdClose: _closeCallback };
    		if (!hbs) {
    			this.hwVideocallback.onVideoPlayComplete();
    		}
    		if (this.isVideoReady) {
    			rewardedVideoAd.show();
    		}
    		else {
    			this.createVideo();
    		}
    	}
    	showInsertAd() {
    		let self = this;
    		this.createNative(function (adres) {
    			if (adres) {
    				let del = {
    					onNativeAdClick: self.onNativeAdClick,
    					res: adres,
    					adType: 1,
    				};
    				UI_Manager.getInstance().showUI('NativeAD', del);
    			}
    		}, SDK_config.GameIdConfig.huaweiID.NativeAdId);
    	}
    	addNativeNode(del) {
    		if (!this.allNativeImageNode.get(del.pnode)) {
    			this.allNativeImageNode.set(del.pnode, del.pnode.getComponent(UI_NativeAd));
    		}
    		this.flushNativeImage(del.res);
    	}
    	flushNativeImage(res) {
    		this.allNativeImageNode.forEach(function (value, key) {
    			if (key.visible && key.parent) {
    				value.initLayer(res);
    			}
    		});
    	}
    	hideInsertNativeAd() {
    		UI_Manager.getInstance().hideUI('NativeAD');
    	}
    	createNative(callback, nativeid = null) {
    		let self = this;
    		try {
    			var curnativeid = SDK_config.GameIdConfig.huaweiID.NativeAdId;
    			console.log("curnativeid :" + curnativeid);
    			console.log(SDK_config.nativeTest);
    			if (SDK_config.nativeTest) {
    				let res1 = {
    					adId: "9b70dcaa-321f-4114-aa4d-b2630adebfe8+" + (this.id++),
    					clickBtnTxt: "点击安装",
    					creativeType: 8,
    					desc: "蒙古手撕牛肉干降价了",
    					source: "huawei",
    					icon: "http://images.pinduoduo.com/marketing_api/2020-05-17/fd8e685c-f0e0-443a-8088-0fd4bfd9e035.jpg",
    					iconUrlList: ["http://images.pinduoduo.com/marketing_api/2020-05-17/fd8e685c-f0e0-443a-8088-0fd4bfd9e035.jpg"],
    					imgUrlList: "http://images.pinduoduo.com/marketing_api/2020-05-17/fd8e685c-f0e0-443a-8088-0fd4bfd9e035.jpg",
    					length: 3,
    					__proto__: Array(0),
    					interactionType: 2,
    					logoUrl: "",
    					title: "拼多多",
    				};
    				let res = {
    					adList: [res1],
    					code: 0,
    					msg: "ok",
    				};
    				setTimeout(() => {
    					callback(res);
    				}, 500 + Math.random() * 500);
    				return;
    			}
    			if (!hbs) {
    				console.log("=hbs==不存在");
    				callback();
    				return;
    			}
    			nativeAd = hbs.createNativeAd({
    				adUnitId: curnativeid,
    				success: (code) => {
    					console.log("loadNativeAd loadNativeAd : success");
    				},
    				fail: (data, code) => {
    					console.log("loadNativeAd loadNativeAd fail: " + data + "," + code);
    				},
    				complete: () => {
    					console.log("loadNativeAd loadNativeAd : complete");
    				}
    			});
    			let nativeadLoadfun = function (data) {
    				console.info('ad data loaded: ' + JSON.stringify(data));
    				let adItemData = data.adList[0];
    				console.log("===adItemData.adId==" + adItemData.adId);
    				nativeAd.reportAdShow({
    					adId: adItemData.adId
    				});
    				callback(data);
    				nativeAd.offLoad(nativeadLoadfun);
    			};
    			nativeAd.onLoad(nativeadLoadfun);
    			let errorfun = function (e) {
    				console.error('load ad error:' + JSON.stringify(e));
    				const errCode = e.errCode;
    				const errMsg = e.errMsg;
    				callback();
    				nativeAd.offError(errorfun);
    			};
    			nativeAd.onError(errorfun);
    			nativeAd.load();
    		}
    		catch (error) {
    			console.log(error);
    		}
    	}
    	onNativeAdClick(_id) {
    		console.log("id :" + _id);
    		nativeAd.reportAdClick({
    			adId: _id
    		});
    	}
    	saveDataToCache(_key, _value) {
    	}
    	readDataFromCache(_key) {
    	}
    	hasShortcutInstalled(_callback) {
    		console.log('==hasTableIcon===');
    		hbs.hasInstalled({
    			success: function (res) {
    				console.log("===============hasInstalledsuccess： " + res);
    				if (res) {
    					console.log('=======创建成功');
    					if (_callback) {
    						_callback(1);
    					}
    				}
    				else {
    					if (_callback) {
    						_callback(0);
    					}
    				}
    			},
    			fail: function (data) {
    				console.log("hasInstalled fail: " + data);
    			},
    			complete: function () {
    				console.log("hasInstalled complete");
    			}
    		});
    	}
    	addDesktop(_callback) {
    		let mes = "将快捷方式添加到桌面以便下次使用";
    		hbs.install({
    			message: mes,
    			success: function (ret) {
    				console.log('handling install success');
    				_callback && _callback(1);
    			},
    			fail: function (erromsg, errocode) {
    				console.log('handling install fail: ' + erromsg + ", errocode: " + errocode);
    				_callback && _callback(0);
    			},
    			complete: function () {
    				console.log("handling install  complete");
    			}
    		});
    	}
    	startRecordScreen() {
    	}
    	stopRecordScreen() {
    	}
    	showMoreGames() {
    	}
    	jumpToGame(_packageName) {
    	}
    	sendMessage(key, value) {
    	}
    }

    class Platforms_QuickGame {
    	constructor() {
    		this.hasinit = false;
    		this.platformAPI = null;
    		this.platform = SDK_config.platform;
    		this.lastNativeInsertTimeRecord3 = 0;
    		console.log('===================huawei quickgame constructor==================');
    		window['Platforms_QuickGame'] = this;
    	}
    	static getInstance() {
    		if (this.mInstance == null) {
    			this.mInstance = new Platforms_QuickGame();
    		}
    		return this.mInstance;
    	}
    	onInit(_callback = null, mainUICanvasNode = null, uigroup = null) {
    		console.log("huawei quickgame init");
    		if (!this.hasinit) {
    			this.hasinit = true;
    			switch (this.platform) {
    				case Platform.huawei_H5:
    					this.platformAPI = new hwH5GameAPI();
    					break;
    				default:
    					break;
    			}
    			if (this.platformAPI && this.platformAPI !== null) {
    				this.platformAPI.onInit(_callback);
    			}
    		}
    	}
    	share(_callback) {
    		this.platformAPI && this.platformAPI.share(_callback);
    	}
    	exitgame(res) {
    		this.platformAPI && this.platformAPI.exitgame(res);
    	}
    	showBanner(_arg) {
    	}
    	showBanner1(_arg) {
    		this.platformAPI && this.platformAPI.showBanner1(_arg);
    	}
    	hideBanner() {
    		this.platformAPI && this.platformAPI.hideBanner();
    	}
    	showInsertAd(_arg) {
    		this.platformAPI && this.platformAPI.showInsertAd();
    	}
    	createVideo(_arg) {
    		this.platformAPI && this.platformAPI.createVideo();
    	}
    	hideInsertNativeAd() {
    		this.platformAPI && this.platformAPI.hideInsertNativeAd();
    	}
    	showVivoNativeAD(_arg) {
    		this.platformAPI && this.platformAPI.showVivoNativeAD();
    	}
    	showVivoNativeAD1(_arg) {
    		this.platformAPI && this.platformAPI.showVivoNativeAD1();
    	}
    	showVivoNativeAD2(_arg) {
    		this.platformAPI && this.platformAPI.showVivoNativeAD2();
    	}
    	showVivoNativeAD3(_arg) {
    		this.platformAPI && this.platformAPI.showVivoNativeAD3();
    	}
    	huaweiLogin(_arg) {
    		this.platformAPI && this.platformAPI.huaweiLogin();
    	}
    	showVivoNativeBannerAD(_arg) {
    		this.platformAPI && this.platformAPI.showVivoNativeBannerAD();
    	}
    	showVivoNativeBannerAD1(_arg) {
    		this.platformAPI && this.platformAPI.showVivoNativeBannerAD1();
    	}
    	showVivoNativeBannerAD2(_arg) {
    		this.platformAPI && this.platformAPI.showVivoNativeBannerAD2();
    	}
    	hideVivoNativeBannerAD() {
    		this.platformAPI && this.platformAPI.hideVivoNativeBannerAD();
    	}
    	showVideo(_successCallback, _failCallback, _showCallback, _closeCallback) {
    		this.platformAPI && this.platformAPI.showVideo(_successCallback, _failCallback, _showCallback, _closeCallback);
    	}
    	createNative(callback, nativeid = null) {
    		let theTime = new Date().getTime() / 1000;
    		if (theTime - this.lastNativeInsertTimeRecord3 <= 1) {
    			console.log((1 - (theTime - this.lastNativeInsertTimeRecord3)) + "秒后再试 native");
    			return;
    		}
    		this.lastNativeInsertTimeRecord3 = new Date().getTime() / 1000;
    		this.platformAPI && this.platformAPI.createNative(callback, nativeid);
    	}
    	addNativeNode(pnode) {
    		this.platformAPI && this.platformAPI.addNativeNode(pnode);
    	}
    	onNativeAdClick(id) {
    		this.platformAPI && this.platformAPI.onNativeAdClick(id);
    	}
    	saveDataToCache(_key, _value) {
    		this.platformAPI && this.platformAPI.saveDataToCache(_key, _value);
    	}
    	readDataFromCache(_key) {
    		this.platformAPI && this.platformAPI.readDataFromCache(_key);
    	}
    	hasShortcutInstalled(_callback) {
    		this.platformAPI && this.platformAPI.hasShortcutInstalled(_callback);
    	}
    	addDesktop(_callback) {
    		this.platformAPI && this.platformAPI.addDesktop(_callback);
    	}
    	shareVideo(_successCallback, _failCallback) {
    		this.platformAPI && this.platformAPI.shareVideo(_successCallback, _failCallback);
    	}
    	startRecordScreen() {
    		this.platformAPI && this.platformAPI.startRecordScreen();
    	}
    	stopRecordScreen() {
    		this.platformAPI && this.platformAPI.stopRecordScreen();
    	}
    	sendMessage(key, value) {
    		this.platformAPI && this.platformAPI.sendMessage(key, value);
    	}
    }
    Platforms_QuickGame.mInstance = null;

    class PlatformAdManager {
    	constructor() {
    		this.insertTime = new Date().getTime();
    		this.canShowStartAd = false;
    		this.platformList = ["android", "vivo", "oppo", "huawei"];
    		this.platform = this.platformList[1];
    		this.vivoVideoId = "51771951a7f84c8ca4b1ee7024052fda";
    		this.vivoCustomAdId = "784cc21fb5064ea497becdfecbed3a2b";
    		this.vivoBannerId = "647bd59bdd5444028c6dfa4c80e78424";
    		this.oppoVideoId = "VideoId";
    		this.oppoNativeAdId = "NativeAdId";
    		this.oppoStartNativeAdId = "StartNativeAdId";
    		this.oppoNativeIconId = "NativeIconId";
    		this.oppoBannerId = "BannerId";
    		this.oppoAppName = "《还没填名字》";
    		this.vivoAppName = "山海神兽进化";
    		this.huaweiAppName = "《还没填名字》";
    		this.oppoCompany = "《深圳还没填公司》";
    		this.vivoCompany = "深圳市天善力思科技有限公司";
    		this.huaweiCompany = "《深圳还没填公司》";
    		this.intoGamePanel = false;
    		this.startNotShow = true;
    		this.notShowInSec = 20;
    		this.m_xxSecond = 30;
    		this.m_canShowxxSecondAd = true;
    		this.m_timerxxSecondAdHandle = -1;
    		this.isDisplayBanner = false;
    		this.m_lastBannerTime = new Date("1999-01-01");
    		this.m_lastShowVideoTime = new Date("1999-01-01");
    		this.nativeAdLock = false;
    		console.log("================= PlatformAdManager constructor ======================> ");
    		var self = this;
    		self.isVideoLock = false;
    	}
    	static getInstance() {
    		if (PlatformAdManager.m_inst == null) {
    			PlatformAdManager.m_inst = new PlatformAdManager();
    		}
    		return PlatformAdManager.m_inst;
    	}
    	onInitPF() {
    		// if (this.platform == this.platformList[0]) {
    		// 	console.log("当前为安卓平台广告");
    		// 	Platforms_Android.getInstance().onInit();
    		// }
    		// else if (this.platform == this.platformList[1]) {
    		// 	PlatformAdManager.m_DxVivoPlatform.onInit(null);
    		// }
    		// else if (this.platform == this.platformList[2]) {
    		// 	PlatformAdManager.m_DxOppoPlatform.onInit(() => {
    		// 		PlatformAdManager.m_DxOppoPlatform.onLogin();
    		// 	});
    		// }
    		// else if (this.platform == this.platformList[3]) {
    		// 	Platforms_QuickGame.getInstance().createVideo();
    		// }
    	}
    	IsPF() {
    		if (this.platform == this.platformList[1])
    			return PlatformAdManager.m_DxVivoPlatform.qg;
    		else if (this.platform == this.platformList[2])
    			return PlatformAdManager.m_DxOppoPlatform.qg;
    		else
    			return false;
    	}
    	enterGameShowYSZCDia() {
    		// if (this.platform == this.platformList[0]) {
    		// 	Platforms_Android.getInstance().onInit();
    		// }
    		// else if (this.platform == this.platformList[1]) {
    		// 	if (localStorage.getItem("YSZC_vivoRpk") != "Yes") {
    		// 		Laya.Scene.open("dialog/yszcDia_c_001.scene", false);
    		// 	}
    		// 	else {
    		// 		PlatformAdManager.getInstance().onInitPF();
    		// 	}
    		// }
    		// else if (this.platform == this.platformList[2]) {
    		// 	if (localStorage.getItem("YSZC_oppoRpk") != "Yes") {
    		// 		Laya.Scene.open("dialog/yszcDia_c_001.scene", false);
    		// 	}
    		// 	else {
    		// 		PlatformAdManager.getInstance().onInitPF();
    		// 	}
    		// }
    		// else if (this.platform == this.platformList[3]) {
    		// 	if (localStorage.getItem("YSZC_huaweiRpk") != "Yes") {
    		// 		Laya.Scene.open("dialog/yszcDia_c_001.scene", false);
    		// 	}
    		// 	else {
    		// 		PlatformAdManager.getInstance().onInitPF();
    		// 	}
    		// }
    	}
    	showCustomAd() {
    		// if (this.platform == this.platformList[2]) {
    		// 	console.log("当前为OPPO小游戏");
    		// 	return;
    		// }
    		// else if (this.platform == this.platformList[0]) {
    		// 	console.log("当前为安卓平台广告");
    		// 	Platforms_Android.getInstance().showInsertAd();
    		// }
    		// else if (this.platform == this.platformList[1]) {
    		// 	PlatformAdManager.m_DxVivoPlatform.hideBanner();
    		// 	this.IsPF() && PlatformAdManager.m_DxVivoPlatform.showCustomAd();
    		// 	console.log("========showCustomAd===========");
    		// }
    		// else if (this.platform == this.platformList[3]) {
    		// 	Platforms_QuickGame.getInstance().showInsertAd();
    		// 	console.log("====huawei====showCustomAd===========");
    		// }
    	}
    	hideCustomAd() {
    		// if (this.platform == this.platformList[2]) {
    		// 	console.log("当前为OPPO小游戏");
    		// 	return;
    		// }
    		// else if (this.platform == this.platformList[0]) {
    		// 	console.log("当前为安卓平台广告");
    		// }
    		// else {
    		// 	this.IsPF() && PlatformAdManager.m_DxVivoPlatform.hideCustomAd();
    		// }
    	}
    	showCustomAd_xxSecond(failCallback) {
    		// if (this.platform == this.platformList[2]) {
    		// 	console.log("当前为OPPO小游戏");
    		// 	return;
    		// }
    		// else if (this.platform == this.platformList[0]) {
    		// 	console.log("当前为安卓平台广告");
    		// 	Platforms_Android.getInstance().showInsertAd();
    		// 	Platforms_Android.getInstance().showBanner();
    		// }
    		// else if (this.platform == this.platformList[1]) {
    		// 	if (this.startNotShow && new Date().getTime() - this.insertTime < this.notShowInSec * 1000) {
    		// 		console.log("Don't show custom Ad in " + this.notShowInSec + " Sec, " + "pass: " + (new Date().getTime() - this.insertTime) / 1000 + " Sec.");
    		// 		return;
    		// 	}
    		// 	else {
    		// 		this.startNotShow = false;
    		// 	}
    		// 	console.log("Insert CD: " + this.m_xxSecond + " Sec, " + "Pass: " + (new Date().getTime() - this.insertTime) / 1000 + " Sec.");
    		// 	if (this.m_canShowxxSecondAd) {
    		// 		this.m_canShowxxSecondAd = false;
    		// 		this.m_timerxxSecondAdHandle = setTimeout(() => {
    		// 			this.m_canShowxxSecondAd = true;
    		// 			this.m_timerxxSecondAdHandle = -1;
    		// 		}, this.m_xxSecond * 1000);
    		// 		this.insertTime = new Date().getTime();
    		// 		this.showCustomAd();
    		// 	}
    		// 	else {
    		// 		console.log("原生模板广告 ===> 正在冷却中 ");
    		// 		if (this.m_timerxxSecondAdHandle == -1) {
    		// 			this.m_canShowxxSecondAd = true;
    		// 		}
    		// 		failCallback && failCallback();
    		// 	}
    		// }
    		// else if (this.platform == this.platformList[3]) {
    		// 	Platforms_QuickGame.getInstance().showInsertAd();
    		// 	console.log("====huawei====showCustomAd===========");
    		// }
    	}
    	showPFBannerAd(pos) {
    		// if (this.platform == this.platformList[0]) {
    		// 	console.log("当前为安卓平台广告");
    		// 	Platforms_Android.getInstance().showBanner();
    		// }
    		// else if (this.platform == this.platformList[1] || this.platform == this.platformList[2]) {
    		// 	let nowDate = new Date();
    		// 	if ((nowDate.getTime() - this.m_lastBannerTime.getTime()) < 1000) {
    		// 		console.log("==============================> banner=调用频率过高 ");
    		// 		return;
    		// 	}
    		// 	this.hidePFBannerAd();
    		// 	this.m_lastBannerTime = nowDate;
    		// 	if (this.platform == this.platformList[2]) {
    		// 		PlatformAdManager.m_DxOppoPlatform.showBanner(this.oppoBannerId);
    		// 	}
    		// 	else {
    		// 		PlatformAdManager.m_DxVivoPlatform.showBanner(pos);
    		// 	}
    		// }
    		// else if (this.platform == this.platformList[3]) {
    		// 	return;
    		// }
    	}
    	hidePFBannerAd() {
    		// if (this.platform == this.platformList[0]) {
    		// 	console.log("当前为安卓平台广告");
    		// }
    		// else if (this.platform == this.platformList[1]) {
    		// 	PlatformAdManager.m_DxVivoPlatform.hideBanner();
    		// }
    		// else if (this.platform == this.platformList[2]) {
    		// 	PlatformAdManager.m_DxOppoPlatform.hideBanner();
    		// }
    	}
    	showRewardVideo(successCallback, failCallback) {
    		// if (this.platform == this.platformList[0]) {
    		// 	Platforms_Android.getInstance().showRewardedVideo(successCallback, failCallback);
    		// }
    		// else if (this.platform == this.platformList[1] || this.platform == this.platformList[2]) {
    		// 	let nowTime = new Date();
    		// 	if ((nowTime.getTime() - this.m_lastShowVideoTime.getTime()) < 1000) {
    		// 		console.log("======================================> 激励视频调用太频繁 ");
    		// 		return;
    		// 	}
    		// 	this.m_lastShowVideoTime = nowTime;
    		// 	if (this.IsPF()) {
    		// 		TipsTool.GetInstance().ShowTips("开始准备视频");
    		// 		if (this.platform == this.platformList[1]) {
    		// 			PlatformAdManager.m_DxVivoPlatform.showVideo(successCallback, failCallback);
    		// 		}
    		// 		else if (this.platform == this.platformList[2]) {
    		// 			PlatformAdManager.m_DxOppoPlatform.showVideo(this.oppoVideoId, successCallback, failCallback);
    		// 		}
    		// 	}
    		// 	else {
    		// 		console.log("*** 非渠道端，直接获得奖励 ***");
    		// 		TipsTool.GetInstance().ShowTips("*** 非渠道端，直接获得奖励 ***");
    		// 		successCallback();
    		// 	}
    		// }
    		// else if (this.platform == this.platformList[3]) {
    		// 	var self = this;
    		// 	if (self.isVideoLock)
    		// 		return;
    		// 	console.log("点击了激励视频多少次========");
    		// 	if (SDK_config.nativeTest) {
    		// 		successCallback() && successCallback();
    		// 		return;
    		// 	}
    		// 	self.isVideoLock = true;
    		// 	Platforms_QuickGame.getInstance().showVideo(() => {
    		// 		successCallback() && successCallback();
    		// 		self.isVideoLock = false;
    		// 	}, () => { self.isVideoLock = false; }, () => { self.isVideoLock = false; }, () => { self.isVideoLock = false; });
    		// }

    		//激励
    		// successCallback();

    		Advertisement.videoAdverV(successCallback, failCallback);
    	}
    	showBoxBannerAd() {
    		// if (this.platform == this.platformList[1]) {
    		// 	this.IsPF() && PlatformAdManager.m_DxVivoPlatform.showBoxBannerAd();
    		// }
    	}
    	hideBoxBannerAd() {
    		// if (this.platform == this.platformList[1])
    		// 	this.IsPF() && PlatformAdManager.m_DxVivoPlatform.hideBoxBannerAd();
    	}
    	showBoxPortalAd() {
    		// if (this.platform == this.platformList[1])
    		// 	this.IsPF() && PlatformAdManager.m_DxVivoPlatform.showBoxPortalAd();
    	}
    	hideBoxPortalAd() {
    		// if (this.platform == this.platformList[1])
    		// 	this.IsPF() && PlatformAdManager.m_DxVivoPlatform.hideBoxPortalAd();
    	}
    	hideAllAd() {
    		// this.hideBoxBannerAd();
    		// this.hideBoxPortalAd();
    		// this.hideCustomAd();
    		// this.hidePFBannerAd();
    	}
    	showYSZC() {
    		// if (this.platform == this.platformList[0]) {
    		// 	Platforms_Android.getInstance().yszc();
    		// }
    		// else {
    		// 	Laya.Scene.open("dialog/yszc2Dia.scene", false);
    		// }
    	}
    	onClickNativeInsertAd(id) {
    		// if (this.platform == this.platformList[1])
    		// 	PlatformAdManager.m_DxVivoPlatform.onNativeAdClick(id);
    	}
    	onClickNativeBannerAd(id) {
    		// if (this.platform == this.platformList[1])
    		// 	PlatformAdManager.m_DxVivoPlatform.onNativeAdClick(id);
    	}
    	showNativeAd(adUnitId = this.oppoNativeIconId, callback) {
    		// if (this.platform != this.platformList[2])
    		// 	return;
    		// PlatformAdManager.lastNativeAd_Func && PlatformAdManager.lastNativeAd_Func();
    		// if (!this.nativeAdLock) {
    		// 	console.log("嵌入式原生节激活 onEnable ^^^^^^^ ");
    		// 	this.nativeAdLock = true;
    		// 	setTimeout(() => {
    		// 		this.nativeAdLock = false;
    		// 	}, 1000);
    		// 	if (Laya.Browser.onQGMiniGame) {
    		// 		this.hidePFBannerAd();
    		// 		PlatformAdManager.m_DxOppoPlatform.showNativeAd(adUnitId, callback);
    		// 	}
    		// 	else {
    		// 		callback && callback(null);
    		// 	}
    		// }
    		// else {
    		// 	console.log("Duplicate Native AD lock");
    		// }
    	}
    	onNativeAdClick(adId) {
    		// if (this.platform != this.platformList[2])
    		// 	return;
    		// if (adId) {
    		// 	PlatformAdManager.m_DxOppoPlatform.onNativeAdClick(adId);
    		// }
    	}
    	showBoxGameBannerAd(failCallback) {
    		// if (this.platform != this.platformList[2])
    		// 	return;
    		// this.IsPF() && PlatformAdManager.m_DxOppoPlatform.showGameBannerAd(failCallback);
    	}
    	hideBoxGameBannerAd() {
    		// if (this.platform != this.platformList[2])
    		// 	return;
    		// this.IsPF() && PlatformAdManager.m_DxOppoPlatform.hideGameBannerAd();
    	}
    	addDesktop(_callback) {
    		if (this.platform != this.platformList[2])
    			return;
    		PlatformAdManager.m_DxOppoPlatform.addDesktop(_callback);
    	}
    	PlayShock() {
    		PlatformAdManager.m_DxVivoPlatform.PlayShock();
    	}
    	exitApplication() {
    		if (this.platform == this.platformList[1])
    			this.IsPF() && PlatformAdManager.m_DxVivoPlatform.exitApplication();
    		else if (this.platform == this.platformList[2])
    			this.IsPF() && PlatformAdManager.m_DxOppoPlatform.exitApplication();
    	}
    }
    PlatformAdManager.m_inst = null;
    PlatformAdManager.m_DxVivoPlatform = new Platforms_VivoH5Game();
    PlatformAdManager.m_DxOppoPlatform = new Platforms_OppoH5Game();
    PlatformAdManager.lastNativeAd_Func = null;

    class DxYSZC2 extends Laya.Script {
    	constructor() {
    		super();
    		this.dia = null;
    		this.btnYes = null;
    		this.text = null;
    	}
    	onAwake() {
    		this.dia = this.owner.getChildByName("dia");
    		this.text = this.dia.getChildByName("text");
    		this.btnYes = this.owner.getChildByName("dia").getChildByName("btnYes");
    		let company = PlatformAdManager.getInstance().vivoCompany;
    		let appName = PlatformAdManager.getInstance().vivoAppName;
    		if (PlatformAdManager.getInstance().platform == "oppo") {
    			company = PlatformAdManager.getInstance().oppoCompany;
    			appName = PlatformAdManager.getInstance().oppoAppName;
    		}
    		else if (PlatformAdManager.getInstance().platform == "huawei") {
    			company = PlatformAdManager.getInstance().huaweiCompany;
    			appName = PlatformAdManager.getInstance().huaweiAppName;
    		}
    		this.text.text = "\n1.为了向您提供和持续优化定制化的服务，" + company + "将收集和处理以下的信息： " +
    			"\n设备信息，包括设备标识符、MAC、机型、品牌、App包名、App版本号、设备分辨率及像素密度；" +
    			"\n网络信息，包括网络连接状态、接入网络的方式和类型、IP地址；" +
    			"\n使用信息，包括广告内容的展现、点击、下载；" +
    			"\n除上述信息外，我们还会收集您在《" + appName + "》游戏的账号ID，以用来为您提供更加个性化的服务或广告。" +
    			"\n2.上述数据将会传输并保存至【中华人民共和国境内】的服务器，保存期限为60天，超出这一保留时间后将删除，但法律法规另有要求除外。我们保证不对外公开或向任何第三方提供您的个人信息，但是存在下列情形之一的除外：" +
    			"\n（1） 公开或提供相关信息之前获得您许可的； \n（2） 根据法律或政策的规定而公开或提供的； \n（3） 根据国家权力机关要求公开或提供的； \n如果您不同意我们采集上述信息，或不同意调用相关手机权限或功能，本软件将无法正常运行。您可通过卸载或退出本软件来终止数据收集及上传。  \n3.如果您是未成年人请在您的监护人仔细阅读本隐私政策，并在征得您的监护人同意的前提下使用我们的服务。  \n4.如果您对本隐私政策和我们游戏有任何疑问和建议请通过客服邮箱：gamekf_666@sina.com联系我们，我们将尽快答复您。";
    	}
    	onEnable() {
    		this.btnYes.on(Laya.Event.CLICK, this, this.onClickYes);
    	}
    	onStart() {
    	}
    	onClickYes() {
    		Laya.Scene.close("dialog/yszc2Dia.scene");
    	}
    	onDisable() {
    		this.btnYes.off(Laya.Event.CLICK, this, this.onClickYes);
    	}
    }

    class DxYSZC extends Laya.Script {
    	constructor() {
    		super();
    		this.dia = null;
    		this.richText = null;
    		this.btnYes = null;
    		this.btnNo = null;
    		this.readState = null;
    	}
    	onAwake() {
    		this.dia = this.owner.getChildByName("dia");
    		this.richText = this.owner.getChildByName("dia").getChildByName("richText");
    		this.btnYes = this.owner.getChildByName("dia").getChildByName("btnYes");
    		this.btnNo = this.owner.getChildByName("dia").getChildByName("btnNo");
    		this.readState = this.owner.getChildByName("dia").getChildByName("readState");
    		this.btnNo.label = "不同意";
    	}
    	onEnable() {
    		this.richText.style.lineHeight = 48;
    		this.richText.style.width = 700;
    		this.richText.innerHTML = "<span style='font:48px Arial'>" +
    			"<span style='font-weight:bold'>深圳阳阳无限科技有限公司</span>" +
    			"<span>为了给您提供更好的服务，在您使用《海岛生存2》游戏服务前，请仔细阅读</span>" +
    			"<span color='#004eff'>《</span>" +
    			"<span color='#004eff' href='yszc'>隐私协议</span>" +
    			"<span color='#004eff'>》</span>" +
    			"<span>，并充分理解协议的全部内容。</span>" +
    			"</span>";
    		this.richText.on(Laya.Event.LINK, this, this.onLink);
    		this.btnYes.on(Laya.Event.CLICK, this, this.onClickYes);
    		this.btnNo.on(Laya.Event.CLICK, this, this.onClickNo);
    	}
    	onStart() {
    		let scaleY = Laya.stage.height / 750;
    		this.dia.scaleX = scaleY;
    		this.dia.scaleY = scaleY;
    	}
    	onLink(data) {
    		console.log(" ======================= 隐私政策富文本 点击超链接 =======================> " + data);
    		if (data == "yszc") {
    			Laya.Scene.open("dialog/yszc2Dia.scene", false);
    		}
    	}
    	onClickYes() {
    		if (this.readState.selected) {
    			console.log("================================> 已 阅读隐私政策 进入游戏");
    			localStorage.setItem("YSZC_hdsc2_oppoRpk", "Yes");
    			Laya.Scene.close("dialog/yszcDia.scene");
    			PlatformAdManager.getInstance().onInitPF();
    		}
    		else {
    			console.log("================================> 未 阅读隐私政策 进入游戏");
    			TipsTool.GetInstance().ShowTips("请阅读并勾选同意隐私政策选项");
    		}
    	}
    	onClickNo() {
    		PlatformAdManager.getInstance().exitApplication();
    	}
    	onDisable() {
    		this.richText.off(Laya.Event.LINK, this, this.onLink);
    		this.btnYes.off(Laya.Event.CLICK, this, this.onClickYes);
    		this.btnNo.off(Laya.Event.CLICK, this, this.onClickNo);
    	}
    }

    class DxYSZC_c_001 extends Laya.Script {
    	constructor() {
    		super();
    		this.dia = null;
    		this.btnYes = null;
    		this.btnNo = null;
    		this.text = null;
    		this.prevX = 0;
    		this.prevY = 0;
    	}
    	onAwake() {
    		this.dia = this.owner.getChildByName("dia");
    		this.text = this.dia.getChildByName("text");
    		this.btnYes = this.owner.getChildByName("dia").getChildByName("btnYes");
    		this.btnNo = this.owner.getChildByName("dia").getChildByName("btnNo");
    		let company = PlatformAdManager.getInstance().vivoCompany;
    		let appName = PlatformAdManager.getInstance().vivoAppName;
    		if (PlatformAdManager.getInstance().platform == "oppo") {
    			company = PlatformAdManager.getInstance().oppoCompany;
    			appName = PlatformAdManager.getInstance().oppoAppName;
    		}
    		else if (PlatformAdManager.getInstance().platform == "huawei") {
    			company = PlatformAdManager.getInstance().huaweiCompany;
    			appName = PlatformAdManager.getInstance().huaweiAppName;
    		}
    		this.text.text = "\n1.为了向您提供和持续优化定制化的服务，" + company + "将收集和处理以下的信息： " +
    			"\n设备信息，包括设备标识符、MAC、机型、品牌、App包名、App版本号、设备分辨率及像素密度；" +
    			"\n网络信息，包括网络连接状态、接入网络的方式和类型、IP地址；" +
    			"\n使用信息，包括广告内容的展现、点击、下载；" +
    			"\n除上述信息外，我们还会收集您在《" + appName + "》游戏的账号ID，以用来为您提供更加个性化的服务或广告。" +
    			"\n2.上述数据将会传输并保存至【中华人民共和国境内】的服务器，保存期限为60天，超出这一保留时间后将删除，但法律法规另有要求除外。我们保证不对外公开或向任何第三方提供您的个人信息，但是存在下列情形之一的除外：" +
    			"\n（1） 公开或提供相关信息之前获得您许可的； \n（2） 根据法律或政策的规定而公开或提供的； \n（3） 根据国家权力机关要求公开或提供的； \n如果您不同意我们采集上述信息，或不同意调用相关手机权限或功能，本软件将无法正常运行。您可通过卸载或退出本软件来终止数据收集及上传。  \n3.如果您是未成年人请在您的监护人仔细阅读本隐私政策，并在征得您的监护人同意的前提下使用我们的服务。  \n4.如果您对本隐私政策和我们游戏有任何疑问和建议请通过客服邮箱：gamekf_666@sina.com联系我们，我们将尽快答复您。\n";
    	}
    	onEnable() {
    		this.btnYes.on(Laya.Event.CLICK, this, this.onClickYes);
    		this.btnNo.on(Laya.Event.CLICK, this, this.onClickNo);
    		this.text.on(Laya.Event.MOUSE_DOWN, this, this.startScrollText);
    	}
    	startScrollText(e) {
    		this.prevX = this.text.mouseX;
    		this.prevY = this.text.mouseY;
    		Laya.stage.on(Laya.Event.MOUSE_MOVE, this, this.scrollText);
    		Laya.stage.on(Laya.Event.MOUSE_UP, this, this.finishScrollText);
    	}
    	scrollText(e) {
    		var nowX = this.text.mouseX;
    		var nowY = this.text.mouseY;
    		this.text.scrollY += this.prevY - nowY;
    		this.prevX = nowX;
    		this.prevY = nowY;
    	}
    	finishScrollText(e) {
    		Laya.stage.off(Laya.Event.MOUSE_MOVE, this, this.scrollText);
    		Laya.stage.off(Laya.Event.MOUSE_UP, this, this.finishScrollText);
    	}
    	onClickYes() {
    		if (PlatformAdManager.getInstance().platform == "vivo")
    			localStorage.setItem("YSZC_vivoRpk", "Yes");
    		else if (PlatformAdManager.getInstance().platform == "oppo")
    			localStorage.setItem("YSZC_oppoRpk", "Yes");
    		else if (PlatformAdManager.getInstance().platform == "huawei")
    			localStorage.setItem("YSZC_huaweiRpk", "Yes");
    		Laya.Scene.close("dialog/yszcDia_c_001.scene");
    		PlatformAdManager.getInstance().onInitPF();
    		PlatformAdManager.getInstance().showPFBannerAd("0");
    	}
    	onClickNo() {
    		TipsTool.GetInstance().ShowTips("请您同意隐私政策后再进行游戏");
    	}
    	onDisable() {
    		this.btnYes.off(Laya.Event.CLICK, this, this.onClickYes);
    		this.btnNo.off(Laya.Event.CLICK, this, this.onClickNo);
    		this.text.off(Laya.Event.MOUSE_DOWN, this, this.startScrollText);
    	}
    }

    var PathData = {
    	startPanel_path: "StartPanel",
    	gamePanel_path: "GamePanel",
    	shopPnale_path: "ShopPanel",
    	settingPanel_path: "SettingPanel",
    	makePanel_path: "MakePanel",
    	signinPanel_path: "SigninPanel",
    	knapsackPanel_path: "KnapsackPanel",
    	popoutPanel_path: "PopoutPanel",
    	resultPanel_path: "ResultPanel",
    	missionPanel_path: "MissionPanel",
    	dialogPanel_path: "DialogPanel",
    	debugPanel_path: "DebugPanel",
    	dialogBannerPanel: "DialogBannerPanel",
    	toast_path: "Toast",
    	awardPopout_path: "AwardPopoutPanel",
    	enterIntoPanel_path: "EnterIntoPanel",
    	tip_path: "Tip",
    	tipsPanel_path: "TipsPanel",
    	screenPanel_path: "ScreenPanel",
    	rewardsPopoutPanel_path: "RewardsPopoutPanel",
    	cartoonPanel: "CartoonPanel",
    	vivoNativeAdPanel: "VivoNativeAdPanel",
    	TTSharePanel: "TTSharePanel",
    	loadCirclePanel: 'LoadCirclePanel',
    	makeShipTaskPanel: 'MakeShipTaskPanel',
    	shipUpgradeSucceedPanel: "ShipUpgradeSucceedPanel",
    	carCtrlPanel_path: "CarCtrlPanel",
    	computerPanel_path: "ComputerPanel",
    	icon_path: "res/UI/icon/",
    	knapsack_path: "res/UI/knapsack/",
    	start_path: "res/UI/start/",
    	public_path: "res/UI/public/",
    	game_path: "res/UI/game/",
    	shop_path: "res/UI/shop/",
    	map_path: "res/UI/map/",
    	rewards_path: "res/UI/rewards/",
    	compund_path: "res/UI/compund/",
    	signin_path: "res/UI/signin/",
    	endAnim_path: "res/UI/endAnim/",
    	icon_fist: "res/UI/icon/icon_w_hook.png",
    	icon_hammer: "res/UI/icon/icon_w_hammer.png",
    	icon_Shovel: "res/UI/icon/icon_w_shovel.png",
    	normalButtonIMG_Yellow: "res/UI/public/annim_3.png",
    	normalButtonIMG_Gray: "res/UI/public/k_kuang_1.png",
    	cion_icon_img: "res/UI/icon/jinbi.png",
    	exp_icon_img: "res/UI/public/jinbi.png",
    	finger_img: "res/UI/public/shouzhi.png",
    	flicke_Img: "res/UI/public/guang.png",
    	getHand_img: "res/UI/game/",
    	Scene3DArr_Path: {
    		BigScene: "res/Prefabs3D/LayaScene_ScenePrefabs/Conventional/Scene.lh",
    		ChoseScene: "res/Prefabs3D/LayaScene_ChoseEgg/Conventional/ChoseEgg.lh",
    	},
    	SceneMapName: ["家园", "猛兽森林", "荒废矿区", "污染之地"],
    	LoadText_Arr1: [
    		"美术正在疯狂画图",
    		"资源正在疯狂加载",
    		"代码正在疯狂运行",
    		"发狂加载游戏声音",
    		"正在建造城市",
    		"正在生成商店",
    		"正在绘制城市天空",
    		"正在清理道路垃圾",
    		"正在整理查找行人",
    		"正在生产武器",
    		"正在装弹",
    	],
    	LoadText_Arr2: [
    		"超速脉冲是一款能够飞翔与城市上空的超级飞车",
    		"合理利用障碍物下蹲与敌人火拼是最明智的战斗方式",
    		"在障碍物附近使用下蹲按钮，能够有效的利用障碍物躲避敌人的攻击"
    	],
    	player: "Player",
    	Wall: "Wall",
    	xTree: "xTree",
    	sTree: "sTree",
    	Motor: "Motor",
    	base_scene_path: "res/Scene3D/LayaScene_BaseScene/Conventional/BaseScene.ls",
    	player_Prefabs_path: "res/Prefabs3D/LayaScene_Prefabs/Conventional/Player.lh",
    	XiaoXie_Prefabs_path: "res/Prefabs3D/LayaScene_Prefabs/Conventional/XiaoXie.lh",
    	DaXie_Prefabs_path: "res/Prefabs3D/LayaScene_Prefabs/Conventional/DaXie.lh",
    	PingFeng_Prefabs_path: "res/Prefabs3D/LayaScene_Prefabs/Conventional/PingFeng.lh",
    	DiMianEr_Prefabs_path: "res/Prefabs3D/LayaScene_Prefabs/Conventional/DiMianEr.lh",
    	PaoXiao_Prefabs_path: "res/Prefabs3D/LayaScene_Prefabs/Conventional/PaoXiao.lh",
    	XiMuWang_Prefabs_path: "res/Prefabs3D/LayaScene_Prefabs/Conventional/XiMuWang.lh",
    	DongHuangTaiYi_Prefabs_path: "res/Prefabs3D/LayaScene_Prefabs/Conventional/DongHuangTaiYi.lh",
    	Fuzhu_Prefabs_path: "res/Prefabs3D/LayaScene_Prefabs/Conventional/Fuzhu.lh",
    	DanKang_Prefabs_path: "res/Prefabs3D/LayaScene_Prefabs/Conventional/DanKang.lh",
    	NianShow_Prefabs_path: "res/Prefabs3D/LayaScene_Prefabs/Conventional/NianShow.lh",
    	KungPeng_Prefabs_path: "res/Prefabs3D/LayaScene_Prefabs/Conventional/KungPeng.lh",
    	Zheng_Prefabs_path: "res/Prefabs3D/LayaScene_Prefabs/Conventional/Zheng.lh",
    	B_DanKnag_Prefabs_path: "res/Prefabs3D/LayaScene_Prefabs/Conventional/B_DanKnag.lh",
    	YingZhao_Prefabs_path: "res/Prefabs3D/LayaScene_Prefabs/Conventional/YingZhao.lh",
    	QiongQi_Prefabs_path: "res/Prefabs3D/LayaScene_Prefabs/Conventional/QiongQi.lh",
    	B_kungPeng_Prefabs_path: "res/Prefabs3D/LayaScene_Prefabs/Conventional/B_kungPeng.lh",
    	B_YingZhao_Prefabs_path: "res/Prefabs3D/LayaScene_Prefabs/Conventional/B_YingZhao.lh",
    	B_QiongQi_Prefabs_path: "res/Prefabs3D/LayaScene_Prefabs/Conventional/B_QiongQi.lh",
    	cube_prefabs_path: "res/Prefabs3D/LayaScene_Prefabs/Conventional/Cube.lh",
    	prop_prefabs_path: "res/Prefabs3D/LayaScene_Prefabs/Conventional/propEffect.lh",
    	eat_prefabs_path: "res/Prefabs3D/LayaScene_Prefabs/Conventional/eat.lh",
    	light_prefabs_path: "res/Prefabs3D/LayaScene_Prefabs/Conventional/light.lh",
    	atk_prefabs_path: "res/Prefabs3D/LayaScene_Prefabs/Conventional/atkEffect.lh",
    	hp_prefabs_path: "res/Prefabs3D/LayaScene_Prefabs/Conventional/hpEffect.lh",
    	ex_prefabs_path: "res/Prefabs3D/LayaScene_Prefabs/Conventional/exEffect.lh",
    	de_prefabs_path: "res/Prefabs3D/LayaScene_Prefabs/Conventional/deEffect.lh",
    	MainTask_prefabs_path: "",
    	cutTheTreeEffect_big_path: "res/Prefabs3D/LayaScene_Effect/Conventional/CutTheTree_big.lh",
    	cutTheTreeEffect_small_path: "res/Prefabs3D/LayaScene_Effect/Conventional/CutTheTree_small.lh",
    	MiningEffect_path: "res/Prefabs3D/LayaScene_Effect/Conventional/Mining.lh",
    	SmogEffect_path: "res/Prefabs3D/LayaScene_Effect/Conventional/Smog_small.lh",
    	Prop3D: "Prop3D",
    	ForgePlatform: "ForgePlatform",
    	Box: "Box",
    	DoorTriggerIn: "DoorTriggerIn",
    	DoorTriggerOut: "DoorTriggerOut",
    	dieTrigger: "dieTrigger",
    	boxCollider: "boxCollider",
    	circle: "circle",
    	Door: "Door",
    	Knife_Glow: "Knife_Glow",
    	Gun_Fire: "Gun_Fire",
    	box: "box",
    	soundPrefixPath: "res/Sound_mp3/",
    	soundTpye: ".mp3",
    	bigMapMusic: "music_atkScene",
    	gameSceneMusic: "music_gameScene",
    	sound_buttonSound: "button",
    	sound_runSound: "run",
    	sound_playerDie: "playerDie",
    	sound_playerHit_1: "playerHit_1",
    	sound_playerHit_2: "playerHit_2",
    	sound_squatUnlock: "squatUnlock",
    	sound_atk_fist: "atk_fist",
    	sound_atk_pistol: "atk_pistol",
    	sound_atk_pistol_2: "fire",
    	sound_eat: "eat",
    	sound_award: "award",
    	sound_shipUpgrade: "shipUpgrade",
    	sound_get: "get",
    	sound_carRun: 'carRun',
    	sound_so: 'so',
    	sound_atk_YingZhao: "YingZhao_atk",
    	sound_atk_KungPeng: "KungPeng_atk",
    	sound_atk_QingQi: "QingQi_atk",
    	sound_atk_PangXie: "PangXie_atk",
    	sound_atk_DongHuangTaiYi: "DHTY_atk",
    	sound_atk_pig: "pig_atk",
    	sound_atk_DME: "DME_atk",
    	sound_atk_Normal: "Normal_atk",
    	sound_die_Normal: "Nomal_die",
    	sound_lightOver: "lightOver",
    	sound_addSpeed: "addSpeed",
    	sound_eatProp: "eatProp",
    	sound_upLevel: "upLevel",
    	sound_light: "light",
    	sound_TunShi: "TunShi",
    	Anim_Idle: "Idle",
    	Anim_Walk: "Walk",
    	Anim_Run: "Run",
    	Anim_Atk: "Atk",
    	Anim_Hit: 'Hit',
    	EVENT_SETPLAYERHP: "EVENT_SETPLAYERHP",
    	EVENT_SETPLAYERMP: "EVENT_SETPLAYERMP",
    	EVENT_UPDATECOIN: "EVENT_UPDATECOIN",
    	EVENT_UPDATEEXP: "EVENT_UPDATEEXP",
    	EVENT_UPDATELIFEPROPERTYLABEL: "EVENT_UPDATELIFEPROPERTYLABEL",
    	EVENT_UPDATEPICKBUTTON: "EVENT_UPDATEPICKBUTTON",
    	EVENT_PLAYPICKUPTOOLSOUND: "EVENT_PLAYPICKUPTOOLSOUND",
    	EVENT_UPDATEATKIMGSKIN: "EVENT_UPDATEATKIMGSKIN",
    	EVENT_UPDATEENEMY_AUDITORYALERT: "EVENT_UPDATEENEMY_AUDITORYALERT",
    	EVENT_UPDATEGAMEMISSIONPANEL: "EVENT_UPDATEGAMEMISSIONPANEL",
    	EVENT_UPDATEGAMEPANELSPTBUTTON: "EVENT_UPDATEGAMEPANELSPTBUTTON",
    	EVENT_UPDATECOLLECTORPROGRESS: "EVENT_UPDATECOLLECTORPROGRESS",
    	EVENT_UPDATERECORDINGSTATE: "EVENT_UPDATERECORDINGSTATE",
    	EVENT_SetExProgress: "EVENT_SetExProgress",
    	EVENT_UpdateExProgress: "EVENT_UpdateExProgress",
    	Event_UpdateChangeBtn: "Event_UpdateChangeBtn",
    	Event_HINTPOINT: "Event_HINTPOINT",
    	DataVersion: "DataVersion",
    	PlayerData: "PlayerData",
    	GameSystemData: "GameSystemData",
    	PropData: "PropData",
    	Knapsack_PlayerPocket: "玩家口袋",
    	Knapsack_EquipmentColumn: "玩家装备栏",
    	Knapsack_Mail: "玩家邮箱",
    	Tag_B: 'B',
    	Tag_R: 'R',
    	First_OpenBox: "First_OpenBox",
    	First_CloseKnapsack: "First_CloseKnapsack",
    	First_Pick3DAssets: "First_Pick3DAssets",
    	First_TriggerDoorOut: "First_TriggerDoorOut",
    	First_DeerRunAwake: "First_DeerRunAwake",
    	First_EcuZombie: "First_EcuZombie",
    	First_InBigMap: "First_InBigMap",
    	First_EquipWeapons: "First_EquipWeapons",
    	weaponType: "4",
    	equipmentType: "3",
    	consumablesType: "2",
    	materialType: "1",
    	bulidingType: "5",
    	tsName: "Player_Ctrl",
    	RayCollisionLayer: 2,
    	TerrainCollisionLayer: Laya.Physics3DUtils.COLLISIONFILTERGROUP_CUSTOMFILTER3,
    	playerCollisionLayer: Laya.Physics3DUtils.COLLISIONFILTERGROUP_CUSTOMFILTER4,
    	bornPointCollisionLayer: Laya.Physics3DUtils.COLLISIONFILTERGROUP_CUSTOMFILTER5,
    	TTEvent_EnterStartPanel: 'TTEvent_EnterStartPanel',
    	TTEvent_SkipAnim: 'TTEvent_SkipAnim',
    	TTEvent_NewStep: 'TTEvent_NewStep',
    	TTEvent_Mission: 'TTEvent_Mission',
    	TTEvent_HouseUpgrade: 'TTEvent_HouseUpgrade',
    	TTEvent_PropUseCount: 'TTEvent_PropUseCount',
    	TTEvent_PlayerLv: "TTEvent_PlayerLv",
    	TTEvent_MakePropCount: "TTEvent_MakePropCount",
    	TTEvent_MapEnterCount: "TTEvent_MapEnterCount",
    	TTEvent_DieCount: "TTEvent_DieCount",
    	TTEvent_ForgePropCount: "TTEvent_ForgePropCount",
    	TTEvent_ShopBuyPropCount: "TTEvent_ShopBuyPropCount",
    	TTEvent_SharePanelShowCount: "TTEvent_SharePanelShowCount",
    	TTEvent_DefeatEnemy: "TTEvent_DefeatEnemy",
    	TTEvent_NewGuidanceThinkGoOutBigMap: "TTEvent_NewGuidanceThinkGoOutBigMap",
    	TTEvent_UpgradeShipLv: "TTEvent_UpgradeShipLv",
    };

    class JsonManager {
    	static GetInstance() {
    		if (this._Instance == null)
    			this._Instance = new JsonManager();
    		return this._Instance;
    	}
    	SaveListData(data, key) {
    		Laya.LocalStorage.setJSON(key, data);
    	}
    	GetListData(key) {
    		return Laya.LocalStorage.getJSON(key);
    	}
    }
    JsonManager._Instance = null;

    class PlayerData {
    	constructor() {
    		this.maxHp = 100;
    		this.maxMp = 100;
    		this.pocketMaxRow = 8;
    		this.runSpeed = 5.7;
    		this.walkSpeed = 3.2;
    		this.downMoveSpeed = 2.2;
    		this.currentWeaponIndex = 0;
    		this.hp = 100;
    		this.mp = 100;
    		this.lv = 1;
    		this.ship_lv = 0;
    		this.hungerDegrees = 100;
    		this.moistrue = 100;
    		this.atkValue = 0;
    		this.defenseValue = 0;
    		this.gasDefenseValue = 10;
    		this.atkSpeedValue = 1;
    		this.coin = 0;
    		this.exp = 0;
    		this.existTime = 0;
    		this.skillPoints = 0;
    		this.isFirst = true;
    	}
    	static GetInstance() {
    		if (this._Instance == null)
    			this._Instance = new PlayerData();
    		return this._Instance;
    	}
    	static SetInstance(playerData) {
    		this._Instance = playerData;
    	}
    }
    PlayerData._Instance = null;

    class InsManager {
    	constructor() {
    		this._GameApp = null;
    		this._UIManager = null;
    		this._SceneManager = null;
    		this._knapsackManager = null;
    		this._DataUpdateManager = null;
    		this._TimeManager = null;
    		this._DataSave = null;
    		this._MissionManager = null;
    		this._BranchManager = null;
    	}
    	static GetInstance() {
    		if (this._instance === null) {
    			this._instance = new InsManager();
    		}
    		return this._instance;
    	}
    }
    InsManager._instance = null;

    var MapData = {
    	map_0: [
    		[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1],
    		[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1],
    		[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1],
    		[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1],
    		[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1],
    		[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1],
    		[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1],
    		[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1],
    		[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1],
    		[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1],
    		[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1],
    		[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1],
    		[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1],
    		[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1],
    		[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1],
    		[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1],
    		[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1],
    		[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1],
    		[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1],
    		[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1],
    		[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1],
    		[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1],
    		[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1],
    		[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1],
    		[1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1],
    		[1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1],
    		[1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1],
    		[1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1],
    		[1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1],
    		[1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1],
    		[1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1],
    		[1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1],
    		[1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1],
    		[1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1],
    		[1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1],
    		[1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1],
    		[1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1],
    		[1, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1],
    		[1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1],
    		[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1],
    		[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1],
    		[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1],
    		[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1],
    		[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1],
    		[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1],
    		[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1],
    		[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1],
    		[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1],
    		[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1],
    		[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 1],
    		[1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1],
    		[1, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 1],
    		[1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 1],
    		[1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 1],
    		[1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 1],
    		[1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 1],
    		[1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 1],
    		[1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 1],
    		[1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 1],
    		[1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 1],
    		[1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 1],
    		[1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 1],
    		[1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1],
    		[1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 1],
    		[1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1],
    		[1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1],
    		[1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1],
    		[1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1],
    		[1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1],
    		[1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1],
    		[1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1],
    		[1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1],
    		[1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1],
    		[1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1],
    		[1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1],
    		[1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1],
    		[1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1],
    		[1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 1],
    		[1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 1],
    		[1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1],
    		[1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 1],
    		[1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 1],
    		[1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 1],
    		[1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 1],
    		[1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1],
    		[1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1],
    		[1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1],
    		[1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1],
    		[1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1],
    		[1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1],
    		[1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1],
    		[1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1],
    		[1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1],
    		[1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 1],
    		[1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 1],
    		[1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 1],
    		[1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 1],
    		[1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1],
    		[1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 1],
    		[1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1],
    		[1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1],
    		[1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1],
    		[1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1],
    		[1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1],
    		[1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1],
    		[1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1],
    		[1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1],
    		[1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1],
    		[1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1],
    		[1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1],
    		[1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1],
    		[1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1],
    		[1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1],
    		[1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1],
    		[1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1],
    		[1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1],
    		[1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1],
    		[1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1],
    		[1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1],
    		[1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1],
    		[1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1],
    		[1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1],
    		[1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1],
    		[1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1],
    		[1, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1],
    		[1, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1],
    		[1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1],
    		[1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1],
    		[1, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1],
    		[1, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1],
    		[1, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1],
    		[1, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1],
    		[1, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1],
    		[1, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1],
    		[1, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1],
    		[1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 1],
    		[1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1],
    		[1, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 1],
    		[1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 1],
    		[1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1],
    		[1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1],
    		[1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1],
    		[1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1],
    		[1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1],
    		[1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1],
    		[1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1],
    		[1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1],
    		[1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1],
    		[1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1],
    		[1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1],
    		[1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1],
    		[1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1],
    		[1, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1],
    		[1, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1],
    		[1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1],
    		[1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 1],
    		[1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 1],
    		[1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1],
    		[1, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 1],
    		[1, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1],
    		[1, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1],
    		[1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1],
    		[1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1],
    		[1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1],
    		[1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1],
    		[1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1],
    		[1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1],
    		[1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1],
    		[1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1],
    		[1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1],
    		[1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1],
    		[1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1],
    		[1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1],
    		[1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1],
    		[1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1],
    		[1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1],
    		[1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1],
    		[1, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1],
    		[1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1],
    		[1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1],
    		[1, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1],
    		[1, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1],
    		[1, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1],
    		[1, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1],
    		[1, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1],
    		[1, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1],
    		[1, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1],
    		[1, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1],
    		[1, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1],
    		[1, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1],
    		[1, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1],
    		[1, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1],
    		[1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1],
    		[1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1],
    		[1, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1],
    		[1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1],
    		[1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1],
    		[1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1],
    		[1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1],
    		[1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1],
    		[1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1],
    		[1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1],
    		[1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1],
    		[1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1],
    		[1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1],
    		[1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1],
    		[1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 1],
    		[1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 1],
    		[1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 1],
    		[1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 1],
    		[1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 1],
    		[1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 1],
    		[1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 1],
    		[1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 1],
    		[1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 1],
    		[1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1],
    		[1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1],
    		[1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1],
    		[1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1],
    		[1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1],
    		[1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1],
    		[1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1],
    		[1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1],
    		[1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1],
    		[1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1],
    		[1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1],
    		[1, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1],
    		[1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1],
    		[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 1],
    		[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 1],
    		[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1],
    		[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 1],
    		[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 1],
    		[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 1],
    		[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1],
    		[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1],
    		[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1],
    		[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1],
    		[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1],
    		[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1],
    		[1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1],
    		[1, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1],
    		[1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1],
    		[1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1],
    		[1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1],
    		[1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1],
    		[1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1],
    		[1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1],
    		[1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1],
    		[1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 1],
    		[1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 1],
    		[1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 1],
    		[1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1],
    		[1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 1],
    		[1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 1],
    		[1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1],
    		[1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1],
    		[1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1],
    		[1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1],
    		[1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1],
    		[1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1],
    		[1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1],
    		[1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1],
    		[1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1],
    		[1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1],
    		[1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1],
    		[1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1],
    		[1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1],
    		[1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1],
    		[1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1],
    		[1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1],
    		[1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1],
    		[1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1],
    		[1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1],
    		[1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1],
    		[1, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1],
    		[1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1],
    		[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1],
    		[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1],
    		[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1],
    		[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1],
    		[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1],
    		[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1],
    		[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1],
    		[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1],
    		[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1],
    		[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1],
    		[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1],
    		[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1],
    		[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1],
    		[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1],
    		[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1],
    		[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1],
    		[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1],
    		[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1],
    		[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1],
    		[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1],
    		[1, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1],
    		[1, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1],
    		[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1],
    	],
    	map_1: [
    		[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1],
    		[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 1, 1, 0, 1],
    		[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 1, 1, 0, 1],
    		[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1],
    		[0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1],
    		[0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 1, 1, 0, 0, 0, 0, 1, 1, 0, 1],
    		[0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1],
    		[0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1],
    		[0, 0, 0, 1, 1, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1],
    		[0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1],
    		[0, 0, 0, 1, 1, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 1, 1, 0, 0, 0, 0, 1, 1, 0, 1],
    		[0, 0, 0, 1, 1, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1],
    		[0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1],
    		[0, 0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1],
    		[0, 0, 0, 1, 1, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 1, 1, 0, 1],
    		[0, 0, 0, 1, 1, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1],
    		[0, 0, 0, 1, 1, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1],
    		[0, 0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1],
    		[0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1],
    		[0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1],
    		[0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1],
    		[0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1],
    		[0, 0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 0, 0, 1, 1, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1],
    		[0, 0, 0, 1, 1, 0, 1, 1, 1, 1, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1],
    		[0, 0, 0, 1, 1, 0, 1, 1, 1, 1, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1],
    		[0, 0, 0, 1, 1, 0, 1, 1, 1, 1, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1],
    		[0, 0, 0, 1, 1, 0, 0, 1, 1, 1, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1],
    		[0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1],
    		[0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1],
    		[0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1],
    		[0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1],
    		[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
    		[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
    		[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
    		[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
    		[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
    		[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
    		[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
    		[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
    		[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
    	],
    	map_2: [
    		[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
    		[0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0],
    		[0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0],
    		[0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0],
    		[0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0],
    		[0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0],
    		[0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0],
    		[0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0],
    		[0, 0, 0, 0, 1, 1, 0, 1, 1, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0],
    		[0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0],
    		[0, 0, 0, 0, 1, 1, 0, 1, 1, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0],
    		[0, 0, 0, 0, 1, 1, 0, 1, 1, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0],
    		[0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0],
    		[0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0],
    		[0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0],
    		[0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0],
    		[0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0],
    		[0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0],
    		[0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0],
    		[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
    	],
    	map_3: [
    		[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
    		[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
    		[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
    		[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
    		[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
    		[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
    		[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
    		[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
    		[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
    		[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
    		[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
    		[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
    		[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
    		[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
    		[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
    		[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
    		[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
    		[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
    		[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
    		[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
    		[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
    		[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
    		[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
    		[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
    		[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
    		[1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
    		[1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
    		[1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
    		[1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
    		[1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
    		[1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
    		[1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
    		[1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
    		[1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
    		[1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
    		[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
    		[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
    		[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
    		[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
    		[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
    		[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
    		[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
    		[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
    		[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
    		[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
    		[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
    		[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
    		[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
    		[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
    		[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
    		[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
    		[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
    		[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
    		[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
    		[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
    		[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
    		[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
    		[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
    		[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
    		[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
    		[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
    		[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
    		[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
    		[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
    		[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
    		[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
    		[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
    		[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
    		[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
    		[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
    		[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
    		[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
    		[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
    		[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
    		[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
    		[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
    		[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
    		[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
    		[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
    		[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
    		[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
    		[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
    		[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
    		[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
    		[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
    		[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
    		[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
    		[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
    		[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
    		[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
    		[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
    		[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
    		[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
    		[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
    		[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
    		[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
    		[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
    		[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
    		[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
    		[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
    		[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
    		[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
    		[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
    		[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
    		[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
    		[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
    		[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
    		[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
    		[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
    		[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
    		[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
    		[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
    		[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
    		[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
    		[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
    		[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
    		[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
    		[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
    		[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
    		[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
    		[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
    		[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
    		[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
    		[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
    		[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
    		[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
    		[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
    		[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
    		[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
    		[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
    	]
    };

    class PropData {
    	constructor() {
    		this.knapsackData = [];
    		this.propCountArr = [];
    		this.missionCountArr = {
    			HuntTask: 0,
    			CrackerTask: 0,
    			DeliverGoodsTask: 0,
    			GetherTask: 0,
    		};
    		this.achievementComplishArr = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0];
    		this.knapsackID = -1;
    	}
    	static GetInstance() {
    		if (this._Instance == null)
    			this._Instance = new PropData();
    		return this._Instance;
    	}
    	static SetInstance(propData) {
    		this._Instance = propData;
    	}
    }
    PropData._Instance = null;

    class GameSystemData {
    	constructor() {
    		this.isPlayMusic = true;
    		this.isPlaySound = true;
    		this.isShake = true;
    		this.isSingin = false;
    		this.conSingin = 0;
    		this.lateTime = "";
    		this.RefreshShopPropCount = 3;
    		this.rescueNpcStep = 0;
    		this.DilyUseLiBaoData = [true];
    		this.currentMissionID = 0;
    		this.house_lv = 1;
    		this.mission_ID = 0;
    		this.playerModelLevel = 0;
    		this.playerLV = 1;
    		this.amMission = [];
    		this.mainMission = [];
    		this.cuMissionItemNumArr = [];
    		this.FirstData = {
    			First_OpenBox: "",
    			First_CloseKnapsack: "",
    			First_Pick3DAssets: "",
    			First_TriggerDoorOut: "",
    			First_DeerRunAwake: "",
    			First_EcuZombie: "",
    			First_InBigMap: "",
    			First_EquipWeapons: "",
    		};
    	}
    	static GetInstance() {
    		if (this._Instance == null)
    			this._Instance = new GameSystemData();
    		return this._Instance;
    	}
    	static SetInstance(gameSystemData) {
    		this._Instance = gameSystemData;
    	}
    }
    GameSystemData._Instance = null;

    class DataSave {
    	constructor() {
    		this.DataVersion = "ShanHaiJin 2.0.0";
    		this.isDebug = false;
    		this.isFirstOpen = true;
    		this.isOpenAd = true;
    		this.currentMapData = MapData.map_0;
    		this.difDay = 0;
    		this.knapsackRamdonDataArr = [];
    		this.isSkipGuide = false;
    	}
    	InitGameData() {
    		console.log('数据版本：', Laya.LocalStorage.getItem(PathData.DataVersion) + '!=' + this.DataVersion);
    		if (Laya.LocalStorage.getItem(PathData.DataVersion) != this.DataVersion) {
    			Laya.LocalStorage.setItem(PathData.DataVersion, this.DataVersion);
    			this.SaveNowDate();
    			InsManager.GetInstance()._knapsackManager.InitPlayerKnapsackData();
    			InsManager.GetInstance()._MissionManager.InitMission();
    			this.SaveGameData(PathData.PropData);
    			this.SaveGameData(PathData.GameSystemData);
    			this.SaveGameData(PathData.PlayerData);
    			console.log("第一次打开,初始化游戏数据");
    		}
    		else {
    			GameSystemData.SetInstance(JsonManager.GetInstance().GetListData(PathData.GameSystemData));
    			PlayerData.SetInstance(JsonManager.GetInstance().GetListData(PathData.PlayerData));
    			PropData.SetInstance(JsonManager.GetInstance().GetListData(PathData.PropData));
    			this.isSkipGuide = true;
    		}
    	}
    	SaveGameData(dataKey) {
    		switch (dataKey) {
    			case PathData.PlayerData:
    				JsonManager.GetInstance().SaveListData(PlayerData.GetInstance(), dataKey);
    				break;
    			case PathData.PropData:
    				JsonManager.GetInstance().SaveListData(PropData.GetInstance(), dataKey);
    				break;
    			case PathData.GameSystemData:
    				JsonManager.GetInstance().SaveListData(GameSystemData.GetInstance(), dataKey);
    				break;
    			default:
    				console.error("位置保存数据类型：", dataKey);
    				break;
    		}
    	}
    	SaveGameDataAll() {
    		this.SaveGameData(PathData.PropData);
    		this.SaveGameData(PathData.GameSystemData);
    		this.SaveGameData(PathData.PlayerData);
    	}
    	ResetSaveData() {
    		PlayerData.SetInstance(new PlayerData());
    		PropData.SetInstance(new PropData());
    		GameSystemData.SetInstance(new GameSystemData());
    		this.SaveNowDate();
    		InsManager.GetInstance()._knapsackManager.InitPlayerKnapsackData();
    		InsManager.GetInstance()._MissionManager.InitMission();
    		console.log('新手引导没过 ， 重置数据');
    	}
    	SaveNowDate() {
    		let d = new Date();
    		GameSystemData.GetInstance().lateTime = d.getFullYear().toString() + "-" + (d.getMonth() + 1).toString() + "-" + d.getDate().toString();
    	}
    	GetIntervalDate() {
    		let lateDay = GameSystemData.GetInstance().lateTime;
    		let d2 = new Date();
    		let nowDay = d2.getFullYear().toString() + "-" + (d2.getMonth() + 1).toString() + "-" + d2.getDate().toString();
    		var dateStart = new Date(lateDay);
    		var dateEnd = new Date(nowDay);
    		let difValue = (dateEnd - dateStart) / (1000 * 60 * 60 * 24);
    		if (difValue != 0) {
    			GameSystemData.GetInstance().isSingin = false;
    			PlayerData.GetInstance().mp = PlayerData.GetInstance().maxMp;
    			GameSystemData.GetInstance().RefreshShopPropCount = 3;
    			GameSystemData.GetInstance().DilyUseLiBaoData = [true, true, true, true,];
    		}
    		if (difValue == 1) {
    			if (GameSystemData.GetInstance().conSingin < 7 - 1) {
    				GameSystemData.GetInstance().conSingin++;
    			}
    			else {
    				GameSystemData.GetInstance().conSingin = 0;
    			}
    		}
    		else if (difValue == 0) {
    		}
    		else if (difValue > 1) {
    			GameSystemData.GetInstance().conSingin = 0;
    		}
    		else {
    			console.log("日期异常天数差：" + difValue);
    			GameSystemData.GetInstance().conSingin = 0;
    		}
    		this.SaveNowDate();
    		this.difDay = difValue;
    		this.SaveGameDataAll();
    		return difValue;
    	}
    	GetIntervalSecond(lateForgeTimeSecond) {
    		if (lateForgeTimeSecond <= 0)
    			return 0;
    		if (this.difDay > 0)
    			return 86400;
    		let d = new Date();
    		let nowSecond = (d.getHours() * 60 * 60) + (d.getMinutes() * 60) + d.getSeconds();
    		return (nowSecond - lateForgeTimeSecond);
    	}
    	static GetServerPath() {
    		return '';
    	}
    	static GetLoadPath() {
    		return "";
    	}
    }

    class ResManager extends Laya.Script {
    	constructor() {
    		super();
    		this.prefabs_res = {};
    		this.scene3D_res = {};
    		this.sprite3D_res = {};
    		this.atlas_res = {};
    		this.sound_res = {};
    		this.textrue_res = {};
    		this.nowNum = 0;
    		this.totalNum = 0;
    		this.OnProgress = null;
    		this.OnLoadFinished = null;
    		this.isLoadFinish = true;
    		this.preLoadResPkgFuncArr = [];
    		this.res_pkg = null;
    	}
    	onAwake() {
    		if (ResManager._Instance == null) {
    			ResManager._Instance = this;
    		}
    		else {
    			console.log("error : ResManager has multi instance ");
    			return;
    		}
    	}
    	One_ResLoad_Finished() {
    		this.nowNum++;
    		if (this.OnProgress)
    			this.OnProgress(this.nowNum / this.totalNum);
    		if (this.nowNum >= this.totalNum) {
    			this.OnLoadFinished();
    			this.isLoadFinish = true;
    			if (this.preLoadResPkgFuncArr.length > 0) {
    				console.log('资源加载 ， 重新加载存放资源', this.preLoadResPkgFuncArr.length);
    				let func = this.preLoadResPkgFuncArr[0];
    				this.preLoadResPkgFuncArr.splice(0, 1);
    				func();
    			}
    		}
    	}
    	Load_Prefabs(url) {
    		if (url == "" || url == null) {
    			console.log('url为：', url);
    		}
    		Laya.loader.load(url, Laya.Handler.create(this, function (json) {
    			if (json == undefined || json == null)
    				console.log('UI Json加载失败', json);
    			let pref = new Laya.Prefab();
    			pref.json = json;
    			this.prefabs_res[url] = pref;
    			this.One_ResLoad_Finished();
    		}));
    	}
    	Reslease_Prefabs(url) {
    		if (url == "" || url == null) {
    			console.log('url为：', url);
    		}
    		if (!this.prefabs_res[url])
    			return;
    		this.prefabs_res[url].json = null;
    		Laya.loader.clearRes(url);
    		this.prefabs_res[url] = null;
    	}
    	Load_Atlas(url) {
    		if (url == null) {
    			console.log('url为：', url);
    		}
    		if (url == "" || url == DataSave.GetServerPath()) {
    			this.nowNum++;
    			return;
    		}
    		Laya.loader.load(url, Laya.Handler.create(this, function (atlas) {
    			if (atlas == undefined || atlas == null)
    				console.log(url + ':图集文件加载失败', atlas);
    			this.atlas_res[url] = atlas;
    			this.One_ResLoad_Finished();
    		}));
    	}
    	Reslease_Atlas(url) {
    		if (url == "" || url == null) {
    			console.log('url为：', url);
    		}
    		if (!this.atlas_res[url])
    			return;
    		Laya.loader.clearRes(url);
    		this.atlas_res[url] = null;
    	}
    	LoadSound(url) {
    		if (url == "" || url == null) {
    			console.log('url为：', url);
    		}
    		Laya.loader.load(url, Laya.Handler.create(this, function (sound) {
    			if (sound == undefined || sound == null)
    				console.log('音频文件加载失败', url);
    			this.sound_res[url] = sound;
    			this.One_ResLoad_Finished();
    		}));
    	}
    	Reslease_Sound(url) {
    		if (url == "" || url == null) {
    			console.log('url为：', url);
    		}
    		if (!this.sound_res[url])
    			return;
    		Laya.loader.clearRes(url);
    		this.sound_res[url] = null;
    	}
    	LoadScene3D(url) {
    		if (url == "" || url == null) {
    			console.log('url为：', url);
    		}
    		Laya.Scene3D.load(url, Laya.Handler.create(this, function (scene3d) {
    			this.scene3D_res[url] = scene3d;
    			if (scene3d == undefined || scene3d == null)
    				console.log('场景资源加载失败：', scene3d);
    			this.One_ResLoad_Finished();
    		}));
    	}
    	Reslease_Scene3D(url) {
    		if (url == "" || url == null) {
    			console.log('url为：', url);
    		}
    		if (!this.scene3D_res[url])
    			return;
    		this.scene3D_res[url] = null;
    	}
    	LoadSprite3D(url) {
    		if (url == "" || url == null) {
    			console.log('url为：', url);
    		}
    		Laya.Sprite3D.load(url, Laya.Handler.create(this, function (sprite3d) {
    			if (sprite3d == undefined || sprite3d == null)
    				console.error('sprite3D加载失败', sprite3d, url);
    			this.sprite3D_res[url] = sprite3d;
    			console.log('加载成功“', this.sprite3D_res[url]);
    			this.One_ResLoad_Finished();
    		}));
    	}
    	Reslease_Sprite3D(url) {
    		if (url == "" || url == null) {
    			console.log('url为：', url);
    		}
    		if (!this.sprite3D_res[url])
    			return;
    		Laya.loader.clearRes(url);
    		this.sprite3D_res[url] = null;
    		console.log(Laya.Loader.loadedMap);
    		console.log('==========清理3D 预设资源===========', url);
    	}
    	LoadTextrue2D(url) {
    		if (url == "" || url == null) {
    			console.log('url为：', url);
    		}
    		Laya.Texture2D.load(url, Laya.Handler.create(this, function (picTextrue) {
    			if (picTextrue == undefined || picTextrue == null)
    				console.log('Texture2D加载失败', picTextrue);
    			this.textrue_res[url] = picTextrue;
    			this.One_ResLoad_Finished();
    		}));
    	}
    	Reslease_Textrue2D(url) {
    		if (url == "" || url == null) {
    			console.log('url为：', url);
    		}
    		if (!this.textrue_res[url])
    			return;
    		this.textrue_res[url] = null;
    	}
    	PreLoadRes_Pkg(res_pkg, onProgress, onLoadFinished) {
    		if (!this.isLoadFinish) {
    			this.preLoadResPkgFuncArr.push(() => { this.PreLoadRes_Pkg(res_pkg, onProgress, onLoadFinished); });
    			console.log('加载需要：', res_pkg, '被存放', '因为在加载：', this.res_pkg);
    			return;
    		}
    		this.res_pkg = res_pkg;
    		this.isLoadFinish = false;
    		let i = 0;
    		this.OnProgress = onProgress;
    		this.OnLoadFinished = onLoadFinished;
    		this.totalNum = 0;
    		this.nowNum = 0;
    		for (var key in res_pkg) {
    			this.totalNum += res_pkg[key].length;
    		}
    		if (res_pkg.prefabs) {
    			for (i = 0; i < res_pkg.prefabs.length; i++) {
    				let url = res_pkg.prefabs[i];
    				this.Load_Prefabs(url);
    			}
    		}
    		if (res_pkg.atlas) {
    			for (i = 0; i < res_pkg.atlas.length; i++) {
    				let url = res_pkg.atlas[i];
    				this.Load_Atlas(url);
    			}
    		}
    		if (res_pkg.scene3D) {
    			for (i = 0; i < res_pkg.scene3D.length; i++) {
    				let url = res_pkg.scene3D[i];
    				this.LoadScene3D(url);
    			}
    		}
    		if (res_pkg.sprite3D) {
    			for (i = 0; i < res_pkg.sprite3D.length; i++) {
    				let url = res_pkg.sprite3D[i];
    				this.LoadSprite3D(url);
    			}
    		}
    		if (res_pkg.sounds) {
    			for (i = 0; i < res_pkg.sounds.length; i++) {
    				let url = res_pkg.sounds[i];
    				this.LoadSound(url);
    			}
    		}
    		if (res_pkg.textrue_res) {
    			for (i = 0; i < res_pkg.textrue_res.length; i++) {
    				let url = res_pkg.textrue_res[i];
    				this.LoadTextrue2D(url);
    			}
    		}
    	}
    	ReleaseRes_Pkg(res_pkg) {
    		let i = 0;
    		let url = "";
    		if (res_pkg.prefabs) {
    			for (i = 0; i < res_pkg.prefabs.length; i++) {
    				url = res_pkg.prefabs[i];
    				this.Reslease_Prefabs(url);
    			}
    		}
    		if (res_pkg.atlas) {
    			for (i = 0; i < res_pkg.atlas.length; i++) {
    				url = res_pkg.atlas[i];
    				this.Reslease_Atlas(url);
    			}
    		}
    		if (res_pkg.sounds) {
    			for (i = 0; i < res_pkg.sounds.length; i++) {
    				url = res_pkg.sounds[i];
    				this.Reslease_Sound(url);
    			}
    		}
    		if (res_pkg.scene3D) {
    			for (i = 0; i < res_pkg.scene3D.length; i++) {
    				url = res_pkg.scene3D[i];
    				this.Reslease_Scene3D(url);
    			}
    		}
    		if (res_pkg.sprite3D) {
    			for (i = 0; i < res_pkg.sprite3D.length; i++) {
    				url = res_pkg.sprite3D[i];
    				this.Reslease_Sprite3D(url);
    			}
    		}
    		if (res_pkg.picTextrue) {
    			for (i = 0; i < res_pkg.picTextrue.length; i++) {
    				url = res_pkg.picTextrue[i];
    				this.Reslease_Textrue2D(url);
    			}
    		}
    	}
    	Get_Prefab_Res(url) {
    		return this.prefabs_res[url];
    	}
    	Get_Scens3D_Res(url) {
    		return this.scene3D_res[url];
    	}
    	Get_Sprite3D_Res(url) {
    		return this.sprite3D_res[url];
    	}
    	Get_Sound_Res(url) {
    		return this.sound_res[url];
    	}
    	Get_Texture2D_Res(url) {
    		if (this.textrue_res[url]) {
    			return this.textrue_res[url];
    		}
    		else
    			return null;
    	}
    	static checkSprite3D(sprite) {
    		for (let i = 0; i < sprite.numChildren; i++) {
    			let child = sprite.getChildAt(i);
    			if (child.numChildren > 0)
    				this.checkSprite3D(child);
    			else if (child instanceof Laya.SkinnedMeshSprite3D) {
    				let mesh = child.meshFilter.sharedMesh.url;
    				if (this.sources.indexOf(mesh) == -1)
    					this.sources.push(mesh);
    				let lmat = child.skinnedMeshRenderer.sharedMaterial.url;
    				if (lmat && this.sources.indexOf(lmat) == -1)
    					this.sources.push(lmat);
    				if (child.skinnedMeshRenderer.sharedMaterial["albedoTexture"]) {
    					let pic = child.skinnedMeshRenderer.sharedMaterial["albedoTexture"].url;
    					if (pic && this.sources.indexOf(pic) == -1)
    						this.sources.push(pic);
    				}
    			}
    			else if (child instanceof Laya.MeshSprite3D) {
    				let mesh = child.meshFilter.sharedMesh.url;
    				if (this.sources.indexOf(mesh) == -1)
    					this.sources.push(mesh);
    				let lmat = child.meshRenderer.sharedMaterial.url;
    				if (lmat && this.sources.indexOf(lmat) == -1)
    					this.sources.push(lmat);
    				if (child.meshRenderer.sharedMaterial["albedoTexture"]) {
    					let pic = child.meshRenderer.sharedMaterial["albedoTexture"].url;
    					if (pic && this.sources.indexOf(pic) == -1)
    						this.sources.push(pic);
    				}
    			}
    		}
    	}
    	DesRes() {
    		for (let i = 0; i < ResManager.sources.length; i++) {
    			let res = Laya.loader.getRes(ResManager.sources[i]);
    			if (res) {
    				if (!res.referenceCount || res.referenceCount < 2)
    					res.destroy && res.destroy();
    			}
    			else {
    				console.log('没有res');
    			}
    		}
    	}
    }
    ResManager._Instance = null;
    ResManager.sources = [];

    class UI_Ctrl extends Laya.Script {
    	constructor() {
    		super();
    		this.view = {};
    		this.sceneManager = null;
    		this.uiManager = null;
    	}
    	onAwake() {
    		this.view = {};
    		this.LoadAllInView(this.owner, "");
    		this.sceneManager = InsManager.GetInstance()._SceneManager;
    		this.uiManager = InsManager.GetInstance()._UIManager;
    	}
    	LoadAllInView(root, path) {
    		for (var i = 0; i < root.numChildren; i++) {
    			let child = root.getChildAt(i);
    			this.view[path + child.name] = child;
    			this.LoadAllInView(child, path + child.name + "/");
    			let img = child;
    			if (img != null) {
    				if (img.skin == 'res/UI/public/anniu.png') {
    					console.log('====', img.name);
    				}
    			}
    		}
    	}
    	SetPanelHpProgress(progressImg) {
    		let progress = PlayerData.GetInstance().hp / PlayerData.GetInstance().maxHp;
    		if (progress < 0)
    			progress = progress;
    		if (progress > 1)
    			progress = 1;
    		let value = Math.floor(progressImg.width * progress);
    		if (value == 0)
    			value = -1;
    		progressImg.mask.width = value;
    	}
    	UpdateCoin(label) {
    		label.text = PlayerData.GetInstance().coin.toString();
    	}
    	UIAnim_AlphaScale(targetImg, parent_img, isOpne) {
    		if (targetImg == null) {
    			console.error('没有找到目标图片');
    			return;
    		}
    		if (isOpne) {
    			if (parent_img != null) {
    				parent_img.visible = true;
    				parent_img.alpha = 0;
    				Laya.Tween.to(parent_img, { alpha: 1 }, 500, Laya.Ease.linearIn);
    			}
    			targetImg.alpha = 0;
    			targetImg.scale(0, 0);
    			targetImg.visible = true;
    			Laya.Tween.to(targetImg, { alpha: 1, scaleX: 1, scaleY: 1 }, 500, Laya.Ease.linearIn);
    		}
    		else {
    			Laya.Tween.to(targetImg, { alpha: 0, scaleX: 0, scaleY: 0 }, 500, Laya.Ease.linearOut);
    			if (parent_img != null) {
    				Laya.Tween.to(parent_img, { alpha: 0 }, 500, Laya.Ease.linearOut, Laya.Handler.create(this, () => {
    					parent_img.visible = false;
    				}));
    			}
    		}
    	}
    	Hide() {
    		this.owner.visible = false;
    	}
    	Show() {
    		this.owner.visible = true;
    	}
    }

    var LifeData = {
    	t_hungerDegrees: 30,
    	t_moistrue: 30,
    	l_hungerDegrees: 10,
    	l_moistrue: 10,
    	lifeReduceValue: -5,
    	ResurgencePrice: 100,
    	knapsackMaxRow: 8,
    	prop3DminDis: 4,
    	useMp: -5,
    	playerValueCoin: 50,
    	LvDataArr: [0, 6, 18, 32, 53, 75, 93, 135, 185, 253, 333, 399, 471, 549, 633, 723, 819, 921, 1029, 1143, 1263, 1389, 1521,
    		1659, 1803, 1953, 2109, 2271, 2439, 2613, 2793, 2979, 3171, 3369, 3573, 3783, 3999, 4221, 4449, 4683, 4923, 5169, 5421, 5679,
    		5943, 6213, 6489, 6771, 7059, 7353, 7653, 7959, 8271, 8589, 8913, 9243, 9579, 9921, 10269, 10623, 10983, 11349, 11721, 12099,
    		12483, 12873, 13269, 13671, 14079, 14493, 14913, 15339, 15771, 16209, 16653, 17103, 17559, 18021, 18489, 18963, 19443, 19929,
    		20421, 20919, 21423, 21933, 22449, 22971, 23499, 24033, 24573, 25119, 25671, 26229, 26793, 27363, 27939, 28521, 29109,
    	],
    };
    var CharacterType;
    (function (CharacterType) {
    	CharacterType[CharacterType["Player"] = 0] = "Player";
    	CharacterType[CharacterType["Erik"] = 1] = "Erik";
    })(CharacterType || (CharacterType = {}));
    var ToastType;
    (function (ToastType) {
    	ToastType[ToastType["Game"] = 0] = "Game";
    	ToastType[ToastType["Hint"] = 1] = "Hint";
    })(ToastType || (ToastType = {}));
    var SceneType;
    (function (SceneType) {
    	SceneType[SceneType["BigScene"] = 0] = "BigScene";
    	SceneType[SceneType["LantouJLB"] = 1] = "LantouJLB";
    	SceneType[SceneType["HongYueJLB"] = 2] = "HongYueJLB";
    	SceneType[SceneType["HyJLB"] = 3] = "HyJLB";
    	SceneType[SceneType["YsJLB"] = 4] = "YsJLB";
    	SceneType[SceneType["MarkHouse"] = 5] = "MarkHouse";
    	SceneType[SceneType["CsZs"] = 6] = "CsZs";
    	SceneType[SceneType["Hlzs"] = 7] = "Hlzs";
    })(SceneType || (SceneType = {}));
    var KpOpenType;
    (function (KpOpenType) {
    	KpOpenType[KpOpenType["NpcList"] = 0] = "NpcList";
    	KpOpenType[KpOpenType["EquipmentList"] = 1] = "EquipmentList";
    	KpOpenType[KpOpenType["ForgeList"] = 2] = "ForgeList";
    	KpOpenType[KpOpenType["RepairList"] = 3] = "RepairList";
    })(KpOpenType || (KpOpenType = {}));
    var GetType;
    (function (GetType) {
    	GetType[GetType["PickUp"] = 0] = "PickUp";
    	GetType[GetType["Mining"] = 1] = "Mining";
    	GetType[GetType["CutTheTree"] = 2] = "CutTheTree";
    })(GetType || (GetType = {}));
    var PropType;
    (function (PropType) {
    	PropType[PropType["Weapon"] = 0] = "Weapon";
    	PropType[PropType["Equipment"] = 1] = "Equipment";
    	PropType[PropType["Consumables"] = 2] = "Consumables";
    	PropType[PropType["Material"] = 3] = "Material";
    	PropType[PropType["Object3D"] = 4] = "Object3D";
    	PropType[PropType["Object3DProp"] = 5] = "Object3DProp";
    })(PropType || (PropType = {}));
    var RoleType;
    (function (RoleType) {
    	RoleType[RoleType["Player"] = 0] = "Player";
    	RoleType[RoleType["XiaoXie"] = 1] = "XiaoXie";
    	RoleType[RoleType["DaXie"] = 2] = "DaXie";
    	RoleType[RoleType["PingFeng"] = 3] = "PingFeng";
    	RoleType[RoleType["DiMianEr"] = 4] = "DiMianEr";
    	RoleType[RoleType["PaoXiao"] = 5] = "PaoXiao";
    	RoleType[RoleType["XiMuWang"] = 6] = "XiMuWang";
    	RoleType[RoleType["DongHuangTaiYi"] = 7] = "DongHuangTaiYi";
    	RoleType[RoleType["Fuzhu"] = 8] = "Fuzhu";
    	RoleType[RoleType["DanKang"] = 9] = "DanKang";
    	RoleType[RoleType["NianShow"] = 10] = "NianShow";
    	RoleType[RoleType["KungPeng"] = 11] = "KungPeng";
    	RoleType[RoleType["Zheng"] = 12] = "Zheng";
    	RoleType[RoleType["B_DanKnag"] = 13] = "B_DanKnag";
    	RoleType[RoleType["YingZhao"] = 14] = "YingZhao";
    	RoleType[RoleType["QiongQi"] = 15] = "QiongQi";
    	RoleType[RoleType["B_kungPeng"] = 16] = "B_kungPeng";
    	RoleType[RoleType["B_YingZhao"] = 17] = "B_YingZhao";
    	RoleType[RoleType["B_QiongQi"] = 18] = "B_QiongQi";
    })(RoleType || (RoleType = {}));
    var PlayerState;
    (function (PlayerState) {
    	PlayerState[PlayerState["Idle"] = 0] = "Idle";
    	PlayerState[PlayerState["Walk"] = 1] = "Walk";
    	PlayerState[PlayerState["Run"] = 2] = "Run";
    	PlayerState[PlayerState["atk"] = 3] = "atk";
    	PlayerState[PlayerState["Down_Idle"] = 4] = "Down_Idle";
    	PlayerState[PlayerState["Down_Walk"] = 5] = "Down_Walk";
    	PlayerState[PlayerState["Hit"] = 6] = "Hit";
    	PlayerState[PlayerState["Die"] = 7] = "Die";
    })(PlayerState || (PlayerState = {}));
    var NpcType;
    (function (NpcType) {
    	NpcType[NpcType["Alice"] = 0] = "Alice";
    	NpcType[NpcType["Alice_rope"] = 1] = "Alice_rope";
    	NpcType[NpcType["Frank"] = 2] = "Frank";
    	NpcType[NpcType["Philip"] = 3] = "Philip";
    	NpcType[NpcType["Jack"] = 4] = "Jack";
    	NpcType[NpcType["Bigguy"] = 5] = "Bigguy";
    	NpcType[NpcType["Freud"] = 6] = "Freud";
    	NpcType[NpcType["Black"] = 7] = "Black";
    	NpcType[NpcType["Msx"] = 8] = "Msx";
    	NpcType[NpcType["Robot"] = 9] = "Robot";
    	NpcType[NpcType["Hunter"] = 10] = "Hunter";
    	NpcType[NpcType["Lisa"] = 11] = "Lisa";
    	NpcType[NpcType["Gangster"] = 12] = "Gangster";
    	NpcType[NpcType["Mark"] = 13] = "Mark";
    	NpcType[NpcType["passerby_woman"] = 14] = "passerby_woman";
    	NpcType[NpcType["passerby_man"] = 15] = "passerby_man";
    })(NpcType || (NpcType = {}));
    var NpcState;
    (function (NpcState) {
    	NpcState[NpcState["Null"] = -1] = "Null";
    	NpcState[NpcState["Idle"] = 0] = "Idle";
    	NpcState[NpcState["Walk"] = 1] = "Walk";
    	NpcState[NpcState["Run"] = 2] = "Run";
    	NpcState[NpcState["Patrol"] = 3] = "Patrol";
    	NpcState[NpcState["RunAway"] = 4] = "RunAway";
    	NpcState[NpcState["Pursue"] = 5] = "Pursue";
    	NpcState[NpcState["Atk"] = 6] = "Atk";
    	NpcState[NpcState["Jump"] = 7] = "Jump";
    	NpcState[NpcState["Hit"] = 8] = "Hit";
    	NpcState[NpcState["Die"] = 9] = "Die";
    	NpcState[NpcState["Roar"] = 10] = "Roar";
    })(NpcState || (NpcState = {}));
    var WeaponType;
    (function (WeaponType) {
    	WeaponType[WeaponType["Fist"] = 0] = "Fist";
    	WeaponType[WeaponType["SMYH"] = 1] = "SMYH";
    	WeaponType[WeaponType["TKSWZ"] = 2] = "TKSWZ";
    	WeaponType[WeaponType["CJLZ"] = 3] = "CJLZ";
    	WeaponType[WeaponType["M4A1"] = 4] = "M4A1";
    	WeaponType[WeaponType["HJKB"] = 5] = "HJKB";
    	WeaponType[WeaponType["TJ"] = 6] = "TJ";
    	WeaponType[WeaponType["MK47"] = 7] = "MK47";
    })(WeaponType || (WeaponType = {}));
    var EquipmentType;
    (function (EquipmentType) {
    	EquipmentType[EquipmentType["Weapon"] = 0] = "Weapon";
    	EquipmentType[EquipmentType["AssistantWeapon"] = 1] = "AssistantWeapon";
    	EquipmentType[EquipmentType["Backpacker"] = 2] = "Backpacker";
    	EquipmentType[EquipmentType["Pocket"] = 3] = "Pocket";
    	EquipmentType[EquipmentType["Cap"] = 4] = "Cap";
    	EquipmentType[EquipmentType["Clothing"] = 5] = "Clothing";
    	EquipmentType[EquipmentType["Pants"] = 6] = "Pants";
    	EquipmentType[EquipmentType["Shoe"] = 7] = "Shoe";
    })(EquipmentType || (EquipmentType = {}));
    var KnapsackType;
    (function (KnapsackType) {
    	KnapsackType[KnapsackType["EquipmentColumn"] = 0] = "EquipmentColumn";
    	KnapsackType[KnapsackType["ForgeList"] = 1] = "ForgeList";
    	KnapsackType[KnapsackType["Pocket"] = 2] = "Pocket";
    	KnapsackType[KnapsackType["Zombie_Backpackers"] = 3] = "Zombie_Backpackers";
    	KnapsackType[KnapsackType["Zoo_Backpack"] = 4] = "Zoo_Backpack";
    	KnapsackType[KnapsackType["GAM_Box"] = 5] = "GAM_Box";
    	KnapsackType[KnapsackType["Box"] = 6] = "Box";
    	KnapsackType[KnapsackType["Mail"] = 7] = "Mail";
    })(KnapsackType || (KnapsackType = {}));
    var KnapsackTypeData = [
    	{ name: "装备栏", row: 1, line: 6, maxRow: 1, knapsackType: KnapsackType.EquipmentColumn, },
    	{ name: "锻造平台", row: 1, line: 4, maxRow: 1, knapsackType: KnapsackType.ForgeList, },
    	{ name: "口袋", row: 2, line: 5, maxRow: 8, knapsackType: KnapsackType.Pocket, },
    	{ name: "僵尸背包", row: 3, line: 3, maxRow: 5, knapsackType: KnapsackType.Zombie_Backpackers, },
    	{ name: "动物", row: 3, line: 3, maxRow: 5, knapsackType: KnapsackType.Zoo_Backpack, },
    	{ name: "物资箱", row: 3, line: 3, maxRow: 5, knapsackType: KnapsackType.GAM_Box, },
    	{ name: "箱子", row: 2, line: 3, maxRow: 2, knapsackType: KnapsackType.Box, },
    	{ name: "邮箱", row: 0, line: 0, maxRow: 0, knapsackType: KnapsackType.Mail, },
    ];
    var PropID;
    (function (PropID) {
    	PropID[PropID["plasticDrum"] = 1001] = "plasticDrum";
    	PropID[PropID["chip"] = 1002] = "chip";
    	PropID[PropID["muscleAgent"] = 1003] = "muscleAgent";
    	PropID[PropID["CrackerTask"] = 1004] = "CrackerTask";
    	PropID[PropID["Bandage"] = 2001] = "Bandage";
    	PropID[PropID["bento"] = 2002] = "bento";
    	PropID[PropID["medicalBox"] = 2003] = "medicalBox";
    	PropID[PropID["kele"] = 2004] = "kele";
    	PropID[PropID["beer"] = 2005] = "beer";
    	PropID[PropID["chocolate"] = 2006] = "chocolate";
    	PropID[PropID["sandwich"] = 2007] = "sandwich";
    	PropID[PropID["milk"] = 2008] = "milk";
    	PropID[PropID["coinPick"] = 2010] = "coinPick";
    	PropID[PropID["mpAgent"] = 2012] = "mpAgent";
    	PropID[PropID["hpAgent"] = 2013] = "hpAgent";
    	PropID[PropID["Fist"] = 4001] = "Fist";
    	PropID[PropID["SMYH"] = 4002] = "SMYH";
    	PropID[PropID["TKSWZ"] = 4003] = "TKSWZ";
    	PropID[PropID["CJLZ"] = 4004] = "CJLZ";
    	PropID[PropID["M4A1"] = 4005] = "M4A1";
    	PropID[PropID["HJKB"] = 4006] = "HJKB";
    	PropID[PropID["TJ"] = 4007] = "TJ";
    	PropID[PropID["MK47"] = 4008] = "MK47";
    	PropID[PropID["MainTaskPoint"] = 5023] = "MainTaskPoint";
    	PropID[PropID["Alice"] = 5025] = "Alice";
    	PropID[PropID["Alice_rope"] = 5026] = "Alice_rope";
    	PropID[PropID["Frank"] = 5027] = "Frank";
    	PropID[PropID["Philip"] = 5028] = "Philip";
    	PropID[PropID["Jack"] = 5029] = "Jack";
    	PropID[PropID["Bigguy"] = 5030] = "Bigguy";
    	PropID[PropID["Freud"] = 5031] = "Freud";
    	PropID[PropID["Black"] = 5032] = "Black";
    	PropID[PropID["Msx"] = 5033] = "Msx";
    	PropID[PropID["Robot"] = 5034] = "Robot";
    	PropID[PropID["Hunter"] = 5035] = "Hunter";
    	PropID[PropID["Lisa"] = 5036] = "Lisa";
    	PropID[PropID["Gangster"] = 5037] = "Gangster";
    	PropID[PropID["Mark"] = 5038] = "Mark";
    	PropID[PropID["passerby_woman"] = 5039] = "passerby_woman";
    	PropID[PropID["passerby_man"] = 5040] = "passerby_man";
    	PropID[PropID["outDoor"] = 5039] = "outDoor";
    	PropID[PropID["LantouJLB"] = 5040] = "LantouJLB";
    	PropID[PropID["MarkHouse"] = 5041] = "MarkHouse";
    	PropID[PropID["HongYueJLB"] = 5042] = "HongYueJLB";
    	PropID[PropID["CsZs"] = 5043] = "CsZs";
    	PropID[PropID["CarTouDao"] = 5044] = "CarTouDao";
    	PropID[PropID["HyJLB"] = 5045] = "HyJLB";
    	PropID[PropID["YsJLB"] = 5046] = "YsJLB";
    	PropID[PropID["Hlzs"] = 5047] = "Hlzs";
    	PropID[PropID["VendingMachine"] = 5048] = "VendingMachine";
    	PropID[PropID["coin"] = 6001] = "coin";
    	PropID[PropID["XiaoXie"] = 7001] = "XiaoXie";
    	PropID[PropID["DaXie"] = 7002] = "DaXie";
    	PropID[PropID["PingFeng"] = 7003] = "PingFeng";
    	PropID[PropID["DiMianEr"] = 7004] = "DiMianEr";
    	PropID[PropID["PaoXiao"] = 7005] = "PaoXiao";
    	PropID[PropID["XiMuWang"] = 7006] = "XiMuWang";
    	PropID[PropID["DongHuangTaiYi"] = 7007] = "DongHuangTaiYi";
    	PropID[PropID["Fuzhu"] = 7008] = "Fuzhu";
    	PropID[PropID["DanKang"] = 7009] = "DanKang";
    	PropID[PropID["NianShow"] = 7010] = "NianShow";
    	PropID[PropID["KungPeng"] = 7011] = "KungPeng";
    	PropID[PropID["Zheng"] = 7012] = "Zheng";
    	PropID[PropID["B_DanKnag"] = 7013] = "B_DanKnag";
    	PropID[PropID["YingZhao"] = 7014] = "YingZhao";
    	PropID[PropID["QiongQi"] = 7015] = "QiongQi";
    	PropID[PropID["B_kungPeng"] = 7016] = "B_kungPeng";
    	PropID[PropID["B_YingZhao"] = 7017] = "B_YingZhao";
    	PropID[PropID["B_QiongQi"] = 7018] = "B_QiongQi";
    })(PropID || (PropID = {}));
    var Prop3DID;
    (function (Prop3DID) {
    	Prop3DID[Prop3DID["plasticDrum"] = 0] = "plasticDrum";
    	Prop3DID[Prop3DID["bento"] = 1] = "bento";
    	Prop3DID[Prop3DID["medicalBox"] = 2] = "medicalBox";
    	Prop3DID[Prop3DID["kele"] = 3] = "kele";
    	Prop3DID[Prop3DID["beer"] = 4] = "beer";
    	Prop3DID[Prop3DID["chocolate"] = 5] = "chocolate";
    	Prop3DID[Prop3DID["sandwich"] = 6] = "sandwich";
    	Prop3DID[Prop3DID["milk"] = 7] = "milk";
    	Prop3DID[Prop3DID["coinPick"] = 8] = "coinPick";
    	Prop3DID[Prop3DID["mpAgent"] = 9] = "mpAgent";
    	Prop3DID[Prop3DID["hpAgent"] = 10] = "hpAgent";
    	Prop3DID[Prop3DID["MainTaskPoint"] = 11] = "MainTaskPoint";
    	Prop3DID[Prop3DID["Alice"] = 12] = "Alice";
    	Prop3DID[Prop3DID["Alice_rope"] = 13] = "Alice_rope";
    	Prop3DID[Prop3DID["Frank"] = 14] = "Frank";
    	Prop3DID[Prop3DID["Philip"] = 15] = "Philip";
    	Prop3DID[Prop3DID["Jack"] = 16] = "Jack";
    	Prop3DID[Prop3DID["Bigguy"] = 17] = "Bigguy";
    	Prop3DID[Prop3DID["Freud"] = 18] = "Freud";
    	Prop3DID[Prop3DID["Black"] = 19] = "Black";
    	Prop3DID[Prop3DID["Msx"] = 20] = "Msx";
    	Prop3DID[Prop3DID["Robot"] = 21] = "Robot";
    	Prop3DID[Prop3DID["Hunter"] = 22] = "Hunter";
    	Prop3DID[Prop3DID["Lisa"] = 23] = "Lisa";
    	Prop3DID[Prop3DID["Gangster"] = 24] = "Gangster";
    	Prop3DID[Prop3DID["Mark"] = 25] = "Mark";
    	Prop3DID[Prop3DID["Passerby_woman"] = 26] = "Passerby_woman";
    	Prop3DID[Prop3DID["Passerby_man"] = 27] = "Passerby_man";
    	Prop3DID[Prop3DID["outDoor"] = 28] = "outDoor";
    	Prop3DID[Prop3DID["LantouJLB"] = 29] = "LantouJLB";
    	Prop3DID[Prop3DID["MarkHouse"] = 30] = "MarkHouse";
    	Prop3DID[Prop3DID["HongYueJLB"] = 31] = "HongYueJLB";
    	Prop3DID[Prop3DID["CsZs"] = 32] = "CsZs";
    	Prop3DID[Prop3DID["CarTouDao"] = 33] = "CarTouDao";
    	Prop3DID[Prop3DID["HyJLB"] = 34] = "HyJLB";
    	Prop3DID[Prop3DID["YsJLB"] = 35] = "YsJLB";
    	Prop3DID[Prop3DID["Hlzs"] = 36] = "Hlzs";
    	Prop3DID[Prop3DID["VendingMachine"] = 37] = "VendingMachine";
    })(Prop3DID || (Prop3DID = {}));
    var Get3DPropData = [
    	{ englishName: "plasticDrum", name: "塑料桶", prop3DID: Prop3DID.plasticDrum, propID: PropID.plasticDrum, PropType: PropType.Material, kpNum: 1, getType: GetType.PickUp, getConsume: 2, Tool: PathData.icon_fist, mapIcon: "", sbrIcon: "", msg: "掉落的松木，可以用于搭建房屋制造工具" },
    	{ englishName: "bento", name: "便当", prop3DID: Prop3DID.bento, propID: PropID.bento, PropType: PropType.Consumables, kpNum: 1, getType: GetType.PickUp, getConsume: 2, Tool: PathData.icon_fist, mapIcon: "", sbrIcon: "", msg: "掉落的松木，可以用于搭建房屋制造工具" },
    	{ englishName: "medicalBox", name: "医疗盒", prop3DID: Prop3DID.medicalBox, propID: PropID.medicalBox, PropType: PropType.Consumables, kpNum: 1, getType: GetType.PickUp, getConsume: 2, Tool: PathData.icon_fist, mapIcon: "", sbrIcon: "", msg: "掉落的松木，可以用于搭建房屋制造工具" },
    	{ englishName: "kele", name: "可乐", prop3DID: Prop3DID.kele, propID: PropID.kele, PropType: PropType.Consumables, kpNum: 1, getType: GetType.PickUp, getConsume: 2, Tool: PathData.icon_fist, mapIcon: "", sbrIcon: "", msg: "掉落的松木，可以用于搭建房屋制造工具" },
    	{ englishName: "beer", name: "啤酒", prop3DID: Prop3DID.beer, propID: PropID.beer, PropType: PropType.Consumables, kpNum: 1, getType: GetType.PickUp, getConsume: 2, Tool: PathData.icon_fist, mapIcon: "", sbrIcon: "", msg: "掉落的松木，可以用于搭建房屋制造工具" },
    	{ englishName: "chocolate", name: "巧克力", prop3DID: Prop3DID.chocolate, propID: PropID.chocolate, PropType: PropType.Consumables, kpNum: 1, getType: GetType.PickUp, getConsume: 2, Tool: PathData.icon_fist, mapIcon: "", sbrIcon: "", msg: "掉落的松木，可以用于搭建房屋制造工具" },
    	{ englishName: "sandwich", name: "三明治", prop3DID: Prop3DID.sandwich, propID: PropID.sandwich, PropType: PropType.Consumables, kpNum: 1, getType: GetType.PickUp, getConsume: 2, Tool: PathData.icon_fist, mapIcon: "", sbrIcon: "", msg: "掉落的松木，可以用于搭建房屋制造工具" },
    	{ englishName: "milk", name: "牛奶", prop3DID: Prop3DID.milk, propID: PropID.milk, PropType: PropType.Consumables, kpNum: 1, getType: GetType.PickUp, getConsume: 2, Tool: PathData.icon_fist, mapIcon: "", sbrIcon: "", msg: "掉落的松木，可以用于搭建房屋制造工具" },
    	{ englishName: "coinPick", name: "蓝币芯片", prop3DID: Prop3DID.coinPick, propID: PropID.coinPick, PropType: PropType.Consumables, kpNum: 1, getType: GetType.PickUp, getConsume: 2, Tool: PathData.icon_fist, mapIcon: "", sbrIcon: "", msg: "掉落的松木，可以用于搭建房屋制造工具" },
    	{ englishName: "mpAgent", name: "体力增强剂", prop3DID: Prop3DID.mpAgent, propID: PropID.mpAgent, PropType: PropType.Consumables, kpNum: 1, getType: GetType.PickUp, getConsume: 2, Tool: PathData.icon_fist, mapIcon: "", sbrIcon: "", msg: "掉落的松木，可以用于搭建房屋制造工具" },
    	{ englishName: "hpAgent", name: "生命增强剂", prop3DID: Prop3DID.hpAgent, propID: PropID.hpAgent, PropType: PropType.Consumables, kpNum: 1, getType: GetType.PickUp, getConsume: 2, Tool: PathData.icon_fist, mapIcon: "", sbrIcon: "", msg: "掉落的松木，可以用于搭建房屋制造工具" },
    	{ englishName: "MainTask", name: "主线任务点", prop3DID: Prop3DID.MainTaskPoint, propID: PropID.MainTaskPoint, PropType: PropType.Object3D, kpNum: -1, getType: GetType.PickUp, getConsume: -1, ToolSkin: PathData.icon_fist, mapIcon: "", sbrIcon: "", msg: "宝箱" },
    	{ englishName: "Alice", name: "玛丽", prop3DID: Prop3DID.Alice, propID: PropID.Alice, PropType: PropType.Object3D, kpNum: -1, getType: GetType.PickUp, getConsume: -1, ToolSkin: PathData.icon_fist, mapIcon: "", sbrIcon: "", msg: "玛丽" },
    	{ englishName: "Alice_rope", name: "玛丽", prop3DID: Prop3DID.Alice_rope, propID: PropID.Alice_rope, PropType: PropType.Object3D, kpNum: -1, getType: GetType.PickUp, getConsume: -1, ToolSkin: PathData.icon_fist, mapIcon: "", sbrIcon: "", msg: "玛丽" },
    	{ englishName: "Frank", name: "弗兰克", prop3DID: Prop3DID.Frank, propID: PropID.Frank, PropType: PropType.Object3D, kpNum: -1, getType: GetType.PickUp, getConsume: -1, ToolSkin: PathData.icon_fist, mapIcon: "", sbrIcon: "", msg: "弗兰克" },
    	{ englishName: "Philip", name: "杰姆森", prop3DID: Prop3DID.Philip, propID: PropID.Philip, PropType: PropType.Object3D, kpNum: -1, getType: GetType.PickUp, getConsume: -1, ToolSkin: PathData.icon_fist, mapIcon: "", sbrIcon: "", msg: "杰姆森" },
    	{ englishName: "Jack", name: "杰克", prop3DID: Prop3DID.Jack, propID: PropID.Jack, PropType: PropType.Object3D, kpNum: -1, getType: GetType.PickUp, getConsume: -1, ToolSkin: PathData.icon_fist, mapIcon: "", sbrIcon: "", msg: "杰克" },
    	{ englishName: "Bigguy", name: "大只佬", prop3DID: Prop3DID.Bigguy, propID: PropID.Bigguy, PropType: PropType.Object3D, kpNum: -1, getType: GetType.PickUp, getConsume: -1, ToolSkin: PathData.icon_fist, mapIcon: "", sbrIcon: "", msg: "大只佬" },
    	{ englishName: "Freud", name: "黑市老板", prop3DID: Prop3DID.Freud, propID: PropID.Freud, PropType: PropType.Object3D, kpNum: -1, getType: GetType.PickUp, getConsume: -1, ToolSkin: PathData.icon_fist, mapIcon: "", sbrIcon: "", msg: "黑市酒馆男商人" },
    	{ englishName: "Black", name: "打手", prop3DID: Prop3DID.Black, propID: PropID.Black, PropType: PropType.Object3D, kpNum: -1, getType: GetType.PickUp, getConsume: -1, ToolSkin: PathData.icon_fist, mapIcon: "", sbrIcon: "", msg: "大只佬" },
    	{ englishName: "Msx", name: "X小姐", prop3DID: Prop3DID.Msx, propID: PropID.Msx, PropType: PropType.Object3D, kpNum: -1, getType: GetType.PickUp, getConsume: -1, ToolSkin: PathData.icon_fist, mapIcon: "", sbrIcon: "", msg: "女商人" },
    	{ englishName: "Robot", name: "机械怪人", prop3DID: Prop3DID.Robot, propID: PropID.Robot, PropType: PropType.Object3D, kpNum: -1, getType: GetType.PickUp, getConsume: -1, ToolSkin: PathData.icon_fist, mapIcon: "", sbrIcon: "", msg: "机械怪人" },
    	{ englishName: "Hunter", name: "赏金猎人", prop3DID: Prop3DID.Hunter, propID: PropID.Hunter, PropType: PropType.Object3D, kpNum: -1, getType: GetType.PickUp, getConsume: -1, ToolSkin: PathData.icon_fist, mapIcon: "", sbrIcon: "", msg: "赏金猎人" },
    	{ englishName: "Lisa", name: "露西娅", prop3DID: Prop3DID.Lisa, propID: PropID.Lisa, PropType: PropType.Object3D, kpNum: -1, getType: GetType.PickUp, getConsume: -1, ToolSkin: PathData.icon_fist, mapIcon: "", sbrIcon: "", msg: "露西娅" },
    	{ englishName: "Gangster", name: "山本成员", prop3DID: Prop3DID.Gangster, propID: PropID.Gangster, PropType: PropType.Object3D, kpNum: -1, getType: GetType.PickUp, getConsume: -1, ToolSkin: PathData.icon_fist, mapIcon: "", sbrIcon: "", msg: "恶棍老三" },
    	{ englishName: "Mark", name: "詹姆", prop3DID: Prop3DID.Mark, propID: PropID.Mark, PropType: PropType.Object3D, kpNum: -1, getType: GetType.PickUp, getConsume: -1, ToolSkin: PathData.icon_fist, mapIcon: "", sbrIcon: "", msg: "詹姆" },
    	{ englishName: "Passerby_woman", name: "女市民", prop3DID: Prop3DID.Passerby_woman, propID: PropID.passerby_woman, PropType: PropType.Object3D, kpNum: -1, getType: GetType.PickUp, getConsume: -1, ToolSkin: PathData.icon_fist, mapIcon: "", sbrIcon: "", msg: "詹姆" },
    	{ englishName: "Passerby_man", name: "男市民", prop3DID: Prop3DID.Passerby_man, propID: PropID.passerby_man, PropType: PropType.Object3D, kpNum: -1, getType: GetType.PickUp, getConsume: -1, ToolSkin: PathData.icon_fist, mapIcon: "", sbrIcon: "", msg: "詹姆" },
    	{ englishName: "outDoor", name: "离门", prop3DID: Prop3DID.outDoor, propID: PropID.outDoor, PropType: PropType.Object3D, kpNum: -1, getType: GetType.PickUp, getConsume: -1, ToolSkin: PathData.icon_fist, mapIcon: "", sbrIcon: "", msg: "詹姆" },
    	{ englishName: "LantouJLB", name: "狂热金属俱乐部", prop3DID: Prop3DID.LantouJLB, propID: PropID.LantouJLB, PropType: PropType.Object3D, kpNum: -1, getType: GetType.PickUp, getConsume: -1, ToolSkin: PathData.icon_fist, mapIcon: "", sbrIcon: "", msg: "詹姆" },
    	{ englishName: "MarkHouse", name: "詹姆家", prop3DID: Prop3DID.MarkHouse, propID: PropID.MarkHouse, PropType: PropType.Object3D, kpNum: -1, getType: GetType.PickUp, getConsume: -1, ToolSkin: PathData.icon_fist, mapIcon: "", sbrIcon: "", msg: "詹姆" },
    	{ englishName: "HongYueJLB", name: "教父酒吧", prop3DID: Prop3DID.HongYueJLB, propID: PropID.HongYueJLB, PropType: PropType.Object3D, kpNum: -1, getType: GetType.PickUp, getConsume: -1, ToolSkin: PathData.icon_fist, mapIcon: "", sbrIcon: "", msg: "詹姆" },
    	{ englishName: "CsZs", name: "废弃小巷", prop3DID: Prop3DID.CsZs, propID: PropID.CsZs, PropType: PropType.Object3D, kpNum: -1, getType: GetType.PickUp, getConsume: -1, ToolSkin: PathData.icon_fist, mapIcon: "", sbrIcon: "", msg: "詹姆" },
    	{ englishName: "CarTouDao", name: "驾车通道", prop3DID: Prop3DID.CarTouDao, propID: PropID.CarTouDao, PropType: PropType.Object3D, kpNum: -1, getType: GetType.PickUp, getConsume: -1, ToolSkin: PathData.icon_fist, mapIcon: "", sbrIcon: "", msg: "詹姆" },
    	{ englishName: "HyJLB", name: "幻影俱乐部", prop3DID: Prop3DID.HyJLB, propID: PropID.HyJLB, PropType: PropType.Object3D, kpNum: -1, getType: GetType.PickUp, getConsume: -1, ToolSkin: PathData.icon_fist, mapIcon: "", sbrIcon: "", msg: "詹姆" },
    	{ englishName: "YsJLB", name: "黑市酒馆", prop3DID: Prop3DID.YsJLB, propID: PropID.YsJLB, PropType: PropType.Object3D, kpNum: -1, getType: GetType.PickUp, getConsume: -1, ToolSkin: PathData.icon_fist, mapIcon: "", sbrIcon: "", msg: "詹姆" },
    	{ englishName: "Hlzs", name: "生化实验室", prop3DID: Prop3DID.Hlzs, propID: PropID.Hlzs, PropType: PropType.Object3D, kpNum: -1, getType: GetType.PickUp, getConsume: -1, ToolSkin: PathData.icon_fist, mapIcon: "", sbrIcon: "", msg: "詹姆" },
    	{ englishName: "VendingMachine", name: "自动售货机", prop3DID: Prop3DID.VendingMachine, propID: PropID.VendingMachine, PropType: PropType.Object3D, kpNum: -1, getType: GetType.PickUp, getConsume: -1, ToolSkin: PathData.icon_fist, mapIcon: "", sbrIcon: "", msg: "詹姆" },
    ];
    var NpcData = [
    	{ npcType: NpcType.Alice, englishName: "Alice", ts: "", name: "玛丽", propID: PropID.Alice, mapIcon: "xiaolandian.png", hpValue: 130, atkValue: 10, atkScope: 8, atkTakeTime: 0.4, defense: 5, atkCD: 2, runSpeed: 1.5, walkSpeed: 0.6, alertScope: 10, texture: "", scale: 1, sound_atk: PathData.sound_atk_pistol, sound_blare: '', sound_die: PathData.sound_playerHit_1, sound_run: '' },
    	{ npcType: NpcType.Alice_rope, englishName: "Crab", ts: "", name: "玛丽", propID: PropID.Alice_rope, mapIcon: "xiaolandian.png", hpValue: 120, atkValue: 22, atkScope: 8, atkTakeTime: 0.4, defense: 3, atkCD: 2, runSpeed: 3.6, walkSpeed: 0.6, alertScope: 10, texture: "", scale: 1, sound_atk: PathData.sound_atk_pistol, sound_blare: '', sound_die: PathData.sound_playerHit_1, sound_run: '' },
    	{ npcType: NpcType.Frank, englishName: "Frank", ts: "", name: "弗兰克", propID: PropID.Frank, mapIcon: "xiaolandian.png", hpValue: 80, atkValue: 28, atkScope: 8, atkTakeTime: 0.4, defense: 3, atkCD: 2, runSpeed: 3.8, walkSpeed: 0.6, alertScope: 10, texture: "", scale: 1, sound_atk: PathData.sound_atk_pistol, sound_blare: '', sound_die: PathData.sound_playerHit_1, sound_run: '' },
    	{ npcType: NpcType.Philip, englishName: "Philip", ts: "              ", name: "杰姆森", propID: PropID.Philip, mapIcon: "xiaolandian.png", hpValue: 170, atkValue: 30, atkScope: 8, atkTakeTime: 0.4, defense: 5, atkCD: 2, runSpeed: 3.8, walkSpeed: 0.6, alertScope: 10, texture: "", scale: 1, sound_atk: PathData.sound_atk_pistol, sound_blare: '', sound_die: PathData.sound_playerHit_1, sound_run: '' },
    	{ npcType: NpcType.Jack, englishName: "Jack", ts: "          ", name: "杰克", propID: PropID.Jack, mapIcon: "xiaolandian.png", hpValue: 100, atkValue: 20, atkScope: 8, atkTakeTime: 0.4, defense: 3, atkCD: 2, runSpeed: 3.5, walkSpeed: 0.6, alertScope: 10, texture: "", scale: 1, sound_atk: PathData.sound_atk_pistol, sound_blare: '', sound_die: PathData.sound_playerHit_1, sound_run: '' },
    	{ npcType: NpcType.Bigguy, englishName: "Bigguy", ts: "Zombie_Ctrl", name: "大只佬", propID: PropID.Bigguy, mapIcon: "xiaohongdian.png", hpValue: 320, atkValue: 18, atkScope: 15, atkTakeTime: 0.3, defense: 3, atkCD: 2, runSpeed: 3.2, walkSpeed: 0.6, alertScope: 10, texture: "", scale: 1, sound_atk: PathData.sound_atk_pistol, sound_blare: '', sound_die: PathData.sound_playerHit_1, sound_run: '' },
    	{ npcType: NpcType.Freud, englishName: "Freud", ts: "          ", name: "弗洛伊德", propID: PropID.Freud, mapIcon: "xiaolandian.png", hpValue: 100, atkValue: 18, atkScope: 10, atkTakeTime: 0.3, defense: 3, atkCD: 2, runSpeed: 3.2, walkSpeed: 0.6, alertScope: 10, texture: "", scale: 1, sound_atk: PathData.sound_atk_pistol, sound_blare: '', sound_die: PathData.sound_playerHit_1, sound_run: '' },
    	{ npcType: NpcType.Black, englishName: "Black", ts: "Zombie_Ctrl", name: "打手", propID: PropID.Black, mapIcon: "xiaohongdian.png", hpValue: 180, atkValue: 15, atkScope: 6, atkTakeTime: 0.66, defense: 3, atkCD: 2, runSpeed: 3.2, walkSpeed: 0.6, alertScope: 10, texture: "", scale: 1, sound_atk: PathData.sound_atk_pistol, sound_blare: '', sound_die: PathData.sound_playerHit_1, sound_run: '' },
    	{ npcType: NpcType.Msx, englishName: "Msx", ts: "", name: "X小姐", propID: PropID.Msx, mapIcon: "xiaolandian.png", hpValue: 100, atkValue: 18, atkScope: 8, atkTakeTime: 0.3, defense: 3, atkCD: 2, runSpeed: 3.2, walkSpeed: 0.6, alertScope: 10, texture: "", scale: 1, sound_atk: PathData.sound_atk_pistol, sound_blare: '', sound_die: PathData.sound_playerHit_1, sound_run: '' },
    	{ npcType: NpcType.Robot, englishName: "Robot", ts: "Zombie_Ctrl", name: "机器怪人", propID: PropID.Robot, mapIcon: "xiaohongdian.png", hpValue: 600, atkValue: 18, atkScope: 15, atkTakeTime: 0.3, defense: 3, atkCD: 2, runSpeed: 3.2, walkSpeed: 0.6, alertScope: 10, texture: "", scale: 1, sound_atk: PathData.sound_atk_pistol_2, sound_blare: '', sound_die: PathData.sound_playerHit_1, sound_run: '' },
    	{ npcType: NpcType.Hunter, englishName: "Hunter", ts: "Zombie_Ctrl", name: "赏金猎人", propID: PropID.Hunter, mapIcon: "xiaohongdian.png", hpValue: 240, atkValue: 15, atkScope: 15, atkTakeTime: 0.3, defense: 3, atkCD: 2, runSpeed: 3.2, walkSpeed: 0.6, alertScope: 10, texture: "", scale: 1, sound_atk: PathData.sound_atk_pistol, sound_blare: '', sound_die: PathData.sound_playerHit_1, sound_run: '' },
    	{ npcType: NpcType.Lisa, englishName: "Lisa", ts: "           ", name: "露西娅", propID: PropID.Lisa, mapIcon: "xiaolandian.png", hpValue: 100, atkValue: 18, atkScope: 10, atkTakeTime: 0.3, defense: 3, atkCD: 2, runSpeed: 3.2, walkSpeed: 0.6, alertScope: 10, texture: "", scale: 1, sound_atk: PathData.sound_atk_pistol, sound_blare: '', sound_die: PathData.sound_playerHit_1, sound_run: '' },
    	{ npcType: NpcType.Gangster, englishName: "Gangster", ts: "Zombie_Ctrl", name: "山本成员", propID: PropID.Gangster, mapIcon: "xiaohongdian.png", hpValue: 200, atkValue: 18, atkScope: 15, atkTakeTime: 0.3, defense: 3, atkCD: 2, runSpeed: 3.2, walkSpeed: 0.6, alertScope: 10, texture: "", scale: 1, sound_atk: PathData.sound_atk_pistol, sound_blare: '', sound_die: PathData.sound_playerHit_1, sound_run: '' },
    	{ npcType: NpcType.Mark, englishName: "Mark", ts: "Zombie_Ctrl", name: "詹姆", propID: PropID.Mark, mapIcon: "xiaohongdian.png", hpValue: 230, atkValue: 18, atkScope: 8, atkTakeTime: 0.3, defense: 3, atkCD: 2, runSpeed: 3.2, walkSpeed: 0.6, alertScope: 10, texture: "", scale: 1, sound_atk: PathData.sound_atk_pistol, sound_blare: '', sound_die: PathData.sound_playerHit_1, sound_run: '' },
    	{ npcType: NpcType.passerby_woman, englishName: "Passerby_woman", ts: "", name: "女市民", propID: PropID.passerby_woman, mapIcon: "xiaolandian.png", hpValue: 150, atkValue: 18, atkScope: 8, atkTakeTime: 0.3, defense: 3, atkCD: 2, runSpeed: 3.2, walkSpeed: 0.6, alertScope: 10, texture: "", scale: 1, sound_atk: PathData.sound_atk_pistol, sound_blare: '', sound_die: PathData.sound_playerHit_1, sound_run: '' },
    	{ npcType: NpcType.passerby_man, englishName: "Passerby_man", ts: "", name: "男市民", propID: PropID.passerby_man, mapIcon: "xiaolandian.png", hpValue: 150, atkValue: 18, atkScope: 8, atkTakeTime: 0.3, defense: 3, atkCD: 2, runSpeed: 3.2, walkSpeed: 0.6, alertScope: 10, texture: "", scale: 1, sound_atk: PathData.sound_atk_pistol, sound_blare: '', sound_die: PathData.sound_playerHit_1, sound_run: '' },
    ];
    var Weapon3DData = [
    	{ AnimID: '1', propID: PropID.Fist, sound: PathData.sound_atk_fist, atkTakeTime: 0.5, },
    	{ AnimID: '2', propID: PropID.SMYH, sound: PathData.sound_atk_pistol, atkTakeTime: 0.5, },
    	{ AnimID: '2', propID: PropID.TKSWZ, sound: 'fire.mp3', atkTakeTime: 0.5, },
    	{ AnimID: '2', propID: PropID.CJLZ, sound: 'fire.mp3', atkTakeTime: 0.5, },
    	{ AnimID: '3', propID: PropID.M4A1, sound: PathData.sound_atk_pistol, atkTakeTime: 0.5, },
    	{ AnimID: '3', propID: PropID.HJKB, sound: 'fire.mp3', atkTakeTime: 0.5, },
    	{ AnimID: '3', propID: PropID.TJ, sound: PathData.sound_atk_pistol, atkTakeTime: 0.5, },
    	{ AnimID: '3', propID: PropID.MK47, sound: 'fire.mp3', atkTakeTime: 0.5, },
    ];
    var WeaponData = [
    	{ name: "拳头", propID: PropID.Fist, propType: PropType.Weapon, WeaponType: WeaponType.Fist, sPrice: 0, expend: 1, atkCD: 1, atkValue: 15, atkDis: 3.2, hpValue: 100, maxCount: 1, skin: "icon_w_hook.png", tip: "自己的硬拳头", getText: "与生俱来" },
    	{ name: "沙漠银狐", propID: PropID.SMYH, propType: PropType.Weapon, WeaponType: WeaponType.SMYH, sPrice: 20, expend: 1, atkCD: 0.5, atkValue: 25, atkDis: 15, hpValue: 200, maxCount: 1, skin: "icon_w_wuqi_5.png", tip: "小巧灵活的银色手枪，开火迅速而准确，如沙漠中灵动穿行的银狐一般。", getText: "商店购买|任务奖励|城市拾取" },
    	{ name: "蓝空守护者", propID: PropID.TKSWZ, propType: PropType.Weapon, WeaponType: WeaponType.TKSWZ, sPrice: 30, expend: 1, atkCD: 0.5, atkValue: 32, atkDis: 15, hpValue: 70, maxCount: 1, skin: "icon_w_wuqi_7.png", tip: "A国蓝空战队曾大规模配备的入门级武器，威力和射速有着良好的平衡。", getText: "商店购买|任务奖励|城市拾取" },
    	{ name: "超金猎豹", propID: PropID.CJLZ, propType: PropType.Weapon, WeaponType: WeaponType.CJLZ, sPrice: 35, expend: 1, atkCD: 0.4, atkValue: 38, atkDis: 15, hpValue: 70, maxCount: 1, skin: "icon_w_wuqi_6.png", tip: "通体金黄的中级军用武器，有着豹子般迅猛凶悍的伤害力。", getText: "商店购买|任务奖励|城市拾取" },
    	{ name: "古典战神", propID: PropID.M4A1, propType: PropType.Weapon, WeaponType: WeaponType.M4A1, sPrice: 50, expend: 1, atkCD: 0.3, atkValue: 35, atkDis: 15, hpValue: 70, maxCount: 1, skin: "icon_w_wuqi_1.png", tip: "市面上不多见的老一代重型枪支，它也绝对是闪电杀敌的好手。", getText: "商店购买|任务奖励|城市拾取" },
    	{ name: "黄金卡宾", propID: PropID.HJKB, propType: PropType.Weapon, WeaponType: WeaponType.HJKB, sPrice: 60, expend: 1, atkCD: 0.2, atkValue: 42, atkDis: 15, hpValue: 70, maxCount: 1, skin: "icon_w_wuqi_2.png", tip: "升级版卡宾，准确性、威力和射程比传统卡宾枪都上升了不止一个档次。", getText: "商店购买|任务奖励|城市拾取" },
    	{ name: "突进勇士", propID: PropID.TJ, propType: PropType.Weapon, WeaponType: WeaponType.TJ, sPrice: 80, expend: 1, atkCD: 0.15, atkValue: 48, atkDis: 15, hpValue: 70, maxCount: 1, skin: "icon_w_wuqi_3.png", tip: "此枪就如一个突进的勇士，射速、伤害、连击、面对任何敌人都是压倒式的。", getText: "商店购买|任务奖励|城市拾取" },
    	{ name: "黑钢王者", propID: PropID.MK47, propType: PropType.Weapon, WeaponType: WeaponType.MK47, sPrice: 120, expend: 1, atkCD: 0.2, atkValue: 58, atkDis: 15, hpValue: 70, maxCount: 1, skin: "icon_w_wuqi_4.png", tip: "低调却威力巨大的新型枪支，甚至因为杀伤力过于强悍，被落日城列为禁用枪支。", getText: "商店购买|任务奖励|城市拾取" },
    ];
    var EquipmentData = [];
    var ConsumablesData = [
    	{ name: "医疗纱布", propID: PropID.Bandage, hp: 30, mp: 0, hungerDegrees: 0, moistrue: 0, maxCount: 10, sPrice: 5, propType: PropType.Consumables, skin: "icon_b_bengdai.png", tip: "医用绷带使用后 +30点生命", getText: "商店购买|任务奖励|城市拾取" },
    	{ name: "便当", propID: PropID.bento, hp: 30, mp: 50, hungerDegrees: 0, moistrue: 0, maxCount: 10, sPrice: 10, propType: PropType.Consumables, skin: "icon_b_biandang.png", tip: "饱腹一顿的美味便当 +30生命 50体力", getText: "商店购买|任务奖励|城市拾取" },
    	{ name: "医疗盒", propID: PropID.medicalBox, hp: 60, mp: 0, hungerDegrees: 0, moistrue: 0, maxCount: 10, sPrice: 8, propType: PropType.Consumables, skin: "icon_b_jijiubao.png", tip: "便捷的医疗箱，使用后 +60生命", getText: "商店购买|任务奖励|城市拾取" },
    	{ name: "可乐", propID: PropID.kele, hp: 0, mp: 30, hungerDegrees: 0, moistrue: 0, maxCount: 10, sPrice: 5, propType: PropType.Consumables, skin: "icon_b_kele.png", tip: "可口的碳酸饮料饮用后 +30体力", getText: "商店购买|任务奖励|城市拾取" },
    	{ name: "啤酒", propID: PropID.beer, hp: 10, mp: 10, hungerDegrees: 0, moistrue: 0, maxCount: 10, sPrice: 8, propType: PropType.Consumables, skin: "icon_b_pijiu.png", tip: "饮用后 +10生命 +10体力", getText: "商店购买|任务奖励|城市拾取" },
    	{ name: "巧克力", propID: PropID.chocolate, hp: 0, mp: 50, hungerDegrees: 0, moistrue: 0, maxCount: 10, sPrice: 5, propType: PropType.Consumables, skin: "icon_b_qiaokeli.png", tip: "食用后 +50体力", getText: "商店购买|任务奖励|城市拾取" },
    	{ name: "三明治", propID: PropID.sandwich, hp: 30, mp: 30, hungerDegrees: 0, moistrue: 0, maxCount: 10, sPrice: 5, propType: PropType.Consumables, skin: "icon_b_sanmingzhi.png", tip: "食用后 +30生命 +30体力", getText: "商店购买|任务奖励|城市拾取" },
    	{ name: "牛奶", propID: PropID.milk, hp: 20, mp: 10, hungerDegrees: 0, moistrue: 0, maxCount: 10, sPrice: 5, propType: PropType.Consumables, skin: "icon_b_xiangjiaoniunai.png", tip: "饮用后 +20生命 +10体力", getText: "商店购买|任务奖励|城市拾取" },
    	{ name: "蓝币芯片", propID: PropID.coinPick, hp: 0, mp: 0, hungerDegrees: 0, moistrue: 0, maxCount: 10, sPrice: 5, propType: PropType.Consumables, skin: "icon_m_diancixinpian.png", tip: "使用后 +10电子币", getText: "任务奖励|城市拾取" },
    	{ name: "体力增强剂", propID: PropID.mpAgent, hp: 10, mp: 0, hungerDegrees: 0, moistrue: 0, maxCount: 1, sPrice: 50, propType: PropType.Consumables, skin: "icon_m_liliangji.png", tip: "使用后体力永久+10 并恢复满体力", getText: "商店购买|任务奖励|城市拾取" },
    	{ name: "生命增强剂", propID: PropID.hpAgent, hp: 10, mp: 0, hungerDegrees: 0, moistrue: 0, maxCount: 1, sPrice: 50, propType: PropType.Consumables, skin: "icon_m_shengmingzengqiangji.png", tip: "使用后血量永久+10 并恢复满血量", getText: "商店购买|任务奖励|城市拾取" },
    ];
    var MaterialData = [
    	{ name: "塑料桶", propID: PropID.plasticDrum, sPrice: 3, maxCount: 5, propType: PropType.Material, skin: "icon_b_jijiubao.png", tip: "废弃的塑料桶", getText: "城市拾取" },
    	{ name: "万能编码芯片", propID: PropID.chip, sPrice: 10, maxCount: 1, propType: PropType.Material, skin: "icon_m_diancixinpian.png", tip: "万能的芯片编码", getText: "任务获得" },
    	{ name: "肌肉软化剂", propID: PropID.muscleAgent, sPrice: 10, maxCount: 1, propType: PropType.Material, skin: "icon_m_liliangji.png", tip: "能够将肌肉进行软化的一种特殊药剂", getText: "任务获得" },
    	{ name: "破解任务", propID: PropID.CrackerTask, sPrice: 10, maxCount: 1, propType: PropType.Material, skin: "icon_m_diancixinpian.png", tip: "破解任务", getText: "城市拾取" },
    ];
    var BuildingData = [];
    var MonsterType;
    (function (MonsterType) {
    	MonsterType[MonsterType["XiaoXie"] = 0] = "XiaoXie";
    	MonsterType[MonsterType["DaXie"] = 1] = "DaXie";
    	MonsterType[MonsterType["PingFeng"] = 2] = "PingFeng";
    	MonsterType[MonsterType["DiMianEr"] = 3] = "DiMianEr";
    	MonsterType[MonsterType["PaoXiao"] = 4] = "PaoXiao";
    	MonsterType[MonsterType["XiMuWang"] = 5] = "XiMuWang";
    	MonsterType[MonsterType["DongHuangTaiYi"] = 6] = "DongHuangTaiYi";
    	MonsterType[MonsterType["Fuzhu"] = 7] = "Fuzhu";
    	MonsterType[MonsterType["DanKang"] = 8] = "DanKang";
    	MonsterType[MonsterType["NianShow"] = 9] = "NianShow";
    	MonsterType[MonsterType["KungPeng"] = 10] = "KungPeng";
    	MonsterType[MonsterType["Zheng"] = 11] = "Zheng";
    	MonsterType[MonsterType["B_DanKnag"] = 12] = "B_DanKnag";
    	MonsterType[MonsterType["YingZhao"] = 13] = "YingZhao";
    	MonsterType[MonsterType["QiongQi"] = 14] = "QiongQi";
    	MonsterType[MonsterType["B_kungPeng"] = 15] = "B_kungPeng";
    	MonsterType[MonsterType["B_YingZhao"] = 16] = "B_YingZhao";
    	MonsterType[MonsterType["B_QiongQi"] = 17] = "B_QiongQi";
    })(MonsterType || (MonsterType = {}));
    var MonsterData = [
    	{ monsterType: MonsterType.XiaoXie, englishName: "XiaoXie", ex: 10, UpLevel: 2, msg: "生于南海，喜阳忌阴，其爪如铁，可破石", ts: "Zombie_Ctrl", name: "小蟹", propID: PropID.XiaoXie, mapIcon: "xiaolandian.png", hpValue: 130, atkValue: 30, atkScope: 4, atkTakeTime: 0.4, defense: 5, atkCD: 2, runSpeed: 1.5, walkSpeed: 0.6, alertScope: 10, texture: "", scale: 1, sound_atk: PathData.sound_atk_PangXie, sound_blare: '', sound_die: PathData.sound_die_Normal, sound_run: '' },
    	{ monsterType: MonsterType.DaXie, englishName: "DaXie", ex: 30, UpLevel: 2, msg: "小蟹异化，其体如磐石，其钳可折树可碎石", ts: "Zombie_Ctrl", name: "大蟹", propID: PropID.DaXie, mapIcon: "xiaolandian.png", hpValue: 180, atkValue: 40, atkScope: 4, atkTakeTime: 0.4, defense: 5, atkCD: 2, runSpeed: 1.5, walkSpeed: 0.6, alertScope: 10, texture: "", scale: 1, sound_atk: PathData.sound_atk_PangXie, sound_blare: '', sound_die: PathData.sound_die_Normal, sound_run: '' },
    	{ monsterType: MonsterType.PingFeng, englishName: "PingFeng", ex: 80, UpLevel: 3, msg: "头犹如猪头般，生两个头，各在一端，意志处处相对", ts: "Zombie_Ctrl", name: "屏蓬", propID: PropID.PingFeng, mapIcon: "xiaolandian.png", hpValue: 200, atkValue: 50, atkScope: 4, atkTakeTime: 0.4, defense: 5, atkCD: 2, runSpeed: 1.5, walkSpeed: 0.6, alertScope: 10, texture: "", scale: 1, sound_atk: PathData.sound_atk_pig, sound_blare: '', sound_die: PathData.sound_die_Normal, sound_run: '' },
    	{ monsterType: MonsterType.DiMianEr, englishName: "DiMianEr", ex: 120, UpLevel: 3, msg: "其状如熊，其肤如石，喜食鹿，嗜摧木", ts: "Zombie_Ctrl", name: "地面儿", propID: PropID.DiMianEr, mapIcon: "xiaolandian.png", hpValue: 240, atkValue: 60, atkScope: 4, atkTakeTime: 0.4, defense: 5, atkCD: 2, runSpeed: 1.5, walkSpeed: 0.6, alertScope: 10, texture: "", scale: 1, sound_atk: PathData.sound_atk_DME, sound_blare: '', sound_die: PathData.sound_die_Normal, sound_run: '' },
    	{ monsterType: MonsterType.PaoXiao, englishName: "PaoXiao", ex: 160, UpLevel: 3, msg: "状如羊身人面，其目在腋下，虎齿人爪，其音如婴儿", ts: "Zombie_Ctrl", name: "狍鸮", propID: PropID.PaoXiao, mapIcon: "xiaolandian.png", hpValue: 283, atkValue: 70, atkScope: 4, atkTakeTime: 0.4, defense: 5, atkCD: 2, runSpeed: 1.5, walkSpeed: 0.6, alertScope: 10, texture: "", scale: 1, sound_atk: PathData.sound_atk_Normal, sound_blare: '', sound_die: PathData.sound_die_Normal, sound_run: '' },
    	{ monsterType: MonsterType.XiMuWang, englishName: "XiMuWang", ex: 200, UpLevel: 3, msg: "其状如人，豹尾虎齿而善啸，蓬发戴胜", ts: "Zombie_Ctrl", name: "西母王", propID: PropID.XiMuWang, mapIcon: "xiaolandian.png", hpValue: 300, atkValue: 80, atkScope: 4, atkTakeTime: 0.4, defense: 5, atkCD: 2, runSpeed: 1.5, walkSpeed: 0.6, alertScope: 10, texture: "", scale: 1, sound_atk: PathData.sound_atk_Normal, sound_blare: '', sound_die: PathData.sound_die_Normal, sound_run: '' },
    	{ monsterType: MonsterType.DongHuangTaiYi, englishName: "DongHuangTaiYi", ex: 250, UpLevel: 3, msg: "蛇尾人身，喜杀戮，可控水为己用", ts: "Zombie_Ctrl", name: "东蝗太一", propID: PropID.DongHuangTaiYi, mapIcon: "xiaolandian.png", hpValue: 360, atkValue: 90, atkScope: 3, atkTakeTime: 0.4, defense: 5, atkCD: 2, runSpeed: 1.5, walkSpeed: 0.6, alertScope: 10, texture: "", scale: 1, sound_atk: PathData.sound_atk_DongHuangTaiYi, sound_blare: '', sound_die: PathData.sound_die_Normal, sound_run: '' },
    	{ monsterType: MonsterType.Fuzhu, englishName: "Fuzhu", ex: 320, UpLevel: 4, msg: "敖岸之山，有兽焉，其状如白鹿而四角，名曰夫诸", ts: "Zombie_Ctrl", name: "夫诸", propID: PropID.Fuzhu, mapIcon: "xiaolandian.png", hpValue: 400, atkValue: 100, atkScope: 4, atkTakeTime: 0.4, defense: 5, atkCD: 2, runSpeed: 1.5, walkSpeed: 0.6, alertScope: 10, texture: "", scale: 1, sound_atk: PathData.sound_atk_Normal, sound_blare: '', sound_die: PathData.sound_die_Normal, sound_run: '' },
    	{ monsterType: MonsterType.DanKang, englishName: "DanKang", ex: 400, UpLevel: 4, msg: "其状如豚而有牙，其鸣自叫，见则天下大穰", ts: "Zombie_Ctrl", name: "当康", propID: PropID.DanKang, mapIcon: "xiaolandian.png", hpValue: 500, atkValue: 120, atkScope: 4, atkTakeTime: 0.4, defense: 5, atkCD: 2, runSpeed: 1.5, walkSpeed: 0.6, alertScope: 10, texture: "", scale: 1, sound_atk: PathData.sound_atk_pig, sound_blare: '', sound_die: PathData.sound_die_Normal, sound_run: '' },
    	{ monsterType: MonsterType.NianShow, englishName: "NianShow", ex: 480, UpLevel: 4, msg: "形貌恐怖，生性凶残，专食飞禽走兽、鳞介虫豸", ts: "Zombie_Ctrl", name: "年兽", propID: PropID.NianShow, mapIcon: "xiaolandian.png", hpValue: 650, atkValue: 140, atkScope: 4, atkTakeTime: 0.4, defense: 5, atkCD: 2, runSpeed: 1.5, walkSpeed: 0.6, alertScope: 10, texture: "", scale: 1, sound_atk: PathData.sound_atk_Normal, sound_blare: '', sound_die: PathData.sound_die_Normal, sound_run: '' },
    	{ monsterType: MonsterType.KungPeng, englishName: "KungPeng", ex: 580, UpLevel: 4, msg: "终北之北有溟海者，天池也，有鸟焉，其名为鹏，翼若垂天之云", ts: "Zombie_Ctrl", name: "鲲鹏", propID: PropID.KungPeng, mapIcon: "xiaolandian.png", hpValue: 800, atkValue: 160, atkScope: 4, atkTakeTime: 0.4, defense: 5, atkCD: 2, runSpeed: 1.5, walkSpeed: 0.6, alertScope: 10, texture: "", scale: 1, sound_atk: PathData.sound_atk_KungPeng, sound_blare: '', sound_die: PathData.sound_die_Normal, sound_run: '' },
    	{ monsterType: MonsterType.Zheng, englishName: "Zheng", ex: 680, UpLevel: 4, msg: "章莪之山有兽焉，其状如赤豹，五尾一角，其音如击石，其名曰狰", ts: "Zombie_Ctrl", name: "狰", propID: PropID.Zheng, mapIcon: "xiaolandian.png", hpValue: 1000, atkValue: 185, atkScope: 4, atkTakeTime: 0.4, defense: 5, atkCD: 2, runSpeed: 1.5, walkSpeed: 0.6, alertScope: 10, texture: "", scale: 1, sound_atk: PathData.sound_atk_QingQi, sound_blare: '', sound_die: PathData.sound_die_Normal, sound_run: '' },
    	{ monsterType: MonsterType.B_DanKnag, englishName: "B_DanKnag", ex: 750, UpLevel: 4, msg: "当康吞噬魔气进化，其速如风，其力如山", ts: "Zombie_Ctrl", name: "狂暴当康", propID: PropID.B_DanKnag, mapIcon: "xiaolandian.png", hpValue: 1200, atkValue: 200, atkScope: 4, atkTakeTime: 0.4, defense: 5, atkCD: 2, runSpeed: 1.5, walkSpeed: 0.6, alertScope: 10, texture: "", scale: 1, sound_atk: PathData.sound_atk_pig, sound_blare: '', sound_die: PathData.sound_die_Normal, sound_run: '' },
    	{ monsterType: MonsterType.YingZhao, englishName: "YingZhao", ex: 900, UpLevel: 5, msg: "其状马身而人面，虎纹而鸟翼，徇于四海，其音如榴", ts: "Zombie_Ctrl", name: "英招", propID: PropID.YingZhao, mapIcon: "xiaolandian.png", hpValue: 1500, atkValue: 220, atkScope: 4, atkTakeTime: 0.4, defense: 5, atkCD: 2, runSpeed: 1.5, walkSpeed: 0.6, alertScope: 10, texture: "", scale: 1, sound_atk: PathData.sound_atk_YingZhao, sound_blare: '', sound_die: PathData.sound_die_Normal, sound_run: '' },
    	{ monsterType: MonsterType.QiongQi, englishName: "QiongQi", ex: 1100, UpLevel: 5, msg: "四大凶兽之一，状如虎，有翼，音如嗥狗", ts: "Zombie_Ctrl", name: "穷奇", propID: PropID.QiongQi, mapIcon: "xiaolandian.png", hpValue: 1700, atkValue: 240, atkScope: 4, atkTakeTime: 0.4, defense: 5, atkCD: 2, runSpeed: 1.5, walkSpeed: 0.6, alertScope: 10, texture: "", scale: 1, sound_atk: PathData.sound_atk_QingQi, sound_blare: '', sound_die: PathData.sound_die_Normal, sound_run: '' },
    	{ monsterType: MonsterType.B_kungPeng, englishName: "B_kungPeng", ex: 1300, UpLevel: 5, msg: "渡劫千年，涅槃重生，鸿鹏之主，行之可遮天可蔽日", ts: "Zombie_Ctrl", name: "涅槃鲲鹏", propID: PropID.B_kungPeng, mapIcon: "xiaolandian.png", hpValue: 1800, atkValue: 250, atkScope: 4, atkTakeTime: 0.4, defense: 5, atkCD: 2, runSpeed: 1.5, walkSpeed: 0.6, alertScope: 10, texture: "", scale: 1, sound_atk: PathData.sound_atk_KungPeng, sound_blare: '', sound_die: PathData.sound_die_Normal, sound_run: '' },
    	{ monsterType: MonsterType.B_YingZhao, englishName: "B_YingZhao", ex: 1500, UpLevel: 5, msg: "沾染凶兽之血，渡劫失败，性情凶残，其声如雷", ts: "Zombie_Ctrl", name: "狂暴人马座", propID: PropID.B_YingZhao, mapIcon: "xiaolandian.png", hpValue: 2000, atkValue: 260, atkScope: 4, atkTakeTime: 0.4, defense: 5, atkCD: 2, runSpeed: 1.5, walkSpeed: 0.6, alertScope: 10, texture: "", scale: 1, sound_atk: PathData.sound_atk_YingZhao, sound_blare: '', sound_die: PathData.sound_die_Normal, sound_run: '' },
    	{ monsterType: MonsterType.B_QiongQi, englishName: "B_QiongQi", ex: 2500, UpLevel: 5, msg: "吞噬日月精华，进阶上位，可吞天地", ts: "Zombie_Ctrl", name: "毁灭穷奇", propID: PropID.QiongQi, mapIcon: "xiaolandian.png", hpValue: 2400, atkValue: 300, atkScope: 4, atkTakeTime: 0.4, defense: 5, atkCD: 2, runSpeed: 1.5, walkSpeed: 0.6, alertScope: 10, texture: "", scale: 1, sound_atk: PathData.sound_atk_QingQi, sound_blare: '', sound_die: PathData.sound_die_Normal, sound_run: '' },
    ];
    var MonsterCameraPos = [
    	{ monsterType: MonsterType.XiaoXie, pos: [0, -0.4, -0.4] },
    	{ monsterType: MonsterType.DaXie, pos: [0, -0.4, -0.4] },
    	{ monsterType: MonsterType.PingFeng, pos: [0, -0.4, -0.6] },
    	{ monsterType: MonsterType.DiMianEr, pos: [0, 0, -0.7] },
    	{ monsterType: MonsterType.PaoXiao, pos: [0, -0.2, -1.5] },
    	{ monsterType: MonsterType.XiMuWang, pos: [0, 0.8, -1.7] },
    	{ monsterType: MonsterType.DongHuangTaiYi, pos: [0, 0.8, -2.2] },
    	{ monsterType: MonsterType.Fuzhu, pos: [0, 0.5, -1.5] },
    	{ monsterType: MonsterType.DanKang, pos: [0, 0.2, -2.8] },
    	{ monsterType: MonsterType.NianShow, pos: [0, 0.4, -3] },
    	{ monsterType: MonsterType.KungPeng, pos: [0, 2.9, -6] },
    	{ monsterType: MonsterType.Zheng, pos: [0, 0, -2.8] },
    	{ monsterType: MonsterType.B_DanKnag, pos: [0, 1, -3.6] },
    	{ monsterType: MonsterType.YingZhao, pos: [0, 1.3, -2.8] },
    	{ monsterType: MonsterType.QiongQi, pos: [0, 0.2, -3.5] },
    	{ monsterType: MonsterType.B_kungPeng, pos: [0, 3.4, -5.6] },
    	{ monsterType: MonsterType.B_YingZhao, pos: [0, 1.3, -2.8] },
    	{ monsterType: MonsterType.B_QiongQi, pos: [0, 0.7, -3.8] },
    ];
    var MonsterPathData = [
    	{ monsterType: MonsterType.XiaoXie, path: PathData.XiaoXie_Prefabs_path },
    	{ monsterType: MonsterType.DaXie, path: PathData.DaXie_Prefabs_path },
    	{ monsterType: MonsterType.PingFeng, path: PathData.PingFeng_Prefabs_path },
    	{ monsterType: MonsterType.DiMianEr, path: PathData.DiMianEr_Prefabs_path },
    	{ monsterType: MonsterType.PaoXiao, path: PathData.PaoXiao_Prefabs_path },
    	{ monsterType: MonsterType.XiMuWang, path: PathData.XiMuWang_Prefabs_path },
    	{ monsterType: MonsterType.DongHuangTaiYi, path: PathData.DongHuangTaiYi_Prefabs_path },
    	{ monsterType: MonsterType.Fuzhu, path: PathData.Fuzhu_Prefabs_path },
    	{ monsterType: MonsterType.DanKang, path: PathData.DanKang_Prefabs_path },
    	{ monsterType: MonsterType.NianShow, path: PathData.NianShow_Prefabs_path },
    	{ monsterType: MonsterType.KungPeng, path: PathData.KungPeng_Prefabs_path },
    	{ monsterType: MonsterType.Zheng, path: PathData.Zheng_Prefabs_path },
    	{ monsterType: MonsterType.B_DanKnag, path: PathData.B_DanKnag_Prefabs_path },
    	{ monsterType: MonsterType.YingZhao, path: PathData.YingZhao_Prefabs_path },
    	{ monsterType: MonsterType.QiongQi, path: PathData.QiongQi_Prefabs_path },
    	{ monsterType: MonsterType.B_kungPeng, path: PathData.B_kungPeng_Prefabs_path },
    	{ monsterType: MonsterType.B_YingZhao, path: PathData.B_YingZhao_Prefabs_path },
    	{ monsterType: MonsterType.B_QiongQi, path: PathData.B_QiongQi_Prefabs_path },
    ];
    var MonsterBornData = [
    	{ name: "enemyPoint1", monsterTypes: [RoleType.XiaoXie, RoleType.DaXie, RoleType.PingFeng], monsterNums: [5, 5, 5] },
    	{ name: "enemyPoint2", monsterTypes: [RoleType.XiaoXie, RoleType.PingFeng, RoleType.DiMianEr, RoleType.Fuzhu], monsterNums: [5, 5, 5, 5] },
    	{ name: "enemyPoint3", monsterTypes: [RoleType.DaXie, RoleType.PingFeng, RoleType.DiMianEr, RoleType.PaoXiao], monsterNums: [5, 5, 5, 5] },
    	{ name: "enemyPoint4", monsterTypes: [RoleType.Zheng, RoleType.XiMuWang, RoleType.DongHuangTaiYi], monsterNums: [5, 5, 5] },
    	{ name: "enemyPoint5", monsterTypes: [RoleType.PingFeng, RoleType.DanKang, RoleType.XiMuWang], monsterNums: [5, 5, 5] },
    	{ name: "enemyPoint6", monsterTypes: [RoleType.NianShow, RoleType.KungPeng, RoleType.B_DanKnag], monsterNums: [5, 5, 2] },
    	{ name: "enemyPoint7", monsterTypes: [RoleType.YingZhao, RoleType.QiongQi, RoleType.KungPeng], monsterNums: [5, 5, 2] },
    	{ name: "enemyPoint8", monsterTypes: [RoleType.B_kungPeng, RoleType.B_YingZhao, RoleType.NianShow], monsterNums: [2, 2, 5] },
    	{ name: "enemyPoint9", monsterTypes: [RoleType.B_QiongQi, RoleType.YingZhao, RoleType.QiongQi], monsterNums: [2, 5, 5] },
    ];
    var CarType;
    (function (CarType) {
    	CarType[CarType["Car_Yellow"] = 0] = "Car_Yellow";
    	CarType[CarType["Car_HYWS"] = 1] = "Car_HYWS";
    	CarType[CarType["Car_XuFu"] = 2] = "Car_XuFu";
    	CarType[CarType["Car_FeiJI"] = 3] = "Car_FeiJI";
    })(CarType || (CarType = {}));
    var CarData = [
    	{ name: '黄色法克龙', english: "Car_Yellow", fSpeed: 7, rSpeed: -4, upSpee: 0.2, roteteSpeed: 0.2 },
    	{ name: '黑耀武士', english: "Car_HYWS", fSpeed: 10, rSpeed: -5, upSpee: 0.2, roteteSpeed: 0.2 },
    	{ name: '超速脉冲', english: "Car_XuFu", fSpeed: 12, rSpeed: -5, upSpee: 0.2, roteteSpeed: 0.2 },
    	{ name: '暗影飞侠', english: "Car_FeiJI", fSpeed: 14, rSpeed: -8, upSpee: 0.1, roteteSpeed: 0.2 },
    ];
    var UnableRamdonRrop = [
    	PropID.Fist,
    ];
    var ShopPropData = [
    	{ propID: PropID.Bandage, buyCount: 5, price: 30 },
    	{ propID: PropID.bento, buyCount: 5, price: 50 },
    	{ propID: PropID.medicalBox, buyCount: 5, price: 50 },
    	{ propID: PropID.kele, buyCount: 10, price: 20 },
    	{ propID: PropID.beer, buyCount: 5, price: 20 },
    	{ propID: PropID.chocolate, buyCount: 5, price: 25 },
    	{ propID: PropID.sandwich, buyCount: 5, price: 25 },
    	{ propID: PropID.milk, buyCount: 2, price: 30 },
    	{ propID: PropID.mpAgent, buyCount: 1, price: 350 },
    	{ propID: PropID.hpAgent, buyCount: 1, price: 350 },
    	{ propID: PropID.SMYH, buyCount: 1, price: 200 },
    	{ propID: PropID.TKSWZ, buyCount: 1, price: 300 },
    	{ propID: PropID.CJLZ, buyCount: 1, price: 350 },
    	{ propID: PropID.M4A1, buyCount: 1, price: 400 },
    	{ propID: PropID.HJKB, buyCount: 1, price: 500 },
    	{ propID: PropID.TJ, buyCount: 1, price: 500 },
    	{ propID: PropID.MK47, buyCount: 1, price: 1000 },
    ];
    var VendingMachinePropData = [
    	{ propID: PropID.kele, buyCount: 10, price: 15 },
    	{ propID: PropID.beer, buyCount: 5, price: 15 },
    	{ propID: PropID.chocolate, buyCount: 5, price: 20 },
    	{ propID: PropID.sandwich, buyCount: 5, price: 20 },
    	{ propID: PropID.milk, buyCount: 2, price: 25 },
    	{ propID: PropID.Bandage, buyCount: 5, price: 25 },
    	{ propID: PropID.bento, buyCount: 5, price: 30 },
    	{ propID: PropID.mpAgent, buyCount: 1, price: 320 },
    	{ propID: PropID.hpAgent, buyCount: 1, price: 320 },
    ];
    var MissionType;
    (function (MissionType) {
    	MissionType[MissionType["HuntTask"] = 0] = "HuntTask";
    	MissionType[MissionType["MoveEndPosTask"] = 1] = "MoveEndPosTask";
    	MissionType[MissionType["LookForNpcTask"] = 2] = "LookForNpcTask";
    	MissionType[MissionType["CrackerTask"] = 3] = "CrackerTask";
    })(MissionType || (MissionType = {}));
    var BranchTaskType;
    (function (BranchTaskType) {
    	BranchTaskType["HuntTask"] = "HuntTask";
    	BranchTaskType["CrackerTask"] = "CrackerTask";
    	BranchTaskType["DeliverGoodsTask"] = "DeliverGoodsTask";
    	BranchTaskType["GetherTask"] = "GetherTask";
    })(BranchTaskType || (BranchTaskType = {}));
    var AchievementData = [
    	{ missionType: BranchTaskType.HuntTask, title: '街头暴徒', targetCount: 10, msg: '在落日城累计击败10个敌人获得此成就', award: 100 },
    	{ missionType: BranchTaskType.CrackerTask, title: '初级黑客', targetCount: 5, msg: '累计修复5台电脑', award: 100 },
    	{ missionType: BranchTaskType.DeliverGoodsTask, title: '送货小哥', targetCount: 5, msg: '在落日城累计完成5次送货任务', award: 100 },
    	{ missionType: BranchTaskType.GetherTask, title: '收集爱好者', targetCount: 10, msg: '在落日城累计收集10件道具物品', award: 100 },
    	{ missionType: BranchTaskType.HuntTask, title: '武器大师', targetCount: 30, msg: '在落日城累计击败30个敌人获得此成就', award: 300 },
    	{ missionType: BranchTaskType.CrackerTask, title: '科技能者', targetCount: 10, msg: '累计修复10台电脑', award: 300 },
    	{ missionType: BranchTaskType.DeliverGoodsTask, title: '跑腿健将', targetCount: 10, msg: '在落日城累计完成10次送货任务', award: 300 },
    	{ missionType: BranchTaskType.GetherTask, title: '探索达人', targetCount: 30, msg: '在落日城累计收集30件道具物品', award: 300 },
    	{ missionType: BranchTaskType.HuntTask, title: '月城王者', targetCount: 50, msg: '在落日城累计击败50个敌人获得此成就', award: 500 },
    	{ missionType: BranchTaskType.CrackerTask, title: '芯片魔王', targetCount: 25, msg: '累计修复25台电脑', award: 500 },
    	{ missionType: BranchTaskType.DeliverGoodsTask, title: '城市疾风', targetCount: 25, msg: '在落日城累计完成25次送货任务', award: 500 },
    	{ missionType: BranchTaskType.GetherTask, title: '物资巨头', targetCount: 50, msg: '在落日城累计收集50件道具物品', award: 500 },
    ];
    var DropItemConfigs = [
    	{ "_id": 0, "name": "箱子", "prop": [1001], "probability": [0], "maxCount": [10], "count": 1 },
    	{ "_id": 1, "name": "恐龟", "prop": [2004, 1006], "probability": [100, 50], "maxCount": [2, 2], "count": 2 },
    	{ "_id": 2, "name": "椰子蟹", "prop": [2004, 2003, 1007], "probability": [100, 50, 50], "maxCount": [2, 2, 2], "count": 3 },
    	{ "_id": 3, "name": "剑齿虎", "prop": [2004, 1004, 1014], "probability": [100, 50, 50], "maxCount": [3, 2, 2], "count": 3 },
    	{ "_id": 4, "name": "异特龙", "prop": [1007, 1004, 1014, 2004], "probability": [30, 100, 60, 100], "maxCount": [2, 2, 2, 3], "count": 4 },
    	{ "_id": 5, "name": "鱼头怪", "prop": [2002, 2003, 1010], "probability": [100, 50, 50], "maxCount": [1, 2, 1], "count": 3 },
    	{ "_id": 6, "name": "鲨鱼", "prop": [2004, 1004, 1014], "probability": [50, 100, 50], "maxCount": [1, 1, 1], "count": 3 }
    ];

    class GameIdConfig {
    }
    GameIdConfig.qqplayID = {};
    GameIdConfig.toutiaoID = {
    	appId: "tta765d1d8385eb0e1",
    	bannerAdId: "27yay5288v211jho1l",
    	rewardedVideoAdId: "ka2c3qp15irhl288ol",
    	InsertAdId: "2q7u2p9e6prc77g077",
    	ShareID: "26dg96ged4lh1cbe3e",
    };
    GameIdConfig.vivoID = {};
    GameIdConfig.oppoID = {};
    GameIdConfig.huaweiID = {
    	appId: "104655387",
    	rewardedVideoAdId: "b7iexyfw2u",
    	NativeAdId: "n6qhajq8hp",
    };
    GameIdConfig.oppoMoreGameIDArr = [
    	'com.tykj.hcgte3d.kyx.nearme.gamecenter',
    	'com.zqx.dmxs.kyx.nearme.gamecenter',
    	'com.zsfz.elsdz.net.nearme.gamecenter',
    	'com.zqx.ltdzz.kyx.nearme.gamecenter',
    	'com.szly.zzssyx.kyx.nearme.gamecenter',
    	'com.mxcy.cqjsnjq.kyx.nearme.gamecenter',
    	'com.mxcy.rlybdd2.kyx.nearme.gamecenter',
    	'com.zsfz.hcrstt.kyx.nearme.gamecenter',
    	'com.zsfz.wdjysq2.kyx.nearme.gamecenter',
    	'com.zsfz.dycxy.kyx.nearme.gamecenter',
    ];
    GameIdConfig.weixinID = {
    	appId: "",
    	bannerAdId: "",
    	rewardedVideoAdId: "",
    	InsertAdId: "",
    	NativeAdId: "",
    	NativeAdIconId: "",
    };

    class oppoH5GameAPI {
    	constructor() {
    		this.qg = window["qg"];
    		this.bannerAd = null;
    		this.interstitialAd = null;
    		this.rewardedVideoAd = null;
    		this.m_videoAdIsLoaded = false;
    		this.nativeAd = null;
    		this.resTemp = null;
    		this.resIconTemp = null;
    		this.nativeIconAd = null;
    		this.systemInfo = null;
    		this.isShowNative = false;
    	}
    	onInit(_callback) {
    		if (this.qg !== null && this.qg !== undefined) {
    			this.systemInfo = this.qg.getSystemInfoSync();
    			this.qg.setEnableDebug({
    				enableDebug: false,
    				success: function () {
    					console.log("test consol log");
    				},
    				complete: function () {
    				},
    				fail: function () {
    				}
    			});
    			this.qg.reportMonitor('game_scene', 0);
    		}
    		else {
    			this.qg = null;
    			console.error("qg==NULL");
    		}
    		_callback && _callback();
    		Laya.timer.once(50000, this, () => { this.isShowNative = true; console.log('可以展示原生了'); });
    		console.log("oppoH5GameAPI=============================>:onInit");
    	}
    	onLogin() {
    	}
    	onShare(_success) {
    	}
    	onShareVideo(_callback) {
    	}
    	createBanner() {
    	}
    	showBanner(id) {
    		id = '373468';
    		console.log(parseInt(Laya.LocalStorage.getItem("HaiDaobannerHideCount")), 'bannerID:', id);
    		if (this.qg !== null && this.qg !== undefined) {
    			if (Laya.LocalStorage.getItem("HaiDaobannerHideCount") != null && Laya.LocalStorage.getItem("HaiDaobannerHideCount") != undefined && parseInt(Laya.LocalStorage.getItem("HaiDaobannerHideCount")) > 5) {
    				console.log('banner 关闭超过5 次');
    				return;
    			}
    			if (this.systemInfo.platformVersionCode < 1051) {
    				console.log("版本号过低 无法创建横幅广告");
    				return;
    			}
    			if (this.bannerAd != null)
    				this.hideBanner();
    			this.bannerAd = this.qg.createBannerAd({
    				adUnitId: id,
    			});
    			this.bannerAd.show();
    			this.bannerAd.onShow(() => {
    				console.log("横幅广告调用 onShow");
    			});
    			this.bannerAd.onHide(() => {
    				Laya.LocalStorage.setItem("HaiDaobannerHideCount", (parseInt(Laya.LocalStorage.getItem("HaiDaobannerHideCount")) + 1).toString());
    				console.log("手动隐藏Banner:" + Laya.LocalStorage.getItem("HaiDaobannerHideCount"));
    			});
    			this.bannerAd.onLoad(function () {
    				console.log('banner 广告加载成功');
    			});
    			this.bannerAd.onError(function (err) {
    				console.log("banner 拉取 失败：", err.errCode, "errMsg:", err.errMsg);
    			});
    		}
    		else {
    		}
    		console.log("oppoH5GameAPI showBanner:", id);
    	}
    	hideBanner() {
    		if (this.bannerAd) {
    			this.bannerAd.destroy();
    			this.bannerAd = null;
    		}
    		console.log("oppoH5GameAPI hideBanner");
    	}
    	createVideo(id, callBack) {
    		console.log("创建激励视频=============:" + id);
    		if (this.qg !== null && this.qg !== undefined) {
    			if (this.systemInfo.platformVersionCode < 1051) {
    				console.log("版本号过低 无法创建激励视频广告");
    				return;
    			}
    			if (this.rewardedVideoAd) {
    				this.rewardedVideoAd.destroy();
    				this.rewardedVideoAd = null;
    			}
    			this.rewardedVideoAd = this.qg.createRewardedVideoAd({
    				adUnitId: '373474'
    			});
    			this.rewardedVideoAd.load();
    			this.rewardedVideoAd.onLoad(() => {
    				console.log("激励视频加载成功");
    				this.m_videoAdIsLoaded = true;
    				callBack && callBack();
    			});
    			this.rewardedVideoAd.onError((err) => {
    				console.log('373474');
    				console.log('激励视频错误码 =====>:' + err.errMsg + "message ======>:" + err.errMsg);
    				InsManager.GetInstance()._UIManager.ShowGameToast('视频创建失败，请稍后试试吧！', ToastType.Game);
    				this.m_videoAdIsLoaded = false;
    			});
    		}
    		console.log("Create RewardeVideoAd");
    	}
    	showVideo(id, _successCallback, _failCallback) {
    		if (this.qg) {
    			this.createVideo('373474', () => {
    				if (this.rewardedVideoAd && this.m_videoAdIsLoaded) {
    					this.rewardedVideoAd.show();
    					const onClose = (res) => {
    						if (res.isEnded) {
    							console.log('激励视频广告完成，发放奖励');
    							try {
    								_successCallback && _successCallback();
    							}
    							catch (error) {
    								console.error(error);
    							}
    						}
    						else {
    							console.log('激励视频广告取消关闭，不发放奖励');
    							InsManager.GetInstance()._UIManager.ShowGameToast('未观看完整视频无法获取奖励', ToastType.Game);
    							_failCallback && _failCallback();
    						}
    						this.rewardedVideoAd.offClose(onClose);
    					};
    					this.rewardedVideoAd.onError(function (err) {
    						InsManager.GetInstance()._UIManager.ShowGameToast('视频加载失败，请稍后试试吧！', ToastType.Game);
    						console.log("视频错误========", err.errCode, err.errMsg);
    					});
    					this.rewardedVideoAd.onClose(onClose);
    				}
    				else {
    					InsManager.GetInstance()._UIManager.ShowGameToast('广告还未准备好,请稍后再试', ToastType.Game);
    				}
    			});
    		}
    		else {
    			InsManager.GetInstance()._UIManager.ShowGameToast('广告还未准备好,请稍后再试', ToastType.Game);
    		}
    		console.log("显示OPPO RewardeVideoAd:", id);
    	}
    	showVideoAward() {
    		this.videoType = "";
    		this.arg = null;
    	}
    	showVideoFail() {
    		this.videoType = "";
    		this.arg = null;
    	}
    	createInsertAd() {
    	}
    	showInsertAd() {
    		if (this.qg != null && this.qg != undefined) {
    			if (this.systemInfo.platformVersionCode < 1051) {
    				console.log("版本号过低 无法创建插屏广告");
    				return;
    			}
    			if (this.interstitialAd) {
    				this.interstitialAd.destroy();
    				this.interstitialAd = null;
    			}
    			this.interstitialAd = this.qg.createInsertAd({
    				adUnitId: GameIdConfig.oppoID["InsertAdId"]
    			});
    			this.interstitialAd.load();
    			this.interstitialAd.onLoad(() => {
    				console.log('OPPOH5GameAPI InsertAd load success');
    				this.interstitialAd.show();
    			});
    			this.interstitialAd.onError((res) => {
    				console.log('OPPOH5GameAPI InsertAd load Error:' + res);
    				this.interstitialAd.destroy();
    				this.interstitialAd = null;
    			});
    			const onClose = (res) => {
    				this.interstitialAd.offClose(onClose);
    				this.interstitialAd.destroy();
    				this.interstitialAd = null;
    			};
    			this.interstitialAd.onClose(onClose);
    		}
    		console.log("oppoH5GameAPI showInsertAd");
    	}
    	createNativeAd() {
    	}
    	showNativeAd(id, callBack) {
    		id = '373473';
    		console.log('show Native AD:', id);
    		if (this.qg) {
    			if (this.nativeAd == null) {
    				this.nativeAd = this.qg.createNativeAd({
    					adUnitId: id
    				});
    			}
    			this.nativeAd.load();
    			const loadNative = (res) => {
    				console.log("原生资源:", res);
    				callBack && callBack(res, this.nativeAd);
    				this.nativeAd.offLoad(loadNative);
    			};
    			this.nativeAd.onLoad(loadNative);
    			this.nativeAd.onError((err) => {
    				if (InsManager.GetInstance()._DataSave.isDebug)
    					InsManager.GetInstance()._UIManager.ShowGameToast('原生错误码：' + err.errCode, ToastType.Game);
    				console.log("原生错误========", err.errCode, err.errMsg);
    			});
    		}
    		console.log("Show NativeAd:", '-' + id + '-');
    	}
    	onNativeAdClick(_id) {
    		if (this.nativeAd) {
    			this.nativeAd.reportAdClick({
    				adId: _id
    			});
    			console.log("点击原生三图广告：", _id);
    		}
    	}
    	onNativeReportAdShow(_id) {
    		this.nativeAd.reportAdShow({
    			adId: _id,
    		});
    	}
    	createNativeIconAd() {
    	}
    	showNativeIconAd(id, callBack) {
    		id = '373471';
    		if (!this.isShowNative) {
    			console.log('oppo 一分钟原生广告冷却');
    			return;
    		}
    		if (this.qg) {
    			if (this.nativeIconAd == null) {
    				this.nativeIconAd = this.qg.createNativeAd({
    					adUnitId: id
    				});
    			}
    			this.nativeIconAd.load();
    			const loadNative = (res) => {
    				console.log("原生icon广告加载======", res.adList[0].icon);
    				if (res && res.adList && res.adList[0] != undefined) {
    					this.resIconTemp = null;
    					this.resIconTemp = res.adList[0];
    					console.log("原生Icon 资源是又有的=====:" + res.adList[0].icon);
    					callBack && callBack(res.adList[0], this.nativeIconAd);
    				}
    				this.nativeIconAd.reportAdShow({
    					adId: res.adList[0].adId
    				});
    				this.nativeIconAd.offLoad(loadNative);
    			};
    			this.nativeIconAd.onLoad(loadNative);
    			this.nativeIconAd.onError((err) => {
    				console.log("原生icon错误=======", err.errCode + "errMsg:" + err.errMsg);
    			});
    		}
    		console.log("Show NativeAd_Icon: ", '-' + id + '-');
    	}
    	onNativeIconAdClick(_id) {
    		if (this.nativeIconAd) {
    			this.nativeIconAd.reportAdClick({ adId: _id });
    		}
    	}
    	saveDataToCache(_key, _value) {
    	}
    	readDataFromCache(_key) {
    	}
    	addDesktop(_callback) {
    		console.log("oppo 添加桌面");
    		if (this.qg != null && this.qg != undefined) {
    			if (this.systemInfo.platformVersionCode < 1044) {
    				console.log("版本号过低 无法创建桌面图标");
    				return;
    			}
    			this.qg.hasShortcutInstalled({
    				success: (res) => {
    					if (res == false) {
    						this.qg.installShortcut({
    							success: () => {
    								setTimeout(() => {
    									this.qg.hasShortcutInstalled({
    										success: (res) => {
    											if (res == false) {
    												_callback && _callback(false);
    												console.log("============>:取消创建桌面图标");
    											}
    											else {
    												_callback && _callback(true);
    												console.log("============>:成功创建桌面图标");
    											}
    										}
    									});
    								}, 500);
    							}
    						});
    					}
    					else {
    						console.log("存在图标");
    					}
    				},
    				fail: (err) => { },
    				complete: () => { }
    			});
    		}
    	}
    	getDestTop(_callback) {
    		if (this.qg) {
    			this.qg.hasShortcutInstalled({
    				success: (res) => {
    					if (res == false) {
    						_callback && _callback(false);
    						console.log("============>:没有图标");
    					}
    					else {
    						_callback && _callback(true);
    						console.log("============>:有桌面图标");
    					}
    				}
    			});
    		}
    	}
    	PlayShock() {
    		if (this.qg) {
    			this.qg.vibrateShort({
    				success: function (res) { console.log("震动成功"); },
    				fail: function (res) { console.log(`vibrateShort调用失败`); },
    				complete: function (res) { }
    			});
    		}
    	}
    	startRecordScreen() {
    	}
    	stopRecordScreen() {
    	}
    	createMoreGamesBtn() {
    	}
    	showMoreGamesBtn() {
    		if (this.qg) {
    			this.qg.navigateToMiniGame({
    				pkgName: GameIdConfig.oppoMoreGameIDArr[Platforms.getInstance().oppoMoreGameIndex],
    				success: function () { },
    				fail: function (res) {
    					console.log(JSON.stringify(res));
    				}
    			});
    		}
    		console.log('跳转到游戏：', Platforms.getInstance().oppoMoreGameIndex);
    	}
    	jumpToGame(_packageName) {
    		if (this.qg !== null && this.qg !== undefined) {
    			let obj = { pkgName: _packageName };
    			console.log("oppoH5GameAPI=============================jumpToGame>:", _packageName);
    			this.qg.navigateToMiniGame(obj);
    		}
    	}
    	ReportAnalytics(eventName, data) {
    	}
    	addColorBookmark() {
    	}
    	addSubscribeApp() {
    	}
    }

    class CalculateExtend {
    	static ReplaceOnIndex(str, index, char) {
    		let newstr = "";
    		for (let i = 0; i < str.length; i++) {
    			if (i != index) {
    				newstr += str[i];
    			}
    			else {
    				newstr += char.toString();
    			}
    		}
    		return newstr;
    	}
    	static SortSmalltoBig(arr) {
    		if (arr.length <= 1)
    			return;
    		for (let i = 0; i < arr.length; i++) {
    			for (let j = i; j < arr.length; j++) {
    				if (arr[i] > arr[j]) {
    					let temp = arr[i];
    					console.log(arr[i]);
    					arr[i] = arr[j];
    					arr[j] = temp;
    				}
    			}
    		}
    	}
    	static SortFormMinDis(sprite3DArr, target3D) {
    		if (sprite3DArr.length == 0)
    			return;
    		for (let i = 0; i < sprite3DArr.length; i++) {
    			for (let j = i; j < sprite3DArr.length; j++) {
    				if (Laya.Vector3.distance(target3D.transform.position, sprite3DArr[i].transform.position) > Laya.Vector3.distance(target3D.transform.position, sprite3DArr[j].transform.position)) {
    					let temp = sprite3DArr[i];
    					sprite3DArr[i] = sprite3DArr[j];
    					sprite3DArr[j] = temp;
    				}
    			}
    		}
    		return sprite3DArr;
    	}
    	static SortMinDisFormProp3D(sprite3DArr, target3D) {
    		for (let i = 0; i < sprite3DArr.length; i++) {
    			for (let j = i; j < sprite3DArr.length; j++) {
    				if (Laya.Vector3.distance(target3D.transform.position, sprite3DArr[i].node3D.transform.position) > Laya.Vector3.distance(target3D.transform.position, sprite3DArr[j].node3D.transform.position)) {
    					let temp = sprite3DArr[i];
    					sprite3DArr[i] = sprite3DArr[j];
    					sprite3DArr[j] = temp;
    				}
    			}
    		}
    		return sprite3DArr;
    	}
    	static RandomNumber(minNumber, maxNumber) {
    		return Math.floor(Math.random() * (maxNumber - minNumber + 1)) + minNumber;
    	}
    	static AngleBetween(vector1, vector2) {
    		let sin = vector1.x * vector2.y - vector2.x * vector1.y;
    		let cos = vector1.x * vector2.x + vector1.y * vector2.y;
    		return (Math.atan2(sin, cos) * (180 / Math.PI)) - 180;
    	}
    	static GetVector3Angle(sprite3DA, sprite3DB) {
    		if (sprite3DA == null || sprite3DB == null) {
    			console.error('有毒吗？');
    			return;
    		}
    		let dir = new Laya.Vector3(0, 0, 0);
    		Laya.Vector3.subtract(sprite3DA.transform.position, sprite3DB.transform.position, dir);
    		let angle = this.GetAngle(dir, sprite3DB);
    		return angle;
    	}
    	static GetAngle(vec, sprite3D) {
    		let v = new Laya.Vector3();
    		let nv = new Laya.Vector3();
    		sprite3D.transform.getForward(v);
    		Laya.Vector3.normalize(v, nv);
    		let nDot = (vec.x * v.x + vec.z * v.z);
    		let nn = Math.sqrt(vec.x * vec.x + vec.z * vec.z);
    		let mm = Math.sqrt(v.x * v.x + v.z * v.z);
    		let cosab = nDot / (nn * mm);
    		if (cosab < -1)
    			cosab = -1;
    		if (cosab > 1)
    			cosab = 1;
    		let radius = Math.acos(cosab);
    		let angle = radius * 180 / Math.PI;
    		return angle;
    	}
    }

    class NodeManager {
    	constructor() {
    		this.NodeDic = new Map();
    	}
    	static GetInstance() {
    		if (this.instance === null) {
    			this.instance = new NodeManager();
    		}
    		return this.instance;
    	}
    	AddNode(nodeName, node) {
    		if (this.NodeDic.has(nodeName)) {
    			this.NodeDic.get(nodeName).push(node);
    		}
    		else {
    			this.NodeDic.set(nodeName, new Array());
    			this.NodeDic.get(nodeName).push(node);
    		}
    	}
    	GetNode(nodeName) {
    		if (!this.NodeDic.has(nodeName)) {
    			console.log("未能获取到节点类型：" + nodeName);
    			return null;
    		}
    		for (let i = 0; i < this.NodeDic.get(nodeName).length; i++) {
    			let node = this.NodeDic.get(nodeName)[i];
    			if (node != null && node.active == false) {
    				return node;
    			}
    		}
    		return null;
    	}
    	GetHasNode(nodeName) {
    		if (!this.NodeDic.has(nodeName)) {
    			console.log("未能获取到节点类型：" + nodeName);
    			return null;
    		}
    		for (let i = 0; i < this.NodeDic.get(nodeName).length; i++) {
    			let node = this.NodeDic.get(nodeName)[i];
    			if (node != null)
    				return node;
    		}
    		return null;
    	}
    	RemoveNode(nodeName, node) {
    		try {
    			if (!this.NodeDic.has(nodeName)) {
    				console.log("不包含节点类型：" + nodeName);
    			}
    			if (node == null || node == undefined)
    				console.error('获取不到UI节点');
    			for (let i = 0; i < this.NodeDic.get(nodeName).length; i++) {
    				if (this.NodeDic.get(nodeName)[i] == node) {
    					this.NodeDic.get(nodeName)[i].active = false;
    					this.NodeDic.get(nodeName)[i].removeSelf();
    				}
    			}
    		}
    		catch (error) {
    			console.log(error);
    		}
    	}
    	RomoveNodes(names) {
    		for (let i = 0; i < names.length; i++) {
    			if (this.NodeDic.has(names[i]) && names[i] != PathData.cartoonPanel) {
    				for (let j = 0; j < this.NodeDic.get(names[i]).length; j++) {
    					this.NodeDic.get(names[i])[j].active = false;
    					this.NodeDic.get(names[i])[j].removeSelf();
    				}
    			}
    			else {
    				console.log("没有 节点类型 ：" + names[i]);
    			}
    		}
    	}
    	DeleteNode(nodeName, node) {
    		if (!this.NodeDic.has(nodeName)) {
    			console.log("不包含节点类型：" + nodeName);
    		}
    		for (let i = 0; i < this.NodeDic.get(nodeName).length; i++) {
    			if (this.NodeDic.get(nodeName)[i] == node)
    				this.NodeDic.get(nodeName).splice(i, 1);
    		}
    	}
    	IsHasKay(keyName) {
    		return this.NodeDic.has(keyName);
    	}
    }
    NodeManager.instance = null;

    class RewardsManager {
    	constructor() {
    		this.isShowKnapsackPanel = null;
    	}
    	static GetInstance() {
    		if (this.instance == null)
    			this.instance = new RewardsManager();
    		return this.instance;
    	}
    	Rewards_ExpandKnapsacklineClick(_succeedcall) {
    		Platforms.getInstance().showVideo('283014', () => {
    			_succeedcall && _succeedcall();
    		}, () => { });
    	}
    	Rewards_ExpandKnapsacklineBag(_succeedcall) {
    		Platforms.getInstance().showVideo('283014', () => {
    			InsManager.GetInstance()._knapsackManager.ExpandKnapsackline();
    			InsManager.GetInstance()._UIManager.knapsackPanel.Pocket_list.InitView();
    			InsManager.GetInstance()._UIManager.RemoveUIPanel(PathData.rewardsPopoutPanel_path, NodeManager.GetInstance().GetHasNode(PathData.rewardsPopoutPanel_path));
    			_succeedcall && _succeedcall();
    		}, () => { });
    	}
    	Rewards_PlayerResurgence(_succeedcall, _failCallback) {
    		Platforms.getInstance().showVideo('283013', () => {
    			_succeedcall && _succeedcall();
    		}, () => {
    			_failCallback && _failCallback();
    		});
    	}
    	Rewards_DoubleSignin(_succeedcall, _failCallback) {
    		Platforms.getInstance().showVideo('285943', () => {
    			_succeedcall && _succeedcall();
    		}, () => {
    			_failCallback && _failCallback();
    		});
    	}
    	Rewards_MailGetDouble(_succeedcall, _failCallback) {
    		Platforms.getInstance().showVideo('283017', () => {
    			_succeedcall && _succeedcall();
    		}, () => {
    			_failCallback && _failCallback();
    		});
    	}
    	Rewards_CoinSubsidy(_succeedcall, _failCallback) {
    		Platforms.getInstance().showVideo('283008', () => {
    			_succeedcall && _succeedcall();
    			InsManager.GetInstance()._MissionManager.MissionAward([], [], 500, 0, null, 1, true);
    		}, () => {
    			_failCallback && _failCallback();
    		});
    	}
    	Rewards_FreeBuyShop(_succeedcall, _failCallback) {
    		Platforms.getInstance().showVideo('283008', () => {
    			_succeedcall && _succeedcall();
    		}, () => {
    			_failCallback && _failCallback();
    		});
    	}
    	Rewards_CfmbLB(_succeedcall, _failCallback) {
    		Platforms.getInstance().showVideo('283006', () => {
    			_succeedcall && _succeedcall();
    		}, () => {
    			_failCallback && _failCallback();
    		});
    	}
    	Rewards_GetMtyAward(_succeedcall, _failCallback) {
    		Platforms.getInstance().showVideo('283015', () => {
    			_succeedcall && _succeedcall();
    		}, () => {
    			_failCallback && _failCallback();
    		});
    	}
    	Rewards_FyzsLB(_succeedcall, _failCallback) {
    		Platforms.getInstance().showVideo('283012', () => {
    			_succeedcall && _succeedcall();
    		}, () => {
    			_failCallback && _failCallback();
    		});
    	}
    	Rewards_SupplementLife(_succeedcall, _failCallback) {
    		this.isShowKnapsackPanel = true;
    		Platforms.getInstance().showVideo('257803', () => {
    			_succeedcall && _succeedcall();
    			this.isShowKnapsackPanel = false;
    		}, () => {
    			_failCallback && _failCallback();
    			this.isShowKnapsackPanel = false;
    		});
    	}
    	Rewards_Tczy_LB(_succeedcall, _failCallback) {
    		this.isShowKnapsackPanel = true;
    		Platforms.getInstance().showVideo('283017', () => {
    			this.isShowKnapsackPanel = false;
    			_succeedcall && _succeedcall();
    		}, () => {
    			this.isShowKnapsackPanel = false;
    			_failCallback && _failCallback();
    		});
    	}
    	Rewards_Weapon_LB(_succeedcall, _failCallback) {
    		this.isShowKnapsackPanel = true;
    		Platforms.getInstance().showVideo('283010', () => {
    			this.isShowKnapsackPanel = false;
    			_succeedcall && _succeedcall();
    		}, () => {
    			this.isShowKnapsackPanel = false;
    			_failCallback && _failCallback();
    		});
    	}
    	Rewards_Achievement(_succeedcall, _failCallback) {
    		Platforms.getInstance().showVideo('283010', () => {
    			_succeedcall && _succeedcall();
    		}, () => {
    			_failCallback && _failCallback();
    		});
    	}
    	Rewards_GetWeapon(_succeedcall, _failCallback) {
    		Platforms.getInstance().showVideo('283008', () => {
    			_succeedcall && _succeedcall();
    		}, () => {
    			_failCallback && _failCallback();
    		});
    	}
    	Rewards_UnLockCarRightToUse(_succeedcall, _failCallback) {
    		Platforms.getInstance().showVideo('283008', () => {
    			_succeedcall && _succeedcall();
    		}, () => {
    			_failCallback && _failCallback();
    		});
    	}
    	OpenRewardsBag(id, arg) {
    		if (!InsManager.GetInstance()._DataSave.isOpenAd)
    			return;
    		switch (id) {
    			case 1:
    				InsManager.GetInstance()._UIManager.ShowRewardsLiBaoPanel(0, PathData.rewards_path + 'dingji.png', () => {
    					RewardsManager.GetInstance().Rewards_Weapon_LB(() => {
    						if (InsManager.GetInstance()._SceneManager.mK4Box != null)
    							InsManager.GetInstance()._SceneManager.mK4Box.active = false;
    						InsManager.GetInstance()._UIManager.ShowAwardOutpopPanel([PropID.HJKB, PropID.medicalBox, PropID.bento], [1, 3, 3], 0, 0, 1, false);
    						InsManager.GetInstance()._UIManager.RemoveUIPanel(PathData.rewardsPopoutPanel_path, NodeManager.GetInstance().GetHasNode(PathData.rewardsPopoutPanel_path));
    						RewardsManager.GetInstance().HideRewardsPopoutPanel();
    						GameSystemData.GetInstance().DilyUseLiBaoData[0] = false;
    						if (arg != null && arg != undefined)
    							arg[0].visible = false;
    						InsManager.GetInstance()._DataSave.SaveGameData(PathData.GameSystemData);
    					});
    				});
    				break;
    			case 4:
    				if (InsManager.GetInstance()._knapsackManager.Knapsack_PlayerPocket.sumRow >= PlayerData.GetInstance().pocketMaxRow) {
    					InsManager.GetInstance()._UIManager.ShowGameToast('背包已满', ToastType.Hint);
    					return;
    				}
    				InsManager.GetInstance()._UIManager.ShowRewardsGiftPagPanel(0, PathData.rewards_path + 'kuochongbeib.png', ' 5 格背包空间', () => {
    					RewardsManager.GetInstance().Rewards_ExpandKnapsacklineBag(() => { });
    				});
    				break;
    			case 7:
    				InsManager.GetInstance()._UIManager.ShowRewardsPropoutPanel('500免费金币', ' 500 金币', PathData.icon_path + 'jinbi.png', () => {
    					RewardsManager.GetInstance().Rewards_CoinSubsidy(() => {
    						RewardsManager.GetInstance().HideRewardsPopoutPanel();
    					});
    				});
    				break;
    		}
    	}
    	HideRewardsPopoutPanel() {
    		Laya.timer.once(1000, this, () => {
    			let node = InsManager.GetInstance()._UIManager.owner.getChildByName(PathData.rewardsPopoutPanel_path);
    			if (node != null && node != undefined) {
    				node.active = false;
    				node.removeSelf();
    			}
    		});
    	}
    	OpenRandomLiBao() {
    		let rNum = CalculateExtend.RandomNumber(0, 3);
    		if (GameSystemData.GetInstance().DilyUseLiBaoData[rNum])
    			this.OpenRewardsBag(rNum);
    		else {
    			let liBaoIndex = this.GetLiBao();
    			if (liBaoIndex != null)
    				this.OpenRewardsBag(liBaoIndex);
    			else {
    				InsManager.GetInstance()._UIManager.ShowUI(PathData.shopPnale_path);
    			}
    		}
    	}
    	GetLiBao() {
    		let liBaoIndex = null;
    		for (let i = 0; i < GameSystemData.GetInstance().DilyUseLiBaoData.length; i++) {
    			if (GameSystemData.GetInstance().DilyUseLiBaoData[i]) {
    				liBaoIndex = i;
    				break;
    			}
    		}
    		return liBaoIndex;
    	}
    }
    RewardsManager.instance = null;

    class VivoNativeAdPanel_Ctrl extends UI_Ctrl {
    	constructor() {
    		super();
    		this.imgurl = '';
    		this.iconurl = '';
    		this.desctext = '';
    		this.adId = '';
    		this.titletext = '';
    		this.logourl = '';
    	}
    	onAwake() {
    		super.onAwake();
    		this.owner.zOrder = 10;
    	}
    	onEnable() {
    		InsManager.GetInstance()._UIManager.OnClassFrameAnimtion(this.view["center/bg"], this.owner, true, 1);
    		if (Platforms.getInstance().isHuaWei())
    			Laya.stage.on("onShow_NativeAdv", this, this.showGameReport);
    	}
    	UI_Animatoin() {
    		this.view["center/bg"].pos(0, -450);
    		Laya.Tween.to(this.view["center/bg"], { x: 0, y: 0 }, 1000, Laya.Ease.quintIn, Laya.Handler.create(this, function () {
    			UIManager._Instance.ScaleSizeUIAnimtion(this.view["center/bg"], 500, 1.13, this);
    		}));
    	}
    	onStart() {
    		this.view["center/bg/close_bt"].on(Laya.Event.CLICK, this, () => {
    			InsManager.GetInstance()._UIManager.OnClassFrameAnimtion(this.view["center/bg"], this.owner, false, 1);
    		});
    	}
    	SetPanelData() {
    		if (this.imgurl != "" && this.imgurl != undefined && this.imgurl != null) {
    			this.view["center/bg/ad_img"].skin = this.imgurl;
    			this.view["center/bg/icon"].visible = false;
    			this.view["center/bg/ad_img"].visible = true;
    			console.log('显示原生图片');
    		}
    		else {
    			this.view["center/bg/icon"].skin = this.iconurl;
    			this.view["center/bg/ad_img"].visible = false;
    			this.view["center/bg/icon"].visible = true;
    			console.log('显示原生icon   ???????????????????????????????????????');
    		}
    		this.view["center/bg/desc_label"].text = this.desctext;
    		this.view["center/bg/title"].text = this.titletext;
    		this.view["center/bg/ad_box"].on(Laya.Event.CLICK, this, this.AdReport);
    		this.view["center/bg/ad_bt"].on(Laya.Event.CLICK, this, this.AdReport);
    		if (Platforms.getInstance().isHuaWei()) {
    			this.view["center/bg/ad_bt"].visible = false;
    			this.view["center/bg/targetImg"].visible = false;
    		}
    	}
    	AdReport() {
    		Platforms.getInstance().onNativeAdClick(this.adId);
    		InsManager.GetInstance()._UIManager.RemoveUIPanel(PathData.vivoNativeAdPanel, this.owner);
    		console.log("点击原生广告:", this.adId);
    	}
    	InitView(res) {
    		if (res == null || res == undefined) {
    			InsManager.GetInstance()._UIManager.RemoveUIPanel(PathData.vivoNativeAdPanel, this.owner);
    			return;
    		}
    		this.adId = res.adId;
    		this.imgurl = res.imgUrlList[0];
    		this.iconurl = res.icon;
    		this.desctext = res.desc;
    		this.titletext = res.title;
    		this.logourl = res.logoUrl;
    		console.log('原生界面拿到资源==============：', this.imgurl);
    		this.SetPanelData();
    	}
    	showGameReport() {
    		if (this.adId != '' && Platforms.getInstance().isHuaWei())
    			Platforms.getInstance().onNativeReportAdShow(this.adId);
    	}
    	onDisable() {
    		this.view["center/bg/ad_box"].off(Laya.Event.CLICK, this, this.AdReport);
    		this.view["center/bg/ad_bt"].off(Laya.Event.CLICK, this, this.AdReport);
    		if (Platforms.getInstance().isHuaWei())
    			Laya.stage.off("onShow_NativeAdv", this, this.showGameReport);
    	}
    }

    class VivoH5GameAPI {
    	constructor() {
    		this.m_bannerAd = null;
    		this.m_videoAd = null;
    		this.m_insertAd = null;
    		this.m_nativeAd = null;
    		this.m_pInfo = 0;
    		this.m_qgInstance = null;
    		this.m_videoAdIsLoaded = false;
    		this.m_videoSuccessBack = null;
    		this.m_videoFailBack = null;
    		this.m_videoErrorBack = null;
    		this.qg = window['qg'];
    		this.nativeDelay = 0;
    		this.bannerDelay = 0;
    		this.isInsertDelay = false;
    		this.pack_Name = 'com.zsfz.hdsc.vivominigame';
    		this.app_ID = '105502112';
    		this.Media_ID = '7ba2791997134f3ab00f02fc35da421d';
    		this.video_ID = '815f9767ea1d4e79b2dde8213660c172';
    		this.nativeAd_ID = 'c22dde24e3e646f6a1b0747a2e56c39c';
    		this.banner_ID = '5b4dc0bf7ba7468bbf8b1a61246deebc';
    		this.nativeAd_ID_2 = '006581995a2e436ea321cf4ebc50ae29';
    		this.insert_ID = '99c6fc24d18748fba94a1c0db7ce9bd8';
    		this.resTemp = null;
    	}
    	getScreenSize() {
    		return new Laya.Size(1280, 720);
    	}
    	onInit(_callback) {
    		_callback && _callback();
    	}
    	onLogin() {
    		if (!this.qg)
    			this.qg = window['qg'];
    		if (!this.qg)
    			return;
    		this.qg.getSystemInfo({
    			success: (data) => {
    				this.m_pInfo = data.platformVersionCode;
    				this.createVideo(this.video_ID, null);
    				this.createNativeAd();
    			}
    		});
    		console.log('VivoH5GameAPI onLogin', this.qg);
    	}
    	onShare() {
    	}
    	updateHighScore(_score) {
    	}
    	onInitAdService() {
    	}
    	createBanner(style) {
    		this.hideBanner();
    		if (this.qg) {
    			if (style == '0') {
    				this.m_bannerAd = this.qg.createBannerAd({
    					posId: this.banner_ID,
    					style: {},
    				});
    				console.log('style:', this.m_bannerAd);
    			}
    			else {
    				this.m_bannerAd = this.qg.createBannerAd({
    					posId: this.banner_ID,
    					style: { left: GameConfig.width / 2, top: -150 },
    				});
    			}
    			console.log('VivoH5GameAPI createBannerAd');
    		}
    	}
    	showBanner(style) {
    		if (this.bannerDelay > 0) {
    			console.log('banner广告冷却中');
    			return;
    		}
    		if (this.m_pInfo < 1031) {
    			console.log("Platform 不支持banner 展示 " + this.m_pInfo.toString());
    			return;
    		}
    		this.createBanner(style);
    		if (this.m_bannerAd) {
    			this.m_bannerAd.show && this.m_bannerAd.show();
    			this.m_bannerAd.onLoad(() => {
    				this.m_bannerAd.show();
    				this.bannerDelay = 10;
    				Laya.timer.once(this.bannerDelay * 1000, this, () => { this.bannerDelay = 0; });
    				console.log("VivoH5GameAPI onShowBanner Success");
    			});
    			this.m_bannerAd.onError((err) => {
    				console.log("VivoH5GameAPI Banner错误码： " + err.errCode);
    			});
    		}
    		console.log("Show vivo Banner Ad");
    	}
    	hideBanner() {
    		if (this.m_bannerAd) {
    			this.m_bannerAd.destroy();
    			this.m_bannerAd = null;
    			console.log('VivoH5GameAPI onHideBanner');
    		}
    		console.log("Show Hide Banner Ad");
    	}
    	createVideo(id, callBack) {
    		if (this.m_pInfo < 1041) {
    			console.log("Platform " + this.m_pInfo.toString());
    			return;
    		}
    		if (this.qg) {
    			if (this.m_videoAd)
    				this.m_videoAd = null;
    			this.m_videoAd = this.qg.createRewardedVideoAd({
    				posId: this.video_ID
    			});
    			if (this.m_videoAd) {
    				this.m_videoAd.onLoad(() => {
    					this.m_videoAdIsLoaded = true;
    					console.log("VivoH5GameAPI onShowRewardedVideo Loaded");
    				});
    				this.m_videoAd.onError((err) => {
    					this.m_videoErrorBack && this.m_videoErrorBack();
    					Laya.timer.once(60000, this, () => {
    						this.m_videoAd.load();
    					});
    					console.log("VivoH5GameAPI onShowRewardedVideo Fail ", err.errCode, err.errMsg);
    				});
    				this.m_videoAdIsLoaded = true;
    			}
    		}
    		console.log('VivoH5GameAPI createRewardedVideoAd');
    	}
    	showVideo(_id, _successCallback, _failCallback) {
    		if (this.m_pInfo < 1041) {
    			console.log("Platform 不支持视频广告 " + this.m_pInfo.toString());
    			return;
    		}
    		this.m_videoSuccessBack = _successCallback;
    		this.m_videoFailBack = _failCallback;
    		this.m_videoErrorBack = this.m_videoErrorBack;
    		if (this.m_videoAd) {
    			const onClose = (res) => {
    				if (res && res.isEnded) {
    					this.m_videoAdIsLoaded = false;
    					this.m_videoSuccessBack && this.m_videoSuccessBack();
    					console.log('视频成功回调奖励');
    					Laya.timer.once(1000, this, () => {
    						this.m_videoAd.load();
    					});
    					console.log("VivoH5GameAPI onShowRewardedVideo Success");
    				}
    				else {
    					this.m_videoAdIsLoaded = false;
    					this.m_videoFailBack && this.m_videoFailBack();
    					Laya.timer.once(1000, this, () => {
    						this.m_videoAd.load();
    					});
    					InsManager.GetInstance()._UIManager.ShowGameToast('未完整观看视频无法获得奖励', ToastType.Game);
    					console.log("VivoH5GameAPI onShowRewardedVideo Cancel");
    				}
    				Laya.SoundManager.setMusicVolume(0.35);
    				Laya.SoundManager.setSoundVolume(0.8);
    				this.m_videoAd.offClose(onClose);
    			};
    			this.m_videoAd.onClose(onClose);
    			if (this.m_videoAdIsLoaded) {
    				Laya.timer.once(200, this, () => {
    					if (RewardsManager.GetInstance().isShowKnapsackPanel)
    						InsManager.GetInstance()._UIManager.ShowKnapsackPanel(KpOpenType.EquipmentList, InsManager.GetInstance()._knapsackManager.FindKnapsackData(PathData.Knapsack_EquipmentColumn, PropData.GetInstance().knapsackData).id, PropData.GetInstance().knapsackData);
    					this.m_videoAd.show();
    					Laya.SoundManager.setMusicVolume(0);
    					Laya.SoundManager.setSoundVolume(0);
    				});
    				InsManager.GetInstance()._UIManager.ShowGameToast('完整观看视频才能获得奖励', ToastType.Game);
    			}
    			else {
    				InsManager.GetInstance()._UIManager.ShowGameToast('视频还没准备好！稍候再试试吧！', ToastType.Game);
    			}
    		}
    		console.log("VivoH5GameAPI onShowRewardedVideo:", this.video_ID);
    	}
    	createInsertAd() {
    		if (this.qg) {
    			this.m_insertAd = this.qg.createInterstitialAd({
    				posId: this.insert_ID
    			});
    		}
    		console.log('VivoH5GameAPI createInsertAd');
    	}
    	showInsertAd() {
    		if (this.m_pInfo < 1031) {
    			console.log("Platform 不支持插屏" + this.m_pInfo.toString());
    			return;
    		}
    		this.createInsertAd();
    		console.log('VivoH5GameAPI onShowInsertAd');
    		if (this.m_insertAd) {
    			this.m_insertAd.onError((err) => {
    				console.log("VivoH5GameAPI onShowInsertAd " + err.errCode);
    			});
    			let nInsert = this.m_insertAd.show();
    			let self = this;
    			nInsert && nInsert.then(() => {
    				self.isInsertDelay = true;
    				Laya.timer.once(60000, this, () => { self.isInsertDelay = false; });
    				console.log("VivoH5GameAPI onShowInsertAd Suceess");
    			}).catch((err) => {
    				this.m_insertAd.load().then(() => {
    					this.m_insertAd.show();
    				});
    			});
    		}
    	}
    	createNativeAd() {
    		if (this.m_pInfo < 1053) {
    			console.log("Platform " + this.m_pInfo.toString());
    			return;
    		}
    		console.log('原生广告ID:' + this.nativeAd_ID);
    		this.m_nativeAd = this.qg.createNativeAd({
    			posId: this.nativeAd_ID,
    		});
    		console.log('VivoH5GameAPI createNativeAd');
    	}
    	showNativeAd(_id, _callback, type) {
    		if (type == 0 && this.nativeDelay > 0) {
    			console.log('原生广告冷却中');
    			return;
    		}
    		if (type == 0)
    			this.nativeAd_ID = 'c22dde24e3e646f6a1b0747a2e56c39c';
    		if (type == 1)
    			this.nativeAd_ID = '006581995a2e436ea321cf4ebc50ae29';
    		if (this.m_pInfo < 1053) {
    			console.log("Platform 太低不支持原生 " + this.m_pInfo.toString());
    			return;
    		}
    		this.createNativeAd();
    		if (this.m_nativeAd) {
    			this.m_nativeAd.load();
    			this.m_nativeAd.onLoad((res) => {
    				if (res && res.adList) {
    					this.resTemp = res.adList[res.adList.length - 1];
    					if (this.resTemp) {
    						Laya.timer.once(500, this, () => {
    							_callback && _callback(this.resTemp);
    							if (type == 0) {
    								let vivoNativeAdPanel = InsManager.GetInstance()._UIManager.ShowUI(PathData.vivoNativeAdPanel).getComponent(VivoNativeAdPanel_Ctrl);
    								vivoNativeAdPanel.InitView(this.resTemp);
    								this.nativeDelay = 10;
    								Laya.timer.once(this.nativeDelay * 1000, this, () => { this.nativeDelay = 0; });
    							}
    							else if (type == 1) {
    								_callback && _callback(this.resTemp, this.m_nativeAd);
    							}
    							this.hideBanner();
    							console.log('vivo 原生', type, this.resTemp);
    							this.m_nativeAd.reportAdShow({
    								adId: this.resTemp.adId,
    							});
    						});
    					}
    					else {
    						console.log('原生拉取失败');
    					}
    				}
    			});
    			this.m_nativeAd.onError((err) => {
    				console.log("Native Error ======= " + err.errCode);
    			});
    		}
    		else {
    			this.createNativeAd();
    			console.log('重新创建原生');
    		}
    		console.log('vivoH5GameAPI onShowNativeAd');
    	}
    	onNativeAdClick(_id) {
    		if (this.m_nativeAd) {
    			this.m_nativeAd.reportAdClick({
    				adId: _id,
    			});
    			console.log('上报原生:', this.m_nativeAd, _id);
    		}
    		else {
    			console.log('没有 this.m_nativeAd');
    		}
    	}
    	onNativeReportAdShow(_id) {
    	}
    	saveDataToCache(_key, _value, _IsNumber) {
    		localStorage.setItem(_key, _value);
    	}
    	onShake() {
    		if (this.qg)
    			this.qg.vibrateShort();
    	}
    	readDataFromCache(_key, _IsNumber) {
    		let ret;
    		if (_IsNumber)
    			ret = parseInt(localStorage.getItem(_key));
    		else
    			ret = localStorage.getItem(_key);
    		return ret;
    	}
    	ReportAnalytics(eventName, data) {
    	}
    	getGGTypeToCheck() {
    		return 1;
    	}
    	onShareVideo(_callback) {
    		throw new Error("Method not implemented.");
    	}
    	showVideoAward() {
    		throw new Error("Method not implemented.");
    	}
    	showVideoFail() {
    		throw new Error("Method not implemented.");
    	}
    	createNativeIconAd() {
    		throw new Error("Method not implemented.");
    	}
    	showNativeIconAd(id, callBack) {
    		throw new Error("Method not implemented.");
    	}
    	onNativeIconAdClick(_id) {
    		throw new Error("Method not implemented.");
    	}
    	addDesktop(_callback) {
    		if (this.qg != null && this.qg != undefined) {
    			console.log('vivo 添加桌面22222');
    			this.qg.hasShortcutInstalled({
    				success: (res) => {
    					if (res == false) {
    						this.qg.installShortcut({
    							success: () => {
    								setTimeout(() => {
    									this.qg.hasShortcutInstalled({
    										success: (res) => {
    											if (res == false) {
    												_callback && _callback(false);
    												console.log("============>:取消创建桌面图标");
    											}
    											else {
    												_callback && _callback(true);
    												console.log("============>:成功创建桌面图标");
    											}
    										}
    									});
    								}, 500);
    							}
    						});
    					}
    					else {
    						console.log("存在图标");
    					}
    				},
    				fail: (err) => { },
    				complete: () => { }
    			});
    		}
    		console.log('vivo 添加桌面');
    	}
    	getDestTop(_callback) {
    		if (this.qg) {
    			this.qg.hasShortcutInstalled({
    				success: function (status) {
    					if (status) {
    						_callback && _callback(true);
    						console.log('已创建');
    					}
    					else {
    						_callback && _callback(false);
    						console.log('未创建');
    					}
    				}
    			});
    		}
    	}
    	startRecordScreen() {
    		throw new Error("Method not implemented.");
    	}
    	stopRecordScreen() {
    		throw new Error("Method not implemented.");
    	}
    	createMoreGamesBtn() {
    		throw new Error("Method not implemented.");
    	}
    	showMoreGamesBtn() {
    		throw new Error("Method not implemented.");
    	}
    	jumpToGame(_packageName) {
    		throw new Error("Method not implemented.");
    	}
    	addColorBookmark() {
    		throw new Error("Method not implemented.");
    	}
    	addSubscribeApp() {
    		throw new Error("Method not implemented.");
    	}
    	PlayShock() {
    		if (this.qg) {
    			this.qg.vibrateShort();
    		}
    	}
    	startRecorder() { }
    	pauseRecorder() { }
    	resumeRecorder() { }
    	stopRecorder() { }
    	onShowAppBox() { }
    }

    class EventManager extends Laya.Script {
    	constructor() {
    		super();
    		this.eventMap = {};
    	}
    	onAwake() {
    		if (EventManager._Instance == null) {
    			EventManager._Instance = this;
    		}
    		else {
    			console.log("error : EventManager has multi instance ");
    			return;
    		}
    	}
    	Add_Listener(eventName, caller, func) {
    		if (this.eventMap[eventName] == null)
    			this.eventMap[eventName] = [];
    		let handler = { caller: caller, func: func };
    		this.eventMap[eventName].push(handler);
    	}
    	Remove_Listener(eventName, caller, func) {
    		if (this.eventMap[eventName] == null)
    			return;
    		for (let i = 0; i < this.eventMap[eventName].length; i++) {
    			let handler = this.eventMap[eventName][i];
    			if (handler.caller == caller && handler.func == func) {
    				this.eventMap[eventName].splice(i, 1);
    				i--;
    			}
    		}
    	}
    	Remove_ListenerAll(eventName) {
    		if (this.eventMap[eventName] == null)
    			return;
    		for (let i = 0; i < this.eventMap[eventName].length; i++) {
    			this.eventMap[eventName].splice(i, 1);
    			i--;
    		}
    	}
    	Dispatch_Event(eventName, update) {
    		if (this.eventMap[eventName] == null)
    			return;
    		for (var i = 0; i < this.eventMap[eventName].length; i++) {
    			let handler = this.eventMap[eventName][i];
    			handler.func.call(handler.caller, eventName, update);
    		}
    	}
    }
    EventManager._Instance = null;

    class toutiaoH5GameAPI {
    	constructor() {
    		this.tt = window["tt"];
    		this.bannerAd = null;
    		this.insertAd = null;
    		this.rewardedVideoAd = null;
    		this.m_videoAdIsLoaded = false;
    		this.nativeAd = null;
    		this.resTemp = null;
    		this.systemInfo = null;
    		this.windowWidth = 0;
    		this.windowHeight = 0;
    		this.recorder = null;
    		this.shareUrl = "https://www.zywxgames.com/Resource/zhangxinfei/XSJRSTProject/TT/share.jpg";
    		this.videoPath = null;
    		this.videoTimerTmp = 0;
    		this.isShowInster = true;
    		this.isNoShowVideo = 0;
    	}
    	onInit(_callback) {
    		_callback && _callback();
    		if (this.tt != null && this.tt != undefined) {
    			let res = this.tt.getSystemInfoSync();
    			if (res) {
    				this.windowWidth = res.windowWidth;
    				this.windowHeight = res.windowHeight;
    				this.systemInfo = res;
    			}
    			console.log(res);
    			this.recorder = this.tt.getGameRecorderManager();
    			this.createVideo();
    			this.tt.onShow((res) => {
    				console.log("============监听小游戏回到前台的事件============");
    			});
    			this.tt.onHide(() => {
    				console.log("============监听小游戏隐藏到后台事件=========");
    			});
    		}
    		console.log("toutiaoH5GameAPI onInit");
    	}
    	getDestTop(_callback) {
    	}
    	onLogin() {
    	}
    	onShare(_callback) {
    	}
    	startRecordScreen() {
    		if (this.tt == null || this.tt == undefined)
    			return;
    		if (!Platforms.getInstance().isTakeRecordVideo) {
    			console.log('重复录屏阻断');
    			return;
    		}
    		;
    		Platforms.getInstance().isTakeRecordVideo = false;
    		if (!this.recorder)
    			this.recorder = this.tt.getGameRecorderManager();
    		this.recorder.start({
    			duration: 30
    		});
    		this.recorder.onStart(res => {
    			this.videoTimerTmp = Date.now();
    			EventManager._Instance.Dispatch_Event(PathData.EVENT_UPDATERECORDINGSTATE, true);
    			console.log("=============头条开始录屏===============");
    		});
    		this.recorder.onStop(res => {
    			this.videoPath = res.videoPath;
    			if (this.videoPath != null)
    				Platforms.getInstance().isHasRecord = true;
    			EventManager._Instance.Dispatch_Event(PathData.EVENT_UPDATERECORDINGSTATE, false);
    			InsManager.GetInstance()._UIManager.ShowUI(PathData.TTSharePanel);
    			console.log("==========自动结束录屏===========", this.videoPath);
    		});
    		this.recorder.onError(res => {
    			console.log("========================>录屏失败:", res.errMsg);
    		});
    	}
    	stopRecordScreen() {
    		if (this.recorder) {
    			console.log("手动结束视频录制");
    			EventManager._Instance.Dispatch_Event(PathData.EVENT_UPDATERECORDINGSTATE, false);
    			this.recorder.stop();
    			this.recorder.onStop(res => {
    				this.videoPath = res.videoPath;
    				if (this.videoPath != null)
    					Platforms.getInstance().isHasRecord = true;
    				InsManager.GetInstance()._UIManager.ShowUI(PathData.TTSharePanel);
    			});
    		}
    	}
    	ShareVideoJudge() {
    		if (this.recorder) {
    			return true;
    		}
    		else {
    			return false;
    		}
    	}
    	onShareVideo(_callback) {
    		if (this.tt != null && this.tt != undefined && this.videoPath != null) {
    			console.log("this.videoPath======", this.videoPath);
    			let self = this;
    			this.tt.shareAppMessage({
    				channel: "video",
    				title: "海岛生存",
    				desc: "一个人的海岛冒险之旅",
    				extra: {
    					videoPath: this.videoPath,
    					videoTopics: ['一个人的海岛冒险之旅']
    				},
    				success() {
    					Platforms.getInstance().isTakeRecordVideo = true;
    					_callback && _callback(1);
    				},
    				fail(e) {
    					Platforms.getInstance().isTakeRecordVideo = true;
    					console.log('分享视频失败', e);
    					_callback && _callback(0);
    				}
    			});
    		}
    		else {
    			InsManager.GetInstance()._UIManager.ShowGameToast('暂时没有录屏，请稍后再试试！', ToastType.Game);
    		}
    		console.log("toutiaoH5GameAPI onShareVideo");
    	}
    	createBanner(id) {
    		let targetBannerAdWidth = 188;
    		this.bannerAd = null;
    		if (id = '0') {
    			this.bannerAd = this.tt.createBannerAd({
    				adUnitId: GameIdConfig.toutiaoID["bannerAdId"],
    				adIntervals: 30,
    				style: {
    					width: targetBannerAdWidth,
    					left: (this.windowWidth - targetBannerAdWidth) / 2,
    					top: this.windowHeight - targetBannerAdWidth / 16 * 9,
    				}
    			});
    		}
    		else {
    			this.bannerAd = this.tt.createBannerAd({
    				adUnitId: GameIdConfig.toutiaoID["bannerAdId"],
    				adIntervals: 30,
    				style: {
    					width: targetBannerAdWidth,
    					left: (this.windowWidth - targetBannerAdWidth) / 2,
    					top: this.windowHeight - 100,
    				}
    			});
    		}
    		console.log("banner left top", targetBannerAdWidth, (this.windowWidth - targetBannerAdWidth) / 2, this.windowHeight - (targetBannerAdWidth / 16 * 9));
    	}
    	showBanner(id) {
    		if (this.tt != null && this.tt != undefined) {
    			if (this.systemInfo.appName == "Douyin") {
    				return;
    			}
    			this.hideBanner();
    			this.createBanner(id);
    			this.bannerAd.onLoad(() => {
    				this.bannerAd.show().then(() => {
    					console.log('show banner success');
    				}).catch(err => {
    					console.log('show banner fail ', err);
    				});
    			});
    			let onResizeCallback = (size) => {
    				console.log(size.width, size.height);
    				this.bannerAd.style.top = this.windowHeight - size.height;
    				this.bannerAd.style.left = (this.windowWidth - size.width) / 2;
    				this.bannerAd.offResize(onResizeCallback);
    			};
    			this.bannerAd.onResize(onResizeCallback);
    		}
    		console.log("TT =>显示banner");
    	}
    	hideBanner() {
    		console.log("隐藏banner");
    		if (this.bannerAd) {
    			this.bannerAd.destroy();
    			this.bannerAd = null;
    		}
    	}
    	createVideo() {
    		if (this.tt != null && this.tt != undefined) {
    			this.rewardedVideoAd = this.tt.createRewardedVideoAd({
    				adUnitId: GameIdConfig.toutiaoID["rewardedVideoAdId"]
    			});
    			console.log("toutiaoH5GameAPI 创建激励视频", this.rewardedVideoAd);
    			this.rewardedVideoAd.load().then(() => {
    				console.log("广告加载成功");
    				this.m_videoAdIsLoaded = true;
    			}).catch((err) => {
    				console.log("广告加载失败：", err);
    				this.m_videoAdIsLoaded = false;
    			});
    		}
    	}
    	showVideo(_type, _successCallback, _failCallback) {
    		this.videoType = _type;
    		if (this.rewardedVideoAd && this.m_videoAdIsLoaded) {
    			if (RewardsManager.GetInstance().isShowKnapsackPanel)
    				InsManager.GetInstance()._UIManager.ShowKnapsackPanel(KpOpenType.EquipmentList, InsManager.GetInstance()._knapsackManager.FindKnapsackData(PathData.Knapsack_EquipmentColumn, PropData.GetInstance().knapsackData).id, PropData.GetInstance().knapsackData);
    			this.rewardedVideoAd.show().then(() => {
    				console.log("广告显示成功");
    			}).catch((err) => {
    				console.error("广告组件出现问题", err);
    				InsManager.GetInstance()._UIManager.ShowGameToast('广告组件出现问题', ToastType.Game);
    				_failCallback && _failCallback();
    			});
    			;
    			this.isNoShowVideo = 0;
    			const onCloseFunc = (res) => {
    				if (res && res.isEnded) {
    					console.log("onClose正常播放结束，可以下发游戏奖励");
    					_successCallback && _successCallback();
    					this.rewardedVideoAd.load().then(() => {
    						console.log("广告加载成功");
    						this.m_videoAdIsLoaded = true;
    					}).catch((err) => {
    						console.log("加载视频失败");
    						this.m_videoAdIsLoaded = false;
    					});
    				}
    				else {
    					InsManager.GetInstance()._UIManager.ShowGameToast("未完整看完视频无法获得奖励", ToastType.Game);
    					console.log("onClose播放中途退出，不下发游戏奖励");
    					_failCallback && _failCallback();
    					this.rewardedVideoAd.load().then(() => {
    						console.log("广告加载成功");
    						this.m_videoAdIsLoaded = true;
    					}).catch((err) => {
    						this.m_videoAdIsLoaded = false;
    					});
    				}
    				this.rewardedVideoAd.offClose(onCloseFunc);
    			};
    			this.rewardedVideoAd.onClose(onCloseFunc);
    		}
    		else {
    			console.log("初始化失败重新创建加载");
    			this.createVideo();
    			InsManager.GetInstance()._UIManager.ShowGameToast('视频加载失败，请稍后再试试', ToastType.Game);
    			_failCallback && _failCallback();
    		}
    	}
    	showVideoAward() {
    		this.videoType = "";
    		this.arg = null;
    	}
    	showVideoFail() {
    		this.videoType = "";
    		this.arg = null;
    	}
    	createInsertAd() {
    	}
    	showInsertAd() {
    		if (!this.isShowInster)
    			return;
    		if (this.tt != null && this.tt != undefined) {
    			this.insertAd = this.tt.createInterstitialAd({
    				adUnitId: GameIdConfig.toutiaoID["InsertAdId"]
    			});
    			this.insertAd
    				.load()
    				.then(() => {
    					this.insertAd.show();
    					this.isShowInster = false;
    					Laya.timer.once(30000, this, () => { this.isShowInster = true; });
    				})
    				.catch(function (err) {
    					console.log(err, "插屏错误码");
    				});
    		}
    		console.log("toutiaoH5GameAPI showInsertAd");
    	}
    	createNativeAd() {
    	}
    	showNativeAd(id, _callback) {
    	}
    	PlayShock() {
    		if (!this.tt)
    			return;
    		if (this.systemInfo == null) {
    			console.log('获取系统失败');
    			return;
    		}
    		console.log(this.systemInfo.platform, this.systemInfo.appName, parseInt(this.systemInfo.version[2]));
    		console.log(this.systemInfo.version);
    		if (this.systemInfo.platform == "ios" && this.systemInfo.appName == "Toutiao" && parseInt(this.systemInfo.version[2]) < 7) {
    			console.log('版本播放震动会有BUG ');
    			return;
    		}
    		this.tt.vibrateShort({
    			success(res) {
    			},
    			fail(res) {
    			},
    		});
    	}
    	onNativeReportAdShow(_id) {
    	}
    	onNativeAdClick(_id) {
    	}
    	createNativeIconAd() {
    	}
    	showNativeIconAd() {
    	}
    	onNativeIconAdClick(_id) {
    	}
    	saveDataToCache(_key, _value) {
    	}
    	readDataFromCache(_key) { }
    	addDesktop(_callback) { }
    	createMoreGamesBtn() { }
    	showMoreGamesBtn() {
    		console.log("更多游戏");
    		if (this.tt != null && this.tt != undefined) {
    			if (this.systemInfo.platform == "ios") {
    				InsManager.GetInstance()._UIManager.ShowGameToast('抱歉！ios暂不支持', ToastType.Game);
    				return;
    			}
    			this.tt.showMoreGamesModal && this.tt.showMoreGamesModal({
    				appLaunchOptions: [],
    				success: () => {
    				},
    				fail: (err) => {
    				}
    			});
    		}
    	}
    	addColorBookmark() { }
    	addSubscribeApp() { }
    	ReportAnalytics(eventName, data) {
    		if (this.tt) {
    			this.tt.reportAnalytics(eventName, data);
    			if (InsManager.GetInstance()._DataSave.isDebug)
    				console.log("打点事件保存：" + eventName);
    		}
    	}
    	jumpToGame(_packageName) { }
    }

    class AndroidGameAPI {
    	constructor() {
    		this.videoType = null;
    		this.arg = null;
    		this.bridge = null;
    		this.gType = 0;
    		this.isInterDelay = false;
    		this.interDelayTime = 0;
    	}
    	onInit(_callback) {
    		try {
    			this.bridge = window["PlatformClass"].createClass("com.zsfz.zhcz3.JSBridge");
    		}
    		catch (error) {
    			console.log(error);
    		}
    		if (this.bridge == null || this.bridge == undefined)
    			console.error('平台未找到 bridge:', this, this.bridge);
    		this.getGGTypeFromPlatform();
    		_callback && _callback();
    	}
    	onLogin() {
    	}
    	getGGTypeFromPlatform() {
    		if (this, this.bridge) {
    			this.bridge.callWithBack((res) => {
    				let data = JSON.parse(res);
    				this.gType = data.gType;
    				if (this.gType == 1) {
    					this.interDelayTime = 60000;
    				}
    				else if (this.gType == 2) {
    					this.interDelayTime = 30000;
    				}
    				else if (this.gType == 3) {
    					this.interDelayTime = 1000;
    				}
    				else {
    					this.interDelayTime = 0;
    				}
    				if (this.gType > 0) {
    					InsManager.GetInstance()._DataSave.isOpenAd = true;
    				}
    				else {
    					InsManager.GetInstance()._DataSave.isOpenAd = false;
    				}
    			}, "getGGType");
    		}
    	}
    	createBanner(id) { }
    	showBanner(id) {
    		if (!InsManager.GetInstance()._DataSave.isOpenAd)
    			return;
    		console.log("show android banner ad");
    		if (this.gType <= 0)
    			return;
    		if (this.bridge) {
    			this.bridge.call("showBanner");
    		}
    	}
    	hideBanner() { }
    	createVideo(id, callBack) { }
    	showVideo(id, _successCallback, _failCallback) {
    		console.log("show android rewardedvideo ad");
    		if (this.gType <= 0)
    			return;
    		if (this.bridge) {
    			this.bridge.callWithBack((res) => {
    				let data = JSON.parse(res);
    				switch (data.code) {
    					case "200":
    						console.log("video success");
    						_successCallback && _successCallback();
    						break;
    					case "201":
    						console.log("video fail");
    						InsManager.GetInstance()._UIManager.ShowGameToast('视频播放失败，请稍后再试试', ToastType.Game);
    						break;
    					case "202":
    						console.log("video close");
    						_failCallback && _failCallback();
    						InsManager.GetInstance()._UIManager.ShowGameToast('中途退出无法获得奖励', ToastType.Game);
    						break;
    					case "203":
    						InsManager.GetInstance()._UIManager.ShowGameToast('观看完整视频获得奖励', ToastType.Game);
    						console.log("video show");
    						break;
    				}
    			}, "showVideo");
    		}
    	}
    	onNativeReportAdShow(_id) {
    	}
    	showVideoAward() {
    		throw new Error("Method not implemented.");
    	}
    	showVideoFail() {
    		throw new Error("Method not implemented.");
    	}
    	showInsertAd() {
    		if (this.gType <= 0)
    			return;
    		if (this.bridge) {
    			this.bridge.call("showInsertAd");
    			this.isInterDelay = true;
    			Laya.timer.once(this.interDelayTime, this, this.SetInsterDelayTimer);
    		}
    	}
    	getScreenSize() {
    		return new Laya.Size(1280, 720);
    	}
    	updateHighScore(_score) { }
    	onInitAdService() { }
    	createBannerAd() {
    	}
    	onHideBanner() { }
    	createInsertAd() { }
    	getGGTypeToCheck() {
    		console.log("laya 取得广告参数为：" + this.gType);
    		return this.gType;
    	}
    	SetInsterDelayTimer() {
    		this.isInterDelay = false;
    	}
    	moreGame() {
    		if (this.bridge)
    			this.bridge.call("moreGame");
    	}
    	onShare() { }
    	createNativeAd() {
    	}
    	showNativeAd(id, callBack) {
    	}
    	onNativeAdClick(_id) {
    	}
    	createNativeIconAd() {
    	}
    	showNativeIconAd(id, callBack) {
    	}
    	onNativeIconAdClick(_id) {
    	}
    	addDesktop(_callback) {
    	}
    	getDestTop(_callback) {
    	}
    	startRecordScreen() {
    	}
    	stopRecordScreen() {
    	}
    	createMoreGamesBtn() {
    	}
    	showMoreGamesBtn() {
    	}
    	jumpToGame(_packageName) {
    	}
    	addColorBookmark() {
    	}
    	addSubscribeApp() {
    	}
    	ReportAnalytics(eventName, data) {
    	}
    	PlayShock() {
    		if (this.bridge) {
    			this.bridge.call("PlayShock");
    		}
    	}
    	onShareVideo(_callback) {
    	}
    	saveDataToCache(_key, _value, _IsNumber) {
    		Laya.LocalStorage.setItem(_key, _value);
    	}
    	readDataFromCache(_key, _IsNumber) {
    		if (!_IsNumber)
    			return Laya.LocalStorage.getItem(_key);
    		else {
    			let num = parseInt(Laya.LocalStorage.getItem(_key));
    			return num;
    		}
    	}
    }

    var Platform$1;
    (function (Platform) {
    	Platform[Platform["baidu_H5"] = 1] = "baidu_H5";
    	Platform[Platform["oppo_H5"] = 2] = "oppo_H5";
    	Platform[Platform["qqplay_H5"] = 3] = "qqplay_H5";
    	Platform[Platform["toutiao_H5"] = 4] = "toutiao_H5";
    	Platform[Platform["vivo_H5"] = 5] = "vivo_H5";
    	Platform[Platform["weixin_H5"] = 6] = "weixin_H5";
    	Platform[Platform["x4399_H5"] = 7] = "x4399_H5";
    	Platform[Platform["xiaomi_H5"] = 8] = "xiaomi_H5";
    	Platform[Platform["huawei_H5"] = 9] = "huawei_H5";
    	Platform[Platform["android"] = 10] = "android";
    	Platform[Platform["ios"] = 11] = "ios";
    })(Platform$1 || (Platform$1 = {}));
    class Platforms {
    	constructor() {
    		this.isDirectGetAward = false;
    		this.isHasRecord = false;
    		this.isTakeRecordVideo = true;
    		this.oppoMoreGameIndex = 0;
    		this.platformAPI = null;
    		this.platform = Platform$1.huawei_H5;
    	}
    	static getInstance() {
    		if (this.mInstance === null) {
    			this.mInstance = new Platforms();
    		}
    		return this.mInstance;
    	}
    	onInit(_callback) {
    		switch (this.platform) {
    			case Platform$1.oppo_H5:
    				this.platformAPI = new oppoH5GameAPI();
    				break;
    			case Platform$1.vivo_H5:
    				this.platformAPI = new VivoH5GameAPI();
    				break;
    			case Platform$1.toutiao_H5:
    				this.platformAPI = new toutiaoH5GameAPI();
    				break;
    			case Platform$1.android:
    				this.platformAPI = new AndroidGameAPI();
    				break;
    			case Platform$1.huawei_H5:
    				break;
    		}
    		if (this.platformAPI && this.platformAPI !== null) {
    			this.platformAPI.onInit(_callback);
    		}
    	}
    	onLogin() {
    		this.platformAPI && this.platformAPI.onLogin();
    	}
    	onShare(_success) {
    		this.platformAPI && this.platformAPI.onShare(_success);
    	}
    	createBanner(id) {
    		this.platformAPI && this.platformAPI.createBanner(id);
    	}
    	showBanner(id) {
    		this.platformAPI && this.platformAPI.showBanner(id);
    	}
    	hideBanner() {
    		this.platformAPI && this.platformAPI.hideBanner();
    	}
    	createVideo(id, callBack) {
    		this.platformAPI && this.platformAPI.createVideo(id, callBack);
    	}
    	showVideo(id, _successCallback, _failCallback) {
    		PlatformAdManager.getInstance().showRewardVideo(() => {
    			_successCallback && _successCallback();
    		}, () => {
    			_failCallback && _failCallback();
    		});
    	}
    	showVideoAward() {
    		this.platformAPI && this.platformAPI.showVideoAward();
    	}
    	showVideoFail() {
    		this.platformAPI && this.platformAPI.showVideoFail();
    	}
    	createInsertAd() {
    		this.platformAPI && this.platformAPI.createInsertAd();
    	}
    	showInsertAd() {
    		this.platformAPI && this.platformAPI.showInsertAd();
    	}
    	createNativeAd() {
    		this.platformAPI && this.platformAPI.createNativeAd();
    	}
    	showNativeAd(id, callBack, type) {
    		this.platformAPI && this.platformAPI.showNativeAd(id, callBack, type);
    	}
    	onNativeAdClick(_id) {
    		this.platformAPI && this.platformAPI.onNativeAdClick(_id);
    	}
    	createNativeIconAd() {
    		this.platformAPI && this.platformAPI.createNativeIconAd();
    	}
    	showNativeIconAd(id, callBack) {
    		this.platformAPI && this.platformAPI.showNativeIconAd(id, callBack);
    	}
    	onNativeIconAdClick(_id) {
    		this.platformAPI && this.platformAPI.onNativeIconAdClick(_id);
    	}
    	saveDataToCache(_key, _value) {
    		this.platformAPI && this.platformAPI.saveDataToCache(_key, _value);
    	}
    	readDataFromCache(_key) {
    		this.platformAPI && this.platformAPI.readDataFromCache(_key);
    	}
    	addDesktop(_callback) {
    		this.platformAPI && this.platformAPI.addDesktop(_callback);
    	}
    	getDestTop(_callback) {
    		this.platformAPI && this.platformAPI.getDestTop(_callback);
    	}
    	onShareVideo(_callback) {
    		this.platformAPI && this.platformAPI.onShareVideo(_callback);
    	}
    	startRecordScreen() {
    		this.platformAPI && this.platformAPI.startRecordScreen();
    	}
    	stopRecordScreen() {
    		this.platformAPI && this.platformAPI.stopRecordScreen();
    	}
    	createMoreGamesBtn() {
    		this.platformAPI && this.platformAPI.createMoreGamesBtn();
    	}
    	showMoreGamesBtn() {
    		this.platformAPI && this.platformAPI.showMoreGamesBtn();
    	}
    	jumpToGame(_packageName) {
    		this.platformAPI && this.platformAPI.jumpToGame(_packageName);
    	}
    	addColorBookmark() {
    		this.platformAPI && this.platformAPI.addColorBookmark();
    	}
    	addSubscribeApp() {
    		this.platformAPI && this.platformAPI.addSubscribeApp();
    	}
    	onNativeReportAdShow(_id) {
    		this.platformAPI && this.platformAPI.onNativeReportAdShow(_id);
    	}
    	PlayShock() {
    		this.platformAPI && this.platformAPI.PlayShock();
    	}
    	ReportAnalytics(eventName, data) {
    		if (this.isToutiao()) {
    			this.platformAPI && this.platformAPI.ReportAnalytics(eventName, data);
    		}
    	}
    	isOppo() {
    		let arr = [Platform$1.oppo_H5];
    		for (let i = 0; i < arr.length; ++i) {
    			if (arr[i] === this.platform) {
    				return true;
    			}
    		}
    		return false;
    	}
    	isVivo() {
    		let arr = [Platform$1.vivo_H5];
    		for (let i = 0; i < arr.length; ++i) {
    			if (arr[i] == this.platform) {
    				return true;
    			}
    		}
    		return false;
    	}
    	isToutiao() {
    		let arr = [Platform$1.toutiao_H5];
    		for (let i = 0; i < arr.length; ++i) {
    			if (arr[i] === this.platform) {
    				return true;
    			}
    		}
    		return false;
    	}
    	isQQplay() {
    		let arr = [Platform$1.qqplay_H5];
    		for (let i = 0; i < arr.length; ++i) {
    			if (arr[i] === this.platform) {
    				return true;
    			}
    		}
    		return false;
    	}
    	isAndroid() {
    		let arr = [Platform$1.android];
    		for (let i = 0; i < arr.length; ++i) {
    			if (arr[i] === this.platform) {
    				return true;
    			}
    		}
    		return false;
    	}
    	isIos() {
    		let arr = [Platform$1.ios];
    		for (let i = 0; i < arr.length; ++i) {
    			if (arr[i] === this.platform) {
    				return true;
    			}
    		}
    		return false;
    	}
    	isHuaWei() {
    		let arr = [Platform$1.huawei_H5];
    		for (let i = 0; i < arr.length; ++i) {
    			if (arr[i] === this.platform) {
    				return true;
    			}
    		}
    		return false;
    	}
    }
    Platforms.mInstance = null;

    class SoundsManager {
    	static PlayBgMusic(soundPath, volume) {
    		let random = Math.random() * 2;
    		if (random >= 1)
    			soundPath = PathData.bigMapMusic;
    		else {
    			soundPath = PathData.gameSceneMusic;
    		}
    		this.bgMusic = soundPath;
    		this.bgVolume = volume;
    		if (!GameSystemData.GetInstance().isPlayMusic)
    			volume = 0;
    		Laya.SoundManager.playMusic(PathData.soundPrefixPath + soundPath + PathData.soundTpye, 0);
    		Laya.SoundManager.setMusicVolume(volume);
    	}
    	static StopBgMusic() {
    		if (!GameSystemData.GetInstance().isPlayMusic)
    			Laya.SoundManager.setMusicVolume(0);
    	}
    	static PlaySounds(soundPath, volume, isLoop) {
    		if (!GameSystemData.GetInstance().isPlaySound)
    			return;
    		if (soundPath == null || soundPath == "") {
    			console.log("Error 音效路径为：" + soundPath);
    			return;
    		}
    		let loopCount = 1;
    		if (isLoop)
    			loopCount = 0;
    		let soundChannel = Laya.SoundManager.playSound(PathData.soundPrefixPath + soundPath + PathData.soundTpye, loopCount);
    		if (soundChannel == null) {
    			return;
    		}
    		if (volume != null && volume != undefined)
    			soundChannel.volume = volume;
    		else
    			soundChannel.volume = 1;
    		return soundChannel;
    	}
    	static vibration() {
    		if (GameSystemData.GetInstance().isShake) {
    			Platforms.getInstance().PlayShock();
    		}
    	}
    }
    SoundsManager.bgMusic = "";
    SoundsManager.bgVolume = 1;

    var ScreenStandard = {
    	Width: 1280,
    	Height: 720,
    };

    class Toast_Ctrl extends UI_Ctrl {
    	constructor() {
    		super();
    		this.image = null;
    		this.label = null;
    		this.duration = 2000;
    		this.isUse = false;
    		this.callArr = [];
    	}
    	Open(str, toastType) {
    		if (this.isUse) {
    			return;
    		}
    		if (this.image == null)
    			super.onAwake();
    		SoundsManager.PlaySounds(PathData.sound_buttonSound, 1);
    		this.isUse = true;
    		this.image = this.owner;
    		this.label = this.view["label"];
    		this.label.text = str;
    		this.image.alpha = 0;
    		this.image.width = this.label.fontSize * this.label.text.length + 100;
    		this.label.width = this.image.width;
    		this.label.pos(this.image.width / 2, this.image.height / 2);
    		let self = this;
    		if (toastType == ToastType.Game) {
    			this.image.anchorX = 0.5;
    			this.image.anchorY = 0.5;
    			this.image.scale(0, 0);
    			let x = (Laya.stage.width / 2);
    			let y = (Laya.stage.height / 2);
    			this.image.pos(x, y);
    			Laya.timer.once(300 + this.duration, this, () => { InsManager.GetInstance()._UIManager.RemoveUIPanel("Toast", this.owner); });
    			Laya.Tween.to(this.image, { scaleX: 1, scaleY: 1, alpha: 1 }, 300, Laya.Ease.linearIn);
    			Laya.Tween.to(this.image, { scaleX: 0, scaleY: 0, alpha: 0 }, 300, Laya.Ease.linearInOut, Laya.Handler.create(this, function () {
    			}), this.duration);
    		}
    		else if (toastType == ToastType.Hint) {
    			this.image.anchorX = 0;
    			this.image.anchorY = 0;
    			this.image.scale(0.95, 0.95);
    			let x = (Laya.stage.width - ((this.image.width * this.image.scaleX)));
    			let y = (Laya.stage.height / 2);
    			this.image.pos(x, y);
    			Laya.timer.once(300 + this.duration, this, () => { InsManager.GetInstance()._UIManager.RemoveUIPanel("Toast", this.owner); });
    			Laya.Tween.to(this.image, { x: (Laya.stage.width / 2) + (70 * (Laya.stage.width / ScreenStandard.Width)), alpha: 1 }, 300, Laya.Ease.linearIn);
    			Laya.Tween.to(this.image, { alpha: 0 }, 300, Laya.Ease.linearInOut, Laya.Handler.create(this, function () {
    			}), this.duration);
    		}
    		else {
    			console.log("Error : Undefined ToastType:" + toastType);
    		}
    	}
    	onDisable() {
    		this.isUse = false;
    		Laya.timer.clearAll(this);
    	}
    }

    var MainMissionData = [
    	{
    		title: '移动摇杆到杰姆森身边',
    		mission_ID: 0,
    		sceneType: SceneType.BigScene,
    		mission_Type: MissionType.LookForNpcTask,
    		dialog: ['X移动摇杆走到杰姆森身边，与他对话'],
    		select: {},
    		msg: "跟随屏幕指引，移动摇杆到杰姆森处领取任务",
    		tkd: "跟随屏幕指引，移动摇杆到杰姆森处领取任务",
    		transform: { pos: [new Laya.Vector3(37.35, 0, -79.4)], rotate: [-90] },
    		award: { prop: { propIDArr: [PropID.beer], propCountArr: [2] }, cion: 20, exp: 0 },
    		makeProp: [PropID.Philip],
    		propCount: [1],
    		endlog: ['3你终于来了，我等你很久了'],
    	},
    	{
    		title: '前往狂热金属俱乐部',
    		mission_ID: 1,
    		mission_Type: MissionType.MoveEndPosTask,
    		sceneType: SceneType.BigScene,
    		dialog: ['3玛丽被四名黑衣人绑架了，就在这个俱乐部里面。顺利救出玛丽，以决定我是否雇佣你。', '0小菜一碟。', 'X前往狂热金属俱乐部'],
    		select: {},
    		msg: "前往狂热金属俱乐部，击败黑衣人救出玛丽",
    		tkd: "前往狂热金属俱乐部，击败黑衣人救出玛丽",
    		transform: { pos: [], rotate: [] },
    		award: { prop: { propIDArr: [PropID.bento, PropID.beer], propCountArr: [1, 2] }, cion: 30, exp: 0 },
    		makeProp: [PropID.LantouJLB],
    		propCount: [1],
    		endlog: [],
    	},
    	{
    		title: '拯救玛丽',
    		mission_ID: 2,
    		mission_Type: MissionType.LookForNpcTask,
    		sceneType: SceneType.LantouJLB,
    		dialog: ['X打败黑衣人，救出玛丽'],
    		select: {},
    		msg: "击败黑衣人救出玛丽",
    		tkd: "击败黑衣人救出玛丽",
    		transform: { pos: [new Laya.Vector3(-17.16, 0.66, 2.39)], rotate: [-90] },
    		award: { prop: { propIDArr: [PropID.Bandage], propCountArr: [2] }, cion: 30, exp: 0 },
    		makeProp: [PropID.Alice_rope],
    		propCount: [1],
    		endlog: [],
    	},
    	{
    		title: '大门突围',
    		mission_ID: 3,
    		mission_Type: MissionType.MoveEndPosTask,
    		sceneType: SceneType.LantouJLB,
    		dialog: ['0小鬼，我是杰姆森委托过来救你的，你现在安全了。', '1他们还有一伙人出去吃饭了，现在差不多快回来了，我们得赶紧走。', 'S时间紧急，追兵可能很快就到。我该……'],
    		select: { plot_1: 'A.走大门英勇杀出', plot_2: 'B.认怂走后门逃跑', dialog_1: ['0该来的就来吧！妳跟紧我', 'X带着玛丽从大门突围'], dialog_2: ['0可恶，后门被锁死了，看来只能正面硬干了', 'X带着玛丽从大门突围'] },
    		msg: "干掉敌人，从大门突围",
    		tkd: "干掉敌人，从大门突围",
    		transform: {},
    		award: { prop: { propIDArr: [PropID.kele, PropID.beer], propCountArr: [1, 2] }, cion: 20, exp: 0 },
    		makeProp: [PropID.outDoor],
    		propCount: [1],
    		endlog: [],
    	},
    	{
    		title: '回去见杰姆森',
    		mission_ID: 4,
    		mission_Type: MissionType.LookForNpcTask,
    		sceneType: SceneType.BigScene,
    		dialog: ['0回去见杰姆森吧！'],
    		select: {},
    		msg: "回去找杰姆森",
    		tkd: "回去找杰姆森",
    		transform: { pos: [new Laya.Vector3(37.35, 0, -79.4)], rotate: [0] },
    		award: { prop: { propIDArr: [PropID.sandwich], propCountArr: [2] }, cion: 20, exp: 0 },
    		makeProp: [PropID.Philip],
    		propCount: [1],
    		endlog: [],
    	},
    	{
    		title: '前往车库',
    		mission_ID: 5,
    		mission_Type: MissionType.MoveEndPosTask,
    		sceneType: SceneType.BigScene,
    		dialog: ['3干的不错。接下来的一个月，你需要保护好玛丽的人身安全。', '3你到旁边的车库去吧，那里有给你准备好的车辆。', 'X前往车库'],
    		select: {},
    		msg: "前往车库",
    		tkd: "前往车库",
    		transform: { pos: [new Laya.Vector3(66.3, 0, -16.13)], rotate: [0] },
    		award: { prop: { propIDArr: [PropID.kele], propCountArr: [1] }, cion: 20, exp: 0 },
    		makeProp: [PropID.MainTaskPoint],
    		propCount: [1],
    		endlog: [],
    	},
    	{
    		title: '临时藏身',
    		mission_ID: 6,
    		mission_Type: MissionType.MoveEndPosTask,
    		sceneType: SceneType.BigScene,
    		dialog: ['0詹姆那里应该是个不错的藏身之所，希望这小子这次靠谱点吧。', 'X根据小地图指示，到詹姆家。'],
    		select: {},
    		msg: "驱车前往詹姆家临时藏身",
    		tkd: "驱车前往詹姆家临时藏身",
    		transform: { pos: [new Laya.Vector3(-1.2, 0, 5.3)], rotate: [0] },
    		award: { prop: { propIDArr: [PropID.beer], propCountArr: [3] }, cion: 20, exp: 0 },
    		makeProp: [PropID.MarkHouse],
    		propCount: [1],
    		endlog: [],
    	},
    	{
    		title: '詹姆的背叛',
    		mission_ID: 7,
    		mission_Type: MissionType.HuntTask,
    		sceneType: SceneType.MarkHouse,
    		dialog: ['D看在老朋友的份上，交出那女孩，放你一条生路！', '0詹姆，我这么信任你居然背叛我', 'S该死的，所谓的老朋友果然不靠谱。我现在应该……'],
    		select: { plot_1: 'A-认怂开溜', plot_2: 'B教训詹姆', dialog_1: ['0不行，我一定要教训一下这叛徒。'], dialog_2: ['0我要让你看看叛徒都是什么下场，准备跪下来求饶吧！', 'X击败詹姆和他的喽啰。'] },
    		msg: "击败詹姆和他的喽啰",
    		tkd: "击败詹姆和他的喽啰",
    		transform: { pos: [new Laya.Vector3(-1.2, 0, 5.3)], rotate: [0] },
    		award: { prop: { propIDArr: [PropID.bento], propCountArr: [1] }, cion: 20, exp: 0 },
    		makeProp: [PropID.Mark],
    		propCount: [1],
    		endlog: [],
    	},
    	{
    		title: '离开詹姆家',
    		mission_ID: 8,
    		mission_Type: MissionType.MoveEndPosTask,
    		sceneType: SceneType.MarkHouse,
    		dialog: ['0詹姆，这是你自找的，你知道我最讨厌的就是背叛！', '0詹姆家应该有不少好东西，找找看有没有什么能带走的,拿完得赶紧离开这里！', 'X搜刮詹姆家，然后离开'],
    		select: { plot_1: 'A-认怂开溜', plot_2: 'B教训詹姆', dialog_1: ['0不行，我一定要教训一下这叛徒。'], dialog_2: ['0我要让你看看叛徒都是什么下场，准备跪下来求饶吧！', 'X击败詹姆和他的喽啰。'] },
    		msg: "搜刮詹姆家，然后离开",
    		tkd: "搜刮詹姆家，然后离开",
    		transform: { pos: [new Laya.Vector3(-1.2, 0, 5.3)], rotate: [0] },
    		award: { prop: { propIDArr: [PropID.Bandage], propCountArr: [2] }, cion: 20, exp: 0 },
    		makeProp: [PropID.outDoor],
    		propCount: [1],
    		endlog: [],
    	},
    	{
    		title: '前往教父酒吧',
    		mission_ID: 9,
    		mission_Type: MissionType.MoveEndPosTask,
    		sceneType: SceneType.BigScene,
    		dialog: ['0事情没有想象中这么简单，看来要去找那个女人帮忙才行。', 'X根据地图指示，到教父酒吧找到露西娅。'],
    		select: {},
    		msg: "前往教父酒吧",
    		tkd: "前往教父酒吧",
    		transform: { pos: [], rotate: [] },
    		award: { prop: { propIDArr: [PropID.kele], propCountArr: [2] }, cion: 10, exp: 0 },
    		makeProp: [PropID.HongYueJLB],
    		propCount: [1],
    		endlog: [],
    	},
    	{
    		title: '露西娅的援手',
    		mission_ID: 10,
    		mission_Type: MissionType.LookForNpcTask,
    		sceneType: SceneType.HongYueJLB,
    		dialog: ['0露西娅应该就在这教父酒吧里了，找找看。', 'X在教父酒吧里找到露西娅'],
    		select: {},
    		msg: "在教父酒吧里找到露西娅",
    		tkd: "在教父酒吧里找到露西娅",
    		transform: { pos: [new Laya.Vector3(-8.36, 0, -11.3)], rotate: [0] },
    		award: { prop: { propIDArr: [PropID.beer], propCountArr: [2] }, cion: 10, exp: 0 },
    		makeProp: [PropID.Lisa],
    		propCount: [1],
    		endlog: [],
    	},
    	{
    		title: '露西娅的条件',
    		mission_ID: 11,
    		mission_Type: MissionType.MoveEndPosTask,
    		sceneType: SceneType.HongYueJLB,
    		dialog: ['B哟，什么风把我们落日城第一赏金猎人给吹来了？。', '0帮个忙，我需要把个女孩暂时藏在这里。', 'B你知道我这里的规矩的，帮我完成一件事。帮我去收拾一个弄丢我货物的蠢蛋。', '0这个蠢蛋在哪里？', 'B他就在废弃小巷。', 'X根据大地图指示，前往 废弃小巷。'],
    		select: {},
    		msg: "离开教父酒吧，前往废弃小巷",
    		tkd: "离开教父酒吧，前往废弃小巷",
    		transform: { pos: [new Laya.Vector3(-1.2, 0, 5.3)], rotate: [0] },
    		award: { prop: { propIDArr: [PropID.coinPick], propCountArr: [2] }, cion: 0, exp: 0 },
    		makeProp: [PropID.outDoor],
    		propCount: [1],
    		endlog: [],
    	},
    	{
    		title: '前往废弃小巷',
    		mission_ID: 12,
    		mission_Type: MissionType.MoveEndPosTask,
    		sceneType: SceneType.BigScene,
    		dialog: ['X前往废弃小巷'],
    		select: {},
    		msg: "前往废弃小巷",
    		tkd: "前往废弃小巷",
    		transform: { pos: [new Laya.Vector3(-1.2, 0, 5.3)], rotate: [0] },
    		award: { prop: { propIDArr: [PropID.beer], propCountArr: [1] }, cion: 10, exp: 0 },
    		makeProp: [PropID.CsZs],
    		propCount: [1],
    		endlog: [],
    	},
    	{
    		title: '找到丢失货物的人',
    		mission_ID: 13,
    		mission_Type: MissionType.LookForNpcTask,
    		sceneType: SceneType.CsZs,
    		dialog: ['0这里应该就是废弃小巷了，找找看有没有露西娅所说的那个人。'],
    		select: {},
    		msg: "搜寻小巷，找到把货物弄丢的人",
    		tkd: "搜寻小巷，找到把货物弄丢的人",
    		transform: { pos: [new Laya.Vector3(-35.27, 0, -27.44)], rotate: [0] },
    		award: { prop: { propIDArr: [], propCountArr: [] }, cion: 30, exp: 0 },
    		makeProp: [PropID.Frank],
    		propCount: [1],
    		endlog: [],
    	},
    	{
    		title: '离开小巷',
    		mission_ID: 14,
    		mission_Type: MissionType.MoveEndPosTask,
    		sceneType: SceneType.CsZs,
    		dialog: ['0弗兰克，果然是你。你怎么把露西娅给得罪了？', '2唉，一言难尽。是山本堂的老三把那批货给吞了！', 'S如何回答弗兰克'],
    		select: { plot_1: 'A-你的办事能力不行啊！', plot_2: 'B-需要我帮忙么？', dialog_1: ['2你小子别幸灾乐祸，反正情况你知道了，总不能对老朋友见死不救吧？', '0看来找回那批货才是关键。', '2你肯帮我找山本堂的人要货？好吧，我欠你一个人情……', 'X跟随指引，到山本堂仓库拿回货物。'], dialog_2: ['2真的吗艾迪？你真是我的救星！', '0看来找回那批货才是关键。', '2是的，帮我把货从山本堂那拿回来，我欠你一个人情……', 'X跟随指引，到山本堂仓库拿回货物。'] },
    		msg: "离开小巷，到山本堂仓库拿回货物。",
    		tkd: "离开小巷",
    		transform: {},
    		award: { prop: { propIDArr: [], propCountArr: [] }, cion: 30, exp: 0 },
    		makeProp: [PropID.outDoor],
    		propCount: [1],
    		endlog: [],
    	},
    	{
    		title: '前往仓库拿回货物',
    		mission_ID: 15,
    		mission_Type: MissionType.MoveEndPosTask,
    		sceneType: SceneType.BigScene,
    		dialog: ['X到山本堂仓库拿回丢失的货物。'],
    		select: {},
    		msg: "到山本堂仓库拿回丢失的货物。",
    		tkd: "到山本堂仓库拿回丢失的货物。",
    		transform: { pos: [new Laya.Vector3(-150, 0, -150)], rotate: [0] },
    		award: { prop: { propIDArr: [PropID.bento, PropID.beer], propCountArr: [1, 1] }, cion: 10, exp: 0 },
    		makeProp: [PropID.MainTaskPoint],
    		propCount: [1],
    		endlog: [],
    	},
    	{
    		title: '归还货物',
    		mission_ID: 16,
    		mission_Type: MissionType.LookForNpcTask,
    		sceneType: SceneType.BigScene,
    		dialog: ['0这应该就是露西娅丢失的那批货物，现在可以回去交差咯！', 'X回到教父酒吧把货物归还露西娅'],
    		select: {},
    		msg: "回到教父酒吧把货物归还给露西娅。",
    		tkd: "回到教父酒吧把货物归还给露西娅。",
    		transform: { pos: [new Laya.Vector3(63.5, 0, 63.4)], rotate: [61] },
    		award: { prop: { propIDArr: [PropID.sandwich], propCountArr: [2] }, cion: 10, exp: 0 },
    		makeProp: [PropID.Lisa],
    		propCount: [1],
    		endlog: [],
    	},
    	{
    		title: '再生变故',
    		mission_ID: 17,
    		mission_Type: MissionType.MoveEndPosTask,
    		sceneType: SceneType.BigScene,
    		dialog: ['0你得货物我拿到了，但这么多人是怎么回事？', 'B风声走漏了，马上就有一大批的杀手追过来要人。', 'B你开着我的车带着小女孩去贫民窟躲一下吧', 'X驾驶露西娅的车前往贫民窟躲避大批杀手的追杀'],
    		select: {},
    		msg: "驾驶露西娅的车前往贫民窟躲避大批杀手的追杀",
    		tkd: "驾驶露西娅的车前往贫民窟躲避大批杀手的追杀",
    		transform: { pos: [new Laya.Vector3(-53, 0, 81)], rotate: [0] },
    		award: { prop: { propIDArr: [PropID.beer, PropID.bento], propCountArr: [1, 1] }, cion: 10, exp: 0 },
    		makeProp: [PropID.MainTaskPoint],
    		propCount: [1],
    		endlog: [],
    	},
    	{
    		title: '安保措施',
    		mission_ID: 18,
    		mission_Type: MissionType.CrackerTask,
    		sceneType: SceneType.BigScene,
    		dialog: ['0终于到贫民窟了，但是这个地方也不一定安全，我得在附近设置一些监控器才行', 'X在指点的标志点位置设置监控器'],
    		select: {},
    		msg: "在指点的标志点位置设置监控器",
    		tkd: "在指点的标志点位置设置监控器",
    		transform: { pos: [new Laya.Vector3(-1.2, 0, 5.3)], rotate: [0] },
    		award: { prop: { propIDArr: [PropID.coinPick], propCountArr: [2] }, cion: 10, exp: 0 },
    		makeProp: [PropID.CrackerTask],
    		propCount: [2],
    		endlog: [],
    	},
    	{
    		title: '前往幻影俱乐部',
    		mission_ID: 19,
    		mission_Type: MissionType.MoveEndPosTask,
    		sceneType: SceneType.BigScene,
    		dialog: ['0总算都搞定了~~', '0差点忘了还得找那个杰姆森拿第二笔酬金，顺便问问他接下来还会有多少麻烦？', '0他现在应该在幻影俱乐部，过去找找看吧！', 'X前往【幻影俱乐部】'],
    		select: {},
    		msg: "前往幻影俱乐部",
    		tkd: "前往幻影俱乐部",
    		transform: { pos: [new Laya.Vector3(-1.2, 0, 5.3)], rotate: [0] },
    		award: { prop: { propIDArr: [PropID.beer], propCountArr: [1] }, cion: 10, exp: 0 },
    		makeProp: [PropID.HyJLB],
    		propCount: [1],
    		endlog: [],
    	},
    	{
    		title: '寻找杰姆森',
    		mission_ID: 20,
    		mission_Type: MissionType.LookForNpcTask,
    		sceneType: SceneType.HyJLB,
    		dialog: ['0杰姆森应该就在俱乐部里，找找看。', 'X在俱乐部里找到【杰姆森】'],
    		select: {},
    		msg: "在俱乐部里找到【杰姆森】",
    		tkd: "在俱乐部里找到【杰姆森】",
    		transform: { pos: [new Laya.Vector3(-17.8, 0, -11.8)], rotate: [90] },
    		award: { prop: { propIDArr: [PropID.beer], propCountArr: [4] }, cion: 10, exp: 0 },
    		makeProp: [PropID.Philip],
    		propCount: [1],
    		endlog: ['3不愧是落日城的王牌赏金猎人，这是你的任务佣金。'],
    	},
    	{
    		title: '询问杰姆森',
    		mission_ID: 21,
    		mission_Type: MissionType.MoveEndPosTask,
    		sceneType: SceneType.HyJLB,
    		dialog: ['0玛丽到底为什么被悬赏？我还有多少敌人要对付？', '3我的合伙人，玛丽的父亲【杰克】去世后除了留给玛丽的一小笔开销，真正的大额遗产却不知藏去了哪里。', '3前几天不知谁放风说，杰克把遗产信息做成了【生物密码】，藏在了玛丽体内！', '3可怜的玛丽，他爹死了还把她当工具用……', 'S表明我对这件事的态度。 '],
    		select: {
    			plot_1: 'A-为什么要瞒着我这些事情？', plot_2: 'B-好吧！这件事除了我恐怕也没人敢接。',
    			dialog_1: ['3抱歉，但这件事知道的人越少越好。我会额外支付佣金给你，还请你再保护她一段时间。', '0那接下来我们应该做些什么？', '3我有个办法，可以将你们两人的生物信息更换，能骗过绝大部分的安保扫描和追踪系统。', '0有这个办法为什么不早点用？', '但是现在还缺两样关键材料，【特效肌肉软化剂】和【万能编码芯片】', '3你帮我到【黑市酒馆】找黑市酒馆老板【弗洛伊德】购买这两件材料。', '0So Easy 交给我!。', 'X前往目标地点【黑市酒馆】'],
    			dialog_2: ['3没错，所以才重金聘你。我已经在调查生物密码的事，等有眉目了我就接玛丽回去。', '0那接下来我们应该做些什么？', '3我有个办法，可以将你们两人的生物信息更换，能骗过绝大部分的安保扫描和追踪系统。', '0有这个办法为什么不早点用？', '但是现在还缺两样关键材料，【特效肌肉软化剂】和【万能编码芯片】', '3你帮我到【黑市酒馆】找黑市酒馆老板【弗洛伊德】购买这两件材料。', '0So Easy 交给我!。', 'X前往目标地点【黑市酒馆】']
    		},
    		msg: "前往目标地点【黑市酒馆】",
    		tkd: "前往目标地点【黑市酒馆】",
    		transform: {},
    		award: { prop: { propIDArr: [PropID.mpAgent], propCountArr: [1] }, cion: 20, exp: 0 },
    		makeProp: [PropID.outDoor],
    		propCount: [1],
    		endlog: [],
    	},
    	{
    		title: '前往黑市酒馆',
    		mission_ID: 22,
    		mission_Type: MissionType.MoveEndPosTask,
    		sceneType: SceneType.BigScene,
    		dialog: ['X前往黑市酒馆'],
    		select: {},
    		msg: "前往目标地点【黑市酒馆】",
    		tkd: "前往目标地点【黑市酒馆】",
    		transform: {},
    		award: { prop: { propIDArr: [PropID.beer], propCountArr: [1] }, cion: 20, exp: 0 },
    		makeProp: [PropID.YsJLB],
    		propCount: [1],
    		endlog: [],
    	},
    	{
    		title: '打听消息',
    		mission_ID: 23,
    		mission_Type: MissionType.MoveEndPosTask,
    		sceneType: SceneType.YsJLB,
    		dialog: ['0黑市酒馆老板应该就在柜台附近，过去找他。', 'X找到黑市酒馆老板'],
    		select: {},
    		msg: "找到黑市酒馆老板购买材料",
    		tkd: "找到黑市酒馆老板购买材料",
    		transform: { pos: [new Laya.Vector3(0.53, 0, -6.3)], rotate: [0] },
    		award: { prop: { propIDArr: [PropID.beer], propCountArr: [1] }, cion: 10, exp: 0 },
    		makeProp: [PropID.MainTaskPoint],
    		propCount: [1],
    		endlog: [],
    	},
    	{
    		title: '寻找黑帮小弟',
    		mission_ID: 24,
    		mission_Type: MissionType.LookForNpcTask,
    		sceneType: SceneType.YsJLB,
    		dialog: ['0嘿。我需要特效肌肉软化剂和万能编码芯片，多少钱能买到。', '6真不巧，你来慢了一步，这两样东西刚刚都被旁边那个黑帮小弟买走了。', '0行，那我去找他。', 'X在黑市酒馆中找到黑帮小弟'],
    		select: {},
    		msg: "在黑市酒馆中找到黑帮小弟",
    		tkd: "在黑市酒馆中找到黑帮小弟",
    		transform: { pos: [new Laya.Vector3(-10, 0, -14.3)], rotate: [-8.5] },
    		award: { prop: { propIDArr: [PropID.beer, PropID.medicalBox], propCountArr: [1, 2] }, cion: 5, exp: 0 },
    		makeProp: [PropID.Bigguy],
    		propCount: [1],
    		endlog: [],
    	},
    	{
    		title: '击败大块头',
    		mission_ID: 25,
    		mission_Type: MissionType.HuntTask,
    		sceneType: SceneType.YsJLB,
    		dialog: ['0嘿。我需要你手上的软化剂和芯片，开个价吧。', '5你是哪里冒出来的瘦猴子，想从我手上拿东西？？？打赢我就给你。', '0...看来钱都省了，来吧！', 'X打倒黑帮小弟'],
    		select: {},
    		msg: "打倒黑帮小弟",
    		tkd: "打倒黑帮小弟",
    		transform: { pos: [new Laya.Vector3(-10, 0, -14.3)], rotate: [-8.5] },
    		award: { prop: { propIDArr: [PropID.muscleAgent], propCountArr: [1] }, cion: 20, exp: 0 },
    		makeProp: [PropID.Bigguy],
    		propCount: [1],
    		endlog: ['5身手很不错嘛！软化剂给你，交个朋友！'],
    	},
    	{
    		title: '找到X小姐',
    		mission_ID: 26,
    		mission_Type: MissionType.LookForNpcTask,
    		sceneType: SceneType.YsJLB,
    		dialog: ['5至于万能编码芯片，我也已经转手给对面那位X小姐了，你找她去吧。', 'X在黑市酒馆里找到【X小姐】'],
    		select: {},
    		msg: "在黑市酒馆里找到【X小姐】",
    		tkd: "在黑市酒馆里找到【X小姐】",
    		transform: { pos: [new Laya.Vector3(4.65, 0, 4)], rotate: [-90] },
    		award: { prop: { propIDArr: [], propCountArr: [] }, cion: 20, exp: 0 },
    		makeProp: [PropID.Msx],
    		propCount: [1],
    		endlog: [],
    	},
    	{
    		title: '修理电脑',
    		mission_ID: 27,
    		mission_Type: MissionType.CrackerTask,
    		sceneType: SceneType.YsJLB,
    		dialog: ['0嘿美女，我需要你手上的软化剂和芯片，开个价吧。', '8万能编码芯片我这有，不过我记账的电脑被人黑掉了，你要能帮我解锁电脑，芯片就免费给你。', 'X帮助X小姐修复电脑'],
    		select: {},
    		msg: "帮助X小姐修复电脑",
    		tkd: "帮助X小姐修复电脑",
    		transform: { pos: [new Laya.Vector3(-1.2, 0, 5.3)], rotate: [0] },
    		award: { prop: { propIDArr: [PropID.chip, PropID.bento], propCountArr: [1, 1] }, cion: 20, exp: 0 },
    		makeProp: [PropID.CrackerTask],
    		propCount: [1],
    		endlog: ['8技术不错啊！给，答应送你的芯片。'],
    	},
    	{
    		title: '离开黑市酒馆',
    		mission_ID: 28,
    		mission_Type: MissionType.MoveEndPosTask,
    		sceneType: SceneType.YsJLB,
    		dialog: ['0以后电脑有问题找我就行。', '0材料都到手了，现在先回去平民窟吧！', 'X离开黑市酒馆'],
    		select: {},
    		msg: "离开黑市酒馆",
    		tkd: "离开黑市酒馆",
    		transform: {},
    		award: { prop: { propIDArr: [], propCountArr: [] }, cion: 20, exp: 0 },
    		makeProp: [PropID.outDoor],
    		propCount: [1],
    		endlog: [],
    	},
    	{
    		title: '返回平民窟临时藏身处',
    		mission_ID: 29,
    		mission_Type: MissionType.MoveEndPosTask,
    		sceneType: SceneType.BigScene,
    		dialog: ['X返回平民窟临时藏身处'],
    		select: {},
    		msg: "返回【平民窟临时藏身处】",
    		tkd: "返回【平民窟临时藏身处】",
    		transform: { pos: [new Laya.Vector3(-53, 0, 81)], rotate: [0] },
    		award: { prop: { propIDArr: [PropID.milk], propCountArr: [1] }, cion: 20, exp: 0 },
    		makeProp: [PropID.MainTaskPoint],
    		propCount: [1],
    		endlog: [],
    	},
    	{
    		title: '绝地突围',
    		mission_ID: 30,
    		mission_Type: MissionType.HuntTask,
    		sceneType: SceneType.BigScene,
    		dialog: ['A哈哈，艾迪，你终于出现了。想救出他们，就看你有没这个本事了！', '0一群不知死活的东西，我要把你们一个一个揍趴。', 'X打倒所有赏金猎人'],
    		select: {},
    		msg: "打倒所有赏金猎人",
    		tkd: "打倒所有赏金猎人",
    		transform: { pos: [new Laya.Vector3(-50, 0, 69), new Laya.Vector3(-50, 0, 65.7), new Laya.Vector3(-51.4, 0, 66.9)], rotate: [180, 180, 180] },
    		award: { prop: { propIDArr: [PropID.medicalBox], propCountArr: [3] }, cion: 20, exp: 0 },
    		makeProp: [PropID.Hunter],
    		propCount: [3],
    		endlog: [],
    	},
    	{
    		title: '询问弗兰克',
    		mission_ID: 31,
    		mission_Type: MissionType.LookForNpcTask,
    		sceneType: SceneType.BigScene,
    		dialog: ['0麻烦都解决了，赶快去看看弗兰克怎么样了。', 'X询问弗兰克'],
    		select: {},
    		msg: "询问弗兰克",
    		tkd: "询问弗兰克",
    		transform: { pos: [new Laya.Vector3(-53, 0, 81)], rotate: [2] },
    		award: { prop: { propIDArr: [], propCountArr: [] }, cion: 0, exp: 0 },
    		makeProp: [PropID.Frank],
    		propCount: [1],
    		endlog: [],
    	},
    	{
    		title: '前往【生化实验室】',
    		mission_ID: 32,
    		mission_Type: MissionType.MoveEndPosTask,
    		sceneType: SceneType.BigScene,
    		dialog: ['0弗兰克，你怎么样？', '2咳咳……那帮人把玛丽带去海莉实验室了。我不要紧，快去救她！', 'X前往【生化实验室】'],
    		select: {},
    		msg: "前往【生化实验室】",
    		tkd: "前往【生化实验室】",
    		transform: { pos: [new Laya.Vector3(-1.2, 0, 5.3)], rotate: [0] },
    		award: { prop: { propIDArr: [], propCountArr: [] }, cion: 30, exp: 0 },
    		makeProp: [PropID.Hlzs],
    		propCount: [1],
    		endlog: [],
    	},
    	{
    		title: '深入实验室',
    		mission_ID: 33,
    		mission_Type: MissionType.MoveEndPosTask,
    		sceneType: SceneType.Hlzs,
    		dialog: ['0玛丽应该被带到了实验室内部，看来我得继续深入寻找。', '0不过前边埋伏着很多敌人，得先解决掉这些麻烦。', 'X深入实验室内部'],
    		select: {},
    		msg: "解决路上的麻烦，深入实验室",
    		tkd: "解决路上的麻烦，深入实验室",
    		transform: { pos: [new Laya.Vector3(-30.28, 0, -18.24)], rotate: [0] },
    		award: { prop: { propIDArr: [PropID.medicalBox], propCountArr: [1] }, cion: 20, exp: 0 },
    		makeProp: [PropID.MainTaskPoint],
    		propCount: [1],
    		endlog: [],
    	},
    	{
    		title: '击败由【杰姆森】变身的【机械怪人】',
    		mission_ID: 34,
    		mission_Type: MissionType.HuntTask,
    		sceneType: SceneType.Hlzs,
    		dialog: ['3不愧是第一赏金猎人，居然还能活着到这里。可惜你还是来晚了，密码我已经破解了，藏宝点原来就在我们公司的实验室里面。我终于等到这一天了！', '3艾迪，你做得很好。现在全城都知道是我请你来保护玛丽的，这也让我的缓兵之计完美实现了。可惜啊，你知道得太多了！',
    			'X（杰姆森的黑衣人助手拿着发光密码球，走到旁边的一处密码门，使用密码球后门上却出现发光的提示字样“密码错误”。）', '3怎么回事？！密码怎么可能是错的？！', '4好久不见啊老伙计。你这条大鱼终于出现了！', '3杰克？！不可能！我亲眼看到你死了的！！',
    			'4那个是最先进的仿生技术替身。我不“死”一回，怎么知道身边有这么多你这种“好朋友”？', '3这不是真的……你这个杀千刀的老狐狸！！', '4再见了杰姆森。你是个不错的合伙人。但要当阴谋家、野心家，你还太嫩了点。', '3我不甘心！！！', 'X击败杰姆森驾驶的机械怪人',
    		],
    		select: {},
    		msg: "击败由【杰姆森】变身的【机械怪人】",
    		tkd: "击败由【杰姆森】变身的【机械怪人】",
    		transform: { pos: [new Laya.Vector3(-30.25, 0, -5.4)], rotate: [0] },
    		award: { prop: { propIDArr: [], propCountArr: [] }, cion: 0, exp: 0 },
    		makeProp: [PropID.Robot],
    		propCount: [1],
    		endlog: [],
    	},
    	{
    		title: '与杰克对话',
    		mission_ID: 35,
    		mission_Type: MissionType.LookForNpcTask,
    		sceneType: SceneType.Hlzs,
    		dialog: ['0呼呼呼~终于解决掉了这个大麻烦。', 'X过去询问杰克'],
    		select: {},
    		msg: "与杰克对话",
    		tkd: "与杰克对话",
    		transform: { pos: [new Laya.Vector3(-30.79, 0, -23)], rotate: [180] },
    		award: { prop: { propIDArr: [], propCountArr: [] }, cion: 0, exp: 0 },
    		makeProp: [PropID.Jack],
    		propCount: [1],
    		endlog: [],
    	},
    	{
    		title: '恭喜通关',
    		mission_ID: 36,
    		mission_Type: MissionType.MoveEndPosTask,
    		sceneType: SceneType.BigScene,
    		dialog: ['4艾迪先生，谢谢你保护了玛丽。诚心邀请你加入我团队，做我的保镖。！', "0心领了。我还是更喜欢做个自由的赏金猎人。", 'X恭喜你！你已经成功通关了《赛博之城》赏金猎人艾迪的全部主线剧情。现在你可以继续在城中接取未完成的支线任务、战斗、升级。'],
    		select: {},
    		msg: "恭喜通关",
    		tkd: "恭喜通关",
    		transform: { pos: [new Laya.Vector3(-1.2, -5, 5.3)], rotate: [0] },
    		award: { prop: { propIDArr: [], propCountArr: [] }, cion: 100, exp: 0 },
    		makeProp: [PropID.MainTaskPoint],
    		propCount: [1],
    		endlog: [],
    	},
    ];
    var HintMission = [
    	{
    		missionID: 0,
    		msg: ["蹲下可以悄悄移动到敌人背后而不被发现，背后攻击的效果是平常的两倍以上。"],
    	},
    	{
    		missionID: 1,
    		msg: ["一般的敌人身上都有战利品，试试靠近敌人尸体搜索吧！"],
    	},
    	{
    		missionID: 1,
    		msg: ["当背包物品超出限制时，可以把某些不需要的丢弃到垃圾桶里"],
    	},
    	{
    		missionID: 1,
    		msg: ["其他的区域看起来很危险，不过只要准备好足够的食物和武器就可以前往"],
    	},
    ];
    var MissionMonitorType;
    (function (MissionMonitorType) {
    	MissionMonitorType[MissionMonitorType["Prop3D_Trigger"] = 0] = "Prop3D_Trigger";
    	MissionMonitorType[MissionMonitorType["Prop3D_Get"] = 1] = "Prop3D_Get";
    	MissionMonitorType[MissionMonitorType["Open_Knapsack"] = 2] = "Open_Knapsack";
    	MissionMonitorType[MissionMonitorType["Close_Knapsack"] = 3] = "Close_Knapsack";
    	MissionMonitorType[MissionMonitorType["Button_Click"] = 4] = "Button_Click";
    	MissionMonitorType[MissionMonitorType["Prop_Exchange"] = 5] = "Prop_Exchange";
    	MissionMonitorType[MissionMonitorType["Emeny_Die"] = 6] = "Emeny_Die";
    	MissionMonitorType[MissionMonitorType["InDoorOut"] = 7] = "InDoorOut";
    	MissionMonitorType[MissionMonitorType["InDoorIn"] = 8] = "InDoorIn";
    })(MissionMonitorType || (MissionMonitorType = {}));

    class PopoutPanel_Ctrl extends UI_Ctrl {
    	constructor() {
    		super();
    		this.okCallback = null;
    		this.closeCallback = null;
    		this.closeBtClickCallBack = null;
    		this.isUse = false;
    		this.bg = null;
    		this.popoutArr = [];
    		this.bg_trigger = null;
    		this.isClose = false;
    	}
    	onAwake() {
    		super.onAwake();
    		this.bg_trigger = this.view["bg_trigger"];
    		this.bg = this.view["bg"];
    	}
    	InitPanel(type, textStr, okCallback, closeCallback, imgPath, closeBtClickCallBack, label_A, label_B) {
    		this.isClose = false;
    		if (this.isUse) {
    			console.log('这里可能导致弹框弹不出来');
    			this.popoutArr.push(() => { this.InitPanel(type, textStr, okCallback, closeCallback, imgPath); });
    			return;
    		}
    		console.log('显示弹框========');
    		this.okCallback = okCallback;
    		this.closeCallback = closeCallback;
    		this.closeBtClickCallBack = closeBtClickCallBack;
    		this.type = type;
    		this.bg = this.view["bg"];
    		this.isUse = true;
    		InsManager.GetInstance()._UIManager.OnClassFrameAnimtion(this.view["bg"], this.owner, true, 0.7);
    		for (let i = 0; i < this.bg.numChildren; i++) {
    			let ui_component = this.bg.getChildAt(i);
    			ui_component.visible = false;
    		}
    		switch (type) {
    			case PopoutPanelType.Norm:
    				this.view["bg/msg"].visible = true;
    				this.view["bg/msg"].text = textStr;
    				this.view["bg/cancel_bt"].visible = true;
    				this.view["bg/ok_bt"].visible = true;
    				break;
    			case PopoutPanelType.ShowImg:
    				SoundsManager.PlaySounds(PathData.sound_award);
    				let count = parseInt(textStr);
    				this.view["bg/img"].visible = true;
    				if (imgPath != null && imgPath != undefined)
    					this.view["bg/img"].skin = imgPath;
    				this.view["bg/center_ok_bt"].visible = true;
    				this.view["bg/count"].visible = true;
    				if (count) {
    					this.view["bg/count"].text = "X" + count;
    				}
    				else {
    					this.view["bg/count"].text = textStr;
    				}
    				SoundsManager.PlaySounds(PathData.sound_buttonSound, 1);
    				break;
    			case PopoutPanelType.Single:
    				this.view["bg/msg"].visible = true;
    				this.view["bg/msg"].text = textStr;
    				this.view["bg/center_ok_bt"].visible = true;
    				break;
    			case PopoutPanelType.video:
    				SoundsManager.PlaySounds(PathData.sound_award);
    				let count2 = parseInt(textStr);
    				this.view["bg/img"].visible = true;
    				if (imgPath != null && imgPath != undefined)
    					this.view["bg/img"].skin = imgPath;
    				this.view["bg/center_ok_bt"].visible = true;
    				this.view["bg/count"].visible = true;
    				this.view["bg/video"].visible = true;
    				if (count2) {
    					this.view["bg/count"].text = "X" + count2;
    				}
    				else {
    					this.view["bg/count"].text = textStr;
    				}
    				SoundsManager.PlaySounds(PathData.sound_buttonSound, 1);
    				break;
    			case PopoutPanelType.Select:
    				this.view["bg/msg"].visible = true;
    				this.view["bg/msg"].text = textStr;
    				this.view["bg/B_label"].visible = true;
    				this.view["bg/A_label"].visible = true;
    				this.view["bg/A_label"].text = label_A;
    				this.view["bg/B_label"].text = label_B;
    				break;
    		}
    		this.InitClickEvent();
    	}
    	InitClickEvent() {
    		switch (this.type) {
    			case PopoutPanelType.Norm:
    				this.view["bg/cancel_bt"].on(Laya.Event.CLICK, this, () => {
    					this.ClosePanel();
    					this.closeBtClickCallBack && this.closeBtClickCallBack();
    				});
    				this.view["bg/ok_bt"].on(Laya.Event.CLICK, this, () => { this.okCallback && this.okCallback(), this.ClosePanel(); });
    				break;
    			case PopoutPanelType.ShowImg:
    				this.view["bg/cancel_bt"].on(Laya.Event.CLICK, this, () => {
    					this.closeBtClickCallBack && this.closeBtClickCallBack();
    					this.ClosePanel();
    				});
    				this.view["bg/center_ok_bt"].on(Laya.Event.CLICK, this, () => { this.okCallback && this.okCallback(), this.ClosePanel(); });
    				break;
    			case PopoutPanelType.Single:
    				this.view["bg/center_ok_bt"].on(Laya.Event.CLICK, this, () => { this.okCallback && this.okCallback(), this.ClosePanel(); });
    				break;
    			case PopoutPanelType.video:
    				this.view["bg/cancel_bt"].on(Laya.Event.CLICK, this, () => {
    					this.closeBtClickCallBack && this.closeBtClickCallBack();
    					this.ClosePanel();
    				});
    				this.view["bg/center_ok_bt"].on(Laya.Event.CLICK, this, () => { this.okCallback && this.okCallback(), this.ClosePanel(); });
    				break;
    			case PopoutPanelType.Select:
    				this.view["bg/B_label"].on(Laya.Event.CLICK, this, () => {
    					this.closeCallback && this.closeCallback();
    					this.ClosePanel();
    				});
    				this.view["bg/A_label"].on(Laya.Event.CLICK, this, () => {
    					this.okCallback && this.okCallback();
    					this.ClosePanel();
    				});
    				break;
    		}
    	}
    	ClosePanel() {
    		if (this.isClose)
    			return;
    		this.isClose = true;
    		this.isUse = false;
    		if (this.popoutArr.length > 0) {
    			this.CloseClickEvent();
    			this.popoutArr[0]();
    			this.popoutArr.splice(0, 1);
    			return;
    		}
    		InsManager.GetInstance()._MissionManager.MissionOverAllMonitor(MissionMonitorType.Button_Click);
    		if (this.type != PopoutPanelType.Select)
    			this.closeCallback && this.closeCallback();
    		this.okCallback = null;
    		this.closeCallback = null;
    		this.type = null;
    		InsManager.GetInstance()._UIManager.OnClassFrameAnimtion(this.view["bg"], this.owner, false, 0.7);
    		console.log('关闭小弹框');
    	}
    	CloseClickEvent() {
    		this.view["bg/cancel_bt"].offAll(Laya.Event.CLICK);
    		this.view["bg/ok_bt"].offAll(Laya.Event.CLICK);
    		this.view["bg/center_ok_bt"].offAll(Laya.Event.CLICK);
    	}
    	onDisable() {
    		this.isUse = false;
    		this.CloseClickEvent();
    	}
    }
    var PopoutPanelType;
    (function (PopoutPanelType) {
    	PopoutPanelType[PopoutPanelType["Norm"] = 0] = "Norm";
    	PopoutPanelType[PopoutPanelType["ShowImg"] = 1] = "ShowImg";
    	PopoutPanelType[PopoutPanelType["Single"] = 2] = "Single";
    	PopoutPanelType[PopoutPanelType["video"] = 3] = "video";
    	PopoutPanelType[PopoutPanelType["Select"] = 4] = "Select";
    })(PopoutPanelType || (PopoutPanelType = {}));

    class KnapsackSaveData {
    	constructor() {
    		this.knapsackType = null;
    		this.id = -1;
    		this.name = "背包";
    		this.sumRow = 1;
    		this.maxRow = 2;
    		this.lineNum = 5;
    		this.propDataArr = new Array();
    		this.container3D = null;
    	}
    }

    class KnapsackItem extends Laya.Script {
    	constructor() {
    		super();
    		this.clickBack = null;
    		this.touchType = TouchType.UP;
    		this.touchId = null;
    		this.knapsackList = null;
    		this.index = -1;
    		this.itemBox = null;
    		this.parent = null;
    		this.self_sprite = null;
    		this.propData = null;
    		this.propSaveData = null;
    		this.hp_value_img = null;
    		this.isDrag = false;
    	}
    	InitItem(knapsackList, index, self_sprite, clickBack) {
    		this.knapsackList = knapsackList;
    		this.index = index;
    		this.clickBack = clickBack;
    		this.self_sprite = self_sprite;
    		this.itemBox = this.owner.parent;
    		this.propData = this.knapsackList.knapsackData.propDataArr[this.index].prop;
    		this.propSaveData = this.knapsackList.knapsackData.propDataArr[this.index];
    		if (this.hp_value_img == null && this.owner.parent.getChildByName("hp_progress") != null)
    			this.hp_value_img = this.owner.parent.getChildByName("hp_progress").getChildByName("value");
    		this.SetEquipmentHpProgress();
    		this.itemBox.on(Laya.Event.MOUSE_UP, this, this.OnItemBoxUp);
    	}
    	onEnable() {
    		Laya.stage.on(Laya.Event.MOUSE_UP, this, this.OnMouseUp);
    		Laya.stage.on(Laya.Event.MOUSE_MOVE, this, this.OnMouseMove);
    	}
    	onMouseDown(event) {
    		if (this.knapsackList.knapsackCtrl != null) {
    			this.propData = this.knapsackList.knapsackData.propDataArr[this.index].prop;
    			this.propSaveData = this.knapsackList.knapsackData.propDataArr[this.index];
    			if (this.knapsackList.knapsackData.propDataArr[this.index].Count <= 0) {
    				if (InsManager.GetInstance()._DataSave.isDebug)
    					InsManager.GetInstance()._UIManager.ShowGameToast('道具位个数为0', ToastType.Game);
    				return;
    			}
    			if (this.touchType != TouchType.UP || this.knapsackList.knapsackCtrl.downItme != null || this.propData == null) {
    				if (InsManager.GetInstance()._DataSave.isDebug) {
    					if (this.touchType != TouchType.UP)
    						InsManager.GetInstance()._UIManager.ShowGameToast('抬起类型不对:' + this.touchType, ToastType.Game);
    					if (this.knapsackList.knapsackCtrl.downItme != null)
    						InsManager.GetInstance()._UIManager.ShowGameToast('downItem 沒有清空:' + this.touchType, ToastType.Game);
    					if (this.propData == null)
    						InsManager.GetInstance()._UIManager.ShowGameToast(' 道具數據是null 的:' + this.propData, ToastType.Game);
    				}
    				return;
    			}
    			this.touchId = event.touchId;
    			this.touchType = TouchType.DOWN;
    			this.parent = this.owner.parent;
    			this.parent.on(Laya.Event.MOUSE_OUT, this, this.ParentMouseOut);
    			this.knapsackList.knapsackCtrl.downItme = this;
    			this.knapsackList.knapsackCtrl.save_downItme = this;
    		}
    		else {
    			if (this.knapsackList.openType == KpOpenType.EquipmentList && this.clickBack)
    				this.clickBack();
    		}
    	}
    	ParentMouseOut(event) {
    		if (event.touchId != this.touchId || this.propData == null || !this.isDrag)
    			return;
    		if (this.parent != null) {
    			this.parent.off(Laya.Event.MOUSE_OUT, this, this.ParentMouseOut);
    			this.parent = null;
    		}
    	}
    	OnMouseMove(event) {
    		if (this.touchType == TouchType.UP || event.touchId != this.touchId || !this.isDrag)
    			return;
    		if (this.propData == null)
    			return;
    		if (this.touchType == TouchType.DOWN || this.touchType == TouchType.MOVE) {
    			this.touchType = TouchType.MOVE;
    			if (this.self_sprite.visible)
    				this.self_sprite.visible = false;
    		}
    	}
    	OnMouseUp(event) {
    		if (this.touchType == TouchType.UP || event.touchId != this.touchId || this.propData == null)
    			return;
    		this.touchType = TouchType.UP;
    		if (this.knapsackList.knapsackCtrl != null) {
    			if (!this.self_sprite.visible)
    				this.self_sprite.visible = true;
    			if (this.knapsackList.knapsackCtrl.downItme == this)
    				this.knapsackList.knapsackCtrl.downItme = null;
    			this.propData = this.knapsackList.knapsackData.propDataArr[this.index].prop;
    			this.propSaveData = this.knapsackList.knapsackData.propDataArr[this.index];
    		}
    	}
    	OnItemBoxUp(event) {
    		if (this.knapsackList.knapsackCtrl == null)
    			return;
    		this.propData = this.knapsackList.knapsackData.propDataArr[this.index].prop;
    		this.propSaveData = this.knapsackList.knapsackData.propDataArr[this.index];
    		if (this.propData == null && !this.isDrag) {
    			if (InsManager.GetInstance()._DataSave.isDebug)
    				console.log('道具数据为：', this.propData);
    			return;
    		}
    		if ((this.knapsackList.knapsackCtrl.downItme == null || this.knapsackList.knapsackCtrl.downItme == this) && this.knapsackList.knapsackCtrl.downItme != null) {
    			if (this.knapsackList.openType != KpOpenType.ForgeList) {
    				this.clickBack && this.clickBack();
    				this.knapsackList.knapsackCtrl.OpenPropMsgPanel(this.knapsackList.knapsackData.propDataArr[this.index]);
    			}
    			if (this.propData != null && this.propData.isNew && (this.knapsackList.knapsackData == InsManager.GetInstance()._knapsackManager.Knapsack_PlayerPocket)) {
    				this.knapsackList.knapsackData.propDataArr[this.index].prop.isNew = false;
    				this.itemBox.getChildByName('hint_point').visible = false;
    				InsManager.GetInstance()._DataSave.SaveGameData(PathData.GameSystemData);
    				console.log('保存');
    			}
    			return;
    		}
    		if (!this.isDrag)
    			return;
    		if (this.knapsackList.knapsackCtrl.downItme != null && this.knapsackList.knapsackCtrl.downItme.touchId != event.touchId)
    			return;
    		this.knapsackList.knapsackCtrl.save_upItme = this;
    		if (this.knapsackList.IsExchangePropData(this, this.knapsackList.knapsackCtrl.downItme) == false)
    			return;
    		if (this.knapsackList.knapsackCtrl.downItme.knapsackList.IsExchangePropData(this.knapsackList.knapsackCtrl.downItme, this) == false)
    			return;
    		if (this.knapsackList.knapsackCtrl.openType == KpOpenType.EquipmentList)
    			this.knapsackList.knapsackCtrl.equipment_list.UpdateEquipmentPropertys(this.knapsackList.knapsackCtrl.downItme.knapsackList.knapsackData, this.knapsackList.knapsackCtrl.downItme.index, this.knapsackList.knapsackData, this.index);
    		InsManager.GetInstance()._knapsackManager.ExchangePropData(this.knapsackList.knapsackCtrl.downItme.knapsackList.knapsackData, this.knapsackList.knapsackCtrl.downItme.index, this.knapsackList.knapsackData, this.index);
    		InsManager.GetInstance()._MissionManager.MissionOverAllMonitor(MissionMonitorType.Prop_Exchange);
    		if (this.knapsackList.exchange_Finish_CallBack != null) {
    			this.knapsackList.exchange_Finish_CallBack();
    		}
    		;
    		if (this.knapsackList.knapsackCtrl.downItme.knapsackList.exchange_Finish_CallBack != null) {
    			this.knapsackList.knapsackCtrl.downItme.knapsackList.exchange_Finish_CallBack();
    		}
    		;
    		this.knapsackList.knapsackCtrl.downItme.SetEquipmentHpProgress();
    		this.SetEquipmentHpProgress();
    		if (this.knapsackList.knapsackData != this.knapsackList.knapsackCtrl.downItme.knapsackList.knapsackData) {
    			this.knapsackList.InitView();
    			this.knapsackList.knapsackCtrl.downItme.knapsackList.InitView();
    		}
    		else {
    			this.knapsackList.InitView();
    		}
    		this.propData = this.knapsackList.knapsackData.propDataArr[this.index].prop;
    		this.propSaveData = this.knapsackList.knapsackData.propDataArr[this.index];
    		this.knapsackList.knapsackCtrl.save_downItme.propData = this.knapsackList.knapsackCtrl.save_downItme.knapsackList.knapsackData.propDataArr[this.knapsackList.knapsackCtrl.save_downItme.index].prop;
    		this.knapsackList.knapsackCtrl.downItme.knapsackList.ClearCurrentSelectData();
    		InsManager.GetInstance()._DataSave.SaveGameData(PathData.PropData);
    		this.touchType = TouchType.UP;
    	}
    	SetEquipmentHpProgress() {
    		let newPropData = this.knapsackList.knapsackData.propDataArr[this.index].prop;
    		if (newPropData == null || this.hp_value_img == null) {
    			if (this.hp_value_img != null)
    				this.HideHpProgress();
    			return;
    		}
    		if (newPropData.propType == PropType.Equipment || newPropData.propType == PropType.Weapon) {
    			this.hp_value_img.parent.visible = true;
    			let w_prop = (InsManager.GetInstance()._knapsackManager.GetPropData(newPropData.propID));
    			this.hp_value_img.mask.width = this.hp_value_img.parent.width * (newPropData.hpValue / w_prop.hpValue);
    		}
    	}
    	HideHpProgress() {
    		this.hp_value_img.parent.visible = false;
    	}
    	onDisable() {
    		Laya.stage.off(Laya.Event.MOUSE_UP, this, this.OnMouseUp);
    		Laya.stage.off(Laya.Event.MOUSE_MOVE, this, this.OnMouseMove);
    	}
    	onDestroy() {
    		if (this.clickBack)
    			this.clickBack = null;
    		if (this.itemBox != null) {
    			this.itemBox.offAll(Laya.Event.MOUSE_UP);
    			this.itemBox = null;
    		}
    	}
    }
    var TouchType;
    (function (TouchType) {
    	TouchType[TouchType["DOWN"] = 0] = "DOWN";
    	TouchType[TouchType["UP"] = 1] = "UP";
    	TouchType[TouchType["MOVE"] = 2] = "MOVE";
    })(TouchType || (TouchType = {}));

    class PropSaveData {
    	constructor(count, index, prop) {
    		this.Count = 0;
    		this.index = 0;
    		this.prop = null;
    		this.Count = count;
    		this.index = index;
    		this.prop = prop;
    	}
    }

    class KnapsackList extends Laya.Script {
    	constructor() {
    		super();
    		this.isExpand = false;
    		this.openType = null;
    		this.knapsackData = null;
    		this.knapsackList = null;
    		this.listBox = null;
    		this.isSlide = false;
    		this.select_img = null;
    		this.list_length = 5;
    		this.itemArr = [];
    		this.exchange_Finish_CallBack = null;
    		this.addItemImg = null;
    		this.isInGamePanel = false;
    		this.buy_bt = null;
    	}
    	InitData(idName, knapsackCtrl, knapsackDataArr) {
    		this.knapsackList = this;
    		this.openType = KpOpenType.NpcList;
    		if (this.listBox == null)
    			this.listBox = this.owner;
    		if (this.listBox.name == 'npc_List') {
    			this.buy_bt = this.listBox.parent.getChildByName('buy_bt');
    			this.buy_bt.on(Laya.Event.CLICK, this, this.OnBuyClick);
    			this.GetNpcKnapsackData();
    		}
    		else {
    			this.knapsackData = InsManager.GetInstance()._knapsackManager.FindKnapsackData(idName, knapsackDataArr);
    		}
    		if (this.knapsackData == null)
    			console.log("背包ID:" + idName + " 暂无背包信息！！！");
    		this.knapsackCtrl = knapsackCtrl;
    		if (this.knapsackData.sumRow > this.knapsackData.maxRow)
    			this.isSlide = true;
    		this.InitView();
    	}
    	InitView() {
    		if (this.knapsackData == null) {
    			if (this.listBox.visible)
    				console.error("没有背包数据：" + this.owner.name);
    			return;
    		}
    		if (this.isSlide)
    			this.listBox.vScrollBarSkin = "";
    		let data = [];
    		this.list_length = (this.knapsackData.sumRow > this.knapsackData.maxRow ? this.knapsackData.sumRow : this.knapsackData.maxRow) * this.knapsackData.lineNum;
    		for (let i = 0; i < this.list_length; i++) {
    			data.push(i.toString());
    		}
    		this.listBox.array = data;
    		this.listBox.renderHandler = new Laya.Handler(this, this.onListRender);
    		if (this.knapsackCtrl.currentPropData != null && this.knapsackCtrl.currentPropData.prop == null)
    			this.knapsackCtrl.currentPropData = null;
    		this.knapsackCtrl.UpdateUseButtonState();
    	}
    	onListRender(cell, index) {
    		if (index >= (this.knapsackData.sumRow * this.knapsackData.lineNum)) {
    			let item_img = cell.getChildAt(0);
    			item_img.offAll();
    			let sprite_img = item_img.getChildAt(1);
    			let knapsackItem_img = sprite_img.getComponent(KnapsackItem);
    			if (this.knapsackData.sumRow < this.knapsackData.maxRow && index >= (this.knapsackData.sumRow * this.knapsackData.lineNum) && this.isExpand) {
    				if (InsManager.GetInstance()._DataSave.isOpenAd == false)
    					return;
    				item_img.getChildByName('add').visible = true;
    				item_img.on(Laya.Event.CLICK, this, this.OnExpandGridClick, [item_img]);
    				this.addItemImg = item_img;
    			}
    			item_img.skin = "res/UI/knapsack/gaidi.png";
    			sprite_img.visible = false;
    			knapsackItem_img.clickBack = null;
    			item_img.getChildByName('hp_progress').visible = false;
    			item_img.getChildByName('select_img').visible = false;
    			if (item_img.getChildByName('hint_point') != null)
    				item_img.getChildByName('hint_point').visible = false;
    			return;
    		}
    		let item = cell.getChildAt(0);
    		let sprite = item.getChildAt(1);
    		let count_label = sprite.getChildAt(0);
    		let knapsackItem = sprite.getComponent(KnapsackItem);
    		if (this.knapsackData == InsManager.GetInstance()._knapsackManager.Knapsack_PlayerPocket)
    			item.offAll(Laya.Event.CLICK);
    		if ((this.knapsackData == InsManager.GetInstance()._knapsackManager.Knapsack_PlayerPocket)) {
    			if (this.knapsackData.propDataArr[index].prop != null && (this.knapsackData.propDataArr[index].prop.propType == PropType.Equipment || this.knapsackData.propDataArr[index].prop.propType == PropType.Weapon) && this.knapsackData.propDataArr[index].prop.isNew)
    				item.getChildByName('hint_point').visible = true;
    			else
    				item.getChildByName('hint_point').visible = false;
    		}
    		knapsackItem.InitItem(this, index, sprite, () => { this.OnItmeClick(cell, index); });
    		let isExist = false;
    		for (let i = 0; i < this.itemArr.length; i++) {
    			if (this.itemArr[i] == item) {
    				isExist = true;
    				break;
    			}
    		}
    		if (!isExist)
    			this.itemArr.push(item);
    		if (item.getChildByName('add') != null) {
    			item.getChildByName('add').visible = false;
    		}
    		if (this.knapsackData.propDataArr[index].prop != null) {
    			if (this.knapsackData.propDataArr[index].prop.propType == PropType.Equipment || this.knapsackData.propDataArr[index].prop.propType == PropType.Weapon) {
    				knapsackItem.SetEquipmentHpProgress();
    			}
    			else {
    				knapsackItem.HideHpProgress();
    			}
    		}
    		else {
    			knapsackItem.HideHpProgress();
    		}
    		if (index < (this.knapsackData.sumRow * this.knapsackData.lineNum)) {
    		}
    		if (this.knapsackData.propDataArr[index].prop != null && this.knapsackData.propDataArr[index].Count > 0) {
    			sprite.skin = PathData.icon_path + this.knapsackData.propDataArr[index].prop.skin;
    			sprite.visible = true;
    			if (this.listBox.name == 'npc_List')
    				count_label.text = VendingMachinePropData[index].price.toString();
    			else
    				this.knapsackData.propDataArr[index].Count > 1 ? count_label.text = 'x' + this.knapsackData.propDataArr[index].Count.toString() : count_label.text = "";
    		}
    		else {
    			sprite.visible = false;
    			item.getChildByName('hp_progress').visible = false;
    			if (item.getChildByName('hint_point') != null)
    				item.getChildByName('hint_point').visible = false;
    			if (this.select_img != null && this.select_img.visible)
    				this.select_img.visible = false;
    			item.offAll();
    			knapsackItem.clickBack = null;
    		}
    		item.getChildByName('select_img').visible = false;
    	}
    	OnItmeClick(cell, index) {
    		if (this.knapsackCtrl.currentBox != null && this.knapsackCtrl.currentBox.getChildAt(0).getChildByName("select_img") != null)
    			this.knapsackCtrl.currentBox.getChildAt(0).getChildByName("select_img").visible = false;
    		if (cell.getChildAt(0).getChildByName("select_img") != null)
    			this.select_img = cell.getChildAt(0).getChildByName("select_img");
    		if (this.select_img != null)
    			this.select_img.visible = true;
    		this.knapsackCtrl.currentBox = cell;
    		this.knapsackCtrl.currentPropData = this.knapsackData.propDataArr[index];
    		this.knapsackCtrl.currnetKnapsack = this.knapsackData;
    		this.knapsackCtrl.currentList = this;
    		if (this.openType != KpOpenType.ForgeList)
    			this.knapsackCtrl.UpdateUseButtonState();
    		if (this.buy_bt) {
    			if (this.listBox.name == 'npc_List')
    				this.buy_bt.visible = true;
    			else
    				this.buy_bt.visible = false;
    		}
    	}
    	ClearCurrentSelectData() {
    		if (this.select_img != null && this.select_img.visible)
    			this.select_img.visible = false;
    		this.knapsackCtrl.currentBox = null;
    		if (this.knapsackCtrl.currentPropData != null && this.knapsackCtrl.currentPropData.prop == null)
    			this.knapsackCtrl.currentPropData = null;
    		this.knapsackCtrl.currnetKnapsack = null;
    		this.knapsackCtrl.downItme = null;
    	}
    	ClearListData() {
    		for (let i = 0; i < this.itemArr.length; i++) {
    			let sprite = this.itemArr[i].getChildAt(1);
    			if (sprite != null && sprite.visible)
    				sprite.visible = false;
    			this.itemArr[i].skin = "res/UI/knapsack/gaidi.png";
    		}
    	}
    	IsExchangePropData(upItem, downItme) {
    		return true;
    	}
    	OnExpandGridClick() {
    		RewardsManager.GetInstance().Rewards_ExpandKnapsacklineClick(() => {
    			InsManager.GetInstance()._knapsackManager.ExpandKnapsackline();
    			this.UpdateExpandGridCall();
    		});
    	}
    	UpdateExpandGridCall() {
    		if (this.addItemImg != null)
    			this.addItemImg.off(Laya.Event.CLICK, this, this.OnExpandGridClick);
    		this.InitView();
    		this.knapsackCtrl.InitView();
    	}
    	GetNpcKnapsackData() {
    		this.knapsackData = new KnapsackSaveData();
    		this.knapsackData.id == InsManager.GetInstance()._knapsackManager.GetKnapsackID(InsManager.GetInstance()._DataSave.knapsackRamdonDataArr);
    		this.knapsackData.lineNum = 3;
    		this.knapsackData.sumRow = 4;
    		this.knapsackData.maxRow = 4;
    		this.knapsackData.name = '玩家背包';
    		this.knapsackData.knapsackType = KnapsackType.Box;
    		if (this.knapsackData.propDataArr.length == 0) {
    			for (let i = 0; i < this.knapsackData.sumRow * this.knapsackData.lineNum; i++) {
    				this.knapsackData.propDataArr.push(new PropSaveData(1, i, null));
    			}
    			for (let i = 0; i < this.knapsackData.propDataArr.length; i++) {
    				if (i < VendingMachinePropData.length)
    					this.knapsackData.propDataArr[i] = new PropSaveData(1, i, InsManager.GetInstance()._knapsackManager.GetPropData(VendingMachinePropData[i].propID));
    			}
    			console.log(this.knapsackData.propDataArr);
    		}
    	}
    	OnBuyClick() {
    		if (this.knapsackCtrl.currentPropData != null && this.knapsackCtrl.currentList.owner.name != 'npc_List') {
    			InsManager.GetInstance()._UIManager.ShowGameToast("请选择需要购买的商品！", ToastType.Game);
    			return;
    		}
    		if (this.knapsackCtrl.currentPropData != null && this.listBox.name == 'npc_List' && VendingMachinePropData[this.knapsackCtrl.currentPropData.index] != null) {
    			if (PlayerData.GetInstance().coin < VendingMachinePropData[this.knapsackCtrl.currentPropData.index].price) {
    				if (!InsManager.GetInstance()._DataSave.isOpenAd)
    					InsManager.GetInstance()._UIManager.ShowGameToast("金币不足！", ToastType.Hint);
    				RewardsManager.GetInstance().OpenRewardsBag(7);
    				return;
    			}
    			let player_kp = InsManager.GetInstance()._knapsackManager.IsPlayerKpImpletion(this.knapsackCtrl.currentPropData.prop.propID, 1);
    			if (player_kp == null) {
    				if (!InsManager.GetInstance()._DataSave.isOpenAd)
    					InsManager.GetInstance()._UIManager.ShowGameToast("背包空间不足，无法购买更多道具", ToastType.Hint);
    				else
    					RewardsManager.GetInstance().OpenRewardsBag(4);
    			}
    			else {
    				InsManager.GetInstance()._DataUpdateManager.UpdateCoin(-VendingMachinePropData[this.knapsackCtrl.currentPropData.index].price);
    				let propData = InsManager.GetInstance()._knapsackManager.AddPropData(player_kp, this.knapsackCtrl.currentPropData.prop.propID, 1, null);
    				InsManager.GetInstance()._UIManager.ShowPopoutPanel(PopoutPanelType.ShowImg, propData.prop.name + "x" + '1', PathData.icon_path + propData.prop.skin);
    				Platforms.getInstance().ReportAnalytics(PathData.TTEvent_ShopBuyPropCount, { 'count': 1 });
    				InsManager.GetInstance()._DataSave.SaveGameData(PathData.PropData);
    				this.knapsackCtrl.Pocket_list.InitView();
    				console.log('添加道具', player_kp);
    			}
    		}
    	}
    	onDisable() {
    		this.ClearListData();
    		if (this.select_img != null && this.select_img.visible)
    			this.select_img.visible = false;
    		if (InsManager.GetInstance()._SceneManager.gamePanel != null)
    			InsManager.GetInstance()._SceneManager.gamePanel.InitView();
    	}
    }

    class UI_Button extends Laya.Script {
    	constructor() {
    		super();
    		this.normal_img = null;
    		this.press_img = null;
    		this.disable_img = null;
    		this.is_disable = false;
    		this.isUseScale = true;
    		this.isdisableGray = true;
    		this.clickBack = null;
    		this.img = null;
    	}
    	onAwake() {
    		this.img = this.owner;
    		this.set_disable(this.is_disable);
    	}
    	onClick(event) {
    		if (this.is_disable)
    			return;
    		if (this.owner.name != "atk_bt")
    			SoundsManager.PlaySounds(PathData.sound_buttonSound, 0.5);
    		if (this.clickBack == null)
    			return;
    		this.clickBack && this.clickBack();
    		event.stopPropagation();
    	}
    	onMouseDown(event) {
    		if (this.is_disable)
    			return;
    		if (this.press_img)
    			this.img.skin = this.press_img;
    		else {
    			if (this.isUseScale) {
    				Laya.Tween.to(this.owner, { scaleX: 1.1, scaleY: 1.1 }, 45, null, Laya.Handler.create(this, function () {
    					Laya.Tween.to(this.owner, { scaleX: 1, scaleY: 1 }, 60);
    				}));
    			}
    		}
    		event.stopPropagation();
    	}
    	onMouseUp(event) {
    		if (this.is_disable)
    			return;
    		if (this.normal_img)
    			this.img.skin = this.normal_img;
    	}
    	set_disable(is_disable) {
    		this.is_disable = is_disable;
    		if (this.is_disable) {
    			if (this.disable_img)
    				this.img.skin = this.disable_img;
    			else {
    				if (this.isdisableGray)
    					this.img.gray = true;
    				this.img.mouseEnabled = false;
    			}
    		}
    		else {
    			if (this.img.gray)
    				this.img.gray = false;
    			if (this.normal_img)
    				this.img.skin = this.normal_img;
    			this.img.mouseEnabled = true;
    		}
    	}
    	onDisable() {
    	}
    }

    class EquipmentList extends KnapsackList {
    	constructor() {
    		super();
    		this.knapsackList = null;
    		this.propertys = null;
    		this.selectIndex = 0;
    		this.itemSelectImgArr = new Array();
    		this.currentEquipment = null;
    	}
    	onStart() {
    	}
    	InitData(idName, knapsackCtrl, knapsackDataArr) {
    		if (this.itemArr.length == 0) {
    			this.knapsackList = this;
    			this.knapsackCtrl = knapsackCtrl;
    			if (this.listBox == null)
    				this.listBox = this.owner;
    			this.propertys = this.owner.parent.getChildByName("propertys");
    			this.knapsackData = InsManager.GetInstance()._knapsackManager.FindKnapsackData(idName, PropData.GetInstance().knapsackData);
    			this.openType = KpOpenType.EquipmentList;
    			console.log('initData Equipment');
    		}
    		this.InitView();
    	}
    	InitView() {
    		if (this.knapsackData == null)
    			return;
    		if (this.isSlide)
    			this.listBox.vScrollBarSkin = "";
    		let data = [];
    		for (let i = 0; i <= 5; i++) {
    			data.push(i.toString());
    		}
    		this.listBox.array = data;
    		this.listBox.renderHandler = new Laya.Handler(this, this.onListRender);
    		if (this.knapsackCtrl != null && this.knapsackCtrl.currentPropData != null && this.knapsackCtrl.currentPropData.prop == null)
    			this.knapsackCtrl.currentPropData = null;
    	}
    	onListRender(cell, index) {
    		if (index > 5) {
    			return;
    		}
    		let item = cell.getChildAt(0);
    		let sprite = item.getChildAt(1);
    		let count_label = sprite.getChildAt(0);
    		let knapsackItem = sprite.getComponent(KnapsackItem);
    		let self = this;
    		if (knapsackItem.clickBack == null) {
    			knapsackItem.InitItem(self.knapsackList, index, sprite, () => { self.OnItmeClick(cell, index); });
    			let isExist = false;
    			for (let i = 0; i < self.itemArr.length; i++) {
    				if (this.itemArr[i] == item) {
    					isExist = true;
    					break;
    				}
    			}
    			if (!isExist) {
    				this.itemArr.push(item);
    				this.itemSelectImgArr.push(item.getChildAt(0));
    			}
    		}
    		if (this.knapsackData.propDataArr[index].prop != null && this.knapsackData.propDataArr[index].Count > 0) {
    			sprite.skin = PathData.icon_path + this.knapsackData.propDataArr[index].prop.skin;
    			sprite.visible = true;
    			this.knapsackData.propDataArr[index].Count > 1 ? count_label.text = this.knapsackData.propDataArr[index].Count.toString() : count_label.text = "";
    		}
    		else {
    			sprite.visible = false;
    			item.getChildByName('hp_progress').visible = false;
    			if (item.getChildByName('hint_point') != null)
    				item.getChildByName('hint_point').visible = false;
    			if (this.select_img != null && this.select_img.visible)
    				this.select_img.visible = false;
    			item.offAll();
    			knapsackItem.clickBack = null;
    		}
    		if (this.knapsackData.propDataArr[index].prop != null) {
    			if (this.knapsackData.propDataArr[index].prop.propType == PropType.Equipment || this.knapsackData.propDataArr[index].prop.propType == PropType.Weapon) {
    				knapsackItem.SetEquipmentHpProgress();
    			}
    			else {
    				knapsackItem.HideHpProgress();
    			}
    		}
    		else {
    			knapsackItem.HideHpProgress();
    		}
    	}
    	OnItmeClick(cell, index) {
    		if (this.knapsackCtrl.currentBox != null && this.knapsackCtrl.currentBox.getChildAt(0).getChildByName("select_img") != null) {
    			console.log('隐藏选择图片');
    			this.knapsackCtrl.currentBox.getChildAt(0).getChildByName("select_img").visible = false;
    		}
    		this.knapsackCtrl.currentBox = cell;
    		this.knapsackCtrl.currentPropData = this.knapsackData.propDataArr[index];
    		this.knapsackCtrl.currnetKnapsack = this.knapsackData;
    		this.knapsackCtrl.currentList = this;
    		console.log(this.knapsackCtrl.currentBox);
    		this.knapsackCtrl.UpdateUseButtonState();
    		this.CloseSelectImgAll();
    		this.itemSelectImgArr[index].visible = true;
    	}
    	CloseSelectImgAll() {
    		for (let i = 0; i < this.itemSelectImgArr.length; i++) {
    			if (this.itemSelectImgArr[i].visible) {
    				this.itemSelectImgArr[i].visible = false;
    				console.log(this.itemSelectImgArr[i].name);
    			}
    		}
    	}
    	IsEquipmentTypeDataSizeUp(propBase, eItemIndex) {
    		return true;
    	}
    	IsExchangePropData(upItem, downItme) {
    		let otherItem = null;
    		let selfItem = null;
    		if (this.knapsackCtrl != null && this.knapsackCtrl.save_downItme.knapsackList.knapsackData == this.knapsackData && this.knapsackCtrl.save_upItme.knapsackList.knapsackData == this.knapsackData) {
    			console.log('装备同一背包替换不支持');
    			return false;
    		}
    		if (this.knapsackCtrl.save_downItme.knapsackList.knapsackData != this.knapsackData) {
    			otherItem = this.knapsackCtrl.save_downItme;
    			selfItem = this.knapsackCtrl.save_upItme;
    		}
    		else {
    			otherItem = this.knapsackCtrl.save_upItme;
    			selfItem = this.knapsackCtrl.save_downItme;
    		}
    		if (this.knapsackData.propDataArr[this.selectIndex].prop != null) {
    		}
    		this.exchange_Finish_CallBack = () => { this.UpdateEquipmentModel(); this.exchange_Finish_CallBack = null; };
    		return true;
    	}
    	UpdateEquipmentModel() {
    	}
    	UpdateEquipmentPropertys(knapsackDataA, indexA, knapsackDataB, indexB) {
    		if (knapsackDataA == InsManager.GetInstance()._knapsackManager.FindKnapsackData(PathData.Knapsack_EquipmentColumn, PropData.GetInstance().knapsackData)) {
    			if (knapsackDataA.propDataArr[indexA].prop != null)
    				this.UpdateEquipmentPropertysData(false, knapsackDataA.propDataArr[indexA].prop);
    			if (knapsackDataB.propDataArr[indexB].prop != null)
    				this.UpdateEquipmentPropertysData(true, knapsackDataB.propDataArr[indexB].prop);
    		}
    		else {
    			if (knapsackDataB.propDataArr[indexB].prop != null)
    				this.UpdateEquipmentPropertysData(false, knapsackDataB.propDataArr[indexB].prop);
    			if (knapsackDataA.propDataArr[indexA].prop != null)
    				this.UpdateEquipmentPropertysData(true, knapsackDataA.propDataArr[indexA].prop);
    		}
    	}
    	UpdateEquipmentPropertysData(isAdd, propBase) {
    		if (propBase != null && propBase != undefined) {
    			switch (propBase.propType) {
    				case PropType.Equipment:
    					let equipmentProp = propBase;
    					isAdd ? PlayerData.GetInstance().atkValue += equipmentProp.atk : PlayerData.GetInstance().atkValue -= equipmentProp.atk;
    					isAdd ? PlayerData.GetInstance().defenseValue += equipmentProp.defense : PlayerData.GetInstance().defenseValue -= equipmentProp.defense;
    					isAdd ? PlayerData.GetInstance().gasDefenseValue += equipmentProp.gasDefense : PlayerData.GetInstance().gasDefenseValue -= equipmentProp.gasDefense;
    					isAdd ? PlayerData.GetInstance().runSpeed += equipmentProp.runSpeed : PlayerData.GetInstance().runSpeed -= equipmentProp.runSpeed;
    					isAdd ? PlayerData.GetInstance().atkSpeedValue += equipmentProp.atkSpeed : PlayerData.GetInstance().atkSpeedValue -= equipmentProp.atkSpeed;
    					break;
    				case PropType.Weapon:
    					let weaponProp = propBase;
    					isAdd ? PlayerData.GetInstance().atkValue += weaponProp.atkValue : PlayerData.GetInstance().atkValue -= weaponProp.atkValue;
    					PlayerData.GetInstance().atkSpeedValue = 3 - weaponProp.atkCD;
    					break;
    				default:
    					break;
    			}
    		}
    	}
    	UpdateEquipmentPropertysLabel() {
    	}
    }

    class KnapsackPanel_Ctrl extends UI_Ctrl {
    	constructor() {
    		super();
    		this.Pocket_list = null;
    		this.npc_list = null;
    		this.equipment_list = null;
    		this.currentPropData = null;
    		this.currentBox = null;
    		this.currnetKnapsack = null;
    		this.currentList = null;
    		this.downItme = null;
    		this.save_downItme = null;
    		this.save_upItme = null;
    		this.SeparateKpArr = [];
    		this.openType = null;
    		this.progressImg = null;
    		this.itmeBox = null;
    		this.use_bt = null;
    		this.separate_bt = null;
    		this.hSlider = null;
    		this.propMsgPanel = null;
    		this.propMsg_propIcon = null;
    		this.propName = null;
    		this.propCount_label = null;
    		this.propSpriceLabel = null;
    		this.propMsg_label = null;
    		this.getLabel = null;
    		this.all_take_bt = null;
    		this.all_place_bt = null;
    		this.repair_bt = null;
    		this.playerMsgGroup = null;
    		this.propMsgGroup = null;
    		this.equipmentBox = null;
    		this.coin = null;
    		this.isTakeSeleProp = true;
    	}
    	onAwake() {
    		super.onAwake();
    		this.InitListData();
    		this.use_bt = this.view["center/propMsgGroup/use_bt"].getComponent(UI_Button);
    		this.separate_bt = this.view["center/propMsgGroup/separate_bt"].getComponent(UI_Button);
    		this.hSlider = this.view["separatePanel/bg/hSlider"];
    		this.progressImg = this.view["center/playerMsgGroup/propertyGroup/hp_progress/progress"];
    		this.all_take_bt = this.view["center/ItemBox/npcBox/all_take_bt"];
    		this.all_place_bt = this.view["center/ItemBox/npcBox/all_place_bt"];
    		this.repair_bt = this.view["center/ItemBox/repairBox/bg/repair_bt"];
    		this.propMsgPanel = this.view["center/propMsgGroup"];
    		this.propMsg_propIcon = this.view["center/propMsgGroup/propBox/img"];
    		this.propName = this.view["center/propMsgGroup/propName"];
    		this.propCount_label = this.view["center/propMsgGroup/coun_label/coun"];
    		this.propMsg_label = this.view["center/propMsgGroup/msg_label"];
    		this.getLabel = this.view["center/propMsgGroup/get_label/get"];
    		this.propSpriceLabel = this.view["center/propMsgGroup/sPrice_label"];
    		this.playerMsgGroup = this.view["center/playerMsgGroup"];
    		this.propMsgGroup = this.view['center/propMsgGroup'];
    		this.equipmentBox = this.view['center/playerMsgGroup/equipmentBox'];
    		this.coin = this.view["center/ItemBox/npcBox/coinGroup/count"];
    		InsManager.GetInstance()._UIManager.knapsackPanel = this;
    	}
    	onEnable() {
    		InsManager.GetInstance()._SceneManager.player.isMove = false;
    	}
    	onStart() {
    		EventManager._Instance.Add_Listener(PathData.EVENT_SETPLAYERHP, this, this.UpdatePlayerHpProgress);
    		EventManager._Instance.Add_Listener(PathData.EVENT_UPDATECOIN, this, this.UpdateCoinCount);
    		this.separate_bt.clickBack = this.OnSeparateClick.bind(this);
    		this.use_bt.clickBack = this.OnUsePropClick.bind(this);
    		this.view["center/propMsgGroup/delete_bt"].on(Laya.Event.CLICK, this, () => {
    			this.view["deleteAffirmPanel"].visible = true;
    		});
    		this.hSlider.changeHandler = new Laya.Handler(this, this.OnHSliderMove);
    		this.view["separatePanel/bg/affirm_bt"].on(Laya.Event.CLICK, this, this.OnSeparateResultClick);
    		this.view["center/propMsgGroup/separate_bt"].on(Laya.Event.CLICK, this, this.OnSeparateClick);
    		this.view["deleteAffirmPanel/bg/affirm_bt"].on(Laya.Event.CLICK, this, this.OnDeletePropClick);
    		this.view["deleteAffirmPanel/bg/cancel_bt"].on(Laya.Event.CLICK, this, () => { this.view["deleteAffirmPanel"].visible = false; });
    		this.view["center/ItemBox/npcBox/all_take_bt"].on(Laya.Event.CLICK, this, this.OnTakeAllPropClick);
    		this.view["center/ItemBox/npcBox/all_place_bt"].on(Laya.Event.CLICK, this, this.OnPutinAllPropClick);
    		this.view["center/propMsgGroup/close_bt"].on(Laya.Event.CLICK, this, () => { this.HidePropMsgPanel(); });
    		this.view['close_bt'].on(Laya.Event.CLICK, this, this.OnCloseClick.bind(this));
    		this.view["center/ItemBox/playerBox/clearUp_bt"].on(Laya.Event.CLICK, this, this.OnClearUpClick);
    		this.view["center/ItemBox/playerBox/expan_bt"].on(Laya.Event.CLICK, this, () => { this.Pocket_list.OnExpandGridClick(); });
    		this.view["center/ItemBox/npcBox/coinGroup"].on(Laya.Event.CLICK, this, () => { RewardsManager.GetInstance().Rewards_CoinSubsidy(() => { }); });
    		this.InitView();
    	}
    	InitListData() {
    		if (this.itmeBox == null) {
    			this.itmeBox = this.view["center/ItemBox"];
    			this.Pocket_list = this.view["center/ItemBox/playerBox/Pocket_List"].getComponent(KnapsackList);
    			this.npc_list = this.view["center/ItemBox/npcBox/npc_List"].getComponent(KnapsackList);
    			this.equipment_list = this.view["center/playerMsgGroup/equipmentBox/EquipmentList"].getComponent(EquipmentList);
    		}
    	}
    	InitView() {
    		this.UpdatePlayerHpProgress();
    		this.UpdateCoinCount();
    		if (InsManager.GetInstance()._knapsackManager.Knapsack_PlayerPocket.sumRow >= 8 || InsManager.GetInstance()._DataSave.isOpenAd == false) {
    		}
    		else {
    		}
    	}
    	Open(openType, idName, knapsackDataArr) {
    		this.openType = openType;
    		this.HidePropMsgPanel();
    		this.Pocket_list.InitData(PathData.Knapsack_PlayerPocket, this, PropData.GetInstance().knapsackData);
    		switch (openType) {
    			case KpOpenType.NpcList:
    				this.npc_list.InitData(idName, this, knapsackDataArr);
    				this.ShowBox(this.npc_list.owner.parent.name);
    				this.equipmentBox.visible = false;
    				break;
    			case KpOpenType.EquipmentList:
    				this.equipment_list.InitData(idName, this, PropData.GetInstance().knapsackData);
    				this.ShowBox(this.equipment_list.owner.parent.name);
    				this.equipmentBox.visible = true;
    				break;
    			default: break;
    		}
    		this.InitView();
    		this.OnClearUpClick();
    		InsManager.GetInstance()._MissionManager.MissionOverAllMonitor(MissionMonitorType.Open_Knapsack, this.openType);
    	}
    	ShowBox(boxName) {
    		for (let i = 1; i < this.itmeBox.numChildren; i++) {
    			if (this.itmeBox.getChildAt(i).name == boxName) {
    				this.itmeBox.getChildAt(i).visible = true;
    			}
    			else
    				this.itmeBox.getChildAt(i).visible = false;
    		}
    		if (this.openType == KpOpenType.EquipmentList) {
    		}
    		if (this.openType == KpOpenType.NpcList) {
    			this.playerMsgGroup.visible = false;
    			this.equipmentBox.visible = false;
    		}
    		else {
    			this.playerMsgGroup.visible = true;
    			this.equipmentBox.visible = true;
    		}
    	}
    	UpdateCoinCount() {
    		super.UpdateCoin(this.coin);
    	}
    	OpenPropMsgPanel(propSaveData) {
    		console.log("打开信息面板");
    		if (propSaveData == null || propSaveData.prop == null) {
    			this.HidePropMsgPanel();
    			console.log("没有道具数据");
    			return;
    		}
    		this.propMsgPanel.visible = true;
    		this.propMsg_propIcon.skin = PathData.icon_path + propSaveData.prop.skin;
    		this.propName.text = propSaveData.prop.name;
    		this.propCount_label.text = propSaveData.Count.toString();
    		this.propMsg_label.text = propSaveData.prop.message;
    		this.getLabel.text = propSaveData.prop.getText;
    		if (this.openType == KpOpenType.NpcList && this.currentList == this.Pocket_list) {
    			this.propSpriceLabel.visible = true;
    			this.propSpriceLabel.text = '出售价:' + propSaveData.prop.sPrice.toString();
    		}
    		else {
    			this.propSpriceLabel.visible = false;
    		}
    		if (this.openType == KpOpenType.ForgeList || this.openType == KpOpenType.RepairList) {
    			this.use_bt.img.visible = false;
    			this.view["center/propMsgGroup/delete_bt"].visible = false;
    		}
    	}
    	HidePropMsgPanel() {
    		this.propMsgPanel.visible = false;
    		if (this.openType == KpOpenType.NpcList)
    			this.npc_list.owner.parent.visible = true;
    		if (this.openType == KpOpenType.EquipmentList)
    			this.playerMsgGroup.visible = true;
    	}
    	OnUsePropClick() {
    		let use_bt_label = this.use_bt.owner.getChildByName('label');
    		if (use_bt_label.text == '使用') {
    			switch (this.currentPropData.prop.propType) {
    				case PropType.Consumables:
    					let consumablesProp = this.currentPropData.prop;
    					if (consumablesProp == null || consumablesProp == undefined)
    						console.log("Error: propBase --> Consumables 转换失败");
    					if (this.currentPropData.Count > 1) {
    						this.currentPropData.Count--;
    						this.OpenPropMsgPanel(this.currentPropData);
    					}
    					else {
    						InsManager.GetInstance()._knapsackManager.ClearPropSaveData(this.currentPropData);
    						this.currentPropData = null;
    						this.HidePropMsgPanel();
    					}
    					this.currentList.InitView();
    					if (consumablesProp.propID == PropID.coinPick) {
    						InsManager.GetInstance()._MissionManager.MissionAward([], [], 5, 0, () => { }, 1, true);
    					}
    					if (consumablesProp.hp > 0)
    						InsManager.GetInstance()._DataUpdateManager.SetHpData(consumablesProp.hp);
    					if (consumablesProp.mp > 0)
    						InsManager.GetInstance()._DataUpdateManager.SetMpData(consumablesProp.mp);
    					if (consumablesProp.hungerDegrees > 0)
    						InsManager.GetInstance()._DataUpdateManager.SetHungerDegreesData(consumablesProp.hungerDegrees);
    					if (consumablesProp.moistrue > 0)
    						InsManager.GetInstance()._DataUpdateManager.SetMoistrueData(consumablesProp.moistrue);
    					if (consumablesProp.propID == PropID.hpAgent) {
    						PlayerData.GetInstance().maxHp += 10;
    						InsManager.GetInstance()._DataUpdateManager.SetHpData(PlayerData.GetInstance().maxHp);
    						InsManager.GetInstance()._UIManager.ShowGameToast('血量永久+10', ToastType.Game);
    					}
    					if (consumablesProp.propID == PropID.mpAgent) {
    						PlayerData.GetInstance().maxMp += 10;
    						InsManager.GetInstance()._DataUpdateManager.SetMpData(PlayerData.GetInstance().maxMp);
    						InsManager.GetInstance()._UIManager.ShowGameToast('体力永久+10', ToastType.Game);
    					}
    					if (consumablesProp.propID != PropID.Bandage)
    						SoundsManager.PlaySounds(PathData.sound_buttonSound);
    					break;
    				default: break;
    			}
    			InsManager.GetInstance()._MissionManager.MissionOverAllMonitor(MissionMonitorType.Button_Click);
    		}
    		else if (use_bt_label.text == '装备') {
    			if (this.openType != KpOpenType.EquipmentList)
    				return;
    			let kpDataArr = InsManager.GetInstance()._knapsackManager.IsContainsNullItem([InsManager.GetInstance()._knapsackManager.Knapsack_EquipmentColumn]);
    			if (kpDataArr != null) {
    				InsManager.GetInstance()._knapsackManager.ExchangePropData(this.currentList.knapsackData, this.currentPropData.index, this.equipment_list.knapsackData, kpDataArr[1]);
    				this.HidePropMsgPanel();
    				this.equipment_list.UpdateEquipmentModel();
    				this.currentList.InitView();
    				this.equipment_list.InitView();
    			}
    			else {
    				InsManager.GetInstance()._UIManager.ShowGameToast('装备栏已满', ToastType.Hint);
    			}
    		}
    		else if (use_bt_label.text == '卸下') {
    			if (this.openType != KpOpenType.EquipmentList && this.currentPropData != null)
    				return;
    			if (this.currentPropData.index == 0) {
    				InsManager.GetInstance()._UIManager.ShowGameToast('默认武器无法卸下', ToastType.Hint);
    				return;
    			}
    			let knapsackData = InsManager.GetInstance()._knapsackManager.IsPlayerKpImpletion(this.currentPropData.prop.propID, this.currentPropData.Count);
    			if (knapsackData != null) {
    				let ps = InsManager.GetInstance()._knapsackManager.AddPropData(knapsackData, this.currentPropData.prop.propID, this.currentPropData.Count, null);
    				ps.prop = this.currentPropData.prop;
    				InsManager.GetInstance()._knapsackManager.ClearPropSaveData(InsManager.GetInstance()._knapsackManager.Knapsack_EquipmentColumn.propDataArr[this.currentPropData.index]);
    				if (knapsackData == InsManager.GetInstance()._knapsackManager.Knapsack_PlayerPocket)
    					this.Pocket_list.InitView();
    				this.equipment_list.InitView();
    				this.HidePropMsgPanel();
    				this.equipment_list.UpdateEquipmentModel();
    				if (this.currentBox != null && this.currentBox.getChildAt(0).getChildByName("select_img") != null)
    					this.currentBox.getChildAt(0).getChildByName("select_img").visible = false;
    			}
    			else {
    				InsManager.GetInstance()._UIManager.ShowGameToast('背包已满', ToastType.Game);
    			}
    		}
    		else if (use_bt_label.text == '拿取') {
    			let knapsackData = InsManager.GetInstance()._knapsackManager.IsPlayerKpImpletion(this.currentPropData.prop.propID, this.currentPropData.Count);
    			if (knapsackData != null) {
    				InsManager.GetInstance()._knapsackManager.AddPropData(knapsackData, this.currentPropData.prop.propID, this.currentPropData.Count, this.currentPropData.prop.getType);
    				InsManager.GetInstance()._knapsackManager.ClearPropSaveData(this.currentPropData);
    				this.npc_list.InitView();
    				this.Pocket_list.InitView();
    				this.HidePropMsgPanel();
    			}
    			else {
    				if (InsManager.GetInstance()._DataSave.isOpenAd)
    					RewardsManager.GetInstance().OpenRewardsBag(4);
    				else
    					InsManager.GetInstance()._UIManager.ShowGameToast('背包已满！', ToastType.Game);
    			}
    		}
    		else if (use_bt_label.text == '存入') {
    			if (this.npc_list.knapsackData != null && this.currentPropData != null && this.currentPropData.prop != null) {
    				if (InsManager.GetInstance()._knapsackManager.IsImpletion(this.npc_list.knapsackData, this.currentPropData.prop.propID, this.currentPropData.Count)) {
    					InsManager.GetInstance()._knapsackManager.AddPropData(this.npc_list.knapsackData, this.currentPropData.prop.propID, this.currentPropData.Count, this.currentPropData.prop.getType);
    					InsManager.GetInstance()._knapsackManager.ClearPropSaveData(this.currentPropData);
    					this.npc_list.InitView();
    					this.Pocket_list.InitView();
    					this.HidePropMsgPanel();
    				}
    			}
    		}
    		else if (use_bt_label.text == '出售') {
    			if (this.currentPropData != null) {
    				InsManager.GetInstance()._DataUpdateManager.UpdateCoin(this.currentPropData.prop.sPrice);
    				InsManager.GetInstance()._UIManager.ShowGameToast('出售成功', ToastType.Hint);
    				if (this.currentPropData.Count > 1) {
    					this.currentPropData.Count--;
    					this.OpenPropMsgPanel(this.currentPropData);
    				}
    				else {
    					InsManager.GetInstance()._knapsackManager.ClearPropSaveData(this.currentPropData);
    					this.currentPropData = null;
    					this.HidePropMsgPanel();
    				}
    				this.currentList.InitView();
    			}
    		}
    	}
    	OnSeparateClick() {
    		if (this.currentPropData.prop == null || this.currentPropData.Count < 2)
    			return;
    		this.SeparateKpArr = InsManager.GetInstance()._knapsackManager.IsContainsNullItem([this.Pocket_list.knapsackData]);
    		if (this.SeparateKpArr == null)
    			return;
    		this.HidePropMsgPanel();
    		this.view["separatePanel"].visible = true;
    		this.hSlider.setSlider(0, this.currentPropData.Count - 1, 0);
    	}
    	OnSeparateResultClick() {
    		if (this.hSlider.value <= 0) {
    			this.view["separatePanel"].visible = false;
    			return;
    		}
    		let knData = this.SeparateKpArr[0];
    		let knIndex = this.SeparateKpArr[1];
    		this.currentPropData.Count -= this.hSlider.value;
    		knData.propDataArr[knIndex].prop = this.currentPropData.prop;
    		knData.propDataArr[knIndex].index = knIndex;
    		knData.propDataArr[knIndex].Count = this.hSlider.value;
    		this.Pocket_list.InitView();
    		this.view["separatePanel"].visible = false;
    	}
    	OnHSliderMove() {
    		this.view["separatePanel/bg/label"].text = "选择数量：" + this.hSlider.value;
    	}
    	OnDeletePropClick() {
    		InsManager.GetInstance()._knapsackManager.RemovePropData(this.currnetKnapsack, this.currentPropData);
    		this.view["deleteAffirmPanel"].visible = false;
    		this.currentList.InitView();
    		this.HidePropMsgPanel();
    	}
    	OnClearUpClick() {
    		console.log('整理====');
    		InsManager.GetInstance()._knapsackManager.ClearUpPlayerKnapsackProp();
    		this.Pocket_list.InitView();
    	}
    	UpdatePlayerKnapsackView() {
    		this.Pocket_list.InitView();
    	}
    	OnTakeAllPropClick() {
    		InsManager.GetInstance()._knapsackManager.PutinKnapsackAllProp(this.npc_list.knapsackData, this.Pocket_list.knapsackData);
    		this.Pocket_list.InitView();
    		this.npc_list.InitView();
    	}
    	OnPutinAllPropClick() {
    		if (GameSystemData.GetInstance().currentMissionID == 5) {
    			InsManager.GetInstance()._UIManager.ShowGameToast('请先完成任务', ToastType.Hint);
    			return;
    		}
    		if (this.all_place_bt.getChildAt(0).text == '智能储存') {
    			InsManager.GetInstance()._knapsackManager.PutinKnapsackSpecificProp(this.Pocket_list.knapsackData, this.npc_list.knapsackData);
    		}
    		else {
    			InsManager.GetInstance()._knapsackManager.PutinKnapsackAllProp(this.Pocket_list.knapsackData, this.npc_list.knapsackData);
    		}
    		this.OnClearUpClick();
    		this.Pocket_list.InitView();
    		this.npc_list.InitView();
    	}
    	UpdatePlayerHpProgress() {
    		this.view["center/playerMsgGroup/propertyGroup/hp_progress/valueLabel"].text = PlayerData.GetInstance().hp.toString();
    		this.view["center/playerMsgGroup/propertyGroup/stomach_progress/valueLabel"].text = Math.round(PlayerData.GetInstance().mp).toString();
    	}
    	UpdateUseButtonState() {
    		if (this.currentPropData == null) {
    			this.use_bt.img.visible = false;
    			return;
    		}
    		if (this.openType == KpOpenType.NpcList && this.currentList == this.Pocket_list) {
    			this.view["center/propMsgGroup/delete_bt"].visible = false;
    			this.use_bt.img.visible = true;
    			this.use_bt.img.getChildByName("label").text = '出售';
    			return;
    		}
    		if (this.openType == KpOpenType.NpcList && this.currentList == this.npc_list) {
    			this.use_bt.img.visible = false;
    			this.view["center/propMsgGroup/delete_bt"].visible = false;
    			return;
    		}
    		this.view["center/propMsgGroup/delete_bt"].visible = true;
    		if (this.currentList.openType == KpOpenType.EquipmentList) {
    			this.use_bt.img.visible = true;
    			this.view["center/propMsgGroup/delete_bt"].pos(423.5, 224);
    			this.use_bt.img.getChildByName("label").text = '卸下';
    			this.view["center/propMsgGroup/delete_bt"].visible = false;
    			return;
    		}
    		switch (this.currentPropData.prop.propType) {
    			case PropType.Consumables:
    			case PropType.Object3D:
    				this.use_bt.img.visible = true;
    				this.view["center/propMsgGroup/delete_bt"].visible = true;
    				this.view["center/propMsgGroup/delete_bt"].pos(423.5, 224);
    				this.use_bt.img.getChildByName("label").text = '使用';
    				break;
    			case PropType.Equipment:
    			case PropType.Weapon:
    				this.view["center/propMsgGroup/delete_bt"].visible = true;
    				if (this.openType == KpOpenType.EquipmentList) {
    					this.use_bt.img.visible = true;
    					this.view["center/propMsgGroup/delete_bt"].pos(423.5, 224);
    				}
    				else {
    					this.use_bt.img.visible = false;
    					this.view["center/propMsgGroup/delete_bt"].pos(290, 224);
    				}
    				this.use_bt.img.getChildByName("label").text = '装备';
    				break;
    			default:
    				this.use_bt.img.visible = false;
    				this.view["center/propMsgGroup/delete_bt"].visible = true;
    				this.view["center/propMsgGroup/delete_bt"].pos(423.5, 224);
    				this.use_bt.img.getChildByName("label").text = '使用';
    				break;
    		}
    	}
    	FindPlayerKnapsackPropItem(propID) {
    		let propItemIndex = InsManager.GetInstance()._knapsackManager.GetPropIndex(propID, InsManager.GetInstance()._knapsackManager.Knapsack_PlayerPocket);
    		return this.Pocket_list.itemArr[propItemIndex];
    	}
    	OnCloseClick() {
    		InsManager.GetInstance()._UIManager.RemoveUIPanel(PathData.knapsackPanel_path, this.owner);
    		if (this.openType == KpOpenType.NpcList && InsManager.GetInstance()._SceneManager.player.currentGetProp != null)
    			InsManager.GetInstance()._MissionManager.NewTaskFirst_Monitor(PathData.First_CloseKnapsack);
    		InsManager.GetInstance()._MissionManager.MissionOverAllMonitor(MissionMonitorType.Close_Knapsack, this.openType);
    	}
    	onDisable() {
    		this.currentPropData = null;
    		this.currnetKnapsack = null;
    		this.currentList = null;
    		this.currentBox = null;
    		this.downItme = null;
    		this.save_downItme = null;
    		this.save_upItme = null;
    		if (InsManager.GetInstance()._knapsackManager.IsExistNewHintProp() == false)
    			EventManager._Instance.Dispatch_Event(PathData.Event_HINTPOINT, ['knapsack_bt', false]);
    		if (this.openType == KpOpenType.ForgeList || (this.sceneManager.player.currentGetProp != null && this.sceneManager.player.currentGetProp.node3D != null && this.sceneManager.player.currentGetProp.node3D.name == PathData.box))
    			this.sceneManager.UpdatePlatform3DSigboardState();
    		InsManager.GetInstance()._SceneManager.player.isMove = true;
    		this.sceneManager.player.HideAtkNpc();
    		console.log("11111=================");
    		InsManager.GetInstance()._DataSave.SaveGameData(PathData.PropData);
    		InsManager.GetInstance()._DataSave.SaveGameData(PathData.PlayerData);
    	}
    	onDestroy() {
    		EventManager._Instance.Remove_Listener(PathData.EVENT_SETPLAYERHP, this, this.UpdatePlayerHpProgress);
    	}
    }

    class DialogPanel_Ctrl extends UI_Ctrl {
    	constructor() {
    		super();
    		this.dialog = null;
    		this.img = null;
    		this.name = null;
    		this.msg = null;
    		this.index = 0;
    		this.roleImg_path = "";
    		this.roleName = "";
    		this.logArr = [];
    		this.callback = null;
    		this.isTaskNext = true;
    	}
    	onAwake() {
    		super.onAwake();
    		this.img = this.view["buttom_center/dialog/img"];
    		this.name = this.view["buttom_center/dialog/name"];
    		this.msg = this.view["buttom_center/dialog/msg"];
    		this.dialog = this.owner;
    	}
    	onStart() {
    		this.dialog.on(Laya.Event.CLICK, this, this.OnNextStep);
    	}
    	onEnable() {
    		InsManager.GetInstance()._UIManager.OnClassFrameAnimtion(this.view["buttom_center/dialog"], this.owner, true, 0.7);
    		this.dialog.on(Laya.Event.CLICK, this, this.OnNextStep);
    		SoundsManager.PlaySounds(PathData.sound_buttonSound);
    	}
    	ShowDialog(logArr, callback) {
    		this.index = 0;
    		this.logArr = logArr;
    		this.callback = callback;
    		this.PlayDialog();
    	}
    	PlayDialog() {
    		let roleNum = this.logArr[this.index][0];
    		if (roleNum == null || roleNum == undefined) {
    			console.error("error: roleNum switch Fail");
    			return;
    		}
    		switch (roleNum) {
    			case '0':
    				this.roleImg_path = "";
    				this.roleName = "艾迪：";
    				break;
    			case '1':
    				this.roleImg_path = 'https://www.zywxgames.com/Resource/hujiazhi/SaiBoCity/dialog2/Alice.png';
    				this.roleName = "玛丽";
    				break;
    			case '2':
    				this.roleImg_path = 'https://www.zywxgames.com/Resource/hujiazhi/SaiBoCity/dialog2/frank.png';
    				this.roleName = "弗兰克";
    				break;
    			case '3':
    				this.roleImg_path = 'https://www.zywxgames.com/Resource/hujiazhi/SaiBoCity/dialog2/philp.png';
    				this.roleName = "杰姆森";
    				break;
    			case '4':
    				this.roleImg_path = 'https://www.zywxgames.com/Resource/hujiazhi/SaiBoCity/dialog2/Jack.png';
    				this.roleName = "杰克";
    				break;
    			case '5':
    				this.roleImg_path = 'https://www.zywxgames.com/Resource/hujiazhi/SaiBoCity/dialog2/bigguy.png';
    				this.roleName = "大只佬";
    				break;
    			case '6':
    				this.roleImg_path = 'https://www.zywxgames.com/Resource/hujiazhi/SaiBoCity/dialog2/Frued.png';
    				this.roleName = "黑市老板";
    				break;
    			case '7':
    				this.roleImg_path = 'https://www.zywxgames.com/Resource/hujiazhi/SaiBoCity/dialog2/baobiao.png';
    				this.roleName = "黑衣人";
    				break;
    			case '8':
    				this.roleImg_path = 'https://www.zywxgames.com/Resource/hujiazhi/SaiBoCity/dialog2/MSX.png';
    				this.roleName = "X小姐";
    				break;
    			case '9':
    				this.roleImg_path = '';
    				this.roleName = "机械怪人";
    				break;
    			case 'A':
    				this.roleImg_path = 'https://www.zywxgames.com/Resource/hujiazhi/SaiBoCity/dialog2/Hunter.png';
    				this.roleName = "赏金猎人";
    				break;
    			case 'B':
    				this.roleImg_path = 'https://www.zywxgames.com/Resource/hujiazhi/SaiBoCity/dialog2/lisa.png';
    				this.roleName = "露西娅";
    				break;
    			case 'C':
    				this.roleImg_path = 'https://www.zywxgames.com/Resource/hujiazhi/SaiBoCity/dialog2/Gangster.png';
    				this.roleName = "山本成员";
    				break;
    			case 'D':
    				this.roleImg_path = 'https://www.zywxgames.com/Resource/hujiazhi/SaiBoCity/dialog2/mark.png';
    				this.roleName = "詹姆";
    				break;
    			case 'E':
    				this.roleImg_path = '';
    				this.roleName = "女市民";
    				break;
    			case 'F':
    				this.roleImg_path = '';
    				this.roleName = "男市民";
    				break;
    			case 'G':
    				this.roleImg_path = '';
    				this.roleName = "外卖小哥";
    				break;
    			case 'H':
    				this.roleImg_path = '';
    				this.roleName = "目标客户";
    				break;
    			case 'I':
    				this.roleImg_path = '';
    				this.roleName = "委托人";
    				break;
    			case 'X':
    				this.roleImg_path = '';
    				this.roleName = "系统提示";
    				break;
    		}
    		if (roleNum == 'S') {
    			InsManager.GetInstance()._UIManager.ShowPopoutPanel(PopoutPanelType.Select, this.logArr[this.index].substring(1, this.logArr[this.index].length), '', () => { InsManager.GetInstance()._UIManager.ShowDialogPanel(MainMissionData[GameSystemData.GetInstance().currentMissionID].select.dialog_1, () => { InsManager.GetInstance()._MissionManager.LaterMissionContent(GameSystemData.GetInstance().currentMissionID); }); }, () => { InsManager.GetInstance()._UIManager.ShowDialogPanel(MainMissionData[GameSystemData.GetInstance().currentMissionID].select.dialog_2, () => { InsManager.GetInstance()._MissionManager.LaterMissionContent(GameSystemData.GetInstance().currentMissionID); }); }, null, MainMissionData[GameSystemData.GetInstance().currentMissionID].select.plot_1, MainMissionData[GameSystemData.GetInstance().currentMissionID].select.plot_2);
    			return;
    		}
    		this.img.skin = this.roleImg_path;
    		this.name.text = this.roleName;
    		this.msg.text = this.logArr[this.index].substring(1, this.logArr[this.index].length);
    	}
    	OnNextStep() {
    		if (!this.isTaskNext || this.index >= this.logArr.length)
    			return;
    		this.index++;
    		SoundsManager.PlaySounds(PathData.sound_buttonSound);
    		if (this.index == this.logArr.length) {
    			InsManager.GetInstance()._UIManager.OnClassFrameAnimtion(this.view["buttom_center/dialog"], this.owner, false, 0.7);
    			this.callback && this.callback();
    			return;
    		}
    		this.PlayDialog();
    		this.isTaskNext = false;
    		Laya.timer.once(500, this, this.SetTakeNext);
    	}
    	SetTakeNext() {
    		this.isTaskNext = true;
    	}
    }

    class AwardPopoutPanel_Ctrl extends UI_Ctrl {
    	constructor() {
    		super();
    		this.items = null;
    		this.itemArr = new Array();
    		this.finishCallBack = null;
    		this.callArr = [];
    		this.isInUse = false;
    		this.useIndex = 0;
    		this.mteNum = 1;
    		this.titleImg = null;
    		this.mty_label_img = null;
    	}
    	onAwake() {
    		super.onAwake();
    		this.titleImg = this.view['center/bg/title_img/sprite'];
    		this.mty_label_img = this.view['center/bg/mty_bt/get_label_img'];
    	}
    	onEnable() {
    		SoundsManager.PlaySounds(PathData.sound_award);
    		InsManager.GetInstance()._UIManager.OnClassFrameAnimtion(this.view["center/bg"], this.owner, true, 0.7);
    		SoundsManager.PlaySounds(PathData.sound_buttonSound);
    		Platforms.getInstance().hideBanner();
    	}
    	onStart() {
    		this.view["center/bg/mty_bt"].on(Laya.Event.CLICK, this, this.OnCloseClick, [3]);
    		this.view["center/bg/get_bt"].on(Laya.Event.CLICK, this, this.OnCloseClick, [1]);
    		this.view['center/bg/singleGet_bt'].on(Laya.Event.CLICK, this, this.OnCloseClick, [1]);
    	}
    	ShowPanel(propIDArr, propCountArr, cion, exp, mteNum, isShowMteButton, finishCallBack) {
    		if (isShowMteButton) {
    			this.view["center/bg/mty_bt"].visible = InsManager.GetInstance()._DataSave.isOpenAd;
    			this.view['center/bg/singleGet_bt'].visible = !InsManager.GetInstance()._DataSave.isOpenAd;
    			this.view["center/bg/get_bt"].visible = InsManager.GetInstance()._DataSave.isOpenAd;
    		}
    		else {
    			this.view['center/bg/singleGet_bt'].visible = true;
    			this.view["center/bg/mty_bt"].visible = false;
    			this.view["center/bg/get_bt"].visible = false;
    		}
    		if (this.items == null) {
    			this.items = this.owner.getChildByName('center').getChildByName("bg").getChildByName("items");
    			for (let i = 0; i < this.items.numChildren; i++) {
    				this.itemArr.push(this.items.getChildAt(i));
    			}
    		}
    		this.useIndex = 0;
    		this.finishCallBack = () => {
    			InsManager.GetInstance()._MissionManager.MissionAward(propIDArr, propCountArr, cion, exp, null, this.mteNum, false);
    			if (this.mteNum == 3)
    				InsManager.GetInstance()._UIManager.ShowGameToast('3倍奖励领取成功', ToastType.Game);
    			finishCallBack && finishCallBack();
    		};
    		this.InitView(propIDArr, propCountArr, cion, exp, mteNum);
    	}
    	InitView(propIDArr, propCountArr, cion, exp, mteNum) {
    		for (let i = 0; i < propIDArr.length; i++) {
    			if (i >= this.itemArr.length) {
    				console.log("数组超过可使用的格子了");
    			}
    			else {
    				let prop = InsManager.GetInstance()._knapsackManager.GetPropData(propIDArr[i]);
    				this.itemArr[i].getChildByName("icon").skin = PathData.icon_path + prop.skin;
    				this.itemArr[i].getChildByName("label").text = prop.name + "x" + (propCountArr[i] * mteNum);
    				this.useIndex++;
    			}
    		}
    		if (this.itemArr.length > this.useIndex && cion > 0) {
    			this.itemArr[this.useIndex].getChildByName("icon").skin = PathData.cion_icon_img;
    			this.itemArr[this.useIndex].getChildByName("label").text = "金币x" + (cion * mteNum).toString();
    			this.useIndex++;
    		}
    		if (this.itemArr.length > this.useIndex && exp > 0) {
    			this.itemArr[this.useIndex].getChildByName("icon").skin = PathData.exp_icon_img;
    			this.itemArr[this.useIndex].getChildByName("label").text = "EXP+" + (exp * mteNum).toString();
    			this.useIndex++;
    		}
    		for (let i = 0; i < this.itemArr.length; i++) {
    			if (i < this.useIndex) {
    				this.itemArr[i].visible = true;
    			}
    			else {
    				this.itemArr[i].visible = false;
    			}
    		}
    		switch (this.useIndex) {
    			case 1:
    				this.itemArr[0].pos(353, 199);
    				break;
    			case 2:
    				this.itemArr[0].pos(250, 205);
    				this.itemArr[1].pos(480, 205);
    				break;
    			case 3:
    				this.itemArr[0].pos(133, 205);
    				this.itemArr[1].pos(363, 205);
    				this.itemArr[2].pos(589, 205);
    				break;
    			case 4:
    				this.itemArr[0].pos(271.5, 126);
    				this.itemArr[1].pos(472, 126);
    				this.itemArr[2].pos(271.5, 308);
    				this.itemArr[3].pos(472, 308);
    				break;
    			case 5:
    				this.itemArr[0].pos(271.5, 126);
    				this.itemArr[1].pos(472, 126);
    				this.itemArr[2].pos(172, 308);
    				this.itemArr[3].pos(372, 308);
    				this.itemArr[4].pos(573, 308);
    				break;
    			case 6:
    				this.itemArr[0].pos(161.5, 126);
    				this.itemArr[1].pos(362, 126);
    				this.itemArr[2].pos(562, 126);
    				this.itemArr[3].pos(161.5, 308);
    				this.itemArr[4].pos(362, 308);
    				this.itemArr[5].pos(562, 308);
    				break;
    			default: break;
    		}
    	}
    	OnCloseClick(mty) {
    		this.mteNum = mty;
    		if (this.mteNum != 1 && this.finishCallBack) {
    			RewardsManager.GetInstance().Rewards_GetMtyAward(() => {
    				this.finishCallBack && this.finishCallBack();
    				InsManager.GetInstance()._UIManager.RemoveUIPanel(this.owner.name, this.owner);
    			});
    		}
    		else {
    			this.finishCallBack && this.finishCallBack();
    			InsManager.GetInstance()._UIManager.RemoveUIPanel(this.owner.name, this.owner);
    		}
    		if (InsManager.GetInstance()._UIManager.knapsackPanel != null)
    			InsManager.GetInstance()._UIManager.knapsackPanel.UpdatePlayerKnapsackView();
    	}
    	onDisable() {
    	}
    }

    class DialogBannerPanel_Ctrl extends UI_Ctrl {
    	constructor() {
    		super();
    		this.existTime = 3000;
    		this.bg = null;
    		this.label = null;
    		this.step = 0;
    		this.finish_callback = null;
    		this.spriet3D = null;
    		this.dialogPos = new Laya.Vector4(0, 0, 0, 0);
    	}
    	onAwake() {
    		super.onAwake();
    		this.bg = this.view["bg"];
    		this.label = this.view["bg/label"];
    	}
    	InitView(logArr, sprite3D, finish_callBack) {
    		if (this.finish_callback != null) {
    			Laya.timer.clearAll(this);
    			Laya.Tween.clearAll(this.bg);
    		}
    		this.step = 0;
    		this.bg.alpha = 0;
    		this.finish_callback = finish_callBack;
    		this.spriet3D = sprite3D;
    		this.NextDialog(logArr);
    	}
    	NextDialog(logArr) {
    		if (this.step >= logArr.length || logArr[this.step] == null || logArr[this.step] == undefined) {
    			InsManager.GetInstance()._SceneManager.player.isMove = true;
    			Laya.Tween.to(this.bg, { alpha: 0 }, 200, null, Laya.Handler.create(this, () => {
    				this.owner.active = false;
    				this.finish_callback && this.finish_callback();
    				this.finish_callback = null;
    			}));
    			return;
    		}
    		this.label.text = logArr[this.step];
    		let logWidth = (logArr[this.step].length * this.label.fontSize) + 50;
    		if (logWidth < 245)
    			logWidth = 245;
    		this.bg.width = logWidth;
    		this.label.width = logWidth;
    		this.label.pos(logWidth / 2, this.bg.height / 2);
    		this.SetPos();
    		Laya.Tween.to(this.bg, { alpha: 1 }, 600);
    		this.step++;
    		Laya.timer.once((this.existTime + 700), this, () => {
    			Laya.Tween.to(this.bg, { alpha: 0 }, 600, Laya.Ease.linearIn, Laya.Handler.create(this, this.NextDialog, [logArr]));
    		});
    	}
    	onUpdate() {
    		this.SetPos();
    	}
    	SetPos() {
    		this.bg.pos(Laya.stage.width / 2, (Laya.stage.height / 2) - 150);
    	}
    }

    class TipsPanel_Ctrl extends UI_Ctrl {
    	constructor() {
    		super();
    		this.buttonImg = null;
    		this.tipMask = null;
    		this.img = null;
    		this.hitArea = null;
    		this.label = null;
    		this.isClearBeforeHit = true;
    		this.maskImgArr = [];
    	}
    	onAwake() {
    		super.onAwake();
    		this.img = this.owner;
    		this.label = this.view['tipMaskBg/label'];
    	}
    	SetTipMask(buttonImg, tipLabel, finishFunc) {
    		this.buttonImg = buttonImg;
    		this.isClearBeforeHit = true;
    		this.label.text = tipLabel;
    		this.NextStep();
    	}
    	SetTipMaskMuityiple(buttonImg) {
    		this.isClearBeforeHit = false;
    		this.buttonImg = buttonImg;
    		this.NextStep();
    	}
    	NextStep() {
    		this.img.cacheAs = "bitmap";
    		if (this.maskImgArr.length > 0 && this.isClearBeforeHit) {
    			for (let i = 0; i < this.maskImgArr.length; i++) {
    				this.maskImgArr[i].graphics.clear(true);
    				this.maskImgArr[i].destroy();
    			}
    			this.tipMask = null;
    			this.maskImgArr = [];
    		}
    		let point = Laya.Point.create();
    		point.x = this.buttonImg.x;
    		point.y = this.buttonImg.y;
    		let parent = this.buttonImg.parent;
    		parent.localToGlobal(point, false);
    		this.img.globalToLocal(point, false, this.img);
    		let mask_img = new Laya.Image();
    		this.maskImgArr.push(mask_img);
    		this.tipMask = mask_img;
    		this.owner.addChild(this.tipMask);
    		this.owner.addChild(this.label);
    		this.tipMask.blendMode = "destination-out";
    		if (this.buttonImg.anchorX > 0 || this.buttonImg.anchorY > 0) {
    			point.x -= (this.buttonImg.width * this.buttonImg.anchorX);
    			point.y -= (this.buttonImg.height * this.buttonImg.anchorY);
    		}
    		this.tipMask.graphics.drawRect(point.x, point.y, this.buttonImg.width, this.buttonImg.height, "#00ffff");
    		this.tipMask.mouseEnabled = false;
    		this.label.pos(point.x + (this.buttonImg.width / 2), point.y - 40);
    		if (this.isClearBeforeHit) {
    			this.hitArea = new Laya.HitArea();
    			this.img.hitArea = this.hitArea;
    			this.hitArea.hit.drawRect(0, 0, Laya.stage.width, Laya.stage.height, "#00ffff");
    			this.hitArea.unHit.clear();
    		}
    		this.hitArea.unHit.drawRect(point.x, point.y, this.buttonImg.width, this.buttonImg.height, "#00ffff");
    	}
    }

    class ScreenPanel_Ctrl extends UI_Ctrl {
    	constructor() {
    		super();
    		this.screen_top = null;
    		this.screen_buttom = null;
    	}
    	onAwake() {
    		super.onAwake();
    		this.screen_top = this.view["screen_top"];
    		this.screen_buttom = this.view["screen_buttom"];
    	}
    	onEnable() {
    		this.OpenAnim();
    	}
    	OpenAnim() {
    		InsManager.GetInstance()._SceneManager.player.isMove = false;
    		InsManager.GetInstance()._SceneManager.player.PlayerStateSwitch(PlayerState.Idle);
    		this.screen_top.scaleY = 0;
    		this.screen_buttom.scaleY = 0;
    		Laya.Tween.to(this.screen_top, { scaleY: 1 }, 1000);
    		Laya.Tween.to(this.screen_buttom, { scaleY: 1 }, 1000);
    		if (InsManager.GetInstance()._SceneManager.gamePanel != null && InsManager.GetInstance()._SceneManager.gamePanel.owner.active) {
    			InsManager.GetInstance()._SceneManager.gamePanel.owner.visible = false;
    		}
    	}
    	CloseAnim() {
    		Laya.Tween.to(this.screen_top, { scaleY: 0 }, 1000);
    		Laya.Tween.to(this.screen_buttom, { scaleY: 0 }, 1000, Laya.Ease.linearOut, Laya.Handler.create(this, () => {
    			InsManager.GetInstance()._SceneManager.gamePanel.owner.visible = true;
    			InsManager.GetInstance()._SceneManager.player.isMove = true;
    			InsManager.GetInstance()._UIManager.RemoveUIPanel(PathData.screenPanel_path, this.owner);
    		}));
    	}
    }

    class FuncDicData {
    	constructor(nodeName, func, call) {
    		this.nodeName = "";
    		this.func = null;
    		this.call = null;
    		this.call = call;
    		this.nodeName = nodeName;
    		this.func = func;
    	}
    }

    class PropCountMap {
    	constructor(propID, count) {
    		this.propID = null;
    		this.count = 0;
    		this.propID = propID;
    		this.count = count;
    	}
    }

    class RewardsPopoutPanel_Ctrl extends UI_Ctrl {
    	constructor() {
    		super();
    		this.ClickBackcall = null;
    		this.tczyData = [new PropCountMap(PropID.kele, 1), new PropCountMap(PropID.medicalBox, 1), new PropCountMap(PropID.mpAgent, 2), new PropCountMap(PropID.beer, 10), new PropCountMap(PropID.bento, 5)];
    		this.fyzsData = [new PropCountMap(PropID.kele, 2), new PropCountMap(PropID.medicalBox, 5), new PropCountMap(PropID.mpAgent, 5), new PropCountMap(PropID.beer, 10), new PropCountMap(PropID.bento, 5)];
    	}
    	onAwake() {
    		super.onAwake();
    	}
    	onStart() {
    		this.view['center/bg/close_img'].on(Laya.Event.CLICK, this, this.OnCloseClick);
    		this.view['center/bg_big/close_img'].on(Laya.Event.CLICK, this, this.OnCloseClick_Big);
    		this.view['center/bg_LiBao/close_img'].on(Laya.Event.CLICK, this, this.OnCloseClick_LiBao);
    	}
    	onEnable() {
    		if (InsManager.GetInstance()._SceneManager.player != null && InsManager.GetInstance()._SceneManager.player.joystick != null)
    			InsManager.GetInstance()._SceneManager.player.joystick.SetStatic();
    		if (Platforms.getInstance().isVivo())
    			Platforms.getInstance().hideBanner();
    	}
    	ShowPanel(title, msg, iconPath, ClickBackcall) {
    		this.view['center/bg'].visible = true;
    		this.view['center/bg_big'].visible = false;
    		this.view['center/bg_LiBao'].visible = false;
    		InsManager.GetInstance()._UIManager.OnClassFrameAnimtion(this.view["center/bg"], this.owner, true, 0.7);
    		this.view['center/bg/title'].text = title;
    		this.view['center/bg/msg'].text = msg;
    		this.view['center/bg/icon'].skin = iconPath;
    		this.ClickBackcall = ClickBackcall;
    		this.view['center/bg/close_img'].visible = true;
    		this.view['center/bg/get_bt'].on(Laya.Event.CLICK, this, this.OnGetButtonClick);
    	}
    	ShowGiftPag(type, titleSkin, msg, ClickBackcall) {
    		type = 0;
    		SoundsManager.PlaySounds(PathData.sound_award, 0.6);
    		this.sceneManager.player.isNpcAtk = false;
    		this.view['center/bg'].visible = false;
    		this.view['center/bg_big'].visible = true;
    		this.view['center/bg_LiBao'].visible = false;
    		InsManager.GetInstance()._UIManager.OnClassFrameAnimtion(this.view["center/bg_big"], this.owner, true, 0.7);
    		this.view['center/bg_big/msg'].text = msg;
    		this.ClickBackcall = ClickBackcall;
    		this.view['center/bg_big/close_img'].visible = true;
    		this.view['center/bg_big/get_bt'].on(Laya.Event.CLICK, this, this.OnGetButtonClick);
    		this.view['center/bg_big/knapsackBox'].visible = true;
    	}
    	ShowLiBao(type, titleSkin, ClickBackcall) {
    		SoundsManager.PlaySounds(PathData.sound_award, 0.6);
    		this.sceneManager.player.isNpcAtk = false;
    		this.view['center/bg'].visible = false;
    		this.view['center/bg_big'].visible = false;
    		this.view['center/bg_LiBao'].visible = true;
    		InsManager.GetInstance()._UIManager.OnClassFrameAnimtion(this.view["center/bg_LiBao"], this.owner, true, 0.7);
    		this.ClickBackcall = ClickBackcall;
    		this.view['center/bg_LiBao/close_img'].visible = true;
    		this.view['center/bg_LiBao/get_bt'].on(Laya.Event.CLICK, this, this.OnGetButtonClick);
    		switch (type) {
    			case 0:
    				this.view['center/bg_LiBao/weaponBox'].visible = true;
    				break;
    			case 1:
    				this.view['center/bg_LiBao/weaponBox'].visible = false;
    				break;
    		}
    	}
    	OnGetButtonClick() {
    		if (Platforms.getInstance().isVivo())
    			Platforms.getInstance().hideBanner();
    		this.ClickBackcall && this.ClickBackcall();
    	}
    	OnCloseClick() {
    		Laya.timer.scale = 1;
    		InsManager.GetInstance()._UIManager.OnClassFrameAnimtion(this.view["center/bg"], this.owner, false, 0.7);
    	}
    	OnCloseClick_Big() {
    		Laya.timer.scale = 1;
    		InsManager.GetInstance()._UIManager.OnClassFrameAnimtion(this.view["center/bg_big"], this.owner, false, 0.7);
    	}
    	OnCloseClick_LiBao() {
    		Laya.timer.scale = 1;
    		InsManager.GetInstance()._UIManager.OnClassFrameAnimtion(this.view["center/bg_LiBao"], this.owner, false, 0.7);
    	}
    	onDisable() {
    		try {
    			Laya.timer.scale = 1;
    			this.sceneManager.player.isNpcAtk = true;
    			if (Platforms.getInstance().isVivo())
    				Platforms.getInstance().hideBanner();
    			this.view['center/bg/get_bt'].off(Laya.Event.CLICK, this, this.OnGetButtonClick);
    			this.view['center/bg_big/get_bt'].off(Laya.Event.CLICK, this, this.OnGetButtonClick);
    			this.view['center/bg_LiBao/get_bt'].off(Laya.Event.CLICK, this, this.OnGetButtonClick);
    		}
    		catch (error) {
    			console.error(error);
    		}
    	}
    }

    class LoadCirclePanel_Ctrl extends UI_Ctrl {
    	constructor() {
    		super();
    		this.msg_label = null;
    		this.circle = null;
    		this.isRotate = null;
    	}
    	onAwake() {
    		super.onAwake();
    		this.msg_label = this.view['center/msg_label'];
    		this.circle = this.view['center/circle'];
    	}
    	onEnable() {
    		this.isRotate = true;
    	}
    	onUpdate() {
    		if (this.isRotate)
    			this.RotateCircle();
    	}
    	Init(msg) {
    		this.msg_label.text = msg;
    	}
    	RotateCircle() {
    		this.circle.rotation += 2;
    		if (this.circle.rotation >= 360)
    			this.circle.rotation = 0;
    	}
    	onDisable() {
    		this.isRotate = false;
    	}
    }

    class ScreenUITrace extends Laya.Script {
    	constructor() {
    		super();
    		this.traceImg = null;
    		this.targetSprite3D = null;
    		this.targetMeshSprite3D = null;
    		this.playerCamera = null;
    		this.arrow = null;
    		this.v4 = new Laya.Vector4(0, 0, 0, 0);
    		this.originlV4 = new Laya.Vector4(0, 0, 0, 0);
    		this.arrowImg = null;
    		this.sv3 = new Laya.Vector3(0, 0, 0);
    		this.dis = 0;
    		this.player = null;
    		this.disLabel = null;
    	}
    	Init(targetSprite3D, playerCamera, traceType) {
    		this.traceImg = this.owner;
    		this.targetSprite3D = targetSprite3D;
    		this.targetMeshSprite3D = targetSprite3D;
    		this.playerCamera = playerCamera;
    		this.player = InsManager.GetInstance()._SceneManager.player.playerPos;
    		this.arrow = this.owner.getChildByName('arrow');
    		this.arrowImg = this.arrow.getChildByName('img');
    		this.disLabel = this.owner.getChildByName('dis');
    		let typeSkin = '';
    		let arrowSkin = '';
    		switch (traceType) {
    			case TraceType.End:
    				typeSkin = 'fangxiangzhiyinyuan.png';
    				arrowSkin = 'jiantou.png';
    				break;
    			case TraceType.Branch:
    				typeSkin = 'fangxiangzhiyinyuan_1.png';
    				arrowSkin = 'jiantou_1.png';
    				break;
    		}
    		this.traceImg.skin = PathData.game_path + typeSkin;
    		this.arrowImg.skin = PathData.game_path + arrowSkin;
    	}
    	onUpdate() {
    		this.TraceTarget();
    	}
    	TraceTarget() {
    		if (this.targetSprite3D.transform == null) {
    			InsManager.GetInstance()._UIManager.ClearUITrace(this.targetSprite3D);
    			return;
    		}
    		if (this.traceImg != null && this.targetSprite3D != null && this.targetSprite3D != undefined) {
    			this.playerCamera.worldToViewportPoint(this.targetSprite3D.transform.localPosition, this.originlV4);
    			this.v4 = new Laya.Vector4(this.originlV4.x, this.originlV4.y, this.originlV4.z, this.originlV4.w);
    			let angle = CalculateExtend.GetVector3Angle(this.targetSprite3D, this.playerCamera);
    			this.dis = Laya.Vector3.distance(this.player.transform.position, this.targetSprite3D.transform.position);
    			this.disLabel.text = Math.round(this.dis) + 'm';
    			var sPos = new Laya.Vector3(this.v4.x / Laya.stage.clientScaleX, this.v4.y / Laya.stage.clientScaleY, 0);
    			if (angle > 90) {
    				this.v4.x = 1200 - this.v4.x;
    				this.v4.y = Laya.stage.height - 80;
    				if (this.v4.x < 180)
    					this.v4.x = 180;
    				if (this.v4.x > Laya.stage.width - 180)
    					this.v4.x = Laya.stage.width - 180;
    				this.traceImg.pos(this.v4.x, this.v4.y);
    				Laya.Vector3.subtract(new Laya.Vector3(this.originlV4.x, this.originlV4.y, 0), new Laya.Vector3(this.v4.x, this.v4.y, 0), this.sv3);
    				let lookAtangle = CalculateExtend.AngleBetween(new Laya.Vector2(0, 1), new Laya.Vector2(this.sv3.x, this.sv3.y));
    				this.arrow.rotation = lookAtangle + 180;
    				this.arrow.visible = true;
    			}
    			else {
    				if (this.v4.x < 180)
    					this.v4.x = 180;
    				if (this.v4.x > Laya.stage.width - 180)
    					this.v4.x = Laya.stage.width - 180;
    				if (this.v4.y < 60)
    					this.v4.y = (75 / Laya.stage.height) * Laya.stage.height;
    				if (this.v4.y > Laya.stage.height - 60)
    					this.v4.y = (600 / Laya.stage.height) * Laya.stage.height;
    				this.traceImg.pos(this.v4.x, this.v4.y);
    				if (Laya.Vector3.distance(new Laya.Vector3(this.originlV4.x, this.originlV4.y, 0), new Laya.Vector3(this.traceImg.x, this.traceImg.y, 0)) < 15) {
    					this.arrow.visible = false;
    				}
    				else {
    					Laya.Vector3.subtract(new Laya.Vector3(this.originlV4.x, this.originlV4.y, 0), new Laya.Vector3(this.v4.x, this.v4.y, 0), this.sv3);
    					let lookAtangle = CalculateExtend.AngleBetween(new Laya.Vector2(0, 1), new Laya.Vector2(this.sv3.x, this.sv3.y));
    					this.arrow.rotation = lookAtangle;
    					this.arrow.visible = true;
    				}
    			}
    		}
    	}
    }
    var TraceType;
    (function (TraceType) {
    	TraceType[TraceType["End"] = 0] = "End";
    	TraceType[TraceType["Branch"] = 1] = "Branch";
    })(TraceType || (TraceType = {}));

    class GameGuidance {
    	constructor() {
    		this.FingerSlide_Sprite = null;
    		this.FingerClick_Sprite = null;
    		this.isArrowUse = false;
    		this.finger_img = null;
    		this.flicke_Img = null;
    		this.gsMap = {};
    	}
    	static GetInstance() {
    		if (this.instance == null)
    			this.instance = new GameGuidance();
    		return this.instance;
    	}
    	ShowArrow(player, target, arrow) {
    		if (target == null) {
    			console.log("找不到相关3D道具");
    			return;
    		}
    		if (!this.isArrowUse) {
    			Laya.timer.clear(this, this.ArrowLookAt);
    		}
    		arrow.active = true;
    		Laya.timer.loop(Laya.timer.delta / 2, this, this.ArrowLookAt, [player, target, arrow]);
    		this.isArrowUse = true;
    	}
    	ArrowLookAt(player, target, arrow) {
    		arrow.active = true;
    		if (target == null || target.transform == null) {
    			Laya.timer.clear(this, this.ArrowLookAt);
    			return;
    		}
    		arrow.transform.position = new Laya.Vector3(player.transform.position.x, 0.2, player.transform.position.z);
    		arrow.transform.lookAt(target.transform.position, new Laya.Vector3(0, 1, 0), false);
    	}
    	HideArrow(arrow) {
    		Laya.timer.clear(this, this.ArrowLookAt);
    		if (arrow != null)
    			arrow.active = false;
    		this.isArrowUse = false;
    	}
    	FingerSlideGuidance(img_start, img_end, parent) {
    		if (img_start == null || img_end == null) {
    			return;
    		}
    		if (this.finger_img == null) {
    			this.finger_img = new Laya.Image(PathData.finger_img);
    			this.finger_img.width = 124;
    			this.finger_img.height = 131;
    			this.finger_img.pivot(105, 23);
    			this.finger_img.mouseEnabled = false;
    		}
    		else {
    			Laya.Tween.clearAll(this.finger_img);
    		}
    		this.FingerSlide_Sprite = img_start;
    		parent.addChild(this.finger_img);
    		let start_point = Laya.Point.create();
    		start_point.x = img_start.x;
    		start_point.y = img_start.y;
    		start_point = img_start.parent.localToGlobal(start_point, false);
    		let end_point = Laya.Point.create();
    		end_point.x = img_end.x;
    		end_point.y = img_end.y;
    		end_point = img_end.parent.localToGlobal(end_point, false);
    		this.finger_img.pos(start_point.x, start_point.y);
    		this.FingerSlideTweenCyclic(start_point, end_point);
    	}
    	FingerSlideTweenCyclic(start_point, end_point) {
    		Laya.Tween.to(this.finger_img, { x: end_point.x, y: end_point.y }, 800, Laya.Ease.linearIn, Laya.Handler.create(this, function () {
    			Laya.Tween.to(this.finger_img, { x: start_point.x, y: start_point.y }, 500, Laya.Ease.linearIn, Laya.Handler.create(this, function () {
    				this.FingerSlideTweenCyclic(start_point, end_point);
    			}));
    		}));
    	}
    	CloseFingerSlideuidance() {
    		if (this.FingerSlide_Sprite == null)
    			return;
    		if (this.finger_img == null) {
    			console.error("error: finger_img is null");
    			return;
    		}
    		Laya.Tween.clearAll(this.finger_img);
    		this.FingerSlide_Sprite = null;
    		this.finger_img.removeSelf();
    	}
    	FingerClickGuidance(targetSprite, parent) {
    		let pos_point = Laya.Point.create();
    		pos_point.x = targetSprite.x;
    		pos_point.y = targetSprite.y;
    		pos_point = targetSprite.parent.localToGlobal(pos_point, false);
    		if (this.finger_img == null) {
    			this.finger_img = new Laya.Image(PathData.finger_img);
    			this.finger_img.width = 124;
    			this.finger_img.height = 131;
    			this.finger_img.pivot(105, 23);
    			this.finger_img.mouseEnabled = false;
    		}
    		if (this.flicke_Img == null) {
    			this.flicke_Img = new Laya.Image(PathData.flicke_Img);
    			this.flicke_Img.width = 125;
    			this.flicke_Img.height = 125;
    			this.flicke_Img.anchorX = 0.5;
    			this.flicke_Img.anchorY = 0.5;
    			this.flicke_Img.mouseEnabled = false;
    		}
    		else {
    			Laya.Tween.clearAll(this.flicke_Img);
    		}
    		this.FingerClick_Sprite = targetSprite;
    		parent.addChild(this.flicke_Img);
    		parent.addChild(this.finger_img);
    		this.finger_img.pos(pos_point.x, pos_point.y);
    		this.flicke_Img.pos(pos_point.x, pos_point.y);
    		this.FingerClickTweenCyclic(this.flicke_Img);
    	}
    	FingerClickTweenCyclic(flicke_Img) {
    		Laya.Tween.to(flicke_Img, { scaleX: 0.3, scaleY: 0.3 }, 300, Laya.Ease.linearIn, Laya.Handler.create(this, function () {
    			Laya.Tween.to(flicke_Img, { scaleX: 1, scaleY: 1 }, 400, Laya.Ease.linearIn, Laya.Handler.create(this, function () {
    				this.FingerClickTweenCyclic(flicke_Img);
    			}));
    		}));
    	}
    	CloseFingerClickTween() {
    		if (this.FingerClick_Sprite == null)
    			return;
    		if (this.flicke_Img == null) {
    			console.error("error: flicke_img is null ");
    			return;
    		}
    		if (this.finger_img == null) {
    			console.error("error: finger_img is null ");
    			return;
    		}
    		Laya.Tween.clearAll(this.flicke_Img);
    		this.flicke_Img.removeSelf();
    		this.finger_img.removeSelf();
    		this.FingerClick_Sprite = null;
    	}
    	OnlyButtonGuidance(onlyButton, tipText, parent) {
    		if (onlyButton == null || onlyButton == undefined) {
    			console.error("找不到OnlyButtonImg");
    			return;
    		}
    		this.CloseFingerClickTween();
    		InsManager.GetInstance()._UIManager.ShowTipsPanel(onlyButton, tipText);
    		this.FingerClickGuidance(onlyButton, parent);
    	}
    	GameObject2DSprite(sprite3D, height) {
    		let v4 = new Laya.Vector4(0, 0, 0, 0);
    		InsManager.GetInstance()._SceneManager.player.playerCamera.worldToViewportPoint(sprite3D.transform.position, v4);
    		let img = new Laya.Image();
    		img.width = 50;
    		img.height = 50;
    		img.skin = PathData.getHand_img;
    		img.anchorX = 0.5;
    		img.anchorY = 0.5;
    		InsManager.GetInstance()._SceneManager.gamePanel.spriteHand_root.addChild(img);
    		img.pos(v4.x, v4.y - height);
    		this.gsMap[sprite3D.name] = img;
    		if (sprite3D.getChildByName(PathData.circle)) {
    			sprite3D.getChildByName(PathData.circle).active = true;
    		}
    		let func = () => {
    			if (this.gsMap[sprite3D.name] != null && this.gsMap[sprite3D.name] != undefined && sprite3D.active && sprite3D != null && sprite3D.transform != null) {
    				InsManager.GetInstance()._SceneManager.player.playerCamera.worldToViewportPoint(sprite3D.transform.position, v4);
    				this.gsMap[sprite3D.name].pos(v4.x, v4.y - height);
    			}
    			else {
    				if (this.gsMap[sprite3D.name] != null && this.gsMap[sprite3D.name] != undefined)
    					this.gsMap[sprite3D.name].destroy();
    				Laya.timer.clear(this, func);
    			}
    		};
    		Laya.timer.loop(Laya.timer.delta / 4, this, func);
    	}
    	Clear2DSprite(sprite3DName) {
    		if (this.gsMap[sprite3DName] != null && this.gsMap[sprite3DName] != undefined)
    			this.gsMap[sprite3DName].destroy();
    		this.gsMap[sprite3DName] = null;
    	}
    }
    GameGuidance.instance = null;

    class UIManager extends Laya.Script {
    	constructor() {
    		super();
    		this.uiNameArr = new Array();
    		this.traceArr = [];
    		this.knapsackPanel = null;
    		this.allKeep = null;
    		this.FlickerArr = new Map();
    		this.scaleArr = new Map();
    		this.v4 = new Laya.Vector4(0, 0, 0, 0);
    	}
    	onAwake() {
    		if (InsManager.GetInstance()._UIManager == null)
    			InsManager.GetInstance()._UIManager = this;
    		else {
    			console.log("error : UIManager has multi instance ");
    			return;
    		}
    		this.allKeep = this.owner.getChildByName('AllKeep');
    	}
    	ShowUI(name) {
    		InsManager.GetInstance()._GameApp.ShowUIPlatformAd(name);
    		if (NodeManager.GetInstance().IsHasKay(name)) {
    			let panelNode = NodeManager.GetInstance().GetHasNode(name);
    			if (panelNode != null) {
    				this.owner.addChild(panelNode);
    				panelNode.active = true;
    				return panelNode;
    			}
    		}
    		let url = DataSave.GetLoadPath() + "res/UI_Prefabs/" + name + ".json";
    		let prefab = ResManager._Instance.Get_Prefab_Res(url);
    		if (prefab == null) {
    			console.log(prefab);
    			console.log("error: 预制体加载为 null：" + url);
    			return;
    		}
    		let uiPanel = prefab.create();
    		let uiClass = Laya.ClassUtils.getClass(name + "_Ctrl");
    		if (uiClass != null)
    			uiPanel.addComponent(uiClass);
    		else
    			console.log("error: UIClass 加载为 null :" + name + "_Ctrl");
    		this.owner.addChild(uiPanel);
    		console.log(uiPanel);
    		console.log("===============================");
    		NodeManager.GetInstance().AddNode(name, uiPanel);
    		if (this.uiNameArr.indexOf(name) <= -1) {
    			this.uiNameArr.push(name);
    		}
    		return uiPanel;
    	}
    	RemoveUIPanel(ui_name, node) {
    		console.log('移除面板: ', ui_name);
    		NodeManager.GetInstance().RemoveNode(ui_name, node);
    		InsManager.GetInstance()._GameApp.ShowUIPlatformHideBanner(ui_name);
    	}
    	RemoveUIPanel_All() {
    		NodeManager.GetInstance().RomoveNodes(this.uiNameArr);
    		Platforms.getInstance().hideBanner();
    	}
    	ShowLoadCirclePanel(msg) {
    		let loadCirclePanel = this.ShowUI(PathData.loadCirclePanel).getComponent(LoadCirclePanel_Ctrl);
    		loadCirclePanel.Init(msg);
    	}
    	ShowKnapsackPanel(kpOpenType, idName, knapsackArr) {
    		if (InsManager.GetInstance()._SceneManager.player.isWaitAnimFinish)
    			return;
    		InsManager.GetInstance()._SceneManager.player.isMove = false;
    		let knapsackCtrl = InsManager.GetInstance()._UIManager.ShowUI(PathData.knapsackPanel_path).getComponent(KnapsackPanel_Ctrl);
    		knapsackCtrl.Open(kpOpenType, idName, knapsackArr);
    	}
    	ShowDialogPanel(logArr, callback) {
    		let dialogCtrl = InsManager.GetInstance()._UIManager.ShowUI(PathData.dialogPanel_path).getComponent(DialogPanel_Ctrl);
    		dialogCtrl.ShowDialog(logArr, callback);
    	}
    	ShowDialogBannerPanel(logArr, sprite3D, finish_callBack, isMove = undefined) {
    		let dialogBanner_Ctrl = InsManager.GetInstance()._UIManager.ShowUI(PathData.dialogBannerPanel).getComponent(DialogBannerPanel_Ctrl);
    		dialogBanner_Ctrl.InitView(logArr, sprite3D, finish_callBack);
    		if (isMove != undefined)
    			InsManager.GetInstance()._SceneManager.player.isMove = isMove;
    	}
    	ShowAwardOutpopPanel(propIDArr, propCount, cion, exp, mteNum, isShowMtyButton, finishCallBack) {
    		let awardOutpop = InsManager.GetInstance()._UIManager.ShowUI(PathData.awardPopout_path).getComponent(AwardPopoutPanel_Ctrl);
    		awardOutpop.ShowPanel(propIDArr, propCount, cion, exp, mteNum, isShowMtyButton, finishCallBack);
    	}
    	ShowUpgradeAwardPanel(propIDArr, propCount, cion, exp, mteNum, isShowMtyButton, finishCallBack) {
    	}
    	ShowGameToast(text, toastType) {
    		let toast = InsManager.GetInstance()._UIManager.ShowUI(PathData.toast_path).getComponent(Toast_Ctrl);
    		toast.Open(text, toastType);
    	}
    	ShowPopoutPanel(popType, text, imgSkin, okCallback, closeCallback, closeBtClickCallBack, label_A, label_B) {
    		let popUI = this.ShowUI(PathData.popoutPanel_path).getComponent(PopoutPanel_Ctrl);
    		popUI.InitPanel(popType, text, okCallback, closeCallback, imgSkin, closeBtClickCallBack, label_A, label_B);
    	}
    	ShowRewardsPropoutPanel(title, msg, iconPaht, clickBackcall) {
    		let rPopUI = this.ShowUI(PathData.rewardsPopoutPanel_path).getComponent(RewardsPopoutPanel_Ctrl);
    		rPopUI.ShowPanel(title, msg, iconPaht, clickBackcall);
    	}
    	ShowRewardsGiftPagPanel(type, title, msg, clickBackcall) {
    		let rPopUI = this.ShowUI(PathData.rewardsPopoutPanel_path).getComponent(RewardsPopoutPanel_Ctrl);
    		rPopUI.ShowGiftPag(type, title, msg, clickBackcall);
    	}
    	ShowRewardsLiBaoPanel(type, title, clickBackcall) {
    		let rPopUI = this.ShowUI(PathData.rewardsPopoutPanel_path).getComponent(RewardsPopoutPanel_Ctrl);
    		rPopUI.ShowLiBao(type, title, clickBackcall);
    	}
    	ShowTipsPanel(buttomImg, tipText) {
    		let tips_Ctrl = this.ShowUI(PathData.tipsPanel_path).getComponent(TipsPanel_Ctrl);
    		tips_Ctrl.SetTipMask(buttomImg, tipText);
    	}
    	CloseTipsPanel() {
    		console.log('清除遮挡');
    		let tipsPanelNode = NodeManager.GetInstance().GetHasNode(PathData.tipsPanel_path);
    		if (tipsPanelNode == null)
    			return;
    		if (tipsPanelNode.active)
    			this.RemoveUIPanel(PathData.tipsPanel_path, tipsPanelNode);
    		GameGuidance.GetInstance().CloseFingerClickTween();
    	}
    	CloseScreenPanel() {
    		let screenPanel = NodeManager.GetInstance().GetHasNode(PathData.screenPanel_path).getComponent(ScreenPanel_Ctrl);
    		if (screenPanel == null) {
    			console.error("没有找到ScreenPanel");
    			return;
    		}
    		screenPanel.CloseAnim();
    	}
    	CreateTextFormSprite3DPos(str, parent, sprite3D, disArr, timeArr, isSetColor) {
    		let second = parseInt(str);
    		let colorStr = "";
    		if (isSetColor) {
    			if (second <= 15) {
    				colorStr = "#4cef00";
    			}
    			else if (second > 15 && second <= 30) {
    				colorStr = "#eedb03";
    			}
    			else if (second > 30 && second <= 50) {
    				colorStr = "#ef00dc";
    			}
    			else if (second > 50 && second <= 70) {
    				colorStr = "#c900ef";
    			}
    			else if (second > 70) {
    				colorStr = "#ff4700";
    			}
    		}
    		let label = new Laya.Label();
    		label.text = str;
    		label.fontSize = 40;
    		label.color = colorStr;
    		label.align = "center";
    		label.valign = "middle";
    		label.alpha = 0;
    		label.anchorX = 0.5;
    		label.anchorY = 0.5;
    		parent.addChild(label);
    		InsManager.GetInstance()._SceneManager.player.playerCamera.worldToViewportPoint(sprite3D.transform.position, this.v4);
    		label.pos(this.v4.x, this.v4.y - disArr[0]);
    		Laya.Tween.to(label, { y: (this.v4.y - disArr[1]), alpha: 1 }, timeArr[0], Laya.Ease.linearIn, Laya.Handler.create(this, function () {
    			Laya.Tween.to(label, { y: (this.v4.y - disArr[2]) }, timeArr[1], Laya.Ease.linearIn, Laya.Handler.create(this, function () {
    				Laya.Tween.to(label, { y: (this.v4.y - disArr[3]), alpha: 0 }, timeArr[2], Laya.Ease.linearIn, Laya.Handler.create(this, function () {
    					label.destroy();
    				}));
    			}));
    		}));
    	}
    	OnClassFrameAnimtion(target, panel_root, isOpen, speed) {
    		if (target == null || panel_root == null)
    			return;
    		if (panel_root.visible == false)
    			return;
    		speed = 400 * speed;
    		if (isOpen) {
    			panel_root.scale(1, 1, true);
    			target.scale(1, 1, true);
    			panel_root.alpha = 1;
    			Laya.Tween.from(panel_root, { alpha: 0 }, speed, Laya.Ease.linearIn);
    			Laya.Tween.from(target, { scaleX: 0, scaleY: 0 }, speed, Laya.Ease.linearIn);
    		}
    		else {
    			Laya.Tween.to(panel_root, { alpha: 0 }, speed, Laya.Ease.linearOut);
    			Laya.Tween.to(target, { scaleX: 0, scaleY: 0 }, speed, Laya.Ease.linearOut, Laya.Handler.create(this, function () {
    				InsManager.GetInstance()._UIManager.RemoveUIPanel(panel_root.name, panel_root);
    			}));
    		}
    	}
    	ImageSaAnimtion(target, isOpen, speed) {
    		speed = 400 * speed;
    		if (isOpen) {
    			target.visible = true;
    			target.alpha = 0;
    			Laya.Tween.to(target, { alpha: 0.95 }, speed, Laya.Ease.linearIn);
    			console.log('========================');
    		}
    		else {
    			Laya.Tween.to(target, { alpha: 0 }, speed, Laya.Ease.linearOut, Laya.Handler.create(this, function () {
    				target.visible = false;
    			}));
    		}
    	}
    	CreateUITrace(sprite3D, traceType) {
    		if (InsManager.GetInstance()._SceneManager.gamePanel != null)
    			InsManager.GetInstance()._SceneManager.gamePanel.CreateUITrace(sprite3D, traceType);
    	}
    	ClearAllUITrace() {
    		if (this.traceArr.length > 0) {
    			for (let i = 0; i < this.traceArr.length; i++) {
    				this.traceArr[i].destroy();
    			}
    			this.traceArr = [];
    		}
    		InsManager.GetInstance()._SceneManager.gamePanel.smallMap_ctrl.DestroyAllLimitIcon();
    	}
    	HideAllUITrace() {
    		if (this.traceArr.length > 0) {
    			for (let i = 0; i < this.traceArr.length; i++) {
    				this.traceArr[i].visible = false;
    			}
    		}
    	}
    	ShoAllUITrace() {
    		if (this.traceArr.length > 0) {
    			for (let i = 0; i < this.traceArr.length; i++) {
    				this.traceArr[i].visible = true;
    			}
    		}
    	}
    	ClearUITrace(sprite3D) {
    		if (this.traceArr.length > 0) {
    			for (let i = 0; i < this.traceArr.length; i++) {
    				let uiTrace = this.traceArr[i].getComponent(ScreenUITrace);
    				if (uiTrace.targetSprite3D == sprite3D) {
    					this.traceArr.splice(i, 1);
    					uiTrace.owner.destroy();
    				}
    			}
    		}
    		InsManager.GetInstance()._SceneManager.gamePanel.smallMap_ctrl.DestroyLimitIcon(sprite3D);
    	}
    	ScaleSizeUIAnimtion(target, timer, maxSize, call) {
    		target.scale(1, 1);
    		let size = 1;
    		let func = () => {
    			if (size == 1) {
    				size = maxSize;
    			}
    			else {
    				size = 1;
    			}
    			Laya.Tween.to(target, { scaleX: size, scaleY: size }, timer);
    		};
    		Laya.timer.loop(timer, call, func);
    		this.scaleArr.set(target.name, new FuncDicData(target.name, func, call));
    	}
    	ClearScaleSizeUIAnimtion(targetImg, call) {
    		console.log(this.scaleArr, targetImg.name);
    		if (!this.scaleArr.has(targetImg.name) || this.scaleArr.get(targetImg.name) == null || this.scaleArr.get(targetImg.name) == undefined) {
    			console.error('key 为 null 或者没有');
    			return;
    		}
    		console.log(this.scaleArr.get(targetImg.name).call == call, this.scaleArr.get(targetImg.name).nodeName == targetImg.name, this.scaleArr.get(targetImg.name).func != null);
    		if (this.scaleArr.get(targetImg.name).call == call && this.scaleArr.get(targetImg.name).nodeName == targetImg.name && this.scaleArr.get(targetImg.name).func != null) {
    			Laya.timer.clearAll(this.scaleArr.get(targetImg.name).call);
    			this.scaleArr.set(targetImg.name, null);
    			Laya.Tween.clearAll(targetImg);
    			targetImg.scale(1, 1);
    		}
    	}
    	UIAnim_Flicker(targetImg, timer) {
    		Laya.timer.loop(timer, this, this.UIImageFlickerLoop, [targetImg]);
    	}
    	UIImageFlickerLoop(targetImg) {
    		if (targetImg.visible)
    			targetImg.visible = false;
    		else
    			targetImg.visible = true;
    	}
    	StopUIAnim_Flickter(targetImg) {
    		Laya.timer.clear(this, this.UIImageFlickerLoop);
    		targetImg.visible = false;
    	}
    	UIAnim_AlphaFlicker(target, call, timer) {
    		if (this.FlickerArr.has(target.name) && this.FlickerArr.get(target.name) != null) {
    			return;
    		}
    		target.visible = true;
    		target.alpha = 1;
    		let funcLoop = () => {
    			Laya.Tween.to(target, { alpha: 0 }, timer / 2, Laya.Ease.linearIn, Laya.Handler.create(call, () => {
    				Laya.Tween.to(target, { alpha: 1 }, timer / 2, Laya.Ease.linearInOut);
    			}));
    		};
    		Laya.timer.loop(timer, call, funcLoop);
    		this.FlickerArr.set(target.name, new FuncDicData(target.name, funcLoop, call));
    	}
    	UIAnim_AlphaFlicker_Clear(target, call) {
    		if (this.FlickerArr.has(target.name) && this.FlickerArr.get(target.name) != null) {
    			if (this.FlickerArr.get(target.name).nodeName == target.name && this.FlickerArr.get(target.name).call == call) {
    				Laya.timer.clear(this.FlickerArr.get(target.name).call, this.FlickerArr.get(target.name).func);
    				target.alpha = 1;
    				this.FlickerArr.set(target.name, null);
    			}
    		}
    	}
    	HidePanel(name) {
    		if (this.owner.getChildByName(name) != null) {
    			this.RemoveUIPanel(name, this.owner.getChildByName(name));
    		}
    	}
    }
    UIManager._Instance = null;

    class StartPanel_Ctrl extends UI_Ctrl {
    	constructor() {
    		super();
    		this.runPanel = null;
    		this.runProgressValue = null;
    		this.circleAnim = null;
    		this.sliderAnim = null;
    		this.finAnim = null;
    		this.c_finsAnim = null;
    		this.s_circle = null;
    		this.isSceneLoadFinished = false;
    		this.progressNum = 0;
    	}
    	onAwake() {
    		super.onAwake();
    		this.runPanel = this.view["runPanel"];
    		this.runProgressValue = this.view["runPanel/center/progress/value"];
    		this.circleAnim = this.owner['circle'];
    		this.sliderAnim = this.owner['sliderAnim_1'];
    		this.finAnim = this.owner['fin'];
    		this.c_finsAnim = this.owner['c_fins'];
    		this.s_circle = this.owner['s_circle'];
    	}
    	onEnable() {
    		this.InitView();
    		if (!InsManager.GetInstance()._DataSave.isFirstOpen && (InsManager.GetInstance()._DataSave.isOpenAd && Platforms.getInstance().isOppo() || InsManager.GetInstance()._DataSave.isOpenAd && Platforms.getInstance().isVivo() || Platforms.getInstance().isHuaWei())) {
    			Platforms.getInstance().addDesktop(() => { });
    		}
    		if (!PlayerData.GetInstance().isFirst)
    			this.view['center/play_bt'].visible = true;
    		else
    			this.view['center/play_bt'].visible = false;
    		this.view['center/chose_bt'].visible = true;
    	}
    	onStart() {
    		this.InitView();
    		this.circleAnim.play(0, true);
    		this.sliderAnim.play(0, true);
    		this.finAnim.play(0, true);
    		this.c_finsAnim.play(0, true);
    		this.s_circle.play(0, true);
    		this.view['center/play_bt'].on(Laya.Event.CLICK, this, this.JumpScene, [DataSave.GetLoadPath() + PathData.Scene3DArr_Path.BigScene]);
    		this.view['center/chose_bt'].on(Laya.Event.CLICK, this, this.OnLoadChoseEggScene);
    	}
    	InitView() {
    		SoundsManager.PlayBgMusic(PathData.gameSceneMusic, 0.6);
    		console.log('播放背景音效');
    	}
    	LoadSceneFinish() {
    		this.isSceneLoadFinished = true;
    	}
    	OnLoadChoseEggScene() {
    		SoundsManager.PlaySounds(PathData.sound_buttonSound);
    		this.JumpScene(DataSave.GetLoadPath() + PathData.Scene3DArr_Path.ChoseScene);
    	}
    	JumpScene(sceneName) {
    		SoundsManager.PlaySounds(PathData.sound_buttonSound);
    		this.sceneManager.oldSceneName = this.sceneManager.sceneName;
    		this.sceneManager.oldScenePath = this.sceneManager.enterScenePath;
    		let startPanel = InsManager.GetInstance()._UIManager.ShowUI(PathData.startPanel_path).getComponent(StartPanel_Ctrl);
    		this.sceneManager.enterScenePath = sceneName;
    		startPanel.OnLoadGameScenePanel();
    	}
    	OnLoadGameScenePanel() {
    		this.progressNum = 0;
    		this.runPanel.visible = true;
    		this.runProgressValue.scaleX = 0;
    		this.view['center/logo'].visible = false;
    		this.view['center/play_bt'].visible = false;
    		this.view['center/chose_bt'].visible = false;
    		this.runPanel.alpha = 0;
    		Laya.Tween.to(this.runPanel, { alpha: 1 }, 200);
    		this.isSceneLoadFinished = false;
    		InsManager.GetInstance()._GameApp.LoadGameScene3D(this.LoadSceneFinish.bind(this), this.sceneManager.enterScenePath);
    		if (this.sceneManager.lightEffect == null)
    			this.sceneManager.CreateEffect(PathData.light_prefabs_path, new Laya.Vector3(0, 0, 0));
    		Laya.timer.loop(150, this, this.RunProgress, [(CalculateExtend.RandomNumber(85, 95))]);
    	}
    	RunProgress(stopProgress) {
    		if (this.progressNum >= stopProgress || this.runProgressValue.scaleX >= 0.8) {
    			if (this.isSceneLoadFinished) {
    				this.runProgressValue.scaleX = 1;
    				this.progressNum = 100;
    				this.view['runPanel/center/progressLable'].text = this.progressNum + '%';
    				Laya.timer.clear(this, this.RunProgress);
    				Laya.timer.once(500, this, () => { InsManager.GetInstance()._GameApp.Enter_GameScene3D(); this.runPanel.visible = false; });
    			}
    			return;
    		}
    		if (this.progressNum < stopProgress && !this.isSceneLoadFinished && this.runProgressValue.scaleX < 1)
    			this.runProgressValue.scaleX += .2;
    		if (!this.isSceneLoadFinished)
    			this.progressNum += 1;
    		else
    			this.progressNum = 100;
    		if (this.progressNum > 100)
    			this.progressNum = 100;
    		this.view['runPanel/center/progressLable'].text = this.progressNum + '%';
    	}
    	onDisable() {
    		InsManager.GetInstance()._MissionManager.NewTaskFirst_Monitor(PathData.First_InBigMap);
    		InsManager.GetInstance()._DataSave.isFirstOpen = false;
    	}
    }

    class SigninPanel_Ctrl extends UI_Ctrl {
    	constructor() {
    		super();
    		this.items = null;
    		this.awardStrArr = [
    			new PropCountMap(PropID.Bandage, 3),
    			new PropCountMap(PropID.TKSWZ, 1),
    			new PropCountMap(PropID.hpAgent, 1),
    			new PropCountMap(PropID.M4A1, 1),
    			new PropCountMap(PropID.medicalBox, 3),
    			new PropCountMap(PropID.HJKB, 1),
    			new PropCountMap(PropID.TJ, 1),
    		];
    	}
    	onAwake() {
    		super.onAwake();
    	}
    	onEnable() {
    		SoundsManager.PlaySounds(PathData.sound_so, 0.5);
    		InsManager.GetInstance()._UIManager.OnClassFrameAnimtion(this.view["bg"], this.owner, true, 0.7);
    		if (!GameSystemData.GetInstance().isSingin)
    			this.view["bg/right_bg/doubleSignin_bt"].visible = InsManager.GetInstance()._DataSave.isOpenAd;
    	}
    	onStart() {
    		this.items = this.view["bg/center/box_item"];
    		this.view["bg/close_bt"].on(Laya.Event.CLICK, this, () => { InsManager.GetInstance()._UIManager.OnClassFrameAnimtion(this.view["bg"], this.owner, false, 0.7); });
    		this.view["bg/right_bg/signin_bt"].on(Laya.Event.CLICK, this, this.OnSigninClick, [false]);
    		this.view["bg/right_bg/doubleSignin_bt"].on(Laya.Event.CLICK, this, this.OnSigninClick, [true]);
    		this.InitPanelData();
    	}
    	InitPanelData() {
    		for (let i = 0; i < this.items.numChildren; i++) {
    			this.items.getChildAt(i).getChildByName("select").getChildAt(0).text = "第" + (i + 1) + "天";
    			if (this.awardStrArr[i].propID == PropID.coin) {
    				this.items.getChildAt(i).getChildByName("count_label").text = '金币x' + this.awardStrArr[i].count.toString();
    			}
    			else {
    				let prop = InsManager.GetInstance()._knapsackManager.GetPropData(this.awardStrArr[i].propID);
    				this.items.getChildAt(i).getChildByName("count_label").text = prop.name + 'x' + this.awardStrArr[i].count.toString();
    				this.items.getChildAt(i).getChildByName("img").skin = PathData.icon_path + prop.skin;
    			}
    		}
    		if (GameSystemData.GetInstance().isSingin) {
    			let s_bt = this.view["bg/right_bg/signin_bt"].getComponent(UI_Button);
    			s_bt.set_disable(true);
    			let s_bt_2 = this.view["bg/right_bg/doubleSignin_bt"].getComponent(UI_Button);
    			s_bt_2.set_disable(true);
    			this.view["bg/right_bg/doubleSignin_bt"].visible = false;
    			this.view["bg/right_bg/signin_bt"].visible = false;
    		}
    		else {
    			console.log('显示双倍');
    			if (InsManager.GetInstance()._DataSave.isOpenAd)
    				this.view["bg/right_bg/doubleSignin_bt"].visible = true;
    		}
    		for (let i = 0; i < this.items.numChildren; i++) {
    			if (i < GameSystemData.GetInstance().conSingin) {
    				this.items.getChildAt(i).getChildByName("yetGet").visible = true;
    			}
    			else if (i == GameSystemData.GetInstance().conSingin) {
    				if (!GameSystemData.GetInstance().isSingin) {
    					this.items.getChildAt(i).getChildByName("select").skin = 'res/UI/signin/xiaobiaoti.png';
    					this.items.getChildAt(i).getChildByName("select").getChildAt(0).color = '#703b1c';
    				}
    				else {
    					this.items.getChildAt(i).getChildByName("yetGet").visible = true;
    					this.items.getChildAt(i).getChildByName("select").skin = 'res/UI/signin/xiaobiaoti_1.png';
    					this.items.getChildAt(i).getChildByName("select").getChildAt(0).color = '#e8e8e8';
    				}
    			}
    		}
    	}
    	OnSigninClick(isDouble) {
    		if (GameSystemData.GetInstance().isSingin)
    			return;
    		if (isDouble) {
    			RewardsManager.GetInstance().Rewards_DoubleSignin(() => {
    				if (this.awardStrArr[GameSystemData.GetInstance().conSingin].propID == PropID.coin) {
    					InsManager.GetInstance()._MissionManager.MissionAward([], [], this.awardStrArr[GameSystemData.GetInstance().conSingin].count, 0, null, 2, true);
    				}
    				else {
    					console.log(this.awardStrArr[GameSystemData.GetInstance().conSingin].propID, this.awardStrArr[GameSystemData.GetInstance().conSingin].propID.toString()[0]);
    					if (this.awardStrArr[GameSystemData.GetInstance().conSingin].propID.toString()[0] == "4")
    						InsManager.GetInstance()._MissionManager.MissionAward([this.awardStrArr[GameSystemData.GetInstance().conSingin].propID, this.awardStrArr[GameSystemData.GetInstance().conSingin].propID], [1, 1], 0, 0, null, 1, true);
    					else
    						InsManager.GetInstance()._MissionManager.MissionAward([this.awardStrArr[GameSystemData.GetInstance().conSingin].propID], [this.awardStrArr[GameSystemData.GetInstance().conSingin].count], 0, 0, null, 2, true);
    				}
    				this.SetSignin_Bt();
    			}, () => {
    			});
    		}
    		else {
    			this.SetSignin_Bt();
    			if (this.awardStrArr[GameSystemData.GetInstance().conSingin].propID == PropID.coin) {
    				InsManager.GetInstance()._MissionManager.MissionAward([], [], this.awardStrArr[GameSystemData.GetInstance().conSingin].count, 0, null, 1, true);
    			}
    			else {
    				InsManager.GetInstance()._MissionManager.MissionAward([this.awardStrArr[GameSystemData.GetInstance().conSingin].propID], [this.awardStrArr[GameSystemData.GetInstance().conSingin].count], 0, 0, null, 1, true);
    			}
    		}
    		InsManager.GetInstance()._DataSave.SaveGameData(PathData.GameSystemData);
    	}
    	SetSignin_Bt() {
    		GameSystemData.GetInstance().isSingin = true;
    		let s_ub = this.view["bg/right_bg/signin_bt"].getComponent(UI_Button);
    		s_ub.is_disable = true;
    		s_ub.set_disable(true);
    		let s_ub_2 = this.view["bg/right_bg/doubleSignin_bt"].getComponent(UI_Button);
    		s_ub_2.is_disable = true;
    		s_ub_2.set_disable(true);
    		this.view["bg/right_bg/doubleSignin_bt"].visible = false;
    		this.view["bg/right_bg/signin_bt"].visible = false;
    		this.items.getChildAt(GameSystemData.GetInstance().conSingin).getChildByName("yetGet").visible = true;
    		InsManager.GetInstance()._DataSave.SaveGameData(PathData.GameSystemData);
    	}
    	onDisable() {
    		EventManager._Instance.Dispatch_Event(PathData.Event_HINTPOINT, ['signin_bt', !GameSystemData.GetInstance().isSingin]);
    	}
    }

    class SettingPanel_Ctrl extends UI_Ctrl {
    	constructor() {
    		super();
    		this.musicToggle = null;
    		this.soundToggle = null;
    		this.shakeToggle = null;
    	}
    	onAwake() {
    		super.onAwake();
    		this.musicToggle = this.view["center/bg/music_toggle"];
    		this.soundToggle = this.view["center/bg/sound_toggle"];
    		this.shakeToggle = this.view["center/bg/shake_toggle"];
    	}
    	onEnable() {
    		InsManager.GetInstance()._UIManager.OnClassFrameAnimtion(this.view["center/bg"], this.owner, true, 0.7);
    		this.InitSettingPanel();
    	}
    	onStart() {
    		this.view["center/close_bt"].on(Laya.Event.CLICK, this, () => {
    			InsManager.GetInstance()._UIManager.OnClassFrameAnimtion(this.view["center/bg"], this.owner, false, 0.7);
    			InsManager.GetInstance()._DataSave.SaveGameData(PathData.GameSystemData);
    			this.view["center/close_bt"].visible = false;
    		});
    		this.musicToggle.on(Laya.Event.CLICK, this, this.OnMusicToggleClick);
    		this.soundToggle.on(Laya.Event.CLICK, this, this.OnSoundToggleClick);
    		this.shakeToggle.on(Laya.Event.CLICK, this, this.OnShakeToggleClick);
    	}
    	InitSettingPanel() {
    		this.view["center/close_bt"].visible = true;
    		this.musicToggle.selected = GameSystemData.GetInstance().isPlayMusic;
    		this.soundToggle.selected = GameSystemData.GetInstance().isPlaySound;
    		this.shakeToggle.selected = GameSystemData.GetInstance().isShake;
    	}
    	OnMusicToggleClick(event) {
    		if (!this.musicToggle.selected) {
    			this.musicToggle.selected = false;
    			GameSystemData.GetInstance().isPlayMusic = false;
    			SoundsManager.StopBgMusic();
    		}
    		else {
    			this.musicToggle.selected = true;
    			GameSystemData.GetInstance().isPlayMusic = true;
    			SoundsManager.PlayBgMusic(SoundsManager.bgMusic, SoundsManager.bgVolume);
    		}
    		event.stopPropagation();
    	}
    	OnSoundToggleClick(event) {
    		console.log("OnSoundToggleClick:" + this.soundToggle.selected);
    		if (!this.soundToggle.selected) {
    			this.soundToggle.selected = false;
    			GameSystemData.GetInstance().isPlaySound = false;
    			Laya.SoundManager.stopAllSound();
    		}
    		else {
    			this.soundToggle.selected = true;
    			GameSystemData.GetInstance().isPlaySound = true;
    		}
    		event.stopPropagation();
    	}
    	OnShakeToggleClick(event) {
    		if (!this.shakeToggle.selected) {
    			this.shakeToggle.selected = false;
    			GameSystemData.GetInstance().isShake = false;
    		}
    		else {
    			this.shakeToggle.selected = true;
    			GameSystemData.GetInstance().isShake = true;
    			SoundsManager.vibration();
    		}
    		event.stopPropagation();
    	}
    	onDisable() {
    		console.log('=================onDisable================');
    	}
    	onDestroy() {
    		console.log('================onDestroy=================');
    	}
    }

    class Joystick extends Laya.Script {
    	constructor() {
    		super();
    		this.stick = null;
    		this.max_R = 80;
    		this.min_R = 20;
    		this.is_Started = true;
    		this.dir = Laya.Point.create();
    		this.v3 = new Laya.Vector3(0, 0, 0);
    		this.touchId = -1;
    		this.self_node = null;
    		this.bg = null;
    		this.pos = null;
    		this.stick_node = null;
    		this.start_pos = new Laya.Vector2(0, 0);
    	}
    	onAwake() {
    		this.dir.x = 0;
    		this.dir.y = 0;
    		this.self_node = this.owner;
    		this.bg = this.owner.getChildByName("bg");
    		this.stick_node = this.stick;
    		this.pos = Laya.Point.create();
    		this.start_pos.x = this.self_node.x;
    		this.start_pos.y = this.self_node.y;
    		this.bg.on(Laya.Event.MOUSE_DOWN, this, this.on_drag_start);
    	}
    	onEnable() {
    		Laya.stage.on(Laya.Event.MOUSE_UP, this, this.on_drag_end);
    		Laya.stage.on(Laya.Event.MOUSE_MOVE, this, this.on_drag_move);
    	}
    	on_drag_start(event) {
    		this.touchId = event.touchId;
    		this.is_Started = true;
    		this.on_drag_move(event);
    		this.self_node.rotation = InsManager.GetInstance()._SceneManager.player.CameraPoint.transform.localRotationEulerY;
    		event.stopPropagation();
    	}
    	on_drag_move(event) {
    		if (this.is_Started == false || event.touchId != this.touchId)
    			return;
    		if (InsManager.GetInstance()._SceneManager.player.isMove) {
    			this.pos.x = Laya.stage.mouseX;
    			this.pos.y = Laya.stage.mouseY;
    			this.self_node.globalToLocal(this.pos);
    			let xpos = this.pos.x;
    			let ypos = this.pos.y;
    			let len = this.pos.distance(0, 0);
    			if (len > this.max_R) {
    				this.pos.x = this.pos.x * this.max_R / len;
    				this.pos.y = this.pos.y * this.max_R / len;
    			}
    			else if (len < this.min_R) {
    				this.stick_node.pos(this.pos.x + 20, this.pos.y + 20);
    				return;
    			}
    			this.stick_node.pos(this.pos.x, this.pos.y);
    			this.v3 = new Laya.Vector3(xpos, 0, ypos);
    			this.dir.x = (xpos / len);
    			this.dir.y = (ypos / len);
    			if (this.dir.x > 1)
    				this.dir.x = 1;
    			else if (this.dir.x < -1)
    				this.dir.x = -1;
    			if (this.dir.y > 1)
    				this.dir.y = 1;
    			else if (this.dir.y < -1)
    				this.dir.y = -1;
    		}
    		else {
    			this.dir.x = 0;
    			this.dir.y = 0;
    		}
    	}
    	on_drag_end(event) {
    		if (this.is_Started == false || event.touchId != this.touchId)
    			return;
    		this.dir.x = 0;
    		this.dir.y = 0;
    		let stick_node = this.stick;
    		stick_node.pos(2, 2);
    		this.self_node.pos(this.start_pos.x, this.start_pos.y);
    		this.is_Started = false;
    	}
    	onClick(event) {
    		event.stopPropagation();
    	}
    	SetStatic() {
    		this.dir.x = 0;
    		this.dir.y = 0;
    		let stick_node = this.stick;
    		stick_node.pos(2, 2);
    		if (this.start_pos.x != 0 && this.start_pos.y != 0)
    			this.self_node.pos(this.start_pos.x, this.start_pos.y);
    		this.is_Started = false;
    		this.touchId = null;
    	}
    	onDisable() {
    		Laya.stage.off(Laya.Event.MOUSE_UP, this, this.on_drag_end);
    		Laya.stage.off(Laya.Event.MOUSE_MOVE, this, this.on_drag_move);
    	}
    	onDestroy() {
    		this.stick.off(Laya.Event.MOUSE_DOWN, this, this.on_drag_start);
    	}
    }

    class SmallMap_Ctrl extends Laya.Script {
    	constructor() {
    		super();
    		this.player_img = null;
    		this.player = null;
    		this.map_bg = null;
    		this.bg_img = null;
    		this.center = null;
    		this.smallMap = null;
    		this.hint = null;
    		this.hintAnim = null;
    		this.isSmallMap = true;
    		this.sceneWidth = 300;
    		this.sceneHeight = 300;
    		this.mteNum = 5;
    		this.limitList = new Map;
    		this.limitDistance = 90;
    	}
    	onAwake() {
    		this.centerParent = this.owner.getChildByName("center");
    		this.player_img = this.owner.getChildByName("center").getChildByName("player");
    		this.player = InsManager.GetInstance()._SceneManager.player.playerPos;
    		this.hint = this.centerParent.getChildByName('hint');
    		this.map_bg = this.owner.getChildByName("center").getChildByName("map_bg");
    		this.bg_img = this.map_bg.getChildByName('bg');
    		this.center = this.map_bg.getChildByName("center");
    		this.mteNum = this.map_bg.width / this.sceneWidth;
    		this.smallMap = this.owner;
    		this.hintAnim = this.owner.parent.parent['mapHint'];
    	}
    	onEnable() {
    		this.smallMap.on(Laya.Event.CLICK, this, this.SwitchBigMap);
    	}
    	onStart() {
    	}
    	onUpdate() {
    		this.player_img.rotation = -(this.player.transform.localRotationEulerY);
    		this.map_bg.pos((this.player.transform.localPositionX * this.mteNum), (this.player.transform.localPositionZ * this.mteNum));
    		if (this.limitList.size > 0) {
    			this.limitList.forEach((img, sprite3d) => {
    				if (sprite3d.transform == null) {
    					this.DestroyLimitIcon(sprite3d);
    					return;
    				}
    				let pos = new Laya.Vector3(-(sprite3d.transform.position.x * this.mteNum), -(sprite3d.transform.position.z * this.mteNum), 0);
    				let playerPos = new Laya.Vector3(this.player_img.x, this.player_img.y, 0);
    				let endPos = new Laya.Vector3(pos.x + this.map_bg.x, pos.y + this.map_bg.y, 0);
    				img.rotation = 0;
    				if (Laya.Vector3.distance(playerPos, endPos) > this.limitDistance) {
    					let dir = new Laya.Vector3();
    					let dirNor = new Laya.Vector3();
    					Laya.Vector3.subtract(endPos, playerPos, dir);
    					Laya.Vector3.normalize(dir, dirNor);
    					Laya.Vector3.add(playerPos, new Laya.Vector3(dirNor.x * this.limitDistance, dirNor.y * this.limitDistance, 0), pos);
    					if (this.isSmallMap)
    						img.pos(pos.x, pos.y, true);
    					else
    						img.pos(endPos.x, endPos.y, true);
    				}
    				else {
    					img.pos(endPos.x, endPos.y, true);
    				}
    			});
    		}
    	}
    	AddStaticIcon(sprite3D, iconSkin) {
    		if (sprite3D == null || sprite3D == undefined)
    			return;
    		let map_icon = new Laya.Image(PathData.game_path + iconSkin);
    		map_icon.rotation = 0;
    		map_icon.anchorX = 0.5;
    		map_icon.anchorY = 0.5;
    		this.center.addChild(map_icon);
    		map_icon.pos(-(sprite3D.transform.position.x * this.mteNum), -(sprite3D.transform.position.z * this.mteNum));
    		return map_icon;
    	}
    	AddNpcMapIcon(sprite3D, iconSkin) {
    		let map_icon = new Laya.Image(PathData.game_path + iconSkin);
    		map_icon.anchorX = 0.5;
    		map_icon.anchorY = 0.5;
    		this.center.addChild(map_icon);
    		map_icon.pos(-(sprite3D.transform.position.x * this.mteNum), -(sprite3D.transform.position.z * this.mteNum));
    		map_icon.rotation = sprite3D.transform.localRotationEulerY;
    		return map_icon;
    	}
    	UpdateNpcMapIcon(sprite3D, map_icon) {
    		if (map_icon == null || map_icon == undefined)
    			return;
    		map_icon.pos(-(sprite3D.transform.position.x * this.mteNum), -(sprite3D.transform.position.z * this.mteNum));
    		if (map_icon != null && map_icon.rotation != null)
    			map_icon.rotation = -sprite3D.transform.localRotationEulerY;
    	}
    	AddPropStaticSmallMap(prop3DArr) {
    		for (let i = 0; i < prop3DArr.length; i++) {
    			if (prop3DArr[i].mapIcon != "" && prop3DArr[i].node3D.active) {
    				prop3DArr[i].mapIcon_img = this.AddStaticIcon(prop3DArr[i].node3D, prop3DArr[i].mapIcon);
    			}
    		}
    	}
    	AddSprite3DSmallMap(sprite3D, iconSkin) {
    		return this.AddStaticIcon(sprite3D, iconSkin);
    	}
    	AddSprite3DLimitMap(sprite3DArr, iconSkin) {
    		if (!this.limitList.has(sprite3DArr)) {
    			let img = this.AddLimitMapIcon(sprite3DArr, iconSkin);
    			img.name = 'guide';
    			this.limitList.set(sprite3DArr, img);
    			if (iconSkin == 'ditu_lanse.png' || iconSkin == 'ditu_hongse.png') {
    				img.width = 16;
    				img.height = 16;
    			}
    		}
    	}
    	AddLimitMapIcon(sprite3D, iconSkin) {
    		let map_icon = new Laya.Image(PathData.game_path + iconSkin);
    		map_icon.width = 30;
    		map_icon.height = 30;
    		map_icon.anchorX = 0.5;
    		map_icon.anchorY = 0.5;
    		this.centerParent.addChild(map_icon);
    		map_icon.pos(-(sprite3D.transform.position.x * this.mteNum), -(sprite3D.transform.position.z * this.mteNum));
    		map_icon.rotation = sprite3D.transform.localRotationEulerY;
    		return map_icon;
    	}
    	DetroyAllMapIcon() {
    		if (this.center.numChildren > 0) {
    			for (let i = 0; i < this.center.numChildren; i++) {
    				this.center.getChildAt(i).destroy();
    				i--;
    			}
    		}
    	}
    	DestroyAllLimitIcon() {
    		if (this.limitList.size > 0) {
    			this.limitList.forEach((values, key) => {
    				values.destroy();
    			});
    			this.limitList.clear();
    		}
    	}
    	DestroyLimitIcon(target) {
    		console.log("this.limitList   ===   ", this.limitList.size);
    		if (this.limitList.has(target)) {
    			this.limitList.get(target).destroy();
    			this.limitList.delete(target);
    			console.log("this.limitList delete  target ===   ", this.limitList.size);
    		}
    	}
    	SwitchBigMap() {
    		this.isSmallMap = false;
    		InsManager.GetInstance()._SceneManager.gamePanel.view['bigMap'].visible = true;
    		InsManager.GetInstance()._SceneManager.gamePanel.view['bigMap/center'].addChild(this.centerParent);
    		this.hint.pos(this.player_img.x - 10, this.player_img.y - 10);
    		this.hintAnim.play();
    		this.centerParent.x = -this.map_bg.x * 0.7;
    		this.centerParent.y = -this.map_bg.y * 0.7;
    		this.centerParent.scale(0.9, 0.9);
    		let carPanel = InsManager.GetInstance()._UIManager.owner.getChildByName(PathData.carCtrlPanel_path);
    		console.log(carPanel, InsManager.GetInstance()._UIManager.owner);
    		if (carPanel)
    			carPanel.visible = false;
    		InsManager.GetInstance()._UIManager.HideAllUITrace();
    	}
    	SwitchSmallMap() {
    		this.isSmallMap = true;
    		InsManager.GetInstance()._SceneManager.gamePanel.view['bigMap'].visible = false;
    		this.smallMap.addChild(this.centerParent);
    		this.centerParent.x = 102;
    		this.centerParent.y = 102;
    		this.centerParent.scale(1, 1);
    		this.hintAnim.stop();
    		this.hint.visible = false;
    		let carPanel = InsManager.GetInstance()._UIManager.owner.getChildByName(PathData.carCtrlPanel_path);
    		if (carPanel)
    			carPanel.visible = true;
    		InsManager.GetInstance()._UIManager.ShoAllUITrace();
    	}
    }

    var DialogArr = [
    	['0哦！', '0是吗？', '0......', '0我信你个鬼！'],
    	['1艾迪先生，谢谢你保护我……', '1艾迪先生，真的很抱歉，给你添麻烦了。', '1艾迪先生，你身上有好多旧伤口……', '1妈妈已经离开很久了，我和爸爸都很想念她。', '1我以前以为坂本公司只是卖时装的，直到我看到爸爸抽屉里的枪……'],
    	['1艾迪先生，谢谢你保护我……', '1艾迪先生，真的很抱歉，给你添麻烦了。', '1艾迪先生，你身上有好多旧伤口……', '1妈妈已经离开很久了，我和爸爸都很想念她。', '1我以前以为坂本公司只是卖时装的，直到我看到爸爸抽屉里的枪……'],
    	['2老伙计，真怀念一起开着跑车在地球上横冲直撞的日子啊！', '2哥们儿，落日城什么都好，就是酒水太贵！你说不是吗？', '2等这些破事都结束了，我一定要请你去月光餐厅大吃一顿！', '2啊，要是能吃到地球上的一口手工饺子该有多好！', '2说实话，义体诊所不适合我。也许妇科诊所会更好？', '2车子，妹子，房子。艾迪，这些你都唾手可得，当什么赏金猎人啊！'],
    	['3太有钱也挺麻烦的，好在大部分麻烦可以用钱来解决。', '3玛丽她爹杰克，我的老朋友，没想到他会走得这么早。哎……', '3以前我和杰克分则各自为王，合则天下无双，打遍商界无敌手。'],
    	['4艾迪先生，太感谢你了。', '4玛丽说她很喜欢你这个叔叔。'],
    	['5四肢发达凭什么非得跟一个头脑简单？我就挺聪明的。', '5他们都说我只能干体力活儿，可我考上了函授大学！！！', '5我是喜欢决斗，但这不意味着我没有其它兴趣爱好。'],
    	['6你听说了吗？一本旧漫画书竟然拍卖了五千万电子币！这个世界简直疯了。', '6目前为止还没人在落日城搞过大规模破坏——这应该是好事吧，我说？', '6现在的生意越来越不好做了，唉！'],
    	['7你最好把眼睛放在别的地方，否则它们会被我弄出来攥在手里。', '7有什么事吗？没有的话赶紧离开这里。', '7你最好不要靠近我，否则对你不客气了。', '7没听见我说话吗？'],
    	['8X的3次方乘以N的……等等，就快算出来了……', '8这里的科技公司防火墙真是弱得让人想哭。我不知道他们如何保障公司利益的安全。', '8总有蠢蛋想打破我的极速破解记录。拜托，能被随便打破的还叫记录？', '8干我们这行的，大手笔不少，却没多少能对别人吹的。', '8有时候破解的关键往往就在一字节之差。就像拆弹时选红线还是绿线一样。'],
    	['9吼吼。。。', '9吼吼。。。'],
    	['A刀尖舔血的日子，一万个人里面恐怕也没有一个能坚持下来。', 'A风险与机遇总是并存的，想要赚大钱就得赌上脑袋。', 'A前些天有个傻子竟然委托我找狗！我看起来像什么？爱心人士吗？', 'A我知道我很帅，但你看够没有？还是说你作为同行有什么想请教我？', 'A啊，原来是鼎鼎大名的艾迪先生。有没有什么您看不上的活儿介绍啊？', 'A我得承认我并不太喜欢喝酒。醉醺醺的状态对打架可没好处。'],
    	['B艾迪，你就不打算和我好好谈谈几年前那个浪漫之夜么？', 'B艾迪先生，你还是没法直视我的眼睛啊。', 'B有时候我会想，如果我和你都没干现在这行，我们的生活会是怎样？'],
    	['C你居然坏了好事，山本堂不会放过你的。', 'C你最好给我活的长一点，我会亲自收拾你的。', 'C没想到你居然是艾迪，我大意了。'],
    	['D钱才是万能的', 'D我很抱歉，我实在很缺钱。'],
    	['E一杯月之暗面鸡尾酒500电子币！这年头物价简直疯了。', 'E嗨！帅哥！一起喝一杯吗？', 'E我喜欢你这身性感的肌肉，小可爱。', 'E你有那种可以飞上落日城上空的车子吗？', 'E我知道你身上带着枪伙计，别紧张。', 'E不知道地球上那帮老同学怎么样了？哎，算了，肯定没我在这混得好。', "E前些天我妹妹竟然从地球上来看我了。妈呀，还好我临时换了个公寓……", 'E那些街头小子们实在讨厌，还好老娘会点功夫，还随身带了大功率电击器。'],
    	['F一边去，别烦我，我刚刚失恋了，伤心着呢~~。', 'F兄弟，你这身肌肉练的不错啊！实话告诉你把其实我是个健身教练,买点课吗？。', 'F俱乐部这种地方就是酒水太贵了，其他的还好。', 'F哥们，你看起来有点眼熟啊。要不要一起去教父酒吧喝一杯，谈谈人生？', 'F先生，能请我吃个汉堡吗？我刚把工作丢了。', 'F嘘——我觉得某个大公司肯定在我们每个人的脑子里都装了窃听芯片。', 'F我得承认我并不太喜欢喝酒。醉醺醺的状态对打架可没好处。']
    ];
    var BranchDialogArr = {
    	'Passerby_man': [{ dialog: ['G嘿哥们！我现在要把这份外卖送到客户手上，但我老婆说她快生了。', 'G你能帮忙送一下吗？'], select_1: 'A.没问题，地址给我，这就去。', select_2: 'B.抱歉，我现在很忙', dialog_take: ['G哥们真是太感谢你了，位置已经发你了，尽快帮我送一下。'], dialog_refuse: ['G哎！看来我只能找找其他人了。'], goodsMsg: '获得外卖x1', endDoalog: ['G感谢！你帮了我大忙！'], takeHint: '帮小哥送个外卖' },
    	{ dialog: ['G嘿兄弟！我腿受伤了，实在是跑不动了，你能帮我送一下这份外卖吗？'], select_1: 'A.好，交给我吧。地址是？', select_2: 'B.不好意思，没空。', dialog_take: ['G谢谢谢谢，真是麻烦你了。我这就把地址发送给你。'], dialog_refuse: ['G好吧……'], goodsMsg: '获得外卖x1', endDoalog: ['G干得漂亮！'], takeHint: '帮小哥送个外卖' },
    	{ dialog: ['F嘿小伙子！我看你骨骼惊奇，天赋异禀，我现在有一份重要的文件需要送到客户手上。', 'F你能帮忙跑一趟吗？客户会给你相应报酬的。'], select_1: 'A.文件嘛，小事一桩，包在我身上。', select_2: 'B.对不起，没时间。', dialog_take: ['F呵呵，可别掉以轻心啊！地址在这里，你看一下，现在就动身吧。'], dialog_refuse: ['F现在的年轻人都这么害怕挑战吗？'], goodsMsg: '获得重要文件x1', endDoalog: ['F不错，我看你以后大有可为！'], takeHint: '把文件交给指定客户' },
    	{ dialog: ['F这位靓仔！我现在有件货物急需送到客户手上，但一会我有个会要开。', 'F如果你愿意帮忙送过去，以后我们就是兄弟！'], select_1: 'A.乐意帮忙。地址是？', select_2: 'B.这样一上来就称兄道弟怕是不太好。', dialog_take: ['F你真是我见过最靓的靓仔了！地址标记好了，麻烦你尽快送达！'], dialog_refuse: ['F你的拒绝还真是委婉……'], goodsMsg: '获得小件货物x1', endDoalog: ['F今后我们就是好兄弟了！'], takeHint: '把货物交给指定客户' },
    	],
    	'Gangster': [{ dialog: ['C哥们，我刚才被小混混偷袭受伤了，现在有个文件需要交到合作伙伴手上。', 'C如果你愿意帮这个忙，他们会给你不错的回报。'], select_1: 'A.回报？我喜欢回报。放心交给我吧。', select_2: 'B.不了，听起来很危险。', dialog_take: ['C我一看就知道你是个好人！地址在这，麻烦你了。'], dialog_refuse: ['C没想到你身材比牛壮，胆子却比鸡仔还小！'], goodsMsg: '获得帮会文件x1', endDoalog: ['C谢谢！我就知道你会漂亮完成的。'], takeHint: '把文件交给指定客户' },
    	{ dialog: ['C我这里有件货物需要送到客户手上，但是现在敌对帮会的赏金猎人在追杀我，我不方便露面。', 'C帮个忙，送一下这批货。'], select_1: 'A.我最擅长这个了。地址发过来吧。', select_2: 'B.谢谢，但风险感觉太高了。', dialog_take: ['C我也对你有信心！这个是地址，接下来就看你的了。'], dialog_refuse: ['C你不是赏金猎人吗？还怕风险？呵呵！'], goodsMsg: '获得帮会货物x1', endDoalog: ['C先生，你的效率真高！'], takeHint: '把货物交给指定客户' },
    	],
    	'Hunter': [{ dialog: ['A有个不知天高地厚的小混混。估计是喝多了，打伤了好多市民，你去处理一下吧。'], select_1: 'A.哦？我很乐意让他吃到终生难忘的教训。', select_2: 'B.这种小事就别委托我了吧。', dialog_take: ['A就等你这句话了，早该有人治治他了！他在这个地址，麻烦尽快过去。'], dialog_refuse: ['A这年头有点活不容易，您的眼光可真是高得矫情啊！'], goodsMsg: '前往闹事地点', endDoalog: ['A好！那可恶的家伙估计接下来几年都不敢猖狂了。'], takeHint: '击败闹事的小混混' },
    	{ dialog: ['A有一伙富豪和随行保镖刚刚进入城市，我们刚刚截获了他们的位置信息。', 'A或许你可以干一票，获取不错的回报'], select_1: 'A.对我来说很轻松。他们在哪？', select_2: 'B.这活感觉不太适合我。', dialog_take: ['A在这，已经帮你标记到地图上了！时间不等人，麻烦立即出发！'], dialog_refuse: ['A没想到还有这么胆小的赏金猎人。啧……'], goodsMsg: '前往闹事地点', endDoalog: ['A合作愉快！'], takeHint: '成功干了一票' },
    	{ dialog: ['A有个不知天高地厚的家伙得罪了我的大客户，客户可不想动用自己的人手去教训他。', 'A你能够替我出面摆平这件事情吗？'], select_1: 'A.只要我想，三分钟就可以。发地址来吧。', select_2: 'B.不了，这么脏的活儿。', dialog_take: ['A那就期待你的表现了，酬劳不会少的。地址发给你了。'], dialog_refuse: ['A赏金猎人什么时候都开始这么挑三拣四了？'], goodsMsg: '前往闹事地点', endDoalog: ['A大客户非常满意！下次再合作啊。'], takeHint: '解决掉目标人物' },
    	],
    	'Msx': [{ dialog: ['8这该死的落日城黑客又把我的商业电脑系统黑掉了，你能帮我修复回来吗？'], select_1: 'A.格式化的硬盘我都能修复，这个小菜一碟。', select_2: 'B.听起来没什么挑战，你找维修店吧。', dialog_take: ['8那就让我看看你的本事！去这个地址，谢谢。'], dialog_refuse: ['8口气倒是不小，我看你就是没这个能力吧！'], goodsMsg: '修复电脑', endDoalog: ['8哇，真的完全恢复了！大神加个喂信呗？！'], takeHint: '修复电脑系统' },
    	{ dialog: ['8我的电脑好像中病毒了，现在连机都开不了，你能试着帮我修复一下吗？'], select_1: 'A.区区病毒何足挂齿，让我来吧！', select_2: 'B.呃，这活儿没什么意思，你另寻高明吧。', dialog_take: ['8好的，那就交给你啦，可一定要修好啊，里面还有我的重要数据。'], dialog_refuse: ['8是活没意思还是你没本事？'], goodsMsg: '修复电脑', endDoalog: ['8太感谢了，工作进度可以赶上了！'], takeHint: '给电脑杀毒' },
    	{ dialog: ['8该死的，我的落日城资金账户信息又被盗用了。你能帮我找回来吗？'], select_1: 'A.那一定不好受。我保证很快帮你搞定。', select_2: 'B.我有点忙，你找别人吧。', dialog_take: ['8好！感谢你先生。你直接登录我的电脑吧，看看能挽回多少损失。'], dialog_refuse: ['8好吧……唉，接下来几个月恐怕都要吃土了……'], goodsMsg: '修复电脑', endDoalog: ['8先生你就是我的大恩人！'], takeHint: '找回丢失的资金账户' },
    	],
    };

    var BlurVS = "#include \"Lighting.glsl\";\n#if defined(GL_FRAGMENT_PRECISION_HIGH)// 原来的写法会被我们自己的解析流程处理，而我们的解析是不认内置宏的，导致被删掉，所以改成 if defined 了\n\tprecision highp float;\n#else\n\tprecision mediump float;\n#endif\nattribute vec4 a_PositionTexcoord;\nvarying vec2 v_Texcoord0;\n\nvoid main() {\n\tgl_Position = vec4(a_PositionTexcoord.xy, 0.0, 1.0);\n\tv_Texcoord0 = a_PositionTexcoord.zw;\n\tgl_Position = remapGLPositionZ(gl_Position);\n}";

    var BlurHorizentalFS = "#if defined(GL_FRAGMENT_PRECISION_HIGH)// 原来的写法会被我们自己的解析流程处理，而我们的解析是不认内置宏的，导致被删掉，所以改成 if defined 了\n\tprecision highp float;\n#else\n\tprecision mediump float;\n#endif\n\nvarying vec2 v_Texcoord0;\nuniform sampler2D u_MainTex;\nuniform vec4 u_MainTex_TexelSize;\nuniform float u_DownSampleValue;\n\nvoid main()\n{\n    vec4 color = vec4(0.0,0.0,0.0,0.0);\n    vec2 uv = v_Texcoord0;\n    vec2 uvOffset = vec2(1.0,0.0)*u_MainTex_TexelSize.xy*u_DownSampleValue;\n    uv = uv - uvOffset*3.0;\n    //高斯参数\n    color+=0.0205*texture2D(u_MainTex,uv);\n    uv+=uvOffset;\n    color+=0.0855*texture2D(u_MainTex,uv);\n    uv+=uvOffset;\n    color+=0.232*texture2D(u_MainTex,uv);\n    uv+=uvOffset;\n    color+=0.324*texture2D(u_MainTex,uv);\n    uv+=uvOffset;\n    color+=0.232*texture2D(u_MainTex,uv);\n    uv+=uvOffset;\n    color+=0.0855*texture2D(u_MainTex,uv);\n    uv+=uvOffset;\n    color+=0.0205*texture2D(u_MainTex,uv);\n\n    gl_FragColor = color;\n    \n\n    \n}";

    var BlurVerticalFS = "#if defined(GL_FRAGMENT_PRECISION_HIGH)// 原来的写法会被我们自己的解析流程处理，而我们的解析是不认内置宏的，导致被删掉，所以改成 if defined 了\n\tprecision highp float;\n#else\n\tprecision mediump float;\n#endif\n\nvarying vec2 v_Texcoord0;\nuniform sampler2D u_MainTex;\nuniform vec4 u_MainTex_TexelSize;\nuniform float u_DownSampleValue;\n\nvoid main()\n{\n    vec4 color = vec4(0.0,0.0,0.0,0.0);\n    vec2 uv = v_Texcoord0;\n    vec2 uvOffset = vec2(0.0,1.0)*u_MainTex_TexelSize.xy*u_DownSampleValue;\n    uv = uv - uvOffset*3.0;\n    //高斯参数\n    color+=0.0205*texture2D(u_MainTex,uv);\n    uv+=uvOffset;\n    color+=0.0855*texture2D(u_MainTex,uv);\n    uv+=uvOffset;\n    color+=0.232*texture2D(u_MainTex,uv);\n    uv+=uvOffset;\n    color+=0.324*texture2D(u_MainTex,uv);\n    uv+=uvOffset;\n    color+=0.232*texture2D(u_MainTex,uv);\n    uv+=uvOffset;\n    color+=0.0855*texture2D(u_MainTex,uv);\n    uv+=uvOffset;\n    color+=0.0205*texture2D(u_MainTex,uv);\n\n    gl_FragColor = color;\n    \n\n    \n}";

    var BlurDownSampleFS = "#if defined(GL_FRAGMENT_PRECISION_HIGH)// 原来的写法会被我们自己的解析流程处理，而我们的解析是不认内置宏的，导致被删掉，所以改成 if defined 了\n\tprecision highp float;\n#else\n\tprecision mediump float;\n#endif\n\nvarying vec2 v_Texcoord0;\nuniform sampler2D u_MainTex;\nuniform vec4 u_MainTex_TexelSize;\n\nvoid main()\n{\n    vec4 color = vec4(0.0,0.0,0.0,0.0);\n    color += texture2D(u_MainTex,v_Texcoord0+u_MainTex_TexelSize.xy*vec2(1.0,0.0));\n\tcolor += texture2D(u_MainTex,v_Texcoord0+u_MainTex_TexelSize.xy*vec2(-1.0,0.0));\n\tcolor += texture2D(u_MainTex,v_Texcoord0+u_MainTex_TexelSize.xy*vec2(0.0,-1.0));\n\tcolor += texture2D(u_MainTex,v_Texcoord0+u_MainTex_TexelSize.xy*vec2(0.0,1.0));\n    gl_FragColor = color/4.0;\n    //gl_FragColor = vec4(1.0,0.0,0.0,1.0);\n}";

    var BlurDownSampleVS = "#include \"Lighting.glsl\";\n#if defined(GL_FRAGMENT_PRECISION_HIGH)// 原来的写法会被我们自己的解析流程处理，而我们的解析是不认内置宏的，导致被删掉，所以改成 if defined 了\n\tprecision highp float;\n#else\n\tprecision mediump float;\n#endif\nattribute vec4 a_PositionTexcoord;\nvarying vec2 v_Texcoord0;\n\nvoid main() {\n\tgl_Position = vec4(a_PositionTexcoord.xy, 0.0, 1.0);\n\tv_Texcoord0 = a_PositionTexcoord.zw;\n\tgl_Position = remapGLPositionZ(gl_Position);\n}";

    var BlurEdgeAdd = "#if defined(GL_FRAGMENT_PRECISION_HIGH)// 原来的写法会被我们自己的解析流程处理，而我们的解析是不认内置宏的，导致被删掉，所以改成 if defined 了\n\tprecision highp float;\n#else\n\tprecision mediump float;\n#endif\n\nvarying vec2 v_Texcoord0;\nuniform sampler2D u_MainTex;\nuniform sampler2D u_sourceTexture0;\n\nvoid main()\n{\n    vec2 uv = v_Texcoord0;\n    vec4 mainColor = texture2D(u_MainTex,uv);\n    vec4 sourceColor = texture2D(u_sourceTexture0,uv);\n    float factor = step(sourceColor.x+sourceColor.y+sourceColor.z,0.001);\n    vec4 color = mix(sourceColor,mainColor,factor);\n    gl_FragColor =color;\n}";

    var BlurEdgeSub = "#if defined(GL_FRAGMENT_PRECISION_HIGH)// 原来的写法会被我们自己的解析流程处理，而我们的解析是不认内置宏的，导致被删掉，所以改成 if defined 了\n\tprecision highp float;\n#else\n\tprecision mediump float;\n#endif\n\nvarying vec2 v_Texcoord0;\nuniform sampler2D u_sourceTexture0;\nuniform sampler2D u_sourceTexture1;\n\nvoid main()\n{\n    vec2 uv = v_Texcoord0;\n    vec4 blurColor = texture2D(u_sourceTexture0,uv);\n    vec4 clearColor = texture2D(u_sourceTexture1,uv);\n    float factor = step(clearColor.x+clearColor.y+clearColor.z,0.001);\n    vec4 color = blurColor*factor;\n    color = (1.0-step(color.x+color.y+color.z,0.15))*vec4(1.0,0.9,0.0,1.0);\n    gl_FragColor = color;\n}";

    class BlurEffect extends Laya.PostProcessEffect {
    	constructor() {
    		super();
    		this._shader = null;
    		this._shaderData = new Laya.ShaderData();
    		this._downSampleNum = 1;
    		this._blurSpreadSize = 1;
    		this._blurIterations = 2;
    		this._texSize = new Laya.Vector4(1.0, 1.0, 1.0, 1.0);
    		this._shader = Laya.Shader3D.find("blurEffect");
    		this._tempRenderTexture = new Array(13);
    	}
    	static init() {
    		var attributeMap = {
    			'a_PositionTexcoord': Laya.VertexMesh.MESH_POSITION0
    		};
    		var uniformMap = {
    			'u_MainTex': Laya.Shader3D.PERIOD_MATERIAL,
    			'u_MainTex_TexelSize': Laya.Shader3D.PERIOD_MATERIAL,
    			'u_DownSampleValue': Laya.Shader3D.PERIOD_MATERIAL,
    			'u_sourceTexture0': Laya.Shader3D.PERIOD_MATERIAL,
    			'u_sourceTexture1': Laya.Shader3D.PERIOD_MATERIAL
    		};
    		var shader = Laya.Shader3D.add("blurEffect");
    		var subShader = new Laya.SubShader(attributeMap, uniformMap);
    		shader.addSubShader(subShader);
    		var shaderpass = subShader.addShaderPass(BlurDownSampleVS, BlurDownSampleFS);
    		var renderState = shaderpass.renderState;
    		renderState.depthTest = Laya.RenderState.DEPTHTEST_ALWAYS;
    		renderState.depthWrite = false;
    		renderState.cull = Laya.RenderState.CULL_NONE;
    		renderState.blend = Laya.RenderState.BLEND_DISABLE;
    		subShader = new Laya.SubShader(attributeMap, uniformMap);
    		shader.addSubShader(subShader);
    		shaderpass = subShader.addShaderPass(BlurVS, BlurVerticalFS);
    		renderState = shaderpass.renderState;
    		renderState.depthTest = Laya.RenderState.DEPTHTEST_ALWAYS;
    		renderState.depthWrite = false;
    		renderState.cull = Laya.RenderState.CULL_NONE;
    		renderState.blend = Laya.RenderState.BLEND_DISABLE;
    		subShader = new Laya.SubShader(attributeMap, uniformMap);
    		shader.addSubShader(subShader);
    		shaderpass = subShader.addShaderPass(BlurVS, BlurHorizentalFS);
    		renderState = shaderpass.renderState;
    		renderState.depthTest = Laya.RenderState.DEPTHTEST_ALWAYS;
    		renderState.depthWrite = false;
    		renderState.cull = Laya.RenderState.CULL_NONE;
    		renderState.blend = Laya.RenderState.BLEND_DISABLE;
    		subShader = new Laya.SubShader(attributeMap, uniformMap);
    		shader.addSubShader(subShader);
    		shaderpass = subShader.addShaderPass(BlurVS, BlurEdgeSub);
    		renderState = shaderpass.renderState;
    		renderState.depthTest = Laya.RenderState.DEPTHTEST_ALWAYS;
    		renderState.depthWrite = false;
    		renderState.cull = Laya.RenderState.CULL_NONE;
    		renderState.blend = Laya.RenderState.BLEND_DISABLE;
    		subShader = new Laya.SubShader(attributeMap, uniformMap);
    		shader.addSubShader(subShader);
    		shaderpass = subShader.addShaderPass(BlurVS, BlurEdgeAdd);
    		renderState = shaderpass.renderState;
    		renderState.depthTest = Laya.RenderState.DEPTHTEST_ALWAYS;
    		renderState.depthWrite = false;
    		renderState.cull = Laya.RenderState.CULL_NONE;
    		renderState.blend = Laya.RenderState.BLEND_DISABLE;
    	}
    	get downSampleNum() {
    		return this._downSampleNum;
    	}
    	set downSampleNum(value) {
    		this._downSampleNum = Math.min(6, Math.max(value, 0.0));
    	}
    	get blurSpreadSize() {
    		return this._blurSpreadSize;
    	}
    	set blurSpreadSize(value) {
    		this._blurSpreadSize = Math.min(10, Math.max(value, 1.0));
    	}
    	get blurIterations() {
    		return this._blurIterations;
    	}
    	set blurIterations(value) {
    		this._blurIterations = Math.min(Math.max(value, 0.0), 6.0);
    	}
    	render(context) {
    		var cmd = context.command;
    		var viewport = context.camera.viewport;
    		var scaleFactor = 1.0 / (1 << Math.floor(this._downSampleNum));
    		var tw = Math.floor(viewport.width * scaleFactor);
    		var th = Math.floor(viewport.height * scaleFactor);
    		this._texSize.setValue(1.0 / tw, 1.0 / th, tw, th);
    		this._shaderData.setNumber(BlurEffect.SHADERVALUE_DOWNSAMPLEVALUE, this.blurSpreadSize);
    		this._shaderData.setVector(BlurEffect.SHADERVALUE_TEXELSIZE, this._texSize);
    		var downSampleTexture = Laya.RenderTexture.createFromPool(tw, th, Laya.RenderTextureFormat.R8G8B8, Laya.RenderTextureDepthFormat.DEPTHSTENCIL_NONE);
    		downSampleTexture.filterMode = Laya.FilterMode.Bilinear;
    		this._tempRenderTexture[0] = downSampleTexture;
    		var lastDownTexture = context.source;
    		cmd.blitScreenTriangle(lastDownTexture, downSampleTexture, null, this._shader, this._shaderData, 0);
    		lastDownTexture = downSampleTexture;
    		for (var i = 0; i < this._blurIterations; i++) {
    			var blurTexture = Laya.RenderTexture.createFromPool(tw, th, Laya.RenderTextureFormat.R8G8B8, Laya.RenderTextureDepthFormat.DEPTHSTENCIL_NONE);
    			blurTexture.filterMode = Laya.FilterMode.Bilinear;
    			cmd.blitScreenTriangle(lastDownTexture, blurTexture, null, this._shader, this._shaderData, 1);
    			lastDownTexture = blurTexture;
    			this._tempRenderTexture[i * 2 + 1] = blurTexture;
    			blurTexture = Laya.RenderTexture.createFromPool(tw, th, Laya.RenderTextureFormat.R8G8B8, Laya.RenderTextureDepthFormat.DEPTHSTENCIL_NONE);
    			blurTexture.filterMode = Laya.FilterMode.Bilinear;
    			cmd.blitScreenTriangle(lastDownTexture, blurTexture, null, this._shader, this._shaderData, 2);
    			lastDownTexture = blurTexture;
    			this._tempRenderTexture[i * 2 + 2] = blurTexture;
    		}
    		context.source = lastDownTexture;
    		var maxTexture = this._blurIterations * 2 + 1;
    		for (i = 0; i < maxTexture; i++) {
    			Laya.RenderTexture.recoverToPool(this._tempRenderTexture[i]);
    		}
    		context.deferredReleaseTextures.push(lastDownTexture);
    	}
    }
    BlurEffect.BLUR_TYPE_GaussianBlur = 0;
    BlurEffect.BLUR_TYPE_Simple = 1;
    BlurEffect.SHADERVALUE_MAINTEX = Laya.Shader3D.propertyNameToID("u_MainTex");
    BlurEffect.SHADERVALUE_TEXELSIZE = Laya.Shader3D.propertyNameToID("u_MainTex_TexelSize");
    BlurEffect.SHADERVALUE_DOWNSAMPLEVALUE = Laya.Shader3D.propertyNameToID("u_DownSampleValue");
    class BlurMaterial extends Laya.Material {
    	constructor(texelSize, offset) {
    		super();
    		this.texelSize = new Laya.Vector4();
    		this.doSamplevalue = 0;
    		this.setShaderName("blurEffect");
    		this._shaderValues.setNumber(BlurMaterial.SHADERVALUE_DOWNSAMPLEVALUE, offset);
    		this._shaderValues.setVector(BlurMaterial.SHADERVALUE_TEXELSIZE, texelSize);
    	}
    	sourceTexture(sourceTexture0, sourceTexture1) {
    		this._shaderValues.setTexture(BlurMaterial.SHADERVALUE_SOURCETEXTURE0, sourceTexture0);
    		this._shaderValues.setTexture(BlurMaterial.ShADERVALUE_SOURCETEXTURE1, sourceTexture1);
    	}
    }
    BlurMaterial.SHADERVALUE_MAINTEX = Laya.Shader3D.propertyNameToID("u_MainTex");
    BlurMaterial.SHADERVALUE_TEXELSIZE = Laya.Shader3D.propertyNameToID("u_MainTex_TexelSize");
    BlurMaterial.SHADERVALUE_DOWNSAMPLEVALUE = Laya.Shader3D.propertyNameToID("u_DownSampleValue");
    BlurMaterial.SHADERVALUE_SOURCETEXTURE0 = Laya.Shader3D.propertyNameToID("u_sourceTexture0");
    BlurMaterial.ShADERVALUE_SOURCETEXTURE1 = Laya.Shader3D.propertyNameToID("u_sourceTexture1");

    class CommandBuffer_Outline {
    	constructor() {
    		this.cameraEventFlag = Laya.CameraEventFlags.BeforeImageEffect;
    		this.renders = [];
    		this.materials = [];
    		this.viewPort = null;
    		this.isUseOuline = true;
    		this.renderTexture = null;
    		this.subRendertexture = null;
    		this.downRenderTexture = null;
    		this.blurTexture = null;
    		this.buf = null;
    	}
    	static GetInstance() {
    		if (this.instance == null)
    			this.instance = new CommandBuffer_Outline();
    		return this.instance;
    	}
    	init() {
    		if (this.camera == null) {
    			BlurEffect.init();
    			this.camera = InsManager.GetInstance()._SceneManager.player.playerCamera;
    			this.viewPort = this.camera.viewport;
    		}
    	}
    	createDrawMeshCommandBuffer(camera, renders, materials) {
    		if (Laya.Browser.onAndroid)
    			return;
    		if (this.renders.length == 0 || this.materials.length == 0)
    			return;
    		this.buf = new Laya.CommandBuffer();
    		camera.enableBuiltInRenderTexture = true;
    		this.renderTexture = Laya.RenderTexture.createFromPool(this.viewPort.width, this.viewPort.height, Laya.RenderTextureFormat.R8G8B8A8, Laya.RenderTextureDepthFormat.DEPTHSTENCIL_NONE);
    		this.buf.setRenderTarget(this.renderTexture);
    		this.buf.clearRenderTarget(true, false, new Laya.Vector4(0, 0, 0, 0));
    		for (var i = 0, n = renders.length; i < n; i++) {
    			if (renders == null) {
    				this.RemoveCommandBuffer_Outline();
    				return;
    			}
    			this.buf.drawRender(renders[i], materials[i], 0);
    		}
    		this.subRendertexture = Laya.RenderTexture.createFromPool(this.viewPort.width, this.viewPort.height, Laya.RenderTextureFormat.R8G8B8A8, Laya.RenderTextureDepthFormat.DEPTHSTENCIL_NONE);
    		this.buf.blitScreenQuad(this.renderTexture, this.subRendertexture);
    		var downSampleFactor = 2;
    		var downSampleWidth = this.viewPort.width / downSampleFactor;
    		var downSampleheigh = this.viewPort.height / downSampleFactor;
    		var texSize = new Laya.Vector4(1.0 / this.viewPort.width, 1.0 / this.viewPort.height, this.viewPort.width, downSampleheigh);
    		var blurMaterial = new BlurMaterial(texSize, 1);
    		this.downRenderTexture = Laya.RenderTexture.createFromPool(downSampleWidth, downSampleheigh, Laya.RenderTextureFormat.R8G8B8, Laya.RenderTextureDepthFormat.DEPTHSTENCIL_NONE);
    		this.buf.blitScreenQuadByMaterial(this.renderTexture, this.downRenderTexture, null, blurMaterial, 0);
    		this.blurTexture = Laya.RenderTexture.createFromPool(downSampleWidth, downSampleheigh, Laya.RenderTextureFormat.R8G8B8, Laya.RenderTextureDepthFormat.DEPTHSTENCIL_NONE);
    		this.blurTexture.filterMode = Laya.FilterMode.Bilinear;
    		this.buf.blitScreenQuadByMaterial(this.downRenderTexture, this.blurTexture, null, blurMaterial, 1);
    		this.buf.blitScreenQuadByMaterial(this.blurTexture, this.downRenderTexture, null, blurMaterial, 2);
    		this.buf.blitScreenQuadByMaterial(this.downRenderTexture, this.blurTexture, null, blurMaterial, 1);
    		this.buf.blitScreenQuadByMaterial(this.blurTexture, this.downRenderTexture, null, blurMaterial, 2);
    		this.buf.setShaderDataTexture(blurMaterial._shaderValues, BlurMaterial.SHADERVALUE_SOURCETEXTURE0, this.downRenderTexture);
    		this.buf.setShaderDataTexture(blurMaterial._shaderValues, BlurMaterial.ShADERVALUE_SOURCETEXTURE1, this.subRendertexture);
    		this.buf.blitScreenQuadByMaterial(this.blurTexture, this.renderTexture, null, blurMaterial, 3);
    		this.buf.setShaderDataTexture(blurMaterial._shaderValues, BlurMaterial.SHADERVALUE_SOURCETEXTURE0, this.renderTexture);
    		this.buf.blitScreenQuadByMaterial(null, this.subRendertexture, null, blurMaterial, 4);
    		this.buf.blitScreenQuadByMaterial(this.subRendertexture, null);
    		return this.buf;
    	}
    	AddCommandBuffet_Outline(sprite3D) {
    		if (Laya.Browser.onAndroid)
    			return;
    		if (sprite3D == null || !this.isUseOuline) {
    			return;
    		}
    		if (sprite3D.meshRenderer == null) {
    			this.renders.push(sprite3D.skinnedMeshRenderer);
    		}
    		else {
    			this.renders.push(sprite3D.meshRenderer);
    		}
    		var unlitMaterial = new Laya.UnlitMaterial();
    		unlitMaterial.albedoColor = new Laya.Vector4(255, 0, 0, 255);
    		this.materials.push(unlitMaterial);
    		this.commandBuffer = this.createDrawMeshCommandBuffer(this.camera, this.renders, this.materials);
    		this.camera.addCommandBuffer(this.cameraEventFlag, this.commandBuffer);
    	}
    	RemoveCommandBuffer_Outline() {
    		if (Laya.Browser.onAndroid)
    			return;
    		if (this.renders.length == 0 || !this.isUseOuline)
    			return;
    		this.renders = [];
    		this.materials = [];
    		this.camera.removeCommandBuffer(this.cameraEventFlag, this.commandBuffer);
    		this.buf = null;
    		if (this.renderTexture != null)
    			Laya.RenderTexture.recoverToPool(this.renderTexture);
    		if (this.blurTexture != null)
    			Laya.RenderTexture.recoverToPool(this.blurTexture);
    		if (this.subRendertexture != null)
    			Laya.RenderTexture.recoverToPool(this.subRendertexture);
    		if (this.downRenderTexture != null)
    			Laya.RenderTexture.recoverToPool(this.downRenderTexture);
    	}
    }

    class MaterialUtlis {
    	static SetMaterialOpaque(meshSprite3D) {
    		if (meshSprite3D != null && meshSprite3D.meshRenderer != null && meshSprite3D.meshRenderer.material != null) {
    			let blinnPhongMaterial = meshSprite3D.meshRenderer.material;
    			blinnPhongMaterial.renderMode = Laya.BlinnPhongMaterial.RENDERMODE_OPAQUE;
    			blinnPhongMaterial.albedoColorA = 1;
    		}
    		else {
    			console.error('material is null');
    		}
    	}
    	static SetMaterialTransparent(meshSprite3D) {
    		if (meshSprite3D != null && meshSprite3D.meshRenderer != null && meshSprite3D.meshRenderer.material != null) {
    			let blinnPhongMaterial = meshSprite3D.meshRenderer.material;
    			blinnPhongMaterial.renderMode = Laya.BlinnPhongMaterial.RENDERMODE_TRANSPARENT;
    			blinnPhongMaterial.albedoColorA = 0.4;
    		}
    		else {
    			console.error('material is null');
    		}
    	}
    	static SetMeshlinearLucency(meshSprite3D, call) {
    		if (meshSprite3D != null) {
    			console.log(meshSprite3D.meshRenderer);
    			let blinnPhongMaterial = meshSprite3D.meshRenderer.material;
    			blinnPhongMaterial.renderMode = Laya.BlinnPhongMaterial.RENDERMODE_TRANSPARENT;
    			blinnPhongMaterial.albedoColorA = 1;
    			let Alaebdofunc = () => {
    				blinnPhongMaterial.albedoColorA -= 0.04;
    				if (blinnPhongMaterial.albedoColorA <= 0) {
    					Laya.timer.clear(this, Alaebdofunc);
    					meshSprite3D.active = false;
    				}
    			};
    			Laya.timer.loop(Laya.timer.delta, call, Alaebdofunc);
    		}
    		else {
    			console.error('物体上没有mesh');
    		}
    	}
    	static SetSkinMeshlinearLucency(skinMeshSprite3D, call, hideNode) {
    		if (skinMeshSprite3D != null) {
    			let blinnPhongMaterial = skinMeshSprite3D.skinnedMeshRenderer.material;
    			blinnPhongMaterial.renderMode = Laya.BlinnPhongMaterial.RENDERMODE_TRANSPARENT;
    			blinnPhongMaterial.albedoColorA = 1;
    			let Alaebdofunc = () => {
    				blinnPhongMaterial.albedoColorA -= 0.02;
    				if (hideNode.transform == null) {
    					Laya.timer.clear(this, Alaebdofunc);
    					return;
    				}
    				hideNode.transform.localScale = new Laya.Vector3(hideNode.transform.localScale.x - 0.02, hideNode.transform.localScale.y - 0.02, hideNode.transform.localScale.z - 0.02);
    				if (blinnPhongMaterial.albedoColorA <= 0) {
    					Laya.timer.clear(this, Alaebdofunc);
    					hideNode.transform.localScale = new Laya.Vector3(1, 1, 1);
    					hideNode.active = false;
    				}
    			};
    			Laya.timer.loop(Laya.timer.delta, call, Alaebdofunc);
    		}
    		else {
    			console.error('物体上没有mesh');
    		}
    	}
    }

    class Prop3D extends Laya.Script3D {
    	constructor() {
    		super(...arguments);
    		this.propID = null;
    		this.name = "";
    		this.message = "";
    		this.propType = null;
    		this.prop3DID = null;
    		this.get3DType = 0;
    		this.maxGetConsume = 0;
    		this.getConsume = 0;
    		this.ToolSkin = "";
    		this.englishName = "未知物品";
    		this.kpNum = 1;
    		this.hideNode = null;
    		this.node3D = null;
    		this.mapIcon = "";
    		this.mapIcon_img = null;
    	}
    	onAwake() {
    		this.prop3DID = this.GetProp3DID();
    	}
    	onStart() {
    		this.node3D = this.owner;
    		this.propID = Get3DPropData[this.prop3DID].propID;
    		this.englishName = Get3DPropData[this.prop3DID].englishName;
    		this.name = Get3DPropData[this.prop3DID].name;
    		this.get3DType = Get3DPropData[this.prop3DID].getType;
    		this.propType = Get3DPropData[this.prop3DID].PropType;
    		this.maxGetConsume = Get3DPropData[this.prop3DID].getConsume;
    		this.getConsume = Get3DPropData[this.prop3DID].getConsume;
    		this.message = Get3DPropData[this.prop3DID].msg;
    		this.mapIcon = Get3DPropData[this.prop3DID].mapIcon;
    		this.kpNum = Get3DPropData[this.prop3DID].kpNum;
    		this.ToolSkin = Get3DPropData[this.prop3DID].ToolSkin;
    		this.hideNode = this.GetHideNode(this.owner);
    	}
    	GetProp3DID() {
    		let prop3DID = null;
    		for (let i = 0; i < Get3DPropData.length; i++) {
    			if (Get3DPropData[i].englishName == this.owner.name) {
    				prop3DID = Get3DPropData[i].prop3DID;
    				break;
    			}
    		}
    		if (prop3DID == null || prop3DID == undefined)
    			console.error('3DID get feil name is:', this.owner.name);
    		return prop3DID;
    	}
    	GetHideNode(node) {
    		let hideNode = null;
    		switch (this.prop3DID) {
    			default:
    				hideNode = node;
    				break;
    		}
    		return hideNode;
    	}
    	HideSelf(isShowHideEffect) {
    		if (isShowHideEffect)
    			InsManager.GetInstance()._SceneManager.ShowHideEffect(this.node3D.transform.localPosition, 0);
    		let meshSprite3D = this.hideNode;
    		MaterialUtlis.SetMeshlinearLucency(meshSprite3D, this);
    		CommandBuffer_Outline.GetInstance().RemoveCommandBuffer_Outline();
    	}
    }

    class BranchNpc_Ctrl extends Laya.Script {
    	constructor() {
    		super();
    		this.map_img = null;
    		this.sprite3D = null;
    		this.isTakeBranch = true;
    		this.dialogArr = [];
    		this.goodsMsg = '';
    		this.select_1 = '';
    		this.select_2 = '';
    		this.dialog_take = [];
    		this.dialog_refuse = [];
    		this.endDoalog = [];
    		this.takeHint = '';
    		this.gantanhao = null;
    		this.prop3D = null;
    	}
    	onStart() {
    		this.sprite3D = this.owner;
    		this.prop3D = this.owner.getComponent(Prop3D);
    		this.gantanhao = this.owner.getChildByName('Gantanhao');
    		this.ResetBranch();
    	}
    	ResetBranch() {
    		this.map_img = InsManager.GetInstance()._SceneManager.gamePanel.smallMap_ctrl.AddSprite3DSmallMap(this.sprite3D, 'zhixiandian.png');
    		this.isTakeBranch = true;
    		this.gantanhao.active = true;
    	}
    	HideBranch() {
    		this.map_img.destroy();
    		this.isTakeBranch = false;
    		Laya.timer.once(60000, this, this.ResetBranch);
    	}
    	LaunchBranch() {
    		this.GetBranchDialog(this.sprite3D.name);
    		if (this.dialogArr.length > 0) {
    			if (this.sprite3D.name == 'Passerby_man') {
    				InsManager.GetInstance()._UIManager.ShowDialogPanel(this.dialogArr, () => {
    					InsManager.GetInstance()._UIManager.ShowPopoutPanel(PopoutPanelType.Select, '是否接受 ' + this.prop3D.name + ' 的任务委托？', null, () => {
    						InsManager.GetInstance()._UIManager.ShowDialogPanel(this.dialog_take, () => { InsManager.GetInstance()._BranchManager.CreateBranch(BranchTaskType.DeliverGoodsTask, this); });
    					}, () => {
    						InsManager.GetInstance()._UIManager.ShowDialogPanel(this.dialog_refuse, () => { });
    					}, null, this.select_1, this.select_2);
    				});
    			}
    			if (this.sprite3D.name == 'Gangster') {
    				InsManager.GetInstance()._UIManager.ShowDialogPanel(this.dialogArr, () => {
    					InsManager.GetInstance()._UIManager.ShowPopoutPanel(PopoutPanelType.Select, '是否接受 ' + this.prop3D.name + ' 的任务委托？', null, () => {
    						InsManager.GetInstance()._UIManager.ShowDialogPanel(this.dialog_take, () => { InsManager.GetInstance()._BranchManager.CreateBranch(BranchTaskType.DeliverGoodsTask, this); });
    					}, () => {
    						InsManager.GetInstance()._UIManager.ShowDialogPanel(this.dialog_refuse, () => { });
    					}, null, this.select_1, this.select_2);
    				});
    			}
    			if (this.sprite3D.name == 'Hunter') {
    				InsManager.GetInstance()._UIManager.ShowDialogPanel(this.dialogArr, () => {
    					InsManager.GetInstance()._UIManager.ShowPopoutPanel(PopoutPanelType.Select, '是否接受 ' + this.prop3D.name + ' 的任务委托？', null, () => {
    						InsManager.GetInstance()._UIManager.ShowDialogPanel(this.dialog_take, () => { InsManager.GetInstance()._BranchManager.CreateBranch(BranchTaskType.HuntTask, this); });
    					}, () => {
    						InsManager.GetInstance()._UIManager.ShowDialogPanel(this.dialog_refuse, () => { });
    					}, null, this.select_1, this.select_2);
    				});
    			}
    			if (this.sprite3D.name == 'Msx') {
    				InsManager.GetInstance()._UIManager.ShowDialogPanel(this.dialogArr, () => {
    					InsManager.GetInstance()._UIManager.ShowPopoutPanel(PopoutPanelType.Select, '是否接受 ' + this.prop3D.name + ' 的任务委托？', null, () => {
    						InsManager.GetInstance()._UIManager.ShowDialogPanel(this.dialog_take, () => { InsManager.GetInstance()._BranchManager.CreateBranch(BranchTaskType.CrackerTask, this); });
    					}, () => {
    						InsManager.GetInstance()._UIManager.ShowDialogPanel(this.dialog_refuse, () => { });
    					}, null, this.select_1, this.select_2);
    				});
    			}
    		}
    	}
    	GetBranchDialog(npcName) {
    		let r = CalculateExtend.RandomNumber(0, BranchDialogArr[npcName].length - 1);
    		if (r >= 0) {
    			this.dialogArr = BranchDialogArr[npcName][r].dialog;
    			this.goodsMsg = BranchDialogArr[npcName][r].goodsMsg;
    			this.select_1 = BranchDialogArr[npcName][r].select_1;
    			this.select_2 = BranchDialogArr[npcName][r].select_2;
    			this.dialog_take = BranchDialogArr[npcName][r].dialog_take;
    			this.dialog_refuse = BranchDialogArr[npcName][r].dialog_refuse;
    			this.endDoalog = BranchDialogArr[npcName][r].endDoalog;
    			this.takeHint = BranchDialogArr[npcName][r].takeHint;
    			console.log(BranchDialogArr[npcName][r]);
    		}
    	}
    }

    class DialogManager {
    	static GetInstance() {
    		if (this._Instance == null)
    			this._Instance = new DialogManager();
    		return this._Instance;
    	}
    	NpcDialogS() {
    		if (InsManager.GetInstance()._SceneManager.player.currentGetProp == null) {
    			console.log('未找到prop3D');
    			return;
    		}
    		if (InsManager.GetInstance()._SceneManager.player.currentGetProp.propID != PropID.Alice_rope) {
    			if (InsManager.GetInstance()._SceneManager.player.currentGetProp.node3D.getChildByName('anim') && InsManager.GetInstance()._SceneManager.player.currentGetProp.node3D.getChildByName('anim').getComponent(Laya.Animator) != null) {
    				let atr = InsManager.GetInstance()._SceneManager.player.currentGetProp.node3D.getChildByName('anim').getComponent(Laya.Animator);
    				if (atr.getControllerLayer().getCurrentPlayState().animatorState.name != 'Sit') {
    					InsManager.GetInstance()._SceneManager.player.currentGetProp.node3D.transform.localPositionY = InsManager.GetInstance()._SceneManager.player.playerPos.transform.localPositionY;
    					InsManager.GetInstance()._SceneManager.player.currentGetProp.node3D.transform.lookAt(InsManager.GetInstance()._SceneManager.player.playerPos.transform.position, new Laya.Vector3(0, 1, 0));
    				}
    			}
    			if (InsManager.GetInstance()._SceneManager.player.currentGetProp.propID == PropID.Msx && InsManager.GetInstance()._SceneManager.player.currentGetProp.node3D.transform.localRotationEulerY > 50)
    				InsManager.GetInstance()._SceneManager.player.currentGetProp.node3D.transform.localRotationEulerY = 50;
    			InsManager.GetInstance()._SceneManager.player.playerPos.transform.lookAt(InsManager.GetInstance()._SceneManager.player.currentGetProp.node3D.transform.position, new Laya.Vector3(0, 1, 0));
    			if (InsManager.GetInstance()._SceneManager.player.playerPos.transform.localRotationEulerX != 0)
    				InsManager.GetInstance()._SceneManager.player.playerPos.transform.localRotationEulerX = 0;
    			if (InsManager.GetInstance()._SceneManager.player.playerPos.transform.localRotationEulerZ != 0)
    				InsManager.GetInstance()._SceneManager.player.playerPos.transform.localRotationEulerZ = 0;
    		}
    		if (MainMissionData[GameSystemData.GetInstance().currentMissionID].makeProp[0] == InsManager.GetInstance()._SceneManager.player.currentGetProp.propID && MainMissionData[GameSystemData.GetInstance().currentMissionID].mission_Type == MissionType.LookForNpcTask) {
    			if (GameSystemData.GetInstance().currentMissionID == 2 && InsManager.GetInstance()._SceneManager.enemyList.numChildren != 0 && InsManager.GetInstance()._SceneManager.player.currentGetProp.propID == PropID.Alice_rope) {
    				InsManager.GetInstance()._UIManager.ShowDialogPanel(['0现在进行解决太危险了，先解决这里的敌人再说'], () => { });
    				return;
    			}
    			InsManager.GetInstance()._knapsackManager.SavePlayerPropData(MainMissionData[GameSystemData.GetInstance().currentMissionID].makeProp[0], 1, MissionType.LookForNpcTask);
    		}
    		else {
    			if (InsManager.GetInstance()._BranchManager.targetNpc == InsManager.GetInstance()._SceneManager.player.currentGetProp.node3D) {
    				if (InsManager.GetInstance()._BranchManager.currentBranch == BranchTaskType.DeliverGoodsTask) {
    					InsManager.GetInstance()._UIManager.ShowDialogPanel(['H很不错，挺准时的，这是你的佣金'], () => { InsManager.GetInstance()._BranchManager.BranchAward(); });
    				}
    				return;
    			}
    			let npcBranch = InsManager.GetInstance()._SceneManager.player.currentGetProp.node3D.getComponent(BranchNpc_Ctrl);
    			if (npcBranch != null && npcBranch.isTakeBranch) {
    				if (InsManager.GetInstance()._BranchManager.currentBranch == null)
    					npcBranch.LaunchBranch();
    				else if (InsManager.GetInstance()._BranchManager.currentBranch == BranchTaskType.DeliverGoodsTask)
    					InsManager.GetInstance()._UIManager.ShowDialogPanel(['I你还在磨蹭什么？客户可不会自己来找你。'], () => { console.log('对话完成'); });
    				else if (InsManager.GetInstance()._BranchManager.currentBranch == BranchTaskType.HuntTask)
    					InsManager.GetInstance()._UIManager.ShowDialogPanel(['A赶快过去吧！去晚了他们就跑了。'], () => { console.log('对话完成'); });
    				else if (InsManager.GetInstance()._BranchManager.currentBranch == BranchTaskType.CrackerTask)
    					InsManager.GetInstance()._UIManager.ShowDialogPanel(['8赶快吧！难道你是不会？'], () => { console.log('对话完成'); });
    			}
    			else {
    				let random = CalculateExtend.RandomNumber(0, DialogArr[this.GetRoleType(InsManager.GetInstance()._SceneManager.player.currentGetProp.prop3DID)].length - 1);
    				let npcDialog = DialogArr[this.GetRoleType(InsManager.GetInstance()._SceneManager.player.currentGetProp.prop3DID)][random];
    				let playerDialog = DialogArr[0][CalculateExtend.RandomNumber(0, (DialogArr[0].length - 1))];
    				InsManager.GetInstance()._UIManager.ShowDialogPanel([npcDialog, playerDialog], () => {
    					console.log('对话完成');
    				});
    			}
    		}
    	}
    	GetRoleType(prop3DID) {
    		let roleType = null;
    		switch (prop3DID) {
    		}
    		return roleType;
    	}
    }
    DialogManager._Instance = null;

    class UpgradePanel_Ctrl extends UI_Ctrl {
    	constructor() {
    		super();
    		this.lv = null;
    		this.close = null;
    		this.atk = null;
    		this.hp = null;
    		this.defense = null;
    	}
    	onAwake() {
    		super.onAwake();
    		this.lv = this.view['bg/lv'];
    		this.close = this.view['bg/close'];
    		this.atk = this.view['bg/state/atk'];
    		this.hp = this.view['bg/state/hp'];
    		this.defense = this.view['bg/state/defense'];
    		this.view['bg'].visible = true;
    	}
    	onEnable() {
    		InsManager.GetInstance()._SceneManager.player.isNpcAtk = false;
    		SoundsManager.PlaySounds(PathData.sound_upLevel);
    		this.close.on(Laya.Event.CLICK, this, () => { InsManager.GetInstance()._UIManager.HidePanel("UpgradePanel"); });
    	}
    	UpdateView(lv) {
    		var playerStar = InsManager.GetInstance()._SceneManager.player.GetPlayerStar();
    		this.lv.getChildByName("old").text = (lv - 1).toString();
    		this.lv.getChildByName("new").text = (lv).toString();
    		var player = InsManager.GetInstance()._SceneManager.player;
    		this.atk.getChildByName("old").text = player.atkValue.toString();
    		player.atkValue = 20 + Math.floor(MonsterData[GameSystemData.GetInstance().playerModelLevel].atkValue + (MonsterData[GameSystemData.GetInstance().playerModelLevel + 1].atkValue -
    			MonsterData[GameSystemData.GetInstance().playerModelLevel].atkValue) * (playerStar / MonsterData[GameSystemData.GetInstance().playerModelLevel].UpLevel));
    		this.atk.getChildByName("new").text = player.atkValue.toString();
    		this.hp.getChildByName("old").text = player.hpValue.toString();
    		var addValue = (MonsterData[GameSystemData.GetInstance().playerModelLevel + 1].hpValue
    			- MonsterData[GameSystemData.GetInstance().playerModelLevel].hpValue) * (playerStar / MonsterData[GameSystemData.GetInstance().playerModelLevel].UpLevel);
    		player.hpValue = Math.floor(MonsterData[GameSystemData.GetInstance().playerModelLevel].hpValue + addValue);
    		this.hp.getChildByName("new").text = player.hpValue.toString();
    		PlayerData.GetInstance().maxHp = player.hpValue;
    		InsManager.GetInstance()._DataUpdateManager.SetHpData(Math.floor(addValue));
    		EventManager._Instance.Dispatch_Event(PathData.EVENT_SETPLAYERHP, null);
    		this.defense.getChildByName("old").text = player.defense.toString();
    		this.defense.getChildByName("new").text = player.defense.toString();
    	}
    	onDisable() {
    		InsManager.GetInstance()._SceneManager.player.isNpcAtk = true;
    	}
    }

    class DxOppoNativeIconAd extends Laya.Script {
    	constructor() {
    		super(...arguments);
    		this.adImg = null;
    		this.adCloseBtn = null;
    		this.adRes = null;
    	}
    	onAwake() {
    		this.adImg = this.owner.getChildByName("dxAd");
    		this.adCloseBtn = this.adImg.getChildByName("dxCloseBtn");
    		if (PlatformAdManager.getInstance().platform != PlatformAdManager.getInstance().platformList[2]) {
    			this.owner.visible = false;
    			console.log("===非OPPO 小游戏, 隐藏原生icon===");
    			return;
    		}
    	}
    	setNativeAd(res) {
    		PlatformAdManager.lastNativeAd_Func = () => {
    			console.log("dx ===================> 关闭可能存在的原生广告");
    			this.owner.visible = false;
    		};
    		if (res == null) {
    			this.setTest();
    			return;
    		}
    		this.owner.visible = true;
    		this.adRes = res;
    		let imgUrl = res["iconUrlList"][0];
    		this.adImg.skin = imgUrl;
    		this.adImg.off(Laya.Event.CLICK, this, this.onClickAd);
    		this.adImg.on(Laya.Event.CLICK, this, this.onClickAd);
    		this.adCloseBtn.off(Laya.Event.CLICK, this, this.onCloseAd);
    		this.adCloseBtn.on(Laya.Event.CLICK, this, this.onCloseAd);
    	}
    	setTest() {
    		console.log("================ 嵌入式 原生icon setTest ===============> ");
    		this.owner.visible = true;
    		this.adCloseBtn.off(Laya.Event.CLICK, this, this.onTestCloseAd);
    		this.adCloseBtn.on(Laya.Event.CLICK, this, this.onTestCloseAd);
    		this.adImg.off(Laya.Event.CLICK, this, this.onTestClickAd);
    		this.adImg.on(Laya.Event.CLICK, this, this.onTestClickAd);
    	}
    	onTestCloseAd() {
    		console.log("================ 嵌入式 关闭广告 ===============> ");
    		this.owner.visible = false;
    		this.adCloseBtn.off(Laya.Event.CLICK, this, this.onTestCloseAd);
    		this.adImg.off(Laya.Event.CLICK, this, this.onTestClickAd);
    	}
    	onTestClickAd() {
    		console.log("================ 嵌入式 点击广告 ===============> ");
    		this.owner.visible = false;
    		this.adCloseBtn.off(Laya.Event.CLICK, this, this.onTestCloseAd);
    		this.adImg.off(Laya.Event.CLICK, this, this.onTestClickAd);
    	}
    	onClickAd() {
    		console.log("====================> 点击原生Icon广告: " + this.adRes.adId);
    		PlatformAdManager.getInstance().onNativeAdClick(this.adRes.adId);
    		this.owner.visible = false;
    		this.adImg.off(Laya.Event.CLICK, this, this.onClickAd);
    		this.adCloseBtn.off(Laya.Event.CLICK, this, this.onCloseAd);
    	}
    	onCloseAd() {
    		this.owner.visible = false;
    		this.adImg.off(Laya.Event.CLICK, this, this.onClickAd);
    		this.adCloseBtn.off(Laya.Event.CLICK, this, this.onCloseAd);
    	}
    	onDisable() {
    		PlatformAdManager.lastNativeAd_Func = null;
    	}
    }

    class GamePanel_Ctrl extends UI_Ctrl {
    	constructor() {
    		super();
    		this.joystick = null;
    		this.hpHit_img = null;
    		this.knapsack_bt = null;
    		this.get_bt = null;
    		this.smallMap_ctrl = null;
    		this.atkTarget_img = null;
    		this.mission_bt = null;
    		this.mission_hint = null;
    		this.mission_hint_label = null;
    		this.spriteHand_root = null;
    		this.atk_bt = null;
    		this.keep_img = null;
    		this.openPlatform_bt = null;
    		this.inCar_bt = null;
    		this.pick_progress = null;
    		this.target_point = null;
    		this.dialog_bt = null;
    		this.branchHint = null;
    		this.eat_bt = null;
    		this.lifeHint_label = null;
    		this.lifeHint_img = null;
    		this.isLoopHpHitImg = false;
    		this.hpHitFunc = null;
    		this.addDesktop = null;
    		this.recording_bt = null;
    		this.npc_hp_progress = null;
    		this.npc_hp_progress_value = null;
    		this.npc_hp_progress_slowValue = null;
    		this.npc_hp_progress_name = null;
    		this.pick_progress_value = null;
    		this.expTextCreate = null;
    		this.mission_hint_img = null;
    		this.joystick_area = null;
    		this.progressImg = null;
    		this.setup_panel = null;
    		this.hintBox = null;
    		this.hintBox_label = null;
    		this.hintBoxAnim = null;
    		this.libao = null;
    		this.coin = null;
    		this.lvNum = null;
    		this.nameText = null;
    		this.ex_video = null;
    		this.ShowNodeArr = {};
    		this.GameUIActiveUIArr = [];
    		this.uf_map = {};
    		this.isOnSlider = false;
    		this.isAddSpeed = true;
    		this.bulidPropIndex = 0;
    		this.guideBtNameArr = ['atk_bt', 'Joystick', 'addSpeed_bt', 'hpGroup', 'banner_hint', 'target_point'];
    		this.guideImgArr = [];
    		this.isSlowHP = false;
    		this.ex_progress = null;
    		this.change_bt = null;
    		this.monsterMsgBg = null;
    		this.runEffect = null;
    		this.npcSprite3D = null;
    		this.pick_progress_v4 = new Laya.Vector4(0, 0, 0, 0);
    		this.recordingTime = 0;
    		this.isClick_Gp = false;
    		this.axisX = 0;
    		this.axisY = 0;
    		this.touchId = -1;
    		this.axisPoint = new Laya.Vector2(0, 0);
    		this.isGamePanelMove = true;
    	}
    	onAwake() {
    		super.onAwake();
    		this.LoadAllShowNode(this.owner);
    		this.joystick = this.view["left_buttom/Joystick"].getComponent(Joystick);
    		this.hpHit_img = this.view["hpHit_img"];
    		this.progressImg = this.view["left_top/hpGroup/bg_progress/value_progress"];
    		this.lifeHint_label = this.view["center/lifeHint"];
    		this.lifeHint_img = this.view["center/lifeHint/img"];
    		this.spriteHand_root = this.view["spriteHand_root"];
    		this.atkTarget_img = this.view['spriteHand_root/atkTarget_img'];
    		this.coin = this.view["right_top/coinGroup/count"];
    		this.knapsack_bt = this.view["right_center/knapsack_bt"];
    		this.openPlatform_bt = this.view['center/openPlatform_bt'];
    		this.inCar_bt = this.view['center/inCar_bt'];
    		this.hintBox = this.view['center/hintBox'];
    		this.hintBox_label = this.view['center/hintBox/label'];
    		this.hintBoxAnim = this.owner['hintBoxAnim'];
    		this.libao = this.owner['libao'];
    		this.branchHint = this.view['left_top/branchHint'];
    		this.mission_bt = this.view["right_center/mission_bt"];
    		this.mission_hint = this.view["top/mission_hint"];
    		this.mission_hint_label = this.view["top/mission_hint_label"];
    		this.atk_bt = this.view["right_buttom/atk_bt"];
    		this.npc_hp_progress = this.view["top/npc_hp_progress"];
    		this.npc_hp_progress_value = this.view["top/npc_hp_progress/value"];
    		this.npc_hp_progress_slowValue = this.view["top/npc_hp_progress/slowValue"];
    		this.npc_hp_progress_name = this.view["top/npc_hp_progress/name"];
    		this.pick_progress = this.view["center/pick_progress"];
    		this.pick_progress_value = this.view["center/pick_progress/value"];
    		this.smallMap_ctrl = this.view["right_top/smallMap"].getComponent(SmallMap_Ctrl);
    		this.expTextCreate = this.view["buttom_center/expTextCreate"];
    		this.joystick_area = this.view["left_buttom/Joystick_area"];
    		this.recording_bt = this.view['left_top/recording_bt'];
    		this.addDesktop = this.view['left_top/addDesktop'];
    		this.keep_img = this.view['keep_img'];
    		this.target_point = this.view['center/target_point'];
    		this.dialog_bt = this.view['center/dialog_bt'];
    		this.setup_panel = this.view['setup_panel'];
    		this.eat_bt = this.view['right_buttom/squat_bt'];
    		this.change_bt = this.view['right_buttom/switchWeapon_bt'];
    		this.ex_progress = this.view['left_top/hpGroup/ex_progress'];
    		this.lvNum = this.view['left_top/hpGroup/lvBg/lvNum'];
    		this.nameText = this.view['left_top/hpGroup/nameTitle/name'];
    		this.monsterMsgBg = this.view['left_center/msgBg'];
    		this.runEffect = this.view['runEffect'];
    		this.ex_video = this.view['left_top/ex_video'];
    		this.hpHit_img.alpha = 0;
    		EventManager._Instance.Add_Listener(PathData.EVENT_UPDATEATKIMGSKIN, this, this.UpdateAtkButtonSkin);
    		EventManager._Instance.Add_Listener(PathData.EVENT_SETPLAYERHP, this, this.UdatePlayerHpProgress);
    		EventManager._Instance.Add_Listener(PathData.EVENT_UPDATEPICKBUTTON, this, this.UpdatePickBotton);
    		EventManager._Instance.Add_Listener(PathData.EVENT_UPDATECOIN, this, this.UpdateCoinCount);
    		EventManager._Instance.Add_Listener(PathData.EVENT_UPDATELIFEPROPERTYLABEL, this, this.ShowLifeHint);
    		EventManager._Instance.Add_Listener(PathData.EVENT_UPDATEEXP, this, this.UpdateExp);
    		EventManager._Instance.Add_Listener(PathData.EVENT_UPDATELIFEPROPERTYLABEL, this, this.UpdateLifePropertyLabel);
    		EventManager._Instance.Add_Listener(PathData.Event_HINTPOINT, this, this.UpdateHintPoint);
    		EventManager._Instance.Add_Listener(PathData.EVENT_UPDATERECORDINGSTATE, this, this.UpdateRecordingState);
    		EventManager._Instance.Add_Listener(PathData.EVENT_SetExProgress, this, this.SetExProgress);
    		EventManager._Instance.Add_Listener(PathData.EVENT_UpdateExProgress, this, this.UpdateExProgress);
    		EventManager._Instance.Add_Listener(PathData.Event_UpdateChangeBtn, this, (isShow) => { this.change_bt.visible = isShow; });
    	}
    	onEnable() {
    		this.InitView();
    	}
    	onUpdate() {
    		if (PlatformAdManager.getInstance().intoGamePanel) {
    			PlatformAdManager.getInstance().intoGamePanel = false;
    			if (PlatformAdManager.getInstance().platform == "oppo") {
    				setTimeout(() => {
    					this.showNativeIconAd();
    					console.log("==========================icon");
    				}, 1000);
    			}
    		}
    	}
    	showNativeIconAd() {
    		let nativeIconAd = this.owner.getChildByName("left_buttom").getChildByName("DxOppoNativeAd_Icon");
    		nativeIconAd.visible = false;
    		console.log("dx ==============> showNativeIconAd() " + PlatformAdManager.getInstance().oppoNativeIconId);
    		PlatformAdManager.getInstance().showNativeAd(PlatformAdManager.getInstance().oppoNativeIconId, (res) => {
    			setTimeout(() => {
    				nativeIconAd.getComponent(DxOppoNativeIconAd).setNativeAd(res);
    			}, 1);
    		});
    	}
    	onStart() {
    		this.view["black_mask"].visible = true;
    		Laya.Tween.to(this.view["black_mask"], { alpha: 0 }, 3000, null, Laya.Handler.create(this, function () {
    			this.view["black_mask"].visible = false;
    		}));
    		this.mission_bt.on(Laya.Event.CLICK, this, () => { InsManager.GetInstance()._UIManager.ShowUI(PathData.missionPanel_path); });
    		this.joystick_area.on(Laya.Event.MOUSE_DOWN, this, this.OnJoystickAreaDown);
    		this.recording_bt.on(Laya.Event.CLICK, this, this.OnRecordingButtonClick);
    		this.addDesktop.visible = false;
    		this.view["right_top/debug_bt"].on(Laya.Event.CLICK, this, () => { InsManager.GetInstance()._UIManager.ShowUI(PathData.debugPanel_path); });
    		this.view["right_top/setting_bt"].on(Laya.Event.CLICK, this, () => { InsManager.GetInstance()._UIManager.ShowUI(PathData.settingPanel_path); });
    		this.view["right_center/knapsack_bt"].on(Laya.Event.CLICK, this, this.OnKnapsackeClick);
    		this.view["test/switchWeapon_bt"].on(Laya.Event.CLICK, this, this.SwitchWeapon);
    		this.view['right_buttom/switchWeapon_bt'].on(Laya.Event.CLICK, this, this.OnUpgradeClick);
    		this.view['right_buttom/moreGame_bt'].on(Laya.Event.CLICK, this, () => { Platforms.getInstance().showMoreGamesBtn(); });
    		this.view['indetail_panel'].on(Laya.Event.CLICK, this, () => {
    			this.UIAnim_AlphaScale(this.view['indetail_panel/bg'], this.view['indetail_panel'], false);
    			if (Platforms.getInstance().isVivo())
    				Platforms.getInstance().hideBanner();
    		});
    		this.view['bigMap/close_bt'].on(Laya.Event.CLICK, this, () => { this.smallMap_ctrl.SwitchSmallMap(); });
    		this.view["left_top/banner_hint"].on(Laya.Event.CLICK, this, () => {
    			this.UIAnim_AlphaScale(this.view['indetail_panel/bg'], this.view['indetail_panel'], true);
    			this.view['indetail_panel/bg/msg'].text = MainMissionData[GameSystemData.GetInstance().currentMissionID].msg;
    		});
    		this.view['right_buttom/addSpeed_bt'].on(Laya.Event.CLICK, this, this.OnAddSpeedClick);
    		this.view['right_buttom/squat_bt'].on(Laya.Event.CLICK, this, this.OnSquatClick);
    		this.atk_bt.on(Laya.Event.CLICK, this, this.OnAtkClick);
    		this.openPlatform_bt.on(Laya.Event.CLICK, this, () => { this.sceneManager.player.Player_Pickup(); });
    		this.inCar_bt.on(Laya.Event.CLICK, this, () => { this.sceneManager.player.Player_Pickup(); });
    		this.dialog_bt.on(Laya.Event.CLICK, this, () => { DialogManager.GetInstance().NpcDialogS(); });
    		this.ex_video.on(Laya.Event.CLICK, this, this.GetExClick);
    		this.view["right_top/coinGroup"].on(Laya.Event.CLICK, this, () => { RewardsManager.GetInstance().Rewards_CoinSubsidy(() => { }); });
    		this.libao.play(0, true);
    		this.sceneManager.Add3DPlatformSigboard();
    		this.eat_bt.visible = false;
    		this.change_bt.visible = false;
    	}
    	GetExClick() {
    		Platforms.getInstance().showVideo("", () => {
    			InsManager.GetInstance()._DataUpdateManager.UpdateExpValue(MonsterData[InsManager.GetInstance()._SceneManager.player.monsterType].ex);
    			EventManager._Instance.Dispatch_Event(PathData.EVENT_UpdateExProgress, null);
    			InsManager.GetInstance()._UIManager.ShowGameToast('吞噬经验 +' + MonsterData[InsManager.GetInstance()._SceneManager.player.monsterType].ex, ToastType.Game);
    		});
    	}
    	SetExProgress() {
    		for (var i = 0; i < this.ex_progress.numChildren; i++) {
    			if (MonsterData[InsManager.GetInstance()._SceneManager.player.monsterType].UpLevel > i) {
    				this.ex_progress.getChildAt(i).getChildAt(0).mask.height = -1;
    				this.ex_progress.getChildAt(i).visible = true;
    			}
    			else {
    				this.ex_progress.getChildAt(i).visible = false;
    			}
    		}
    		this.change_bt.visible = false;
    	}
    	UpdateExProgress() {
    		var currentLevelEx = MonsterData[InsManager.GetInstance()._SceneManager.player.monsterType].ex;
    		var addEx = PlayerData.GetInstance().exp - currentLevelEx;
    		var playerLV = InsManager.GetInstance()._SceneManager.player.GetPlayerLv();
    		console.log(playerLV + "================" + InsManager.GetInstance()._SceneManager.player.GetPlayerLv());
    		if (playerLV != GameSystemData.GetInstance().playerLV && InsManager.GetInstance()._SceneManager.player.GetPlayerStar() <= MonsterData[InsManager.GetInstance()._SceneManager.player.monsterType].UpLevel) {
    			this.lvNum.text = playerLV.toString();
    			GameSystemData.GetInstance().playerLV = playerLV;
    			InsManager.GetInstance()._SceneManager.CreateEffect(PathData.prop_prefabs_path, InsManager.GetInstance()._SceneManager.player.playerPos.transform.position);
    			InsManager.GetInstance()._UIManager.ShowUI("UpgradePanel").getComponent(UpgradePanel_Ctrl).UpdateView(playerLV);
    		}
    		for (var i = 0; i < MonsterData[InsManager.GetInstance()._SceneManager.player.monsterType].UpLevel; i++) {
    			if (i <= (addEx / currentLevelEx) - 1) {
    				this.ex_progress.getChildAt(i).getChildAt(0).mask.height = 32;
    				if (i == MonsterData[InsManager.GetInstance()._SceneManager.player.monsterType].UpLevel - 1 && InsManager.GetInstance()._SceneManager.player.monsterType != MonsterType.B_QiongQi) {
    					this.change_bt.visible = true;
    					this.eat_bt.visible = false;
    				}
    			}
    			else {
    				this.ex_progress.getChildAt(i).getChildAt(0).mask.height = 32 * ((addEx - (currentLevelEx * i)) / currentLevelEx);
    			}
    		}
    	}
    	LoadAllShowNode(root) {
    		for (var i = 0; i < root.numChildren; i++) {
    			let iChild = root.getChildAt(i);
    			for (let j = 0; j < iChild.numChildren; j++) {
    				let jChild = iChild.getChildAt(j);
    				if (jChild.visible) {
    					let child = iChild.getChildAt(j);
    					this.ShowNodeArr[child.name] = child;
    				}
    			}
    		}
    	}
    	InitView() {
    		this.npc_hp_progress.visible = false;
    		this.UdatePlayerHpProgress();
    		this.UpdateCoinCount();
    		this.InitHintButtonHint();
    		this.UpdateLifePropertyLabel();
    		this.ShowLifeHint();
    		this.view["right_top/debug_bt"].visible = InsManager.GetInstance()._DataSave.isDebug;
    		this.joystick.SetStatic();
    		if (Platforms.getInstance().isOppo() || Platforms.getInstance().isVivo() || Platforms.getInstance().isHuaWei()) {
    			Platforms.getInstance().getDestTop((res) => {
    				this.addDesktop.visible = !res;
    			});
    		}
    		else {
    			this.addDesktop.visible = false;
    		}
    		if (InsManager.GetInstance()._DataSave.isOpenAd) {
    		}
    		else {
    		}
    		if (Platforms.getInstance().isToutiao())
    			this.recording_bt.visible = true;
    		else
    			this.recording_bt.visible = false;
    		if (Platforms.getInstance().isToutiao())
    			this.view['right_buttom/moreGame_bt'].visible = true;
    		else
    			this.view['right_buttom/moreGame_bt'].visible = false;
    	}
    	OnEnterNewMap() {
    		if (this.sceneManager.currentMapIndex == 0) {
    		}
    		else {
    			this.view["left_center/bulid_bt"].visible = false;
    		}
    	}
    	OnAtkClick() {
    		InsManager.GetInstance()._SceneManager.player.Player_Atk();
    	}
    	OnAddSpeedClick() {
    		if (this.isAddSpeed)
    			this.isAddSpeed = false;
    		else if (InsManager.GetInstance()._SceneManager.player.currentState == PlayerState.Walk)
    			this.isAddSpeed = true;
    		this.sceneManager.player.AddMoveSpeed(this.isAddSpeed);
    		this.runEffect.visible = this.isAddSpeed;
    	}
    	AddSpeedMpLoop() {
    		if (this.isAddSpeed && InsManager.GetInstance()._SceneManager.player.currentState == PlayerState.Run) {
    			this.OnAddSpeedClick();
    		}
    		else {
    		}
    		if (this.uiManager.knapsackPanel != null)
    			this.uiManager.knapsackPanel.UpdatePlayerHpProgress();
    	}
    	OnKnapsackeClick() {
    		InsManager.GetInstance()._UIManager.ShowKnapsackPanel(KpOpenType.EquipmentList, InsManager.GetInstance()._knapsackManager.FindKnapsackData(PathData.Knapsack_EquipmentColumn, PropData.GetInstance().knapsackData).id, PropData.GetInstance().knapsackData);
    	}
    	OnUpgradeClick() {
    		this.sceneManager.player.Upgrade();
    	}
    	OnSquatClick() {
    		this.sceneManager.player.Squat();
    	}
    	ShowBannerHint(text) {
    		if (GameSystemData.GetInstance().currentMissionID >= MainMissionData.length) {
    			this.view['left_top/banner_hint'].visible = false;
    			return;
    		}
    		this.view['left_top/banner_hint/label'].text = text;
    		this.view['left_top/banner_hint'].visible = true;
    		this.view['left_top/banner_hint/icon'].skin = PathData.icon_path + InsManager.GetInstance()._knapsackManager.GetPropData(MainMissionData[GameSystemData.GetInstance().currentMissionID].makeProp[0]).skin;
    	}
    	UpdateMissionBannerHint(missionID) {
    		if (InsManager.GetInstance()._SceneManager.gamePanel == null)
    			return;
    		if (GameSystemData.GetInstance().currentMissionID >= MainMissionData.length) {
    			this.view['left_top/banner_hint'].visible = false;
    			return;
    		}
    		let ownCount = InsManager.GetInstance()._knapsackManager.OwnPropCount(MainMissionData[GameSystemData.GetInstance().currentMissionID].makeProp[0], MainMissionData[GameSystemData.GetInstance().currentMissionID].mission_Type);
    		InsManager.GetInstance()._SceneManager.gamePanel.ShowBannerHint(MainMissionData[missionID].tkd);
    	}
    	ShowDynamicBannerHit(text, iconSkin) {
    		this.view['left_top/banner_hint/label'].text = text;
    		this.view['left_top/banner_hint'].width = (this.view['left_top/banner_hint/label'].fontSize * text.length) + 150;
    		this.view['left_top/banner_hint/label'].pos(this.view['left_top/banner_hint'].width / 2, this.view['left_top/banner_hint'].height / 2);
    		this.view['left_top/banner_hint'].visible = true;
    		if (iconSkin != null && iconSkin != undefined)
    			this.view['left_top/banner_hint/icon'].skin = PathData.icon_path + iconSkin;
    		else
    			this.view['top/banner_hint/icon'].skin = iconSkin;
    		InsManager.GetInstance()._UIManager.ScaleSizeUIAnimtion(this.view['left_top/banner_hint'], 500, 1.13, this);
    	}
    	CancelDynamicBanner() {
    		InsManager.GetInstance()._UIManager.ClearScaleSizeUIAnimtion(this.view['left_top/banner_hint'], this);
    		if (GameSystemData.GetInstance().currentMissionID >= MainMissionData.length) {
    			this.view['left_top/banner_hint'].visible = false;
    		}
    		else {
    			this.ShowBannerHint('');
    		}
    		console.log('取消动态banne');
    	}
    	HideBannerHint() {
    		this.view['left_top/banner_hint'].visible = false;
    	}
    	SwitchWeapon() {
    		InsManager.GetInstance()._SceneManager.player.playerWeaponSwitch();
    	}
    	UdatePlayerHpProgress() {
    		super.SetPanelHpProgress(this.progressImg);
    		this.view['left_top/hpGroup/bg_progress/label'].text = PlayerData.GetInstance().hp + '/' + PlayerData.GetInstance().maxHp;
    		if (PlayerData.GetInstance().hp <= 20) {
    			InsManager.GetInstance()._UIManager.UIAnim_AlphaFlicker(this.view['left_top/hpGroup/bg_progress'].getChildByName('red_img_3'), this, 1000);
    			this.view['left_top/hpGroup/bg_progress'].getChildByName('red_img_3').visible = true;
    		}
    		else {
    			InsManager.GetInstance()._UIManager.UIAnim_AlphaFlicker_Clear(this.view['left_top/hpGroup/bg_progress'].getChildByName('red_img_3'), this);
    			this.view['left_top/hpGroup/bg_progress'].getChildByName('red_img_3').visible = false;
    		}
    	}
    	UpdateExp(eventName, value) {
    	}
    	UpdateCoinCount() {
    		super.UpdateCoin(this.coin);
    	}
    	UpdatePickBotton(eventName, dataArr) {
    		if (dataArr.length < 2)
    			return;
    		if (dataArr[0]) {
    			this.view["right_buttom/atk_bt/use"].visible = true;
    			this.atk_bt.getChildByName("img").skin = dataArr[1];
    		}
    		else {
    			this.view["right_buttom/atk_bt/use"].visible = false;
    		}
    	}
    	SetGameMissionHintText(textStr) {
    	}
    	UpdateHintPoint(eventName, arg) {
    		switch (arg[0]) {
    			default: break;
    		}
    	}
    	InitHintButtonHint() {
    		return;
    		this.UpdateHintPoint('', ['mission_bt', InsManager.GetInstance()._MissionManager.IsMissionAwardStay()]);
    		this.UpdateHintPoint('', ['shop_bt', InsManager.GetInstance()._knapsackManager.IsKnapsackOwnProp(InsManager.GetInstance()._knapsackManager.Knapsack_Mail)]);
    		this.UpdateHintPoint('', ['mail_bt', true]);
    		this.UpdateHintPoint('', ['achievement_bt', InsManager.GetInstance()._BranchManager.isTakeBranchAward()]);
    		if (InsManager.GetInstance()._knapsackManager.IsExistNewHintProp())
    			this.UpdateHintPoint('', ['knapsack_bt', true]);
    	}
    	OnJoystickAreaDown(event) {
    		let point = Laya.Point.create();
    		point.x = Laya.stage.mouseX;
    		point.y = Laya.stage.mouseY;
    		this.view["left_buttom"].globalToLocal(point, false);
    		this.view["left_buttom/Joystick"].pos(point.x, point.y);
    		this.joystick.on_drag_start(event);
    	}
    	ShowHpHitImg(isLoop) {
    		if (this.isLoopHpHitImg)
    			return;
    		this.hpHitFunc = function () {
    			Laya.Tween.to(this.hpHit_img, { alpha: 100 / 255 }, 600, Laya.Ease.linearIn, Laya.Handler.create(this, function () {
    				Laya.Tween.to(this.hpHit_img, { alpha: 0 }, 600, Laya.Ease.linearIn);
    			}));
    		};
    		if (isLoop) {
    			this.isLoopHpHitImg = true;
    			Laya.timer.loop(600 + 600, this, this.hpHitFunc);
    		}
    		else {
    			this.hpHitFunc();
    		}
    	}
    	StopHpHit() {
    		if (this.hpHitFunc != null && this.isLoopHpHitImg) {
    			Laya.timer.clear(this, this.hpHitFunc);
    			this.hpHitFunc = null;
    			this.isLoopHpHitImg = false;
    		}
    	}
    	UpdateLifePropertyLabel() {
    	}
    	ShowLifeHint() {
    	}
    	CreateExpText(str, parent, disArr, timeArr) {
    		let colorStr = "";
    		colorStr = "#01f3fd";
    		let label = new Laya.Label();
    		label.text = str;
    		label.fontSize = 28;
    		label.color = colorStr;
    		label.align = "center";
    		label.valign = "middle";
    		label.font = "SimHei";
    		label.alpha = 0;
    		label.anchorX = 0.5;
    		label.anchorY = 0.5;
    		parent.addChild(label);
    		label.pos(0, disArr[0]);
    		Laya.Tween.to(label, { y: -disArr[1], alpha: 1 }, timeArr[0], Laya.Ease.linearIn, Laya.Handler.create(this, function () {
    			Laya.Tween.to(label, { y: -disArr[2] }, timeArr[1], Laya.Ease.linearIn, Laya.Handler.create(this, function () {
    				Laya.Tween.to(label, { y: -disArr[3], alpha: 0 }, timeArr[2], Laya.Ease.linearIn, Laya.Handler.create(this, function () {
    					label.destroy();
    				}));
    			}));
    		}));
    	}
    	CreateUITrace(targetSprite3D, traceType, skin = "gantanhao.png") {
    		let prefab = ResManager._Instance.Get_Prefab_Res("res/UI_Prefabs/TraceUI.json");
    		if (prefab === null) {
    			console.log("error: 预制体加载为 null：");
    			return;
    		}
    		let img = prefab.create();
    		this.owner.addChild(img);
    		img.name = 'traceUI';
    		let sue = img.addComponent(ScreenUITrace);
    		sue.Init(targetSprite3D, this.sceneManager.player.playerCamera, traceType);
    		InsManager.GetInstance()._UIManager.traceArr.push(img);
    		InsManager.GetInstance()._SceneManager.gamePanel.smallMap_ctrl.AddSprite3DLimitMap(targetSprite3D, skin);
    		return img;
    	}
    	UpdateUpgrandMonsterMsg(monsterType) {
    		SoundsManager.PlaySounds(PathData.sound_light);
    		let start = () => {
    			InsManager.GetInstance()._SceneManager.player.playerPos.transform.localScale = new Laya.Vector3(InsManager.GetInstance()._SceneManager.player.playerPos.transform.localScale.x - (1 / 100), InsManager.GetInstance()._SceneManager.player.playerPos.transform.localScale.y - (1 / 100), InsManager.GetInstance()._SceneManager.player.playerPos.transform.localScale.z - (1 / 100));
    			if (InsManager.GetInstance()._SceneManager.player.playerPos.transform.localScale.x < 0.2)
    				Laya.timer.clear(this, start);
    		};
    		let end = () => {
    			InsManager.GetInstance()._SceneManager.player.playerPos.transform.localScale = new Laya.Vector3(InsManager.GetInstance()._SceneManager.player.playerPos.transform.localScale.x + (1 / 100), InsManager.GetInstance()._SceneManager.player.playerPos.transform.localScale.y + (1 / 100), InsManager.GetInstance()._SceneManager.player.playerPos.transform.localScale.z + (1 / 100));
    			if (InsManager.GetInstance()._SceneManager.player.playerPos.transform.localScale.x >= 1)
    				Laya.timer.clear(this, end);
    		};
    		Laya.timer.once(2800, this, () => {
    			SoundsManager.PlaySounds(PathData.sound_lightOver);
    			Laya.timer.loop(Laya.timer.delta, this, start);
    		});
    		Laya.timer.once(4000, this, () => {
    			this.monsterMsgBg.visible = true;
    			this.monsterMsgBg.getChildByName("name").text = MonsterData[monsterType].name;
    			this.monsterMsgBg.getChildByName("msg").text = MonsterData[monsterType].msg;
    			var lv = this.monsterMsgBg.getChildByName("lvs");
    			for (var i = 0; i < lv.numChildren; i++) {
    				if (i < MonsterData[monsterType].UpLevel) {
    					lv.getChildAt(i).visible = true;
    				}
    				else {
    					lv.getChildAt(i).visible = false;
    				}
    				Laya.timer.clear(this, start);
    				Laya.timer.loop(Laya.timer.delta, this, end);
    			}
    			InsManager.GetInstance()._SceneManager.CreateRole(RoleType.Player, InsManager.GetInstance()._SceneManager.player.playerPos.transform.position, 0, false);
    			Laya.timer.once(3000, this, () => {
    				InsManager.GetInstance()._SceneManager.lightEffect.active = false;
    				this.monsterMsgBg.visible = false;
    				InsManager.GetInstance()._SceneManager.player.isUpgrade = false;
    				InsManager.GetInstance()._UIManager.allKeep.visible = false;
    				InsManager.GetInstance()._SceneManager.cameraCtrl.isRotate = false;
    				InsManager.GetInstance()._SceneManager.player.playerPos.transform.localScale.x = 1;
    				InsManager.GetInstance()._SceneManager.player.playerPos.transform.localScale.y = 1;
    				InsManager.GetInstance()._SceneManager.player.playerPos.transform.localScale.z = 1;
    				Laya.timer.clear(this, end);
    			});
    		});
    	}
    	HideGameUIAll() {
    		for (var i = 0; i < this.owner.numChildren; i++) {
    			let iChild = this.owner.getChildAt(i);
    			for (let j = 0; j < iChild.numChildren; j++) {
    				let jChild = iChild.getChildAt(j);
    				if (jChild.visible) {
    					this.GameUIActiveUIArr.push(jChild);
    					iChild.getChildAt(j).visible = false;
    				}
    			}
    		}
    	}
    	ShowGameUIAll() {
    		if (this.GameUIActiveUIArr.length == 0)
    			return;
    		for (let i = 0; i < this.GameUIActiveUIArr.length; i++) {
    			this.GameUIActiveUIArr[i].visible = true;
    		}
    	}
    	UINodeHideCtrlAll(isShow) {
    		for (var i = 0; i < this.owner.numChildren; i++) {
    			let iChild = this.owner.getChildAt(i);
    			for (let j = 0; j < iChild.numChildren; j++) {
    				let jChild = iChild.getChildAt(j);
    				if (jChild.visible) {
    					iChild.getChildAt(j).visible = false;
    				}
    			}
    		}
    	}
    	UINodeShowCtrl(uiNodeName, isShow) {
    		if (isShow) {
    			this.ShowNodeArr[uiNodeName].visible = true;
    		}
    		else {
    			this.ShowNodeArr[uiNodeName].visible = false;
    		}
    	}
    	GuideImageAllCtrl(isShow) {
    		for (let i = 0; i < this.guideImgArr.length; i++) {
    			this.guideImgArr[i].visible = isShow;
    		}
    	}
    	UIButtonFilcker(buttonName) {
    		if (this.uf_map[buttonName] != null && this.uf_map[buttonName] != undefined) {
    			console.log("请先取消之前的UIButtonFilcker");
    			return;
    		}
    		let nodeButton = this.ShowNodeArr[buttonName];
    		if (nodeButton == null) {
    			console.error("error: not get button node");
    			return;
    		}
    		let use_img = nodeButton.getChildByName("use");
    		InsManager.GetInstance()._UIManager.UIAnim_Flicker(use_img, 400);
    		this.uf_map[buttonName] = buttonName;
    	}
    	StopUIButtonFlicker(buttonName) {
    		if (this.uf_map[buttonName] != null && this.uf_map[buttonName] != undefined) {
    			let nodeButton = this.ShowNodeArr[buttonName];
    			if (nodeButton == null) {
    				console.error("error: not get button node");
    				return;
    			}
    			let use_img = nodeButton.getChildByName("use");
    			InsManager.GetInstance()._UIManager.StopUIAnim_Flickter(use_img);
    			this.uf_map[buttonName] = null;
    		}
    		else {
    			console.log("还未开启闪烁");
    			return;
    		}
    	}
    	UpdateAtkButtonSkin(eventName, img_paht) {
    		this.atk_bt.getChildByName("img").skin = img_paht;
    	}
    	ShowNpcHp(npc_hp, npcType, sprite3D) {
    		this.npc_hp_progress.visible = true;
    		this.npc_hp_progress_value.scaleX = npc_hp / MonsterData[npcType].hpValue;
    		this.npc_hp_progress_name.text = MonsterData[npcType].name;
    		this.npcSprite3D = sprite3D;
    		Laya.Tween.to(this.npc_hp_progress_slowValue, { scaleX: npc_hp / MonsterData[npcType].hpValue }, 800);
    	}
    	HideNpcHp(sprite3D) {
    		if (sprite3D == this.npcSprite3D)
    			this.npc_hp_progress.visible = false;
    	}
    	ShowPick_Progress(prop3D) {
    		this.pick_progress.visible = true;
    		console.log("=== 显示条形框====" + prop3D.getConsume, prop3D.maxGetConsume);
    		let progress = (this.pick_progress.width * (prop3D.getConsume / prop3D.maxGetConsume));
    		this.pick_progress_value.width = progress;
    		this.view['center/pick_progress/current'].text = (prop3D.getConsume * 100) + '';
    		this.view['center/pick_progress/max'].text = (prop3D.maxGetConsume * 100) + '';
    	}
    	Pick_ProgressLoop() {
    		if (this.pick_progress != null && this.pick_progress.visible && this.sceneManager.player.currentGetProp != null) {
    			this.sceneManager.player.playerCamera.worldToViewportPoint(this.sceneManager.player.currentGetProp.node3D.transform.position, this.pick_progress_v4);
    			this.view["center/pick_progress"].pos(this.pick_progress_v4.x, this.pick_progress_v4.y);
    		}
    	}
    	ShowGamePanelHintBox(msg) {
    		return;
    		this.hintBoxAnim.play(0, false);
    		this.hintBox_label.text = msg;
    	}
    	OnRecordingButtonClick() {
    		if (!Platforms.getInstance().isTakeRecordVideo && this.recordingTime < 10 && !Platforms.getInstance().isHasRecord) {
    			InsManager.GetInstance()._UIManager.ShowGameToast('录屏时间不足，再多录一会吧！', ToastType.Game);
    			return;
    		}
    		if (!Platforms.getInstance().isTakeRecordVideo && this.recordingTime >= 10) {
    			Platforms.getInstance().stopRecordScreen();
    			console.log('录屏时间足够 手动停止');
    			return;
    		}
    		if (Platforms.getInstance().isHasRecord) {
    			InsManager.GetInstance()._UIManager.ShowUI(PathData.TTSharePanel);
    		}
    		else {
    			Platforms.getInstance().startRecordScreen();
    		}
    	}
    	UpdateRecordingState(eventNname, isRecording) {
    		if (isRecording) {
    			this.recordingTime = 0;
    			this.view['left_top/recording_bt/time_label'].text = (this.recordingTime + 's');
    			this.recording_bt.getChildByName('time_label').visible = true;
    			this.recording_bt.skin = PathData.game_path + 'lupingz.png';
    			Laya.timer.loop(1000, this, this.RecordingTimeLabelUpdateLoop);
    			console.log('录屏倒数计时字体开始');
    		}
    		else {
    			this.recordingTime = 0;
    			this.view['left_top/recording_bt/time_label'].text = (this.recordingTime + 's');
    			this.view['left_top/recording_bt/time_label'].visible = false;
    			this.recording_bt.skin = PathData.game_path + 'lup.png';
    			console.log('录屏倒数计时字体隐藏');
    			Laya.timer.clear(this, this.RecordingTimeLabelUpdateLoop);
    		}
    	}
    	RecordingTimeLabelUpdateLoop() {
    		this.recordingTime++;
    		this.view['left_top/recording_bt/time_label'].text = (this.recordingTime + 's');
    	}
    	onMouseDown(event) {
    		if (!this.isGamePanelMove) {
    			this.isClick_Gp = false;
    			return;
    		}
    		if (this.isClick_Gp) {
    			this.isClick_Gp = false;
    		}
    		this.touchId = event.touchId;
    		this.isClick_Gp = true;
    		this.axisX = Laya.MouseManager.instance.mouseX;
    		this.axisY = Laya.MouseManager.instance.mouseY;
    		event.stopPropagation();
    	}
    	onMouseUp(event) {
    		if (!this.isClick_Gp || event.touchId != this.touchId)
    			return;
    		this.isClick_Gp = false;
    		event.stopPropagation();
    		this.isOnSlider = false;
    	}
    	onMouseMove(event) {
    		if (!this.isClick_Gp || event.touchId != this.touchId)
    			return;
    		let vPoint = this.GetAxis();
    		let vx = vPoint.x;
    		let vy = vPoint.y;
    		this.isOnSlider = true;
    		this.sceneManager.player.viewMove(vx, vy, 12);
    	}
    	GetAxis() {
    		this.axisPoint.x = (Laya.MouseManager.instance.mouseX - this.axisX);
    		this.axisPoint.y = (Laya.MouseManager.instance.mouseY - this.axisY);
    		this.axisX = Laya.MouseManager.instance.mouseX;
    		this.axisY = Laya.MouseManager.instance.mouseY;
    		return this.axisPoint;
    	}
    	onKeyDown(e) {
    		switch (e.keyCode) {
    			case 90:
    				this.OnAtkClick();
    				break;
    			case 16:
    				this.OnAddSpeedClick();
    				break;
    			case 67:
    				break;
    			case 86:
    				break;
    		}
    	}
    	onDisable() {
    		console.log('游戏界面移除');
    	}
    	onDestroy() {
    		this.joystick_area.off(Laya.Event.MOUSE_DOWN, this, this.OnJoystickAreaDown);
    		EventManager._Instance.Remove_Listener(PathData.EVENT_UPDATEATKIMGSKIN, this, this.UpdateAtkButtonSkin);
    		EventManager._Instance.Remove_Listener(PathData.EVENT_SETPLAYERHP, this, this.UdatePlayerHpProgress);
    		EventManager._Instance.Remove_Listener(PathData.EVENT_UPDATEPICKBUTTON, this, this.UpdatePickBotton);
    		EventManager._Instance.Remove_Listener(PathData.EVENT_UPDATECOIN, this, this.UpdateCoinCount);
    		EventManager._Instance.Remove_Listener(PathData.EVENT_UPDATELIFEPROPERTYLABEL, this, this.ShowLifeHint);
    		EventManager._Instance.Remove_Listener(PathData.EVENT_UPDATEEXP, this, this.UpdateExp);
    		EventManager._Instance.Remove_Listener(PathData.EVENT_UPDATELIFEPROPERTYLABEL, this, this.UpdateLifePropertyLabel);
    	}
    }

    class Point {
    	constructor(x, y, px, py, parent = null) {
    		this.Parent = null;
    		this.F = 0;
    		this.G = 0;
    		this.H = 0;
    		this.X = 0;
    		this.Y = 0;
    		this.posX = 0;
    		this.posY = 0;
    		this.isWall = false;
    		this.X = x;
    		this.Y = y;
    		this.posX = px;
    		this.posY = py;
    		this.Parent = parent;
    		this.isWall = false;
    	}
    	UpdateParent(parent, g) {
    		this.Parent = parent;
    		this.G = g;
    		this.F = this.G + this.H;
    	}
    }

    class AStar {
    	constructor() {
    		this.mapWidth = MapData.map_0.length;
    		this.mapHeight = MapData.map_0.length;
    		this.map = [];
    		this.offset = -((this.mapWidth / 2) - 0.5);
    		this.runPath = [];
    		this.PathcubeList = [];
    		this.obstacleList = [];
    		this.isfinish = false;
    		this.isShowPath = false;
    		this.isIgnoreObstacle = true;
    		this.end_point = null;
    		this.count = 0;
    		this.drawCount = 0;
    		this.boxObj = ResManager._Instance.Get_Sprite3D_Res(DataSave.GetServerPath() + PathData.cube_prefabs_path);
    	}
    	;
    	InitMap() {
    		return;
    		this.map = [];
    		let cubeCount = 0;
    		for (let i = 0; i < InsManager.GetInstance()._DataSave.currentMapData.length; i++) {
    			for (let j = 0; j < InsManager.GetInstance()._DataSave.currentMapData.length; j++) {
    				cubeCount++;
    			}
    		}
    		for (let x = 0; x < this.mapWidth; x++) {
    			this.map.push([]);
    			for (let y = 0; y < this.mapHeight; y++) {
    				this.map[x].push(new Point(x, y, (y + this.offset), (x + this.offset)));
    			}
    		}
    		for (let x = 0; x < this.mapWidth; x++) {
    			for (let y = 0; y < this.mapHeight; y++) {
    				if (InsManager.GetInstance()._DataSave.currentMapData[x][y] == 1) {
    					this.map[x][(this.mapHeight - 1) - y].isWall = true;
    				}
    			}
    		}
    		for (let x = 0; x < this.map.length; x++) {
    			let str = "";
    			for (let y = 0; y < this.map[x].length; y++) {
    				str += "" + this.map[x][y].Y + ",";
    			}
    		}
    	}
    	StartAstarPathfinding(sp, ep) {
    		return;
    		this.InitMap();
    		this.CloseCube("path");
    		this.isfinish = false;
    		this.startSprite3D = sp;
    		this.endSprite3D = ep;
    		this.runPath = [];
    		let sx = Math.round(Math.abs(this.startSprite3D.transform.position.z - this.offset));
    		let sy = Math.round(Math.abs(this.startSprite3D.transform.position.x - this.offset));
    		let ex = Math.round(Math.abs(this.endSprite3D.transform.position.z - this.offset));
    		let ey = Math.round(Math.abs(this.endSprite3D.transform.position.x - this.offset));
    		if (this.endSprite3D.transform.position.x > this.mapHeight / 2 || this.endSprite3D.transform.position.x < -(this.mapHeight / 2) || this.endSprite3D.transform.position.z > this.mapHeight / 2 || this.endSprite3D.transform.position.z < -(this.mapHeight / 2)) {
    			console.log("AStar:目标点超出地图可识别范围:" + ex + "  " + ey);
    			return false;
    		}
    		let start = this.map[sx][sy];
    		let end = this.map[ex][ey];
    		this.end_point = end;
    		this.FindPath(start, end);
    		let isOK = this.ShowPath(start, this.end_point);
    		return isOK;
    	}
    	FindPath(startPoint, endPoint) {
    		return;
    		let openList = [];
    		let closeList = [];
    		openList.push(startPoint);
    		while (openList.length > 0) {
    			this.count++;
    			let point = this.FindMinOfFPoint(openList);
    			for (let i = 0; i < openList.length; i++) {
    				if (openList[i] == point) {
    					openList.splice(i, 1);
    				}
    			}
    			closeList.push(point);
    			let surroundPoints = this.GetSurroundPoints(point)[0];
    			this.PointsFilter(surroundPoints, closeList);
    			for (let i = 0; i < surroundPoints.length; i++) {
    				let isOpenlistEx = false;
    				for (let s = 0; s < openList.length; s++) {
    					if (openList[s] == surroundPoints[i]) {
    						isOpenlistEx = true;
    					}
    				}
    				if (isOpenlistEx) {
    					let nowG = this.CalcG(surroundPoints[i], point);
    					if (nowG < surroundPoints[i].G) {
    						surroundPoints[i].UpdateParent(point, nowG);
    						let isFindEndPoint = this.GetSurroundPoints(surroundPoints[i])[1];
    						if (isFindEndPoint) {
    							this.end_point = surroundPoints[i];
    						}
    					}
    				}
    				else {
    					surroundPoints[i].Parent = point;
    					let isFindEndPoint = this.GetSurroundPoints(surroundPoints[i])[1];
    					if (isFindEndPoint) {
    						this.end_point = surroundPoints[i];
    					}
    					this.CalcF(surroundPoints[i], endPoint);
    					openList.push(surroundPoints[i]);
    				}
    			}
    			if (openList.indexOf(this.end_point) > -1) {
    				break;
    			}
    			if (this.count > 1000 && this.endSprite3D != InsManager.GetInstance()._SceneManager.player.owner) {
    				this.count = 0;
    			}
    		}
    	}
    	ShowPath(startPoint, endPoint) {
    		return;
    		let temp = endPoint;
    		let colorV4 = Laya.Vector4.ONE;
    		while (true) {
    			this.drawCount++;
    			if (this.isShowPath) {
    				if (temp == startPoint) {
    					colorV4 = new Laya.Vector4(0, 1, 0, 1);
    				}
    				else if (temp == endPoint) {
    					colorV4 = new Laya.Vector4(226 / 255, 14 / 255, 14 / 255, 1);
    				}
    				else {
    					colorV4 = Laya.Vector4.ONE;
    				}
    				let go = null;
    				go = this.CreateCube(temp.posX, temp.posY, InsManager.GetInstance()._SceneManager.way, colorV4);
    				go.name = "path";
    				this.PathcubeList.push(go);
    			}
    			let v3 = new Laya.Vector3(temp.posX, this.startSprite3D.transform.position.y, temp.posY);
    			this.runPath.push(v3);
    			if (temp.Parent == null || temp.Parent == undefined) {
    				break;
    			}
    			temp = temp.Parent;
    			if (this.drawCount > 1000) {
    				this.drawCount = 0;
    			}
    		}
    		colorV4 = new Laya.Vector4(0, 0, 0, 1);
    		if (this.isShowPath && this.obstacleList.length <= 0) {
    			for (let x = 0; x < this.mapWidth; x++) {
    				for (let y = 0; y < this.mapHeight; y++) {
    					if (this.map[x][y].isWall) {
    						let go = this.CreateCube(this.map[x][y].posX, this.map[x][y].posY, InsManager.GetInstance()._SceneManager.way, colorV4);
    						go.name = "wall";
    						this.obstacleList.push(go);
    					}
    					if (this.map[x][y] == endPoint) {
    						this.CreateCube(-this.map[x][y].posX, this.map[x][y].posY, InsManager.GetInstance()._SceneManager.way, colorV4);
    					}
    				}
    			}
    		}
    		if (this.runPath.length > 1) {
    			this.isfinish = true;
    		}
    		else {
    			this.isfinish = false;
    		}
    		return this.isfinish;
    	}
    	CreateCube(x, y, parent, color) {
    		let box = Laya.Sprite3D.instantiate(this.boxObj);
    		box.transform.setWorldLossyScale(new Laya.Vector3(0.5, 0.5, 0.5));
    		let boxUnlitMaterial = box.meshRenderer.material;
    		boxUnlitMaterial.albedoColor = color;
    		if (parent == null)
    			console.log("父类为null");
    		parent.addChild(box);
    		box.transform.position = new Laya.Vector3(x, 0.5, y);
    		return box;
    	}
    	PointsFilter(src, closeList) {
    		for (let i = 0; i < closeList.length; i++) {
    			for (let j = 0; j < src.length; j++) {
    				if (src[j] == closeList[i]) {
    					src.splice(j, 1);
    				}
    			}
    		}
    	}
    	GetSurroundPoints(point) {
    		let allArr = [];
    		let up = null;
    		let down = null;
    		let left = null;
    		let right = null;
    		let lu = null;
    		let ru = null;
    		let ld = null;
    		let rd = null;
    		if (point.Y < this.mapHeight - 1) {
    			up = this.map[point.X][point.Y + 1];
    		}
    		if (point.Y > 0) {
    			down = this.map[point.X][point.Y - 1];
    		}
    		if (point.X > 0) {
    			left = this.map[point.X - 1][point.Y];
    		}
    		if (point.X < this.mapWidth - 1) {
    			right = this.map[point.X + 1][point.Y];
    		}
    		if (up != null && left != null) {
    			lu = this.map[point.X - 1][point.Y + 1];
    		}
    		if (up != null && right != null) {
    			ru = this.map[point.X + 1][point.Y + 1];
    		}
    		if (down != null && left != null) {
    			ld = this.map[point.X - 1][point.Y - 1];
    		}
    		if (down != null && right != null) {
    			rd = this.map[point.X + 1][point.Y - 1];
    		}
    		let arr = [];
    		if (down != null && down.isWall == false) {
    			arr.push(down);
    		}
    		if (up != null && up.isWall == false) {
    			arr.push(up);
    		}
    		if (left != null && left.isWall == false) {
    			arr.push(left);
    		}
    		if (right != null && right.isWall == false) {
    			arr.push(right);
    		}
    		if (lu != null && lu.isWall == false && left.isWall == false && up.isWall == false) {
    			arr.push(lu);
    		}
    		if (ld != null && ld.isWall == false && left.isWall == false && down.isWall == false) {
    			arr.push(ld);
    		}
    		if (ru != null && ru.isWall == false && right.isWall == false && up.isWall == false) {
    			arr.push(ru);
    		}
    		if (rd != null && rd.isWall == false && right.isWall == false && down.isWall == false) {
    			arr.push(rd);
    		}
    		if (down != null) {
    			allArr.push(down);
    		}
    		if (up != null) {
    			allArr.push(up);
    		}
    		if (left != null) {
    			allArr.push(left);
    		}
    		if (right != null) {
    			allArr.push(right);
    		}
    		if (lu != null) {
    			allArr.push(lu);
    		}
    		if (ld != null) {
    			allArr.push(ld);
    		}
    		if (ru != null) {
    			allArr.push(ru);
    		}
    		if (rd != null) {
    			allArr.push(rd);
    		}
    		let isFindEndPoint = false;
    		for (let i = 0; i < allArr.length; i++) {
    			if (allArr[i] == this.end_point && allArr[i].isWall) {
    				isFindEndPoint = true;
    				console.log("找到目标点， 但他在障碍物中：", allArr[i]);
    			}
    		}
    		return [arr, isFindEndPoint];
    	}
    	GetIsCanArrive(enPoint) {
    		let up = null;
    		let down = null;
    		let left = null;
    		let right = null;
    		let lu = null;
    		let ru = null;
    		let ld = null;
    		let rd = null;
    		if (enPoint.Y < this.mapHeight - 1) {
    			up = this.map[enPoint.X][enPoint.Y + 1];
    		}
    		if (enPoint.Y > 0) {
    			down = this.map[enPoint.X][enPoint.Y - 1];
    		}
    		if (enPoint.X > 0) {
    			left = this.map[enPoint.X - 1][enPoint.Y];
    		}
    		if (enPoint.X < this.mapWidth - 1) {
    			right = this.map[enPoint.X + 1][enPoint.Y];
    		}
    		if (up != null && left != null) {
    			lu = this.map[enPoint.X - 1][enPoint.Y + 1];
    		}
    		if (up != null && right != null) {
    			ru = this.map[enPoint.X + 1][enPoint.Y + 1];
    		}
    		if (down != null && left != null) {
    			ld = this.map[enPoint.X - 1][enPoint.Y - 1];
    		}
    		if (down != null && right != null) {
    			rd = this.map[enPoint.X + 1][enPoint.Y - 1];
    		}
    		let arr = [];
    		if (down != null && down.isWall == false) {
    			arr.push(down);
    		}
    		if (up != null && up.isWall == false) {
    			arr.push(up);
    		}
    		if (left != null && left.isWall == false) {
    			arr.push(left);
    		}
    		if (right != null && right.isWall == false) {
    			arr.push(right);
    		}
    		if (lu != null && lu.isWall == false && left.isWall == false && up.isWall == false) {
    			arr.push(lu);
    		}
    		if (ld != null && ld.isWall == false && left.isWall == false && down.isWall == false) {
    			arr.push(ld);
    		}
    		if (ru != null && ru.isWall == false && right.isWall == false && up.isWall == false) {
    			arr.push(ru);
    		}
    		if (rd != null && rd.isWall == false && right.isWall == false && down.isWall == false) {
    			arr.push(rd);
    		}
    		console.log('arr 的长度' + arr.length);
    		return arr.length > 1;
    	}
    	CalcG(now, parent) {
    		return Laya.Vector3.distance(new Laya.Vector3(now.X, 0, now.Y), new Laya.Vector3(parent.X, 0, parent.Y)) + parent.G;
    	}
    	CalcF(now, end) {
    		let h = Math.abs(end.X - now.X) + Math.abs(end.Y - now.Y);
    		let g = 0;
    		if (now.Parent == null) {
    			g = 0;
    		}
    		g = Laya.Vector3.distance(new Laya.Vector3(now.X, 0, now.Y), new Laya.Vector3(now.Parent.X, 0, now.Parent.Y)) + now.Parent.G;
    		let f = g + h;
    		now.H = h;
    		now.G = g;
    		now.F = f;
    	}
    	FindMinOfFPoint(openList) {
    		let f = Number.MAX_VALUE;
    		let temp = null;
    		for (let i = 0; i < openList.length; i++) {
    			if (openList[i].F < f) {
    				f = openList[i].F;
    				temp = openList[i];
    			}
    		}
    		return temp;
    	}
    	CloseCube(name) {
    		if (this.isShowPath) {
    			if (name == "path") {
    				for (let i = 0; i < this.PathcubeList.length; i++) {
    					if (this.PathcubeList[i].name == name) {
    						this.PathcubeList[i].destroy();
    					}
    				}
    				this.PathcubeList = [];
    			}
    			if (name == "wall") {
    				for (let i = 0; i < this.obstacleList.length; i++) {
    					if (this.obstacleList[i].name == name) {
    						this.obstacleList[i].destroy();
    					}
    				}
    				this.obstacleList = [];
    			}
    		}
    	}
    }

    class AnimatorState extends Laya.AnimatorStateScript {
    	constructor() {
    		super();
    		this.isAtkTake = true;
    		this.isAtkAnim = false;
    		this.npcCtrl = null;
    		this.playerCtrl = null;
    	}
    	SetPlayerValue(playerCtrl, isAtkState) {
    		this.playerCtrl = playerCtrl;
    		this.isAtkAnim = isAtkState;
    	}
    	SetNpcValue(enemyBase) {
    		if (this.npcCtrl == null)
    			this.npcCtrl = enemyBase;
    	}
    	onStateEnter() {
    		this.PlayerAnimEnter();
    		this.NpcAnimEnter();
    	}
    	onStateUpdate() {
    		this.PlayerAnimUpdate();
    		this.NpcAnimUpdate();
    	}
    	onStateExit() {
    		this.PlayerAnimExit();
    		this.NpcAnimExit();
    	}
    	PlayerAnimEnter() {
    		if (this.playerCtrl == null)
    			return;
    		if (this.isAtkAnim) {
    		}
    	}
    	NpcAnimEnter() {
    		if (this.npcCtrl == null)
    			return;
    	}
    	PlayerAnimUpdate() {
    	}
    	NpcAnimUpdate() {
    		if (this.npcCtrl == null)
    			return;
    		if (this.npcCtrl.currentState == NpcState.Atk && this.npcCtrl.npc_Anim.getControllerLayer().getCurrentPlayState().normalizedTime >= (MonsterData[this.npcCtrl.monsterType].atkTakeTime) && this.isAtkTake) {
    			this.isAtkTake = false;
    		}
    	}
    	PlayerAnimExit() {
    		if (this.playerCtrl == null)
    			return;
    		this.playerCtrl.isWaitAnimFinish = false;
    		if (this.playerCtrl.currentState == PlayerState.Hit) {
    			if (this.playerCtrl.isSquat)
    				this.playerCtrl.PlayerStateSwitch(PlayerState.Down_Idle);
    			else
    				this.playerCtrl.PlayerStateSwitch(PlayerState.Idle);
    		}
    	}
    	NpcAnimExit() {
    		if (this.npcCtrl == null)
    			return;
    		this.npcCtrl.StateAnimPlayEnd();
    		this.isAtkTake = true;
    		console.log('动画播放结束');
    	}
    }

    class KnapsackSaveContainer3D {
    	constructor(name, position, sceneName) {
    		this.name = "";
    		this.position = new Laya.Vector3(0, 0, 0);
    		this.sceneNname = "";
    		this.name = name;
    		this.position = position;
    		this.sceneNname = sceneName;
    	}
    }

    class MonsterAnimObs extends Laya.Script3D {
    	constructor() { super(); }
    	onAwake() {
    		this.enemyBase = this.owner.parent.getComponent(EnemyBase);
    	}
    	Atk() {
    		if (Laya.Vector3.distance(this.enemyBase.npc_Sprite3D.transform.position, this.enemyBase.player.transform.position) < this.enemyBase.atkScope)
    			this.enemyBase.SetPlayerHP();
    	}
    }

    class NavMeshAgent extends Laya.Script3D {
    	constructor() {
    		super();
    		if (Laya.Browser.onWeiXin) {
    		}
    		else {
    			this.patrol = Laya.Browser.window.patrol;
    		}
    		this.count = 0;
    		this.calculatedPath = [];
    		this.lastTargetPos = new Laya.Vector3();
    	}
    	Init(scene, moveSpeed = 1, rayDistance = 1, isShowPath = false) {
    		this.scene3D = scene;
    		this.isShowPath = isShowPath;
    		this.pathBoxArr = [];
    		this.moveSpeed = moveSpeed;
    		this.ray = new Laya.Ray(new Laya.Vector3(), new Laya.Vector3(0, 0, 0));
    		this.hitResult = new Laya.HitResult();
    		this.rayDistance = rayDistance;
    		this.direction = new Laya.Vector3();
    	}
    	onUpdate() {
    		this.owner.transform.getForward(this.direction);
    	}
    	Stop() {
    		this.calculatedPath = [];
    		Laya.Tween.clearAll(this.owner.transform);
    	}
    	GetRandomPos() {
    		var v = this.patrol.getRandomNode('level', 0, this.owner.transform.position, 20);
    		return v;
    	}
    	SetDestination(targetPos) {
    		if (!this.IsEqual(this.lastTargetPos, targetPos)) {
    			this.calculatedPath = this.patrol.findPath(this.owner.transform.position, new Laya.Vector3(targetPos.x, targetPos.y, targetPos.z), 'level', 0);
    			if (this.calculatedPath && this.calculatedPath.length > 0) {
    				if (this.isShowPath) {
    					var debugPath = (this.calculatedPath);
    					var p = [];
    					for (var i = 0; i < debugPath.length; i++) {
    						p.push(new Laya.Vector3(debugPath[i].x, debugPath[i].y, debugPath[i].z));
    					}
    					p = [this.owner.transform.localPosition].concat(p);
    					for (var i = 0; i < this.pathBoxArr.length; i++) {
    						this.scene3D.removeChild(this.pathBoxArr[i]);
    						this.pathBoxArr[i].destroy();
    					}
    					for (var i = 0; i < p.length; i++) {
    						var temp = new Laya.MeshSprite3D(Laya.PrimitiveMesh.createBox(0.5, 0.5, 0.5));
    						temp.transform.position = new Laya.Vector3(p[i].x, 0.5, p[i].z);
    						this.scene3D.addChild(temp);
    						this.pathBoxArr.push(temp);
    					}
    				}
    				this.count = 0;
    				this.move();
    			}
    			else {
    				this.calculatedPath = [];
    			}
    			this.lastTargetPos = targetPos.clone();
    		}
    	}
    	IsEqual(vec1, vec2) {
    		if (vec1.x.toFixed(2) == vec2.x.toFixed(2) &&
    			vec1.y.toFixed(2) == vec2.y.toFixed(2) &&
    			vec1.z.toFixed(2) == vec2.z.toFixed(2))
    			return true;
    		return false;
    	}
    	move() {
    		if (this.calculatedPath && this.count < this.calculatedPath.length) {
    			this.owner.transform.lookAt(this.calculatedPath[this.count], new Laya.Vector3(0, 1, 0), false);
    			Laya.Tween.to(this.owner.transform, {
    				localPositionX: this.calculatedPath[this.count].x,
    				localPositionY: this.calculatedPath[this.count].y,
    				localPositionZ: this.calculatedPath[this.count].z
    			}, this.getDistance(this.calculatedPath[this.count]) / 0.002 / this.moveSpeed, Laya.Ease.linearNone, new Laya.Handler(this, function () {
    				this.count++;
    				this.move();
    			}), 0, true);
    		}
    	}
    	getDistance(target) {
    		return Laya.Vector3.distance(this.owner.transform.localPosition, target);
    	}
    }

    class EnemyBase extends Laya.Script3D {
    	constructor() {
    		super();
    		this.monsterType = 0;
    		this.propID = null;
    		this.currentState = null;
    		this.initState = null;
    		this.name = "未知生物";
    		this.hpValue = 0;
    		this.atkValue = 0;
    		this.walkSpeed = 1;
    		this.defense = 0;
    		this.runSpeed = 2;
    		this.atkScope = 0;
    		this.alertScope = 5;
    		this.ex = 0;
    		this.dieKnapsackData = null;
    		this.init_AlertScope = 0;
    		this.mapIcon = "";
    		this.rStateNum = 1;
    		this.walkV3 = null;
    		this.runV3 = null;
    		this.startPos = null;
    		this.map_icon = null;
    		this.firePoint = null;
    		this.fireEffect = null;
    		this.player = null;
    		this.player_Ctrl = null;
    		this.npc_Sprite3D = null;
    		this.bxCollider = null;
    		this.skinnedMeshSprite3D = null;
    		this.npc_Anim = null;
    		this.blood = null;
    		this.dieTrigger = null;
    		this.lookAtPoint = null;
    		this.aStar = null;
    		this.wayEnd = null;
    		this.recordEndPos = null;
    		this.isMakeAtk = true;
    		this.isPatrol = true;
    		this.isMove = false;
    		this.isCalcPursueTarget = true;
    		this.isAtkCD = false;
    		this.isReturnStartPoint = false;
    		this.isRoar = true;
    		this.isHitFound = false;
    		this.isPursue = false;
    		this.isAtkPlayer = false;
    		this.isAcceptAtk = true;
    		this.roleType = null;
    		this.runSoundChannel = null;
    		this.stateRelationMap = [];
    		this.path_index = -1;
    		this.forward = new Laya.Vector3(0, 0, 1);
    		this.lerpOffset = new Laya.Vector3(0, 0, 0);
    		this.endDir = new Laya.Vector3(0, 0, 0);
    	}
    	;
    	onAwake() {
    	}
    	InitMonsterData() {
    		this.monsterType = this.GetNpcType();
    		if (this.monsterType == null)
    			console.error('monsterType 为 null');
    		this.player_Ctrl = InsManager.GetInstance()._SceneManager.player;
    		this.player = this.player_Ctrl.owner;
    		this.npc_Anim = this.owner.getChildByName("anim").getComponent(Laya.Animator);
    		this.npc_Anim.owner.addComponent(MonsterAnimObs);
    		this.skinnedMeshSprite3D = this.owner.getChildByName("anim").getChildByName("skinMesh");
    		this.blood = this.owner.getChildByName("Blood");
    		this.bxCollider = this.owner.getChildByName('boxCollider');
    		this.npc_Sprite3D = this.owner;
    		this.npc_Sprite3D.transform.localScale = new Laya.Vector3(MonsterData[this.monsterType].scale, MonsterData[this.monsterType].scale, MonsterData[this.monsterType].scale);
    		this.dieTrigger = this.npc_Sprite3D.getChildByName("dieTrigger");
    		this.lookAtPoint = this.npc_Sprite3D.getChildByName('lookAtPoint');
    		this.startPos = this.npc_Sprite3D.transform.position.clone();
    		this.aStar = new AStar();
    		this.npc_Sprite3D.name = MonsterData[this.monsterType].englishName;
    		this.name = MonsterData[this.monsterType].name;
    		this.hpValue = MonsterData[this.monsterType].hpValue;
    		this.defense = MonsterData[this.monsterType].defense;
    		this.atkValue = MonsterData[this.monsterType].atkValue;
    		this.atkScope = MonsterData[this.monsterType].atkScope;
    		this.walkSpeed = MonsterData[this.monsterType].walkSpeed;
    		this.runSpeed = MonsterData[this.monsterType].runSpeed;
    		this.alertScope = MonsterData[this.monsterType].alertScope;
    		this.ex = MonsterData[this.monsterType].ex;
    		this.alertScope = 5;
    		this.mapIcon = MonsterData[this.monsterType].mapIcon;
    		this.propID = MonsterData[this.monsterType].propID;
    		this.walkV3 = new Laya.Vector3(0, 0, -(this.walkSpeed * (Laya.timer.delta / 1000)));
    		this.runV3 = new Laya.Vector3(0, 0, -(this.runSpeed * (Laya.timer.delta / 1000)));
    		this.init_AlertScope = this.alertScope;
    		if (MonsterData[this.monsterType].texture != "") {
    			this.ChangeModelTexture(this.skinnedMeshSprite3D, MonsterData[this.monsterType].texture);
    		}
    		if (MonsterData[this.monsterType].atkValue > 0)
    			((this.npc_Anim.getControllerLayer().getAnimatorState("Atk_1")).addScript(AnimatorState)).SetNpcValue(this);
    		if (this.npc_Anim.getControllerLayer().getAnimatorState("Hit"))
    			((this.npc_Anim.getControllerLayer().getAnimatorState("Hit")).addScript(AnimatorState)).SetNpcValue(this);
    		EventManager._Instance.Add_Listener(PathData.EVENT_UPDATEENEMY_AUDITORYALERT, this, this.AuditoryAlert);
    		if (this.wayEnd == null) {
    			this.wayEnd = new Laya.Sprite3D(this.name + "_wayEnd", false);
    			this.recordEndPos = this.npc_Sprite3D.transform.position.clone();
    		}
    		if (this.isAtkPlayer)
    			this.map_icon = InsManager.GetInstance()._SceneManager.gamePanel.smallMap_ctrl.AddNpcMapIcon(this.npc_Sprite3D, this.mapIcon);
    		this.rStateNum = 2 * Math.random();
    		this.rStateNum = 0.1;
    		if (this.rStateNum < 1) {
    			if (this.currentState == null) {
    				this.initState = NpcState.Idle;
    				this.currentState = this.initState;
    				this.AnimSwitch(this.currentState);
    			}
    		}
    		else {
    			if (this.currentState == null) {
    				this.initState = NpcState.Patrol;
    				this.currentState = this.initState;
    				this.AnimSwitch(this.currentState);
    			}
    		}
    		if (this.navMeshAgent == null) {
    			this.navMeshAgent = this.owner.addComponent(NavMeshAgent);
    			this.navMeshAgent.Init(InsManager.GetInstance()._SceneManager.baseScene, this.walkSpeed);
    		}
    		this.NpcStateSwitch(NpcState.Patrol);
    		(this.npc_Sprite3D.getComponent(Laya.PhysicsCollider)).enabled = false;
    		InsManager.GetInstance()._SceneManager.npcArr.push(this.npc_Sprite3D);
    	}
    	loop() {
    	}
    	onStart() {
    	}
    	NpcStateSwitch(state) {
    		if (this.currentState != state && this.currentState != NpcState.Die) {
    			let isSwitch = false;
    			for (let i = 0; i < this.stateRelationMap[this.currentState].length; i++) {
    				if ((this.stateRelationMap[this.currentState][i] == state && this.isMakeAtk) || state == NpcState.Die)
    					isSwitch = true;
    			}
    			if (isSwitch) {
    				this.currentState = state;
    				this.AnimSwitch(this.currentState);
    				if (MonsterData[this.monsterType].sound_run != '') {
    					if (this.currentState == NpcState.Run || this.currentState == NpcState.Pursue) {
    						if (this.runSoundChannel == null && MonsterData[this.monsterType].sound_run != '')
    							this.runSoundChannel = SoundsManager.PlaySounds(MonsterData[this.monsterType].sound_run, 1, true);
    						else
    							this.runSoundChannel.play();
    					}
    					else {
    						if (this.runSoundChannel != null)
    							this.runSoundChannel.pause();
    					}
    				}
    			}
    			else {
    				if (!this.isMakeAtk) {
    				}
    				else {
    				}
    			}
    		}
    	}
    	AnimSwitch(state) {
    		let clipName = "";
    		let cross = 0;
    		switch (state) {
    			case NpcState.Idle:
    				if (this.navMeshAgent)
    					this.navMeshAgent.Stop();
    				clipName = "Idle";
    				cross = 0.05;
    				this.isMove = false;
    				if (Laya.Vector3.distance(this.npc_Sprite3D.transform.position, this.player.transform.position) > this.alertScope)
    					this.HideNpcHpInGamePanel();
    				break;
    			case NpcState.Walk:
    			case NpcState.Patrol:
    				this.isMove = true;
    				clipName = "Walk";
    				cross = 0.05;
    				if (state == NpcState.Patrol) {
    					this.Patrol();
    				}
    				this.HideNpcHpInGamePanel();
    				break;
    			case NpcState.Run:
    			case NpcState.RunAway:
    				this.isMove = true;
    				clipName = "Run";
    				if (this.npc_Anim.getControllerLayer().getAnimatorState(clipName).speed != 1)
    					this.npc_Anim.getControllerLayer().getAnimatorState(clipName).speed = 1;
    				if (state == NpcState.RunAway && this.rStateNum < 1) {
    					this.Patrol();
    				}
    				this.SetHpShowInGamePanel();
    				cross = 0.05;
    				break;
    			case NpcState.Pursue:
    				this.isMove = true;
    				clipName = "Run";
    				if (this.npc_Anim.getControllerLayer().getAnimatorState(clipName).speed != 1)
    					this.npc_Anim.getControllerLayer().getAnimatorState(clipName).speed = 1;
    				cross = 0.05;
    				this.PlayNpcSound(MonsterData[this.monsterType].sound_blare);
    				this.SetHpShowInGamePanel();
    				break;
    			case NpcState.Jump:
    				this.isMove = true;
    				clipName = "Jump";
    				cross = 0.05;
    				break;
    			case NpcState.Atk:
    				clipName = "Atk_1";
    				console.log("攻击");
    				this.navMeshAgent.Stop();
    				this.PlayNpcSound(MonsterData[this.monsterType].sound_atk);
    				cross = 0.05;
    				if (Laya.Vector3.distance(this.npc_Sprite3D.transform.position, this.player.transform.position) < this.alertScope)
    					this.SetHpShowInGamePanel();
    				break;
    			case NpcState.Hit:
    				this.navMeshAgent.Stop();
    				clipName = "Hit";
    				cross = 0.05;
    				this.isMakeAtk = false;
    				this.PlayNpcSound(PathData.sound_playerHit_2);
    				console.log('播放受击');
    				break;
    			case NpcState.Die:
    				this.isMove = false;
    				clipName = "Die";
    				cross = 0.05;
    				this.PlayNpcSound(MonsterData[this.monsterType].sound_die);
    				break;
    			case NpcState.Roar:
    				this.isMove = false;
    				clipName = "Roar";
    				cross = 0.05;
    				break;
    			default:
    				break;
    		}
    		this.npc_Anim.crossFade(clipName, cross, 0, 0);
    	}
    	Atk() {
    		if (!this.isAtkPlayer)
    			return;
    		if (!this.isMakeAtk)
    			return;
    		if (this.currentState == NpcState.Die)
    			return;
    		if (this.isAtkCD || PlayerData.GetInstance().hp <= 0 || this.player_Ctrl.isNpcAtk == false || !this.isMakeAtk) {
    			if (this.player_Ctrl.isNpcAtk == false)
    				this.isMakeAtk = true;
    			this.NpcStateSwitch(NpcState.Idle);
    		}
    		else {
    			this.npc_Sprite3D.transform.position.y = this.player.transform.position.y;
    			this.npc_Sprite3D.transform.lookAt(this.player.transform.position, new Laya.Vector3(0, 1, 0), false);
    			this.NpcStateSwitch(NpcState.Atk);
    			this.isAtkCD = true;
    			this.isMakeAtk = false;
    			this.isMove = false;
    			Laya.timer.once((MonsterData[this.monsterType].atkCD * 1000), this, () => { this.isAtkCD = false; }, [], false);
    		}
    	}
    	Patrol() {
    		if (this.isReturnStartPoint) {
    			this.isReturnStartPoint = false;
    			this.wayEnd.transform.position = this.startPos;
    			this.navMeshAgent.SetDestination(this.wayEnd.transform.position);
    			return;
    		}
    		if (!this.isPatrol)
    			return;
    		this.isPatrol = false;
    		this.wayEnd.transform.position = this.navMeshAgent.GetRandomPos();
    		this.navMeshAgent.SetDestination(this.wayEnd.transform.position);
    		return;
    	}
    	Pursue() {
    		if (!this.isAtkPlayer)
    			return;
    		if (!this.isMakeAtk)
    			return;
    		this.isPursue = true;
    		if (Laya.Vector3.distance(this.npc_Sprite3D.transform.position, this.player.transform.position) > this.atkScope) {
    			if (Laya.Vector3.distance(this.player.transform.position, this.wayEnd.transform.position) > 0 && this.isCalcPursueTarget) {
    				this.isCalcPursueTarget = false;
    				Laya.timer.once(500, this, () => { this.isCalcPursueTarget = true; });
    				this.wayEnd.transform.position = this.player.transform.position.clone();
    				this.navMeshAgent.SetDestination(this.wayEnd.transform.position);
    				if (!this.isReturnStartPoint)
    					this.isReturnStartPoint = true;
    				this.NpcStateSwitch(NpcState.Pursue);
    			}
    			else {
    			}
    		}
    		else {
    			if (!InsManager.GetInstance()._SceneManager.player.isNpcAtk)
    				this.NpcStateSwitch(NpcState.Idle);
    			else
    				this.Atk();
    		}
    	}
    	Die() {
    		if (this.currentState == NpcState.Die) {
    			console.error('已经死过了，还要再死一次吗？');
    			return;
    		}
    		this.navMeshAgent.Stop();
    		(this.npc_Sprite3D.getComponent(Laya.PhysicsCollider)).enabled = true;
    		this.HideNpcHpInGamePanel();
    		this.NpcStateSwitch(NpcState.Die);
    		Laya.timer.once(1000, this, () => {
    			if (this.bxCollider != null)
    				this.bxCollider.active = false;
    		});
    		this.dieKnapsackData = InsManager.GetInstance()._knapsackManager.CreateRandomPropKnapsack(KnapsackType.Box, this.npc_Sprite3D.name, InsManager.GetInstance()._DataSave.knapsackRamdonDataArr, new KnapsackSaveContainer3D(this.npc_Sprite3D.name, this.npc_Sprite3D.transform.position, InsManager.GetInstance()._SceneManager.gameScene.name));
    		Laya.timer.once(1500, this, () => {
    			if (this.dieTrigger != null) {
    				this.dieTrigger.active = true;
    				if (InsManager.GetInstance()._SceneManager.player.currentGetProp == this.owner.getComponent(Prop3D))
    					InsManager.GetInstance()._SceneManager.gamePanel.openPlatform_bt.visible = true;
    			}
    		});
    		this.RemoveNpc();
    		Laya.timer.once(1000, this, this.HideNpcHpInGamePanel);
    		InsManager.GetInstance()._UIManager.ClearUITrace(this.npc_Sprite3D);
    		if (this.map_icon != null) {
    			this.map_icon.destroy();
    		}
    		InsManager.GetInstance()._BranchManager.SaveAchievementTask(BranchTaskType.HuntTask, 1);
    		InsManager.GetInstance()._knapsackManager.SavePlayerPropData(this.propID, 1, MissionType.HuntTask);
    		Laya.timer.once(3000, this, () => {
    			let skinMeshSprite = this.owner.getChildByName('anim').getChildByName('meshRenderer');
    			if (this.player_Ctrl.currentGetProp != null && this.player_Ctrl.currentGetProp.node3D == this.npc_Sprite3D) {
    				this.player_Ctrl.currentGetProp = null;
    				InsManager.GetInstance()._SceneManager.gamePanel.openPlatform_bt.visible = false;
    				CommandBuffer_Outline.GetInstance().RemoveCommandBuffer_Outline();
    			}
    		});
    		Laya.timer.once(100000, this, () => {
    			InsManager.GetInstance()._SceneManager.CreateRole(this.roleType, this.npc_Sprite3D.transform.position, 0, false);
    			this.npc_Sprite3D.destroy();
    		});
    	}
    	SetHP(value) {
    		if (!this.isAcceptAtk) {
    			console.log('npc 拒绝接受攻击');
    			return;
    		}
    		this.hpValue += value;
    		if (this.hpValue < 0)
    			this.hpValue = 0;
    		if (value <= 0) {
    			value = (value) - CalculateExtend.RandomNumber(1, 5);
    			if (value >= 0)
    				value = -1;
    			InsManager.GetInstance()._UIManager.CreateTextFormSprite3DPos(Math.abs(value).toString(), InsManager.GetInstance()._SceneManager.gamePanel.owner, this.npc_Sprite3D, [40, 80, 120, 150], [200, 300, 200], true);
    			this.blood.active = false;
    			this.blood.active = true;
    			if (this.hpValue <= 0)
    				this.Die();
    			else {
    				if (this.isMakeAtk) {
    					this.NpcStateSwitch(NpcState.Hit);
    				}
    				this.BeginAtkPlayer();
    			}
    		}
    		this.SetHpShowInGamePanel();
    		if (this.blood != null) {
    			this.blood.active = false;
    			this.blood.active = true;
    		}
    		if (Platforms.getInstance().isToutiao())
    			Platforms.getInstance().startRecordScreen();
    	}
    	BeginAtkPlayer() {
    		this.isHitFound = true;
    		this.isAtkPlayer = true;
    	}
    	StayAtkPlayer() {
    		this.isAtkPlayer = false;
    	}
    	AlertAtkPlayer() {
    		this.atkScope = MonsterData[this.monsterType].atkScope;
    		this.isAtkPlayer = true;
    	}
    	SetPlayerHP() {
    		this.player_Ctrl.SetHp(-this.atkValue, true, true, true);
    	}
    	AutoMove() {
    		if (!this.player_Ctrl.isNpcAtk)
    			return;
    		if (this.currentState == NpcState.Patrol && this.navMeshAgent.getDistance(this.wayEnd.transform.position) < 0.5) {
    			this.isPatrol = true;
    			this.Patrol();
    		}
    		return;
    		if (this.navMeshAgent.getDistance(this.player.transform.position) < this.atkScope || this.currentState == NpcState.Pursue) {
    			this.navMeshAgent.SetDestination(this.player.transform.position);
    		}
    		else {
    			this.navMeshAgent.Stop();
    		}
    		return;
    		if (this.aStar.isfinish && this.isMove && this.isMakeAtk) {
    			if (this.path_index < 0) {
    				this.path_index = this.aStar.runPath.length - 2;
    				this.endDir = new Laya.Vector3(this.aStar.runPath[this.path_index].x, 0, this.aStar.runPath[this.path_index].z);
    			}
    			if (Laya.Vector3.distance(this.npc_Sprite3D.transform.position, this.aStar.runPath[this.path_index]) <= 0.3 && this.path_index > 0) {
    				this.path_index--;
    				this.endDir = new Laya.Vector3(this.aStar.runPath[this.path_index].x, 0, this.aStar.runPath[this.path_index].z);
    			}
    			if (Laya.Vector3.distance(this.npc_Sprite3D.transform.position, this.aStar.runPath[0]) > 0.5 && this.isMove && this.player_Ctrl.isNpcAtk) {
    				this.SetLookAt(12);
    				if (this.currentState == NpcState.Patrol || this.currentState == NpcState.Walk) {
    					this.npc_Sprite3D.transform.translate(new Laya.Vector3(0, 0, -(this.walkSpeed * (Laya.timer.delta / 1000))), true);
    				}
    				else if (this.currentState == NpcState.Run || this.currentState == NpcState.RunAway || this.currentState == NpcState.Pursue) {
    					this.npc_Sprite3D.transform.translate(new Laya.Vector3(0, 0, -(this.runSpeed * (Laya.timer.delta / 1000))), true);
    				}
    			}
    			else {
    				this.isPatrol = true;
    				if (this.currentState == NpcState.Pursue) {
    					this.Atk();
    					return;
    				}
    				if (this.rStateNum < 1)
    					this.NpcStateSwitch(NpcState.Idle);
    				else
    					this.Patrol();
    			}
    		}
    		else {
    		}
    	}
    	SetLookAt(rotateOffset) {
    		if (Laya.Vector3.distance(this.forward, this.endDir) > 0) {
    			this.npc_Sprite3D.transform.getForward(this.forward);
    			Laya.Vector3.add(this.npc_Sprite3D.transform.position, this.forward, this.forward);
    			Laya.Vector3.lerp(this.forward, this.endDir, rotateOffset * (Laya.timer.delta / 1000), this.lerpOffset);
    			this.npc_Sprite3D.transform.lookAt(this.lerpOffset, new Laya.Vector3(0, 1, 0), false);
    		}
    	}
    	UpdateEndPoint() {
    		if (this.recordEndPos != null) {
    			let isOk = this.aStar.StartAstarPathfinding(this.npc_Sprite3D, this.wayEnd);
    			this.recordEndPos = this.wayEnd.transform.position.clone();
    			this.path_index = -1;
    			this.isMove = true;
    			return isOk;
    		}
    		else {
    			console.log("位置 没有初始值 ");
    			return false;
    		}
    	}
    	RemoveNpc() {
    		for (let i = 0; i < InsManager.GetInstance()._SceneManager.npcArr.length; i++) {
    			if (this.npc_Sprite3D == InsManager.GetInstance()._SceneManager.npcArr[i]) {
    				InsManager.GetInstance()._SceneManager.npcArr.splice(i, 1);
    				for (let j = 0; j < Get3DPropData.length; j++) {
    					if (Get3DPropData[j].englishName == this.npc_Sprite3D.name) {
    						let prop3D = this.npc_Sprite3D.addComponent(Prop3D);
    						InsManager.GetInstance()._SceneManager.AllGetPropAssetArr.push(prop3D);
    					}
    				}
    				break;
    			}
    		}
    	}
    	SquatdownAlert() {
    		if (this.player_Ctrl.isSquat) {
    			if (Laya.Vector3.distance(this.player.transform.position, this.npc_Sprite3D.transform.position) < 0.4)
    				return true;
    			return this.IsInFront();
    		}
    		else {
    			if ((this.player_Ctrl.currentState != PlayerState.Idle && this.player_Ctrl.currentState != PlayerState.atk) || (this.IsInFront())) {
    				return true;
    			}
    			else {
    				if (this.isHitFound || this.isPursue)
    					return true;
    				else
    					return false;
    			}
    		}
    	}
    	IsInFront() {
    		let playerDir = new Laya.Vector3(0, 0, 0);
    		Laya.Vector3.subtract(this.player.transform.position, this.npc_Sprite3D.transform.position, playerDir);
    		let alng = this.GetAngle(playerDir, this.npc_Sprite3D);
    		if (alng < 180 / 2)
    			return true;
    		else
    			return false;
    	}
    	AuditoryAlert() {
    	}
    	GetAngle(vec, sprite3D) {
    		let v = new Laya.Vector3();
    		let nv = new Laya.Vector3();
    		sprite3D.transform.getForward(v);
    		Laya.Vector3.normalize(v, nv);
    		let nDot = (vec.x * v.x + vec.z * v.z);
    		let nn = Math.sqrt(vec.x * vec.x + vec.z * vec.z);
    		let mm = Math.sqrt(v.x * v.x + v.z * v.z);
    		let cosab = nDot / (nn * mm);
    		if (cosab < -1)
    			cosab = -1;
    		if (cosab > 1)
    			cosab = 1;
    		let radius = Math.acos(cosab);
    		let angle = radius * 180 / Math.PI;
    		return angle;
    	}
    	PlayNpcSound(soundPath) {
    		if (soundPath == "" || soundPath == null || soundPath == undefined)
    			return null;
    		return SoundsManager.PlaySounds(soundPath, 0.5);
    	}
    	SetHpShowInGamePanel() {
    		if (InsManager.GetInstance()._SceneManager.gamePanel == null)
    			return;
    		InsManager.GetInstance()._SceneManager.gamePanel.ShowNpcHp(this.hpValue, this.monsterType, this.npc_Sprite3D);
    	}
    	HideNpcHpInGamePanel() {
    		if (InsManager.GetInstance()._SceneManager.gamePanel == null)
    			return;
    		InsManager.GetInstance()._SceneManager.gamePanel.HideNpcHp(this.npc_Sprite3D);
    	}
    	StateAnimPlayEnd() {
    		switch (this.currentState) {
    			case NpcState.Atk:
    			case NpcState.Hit:
    				this.isMakeAtk = true;
    				this.NpcStateSwitch(NpcState.Idle);
    				break;
    			case NpcState.Roar:
    				this.isRoar = false;
    				break;
    			default:
    				this.NpcStateSwitch(NpcState.Idle);
    				console.log('返回idle');
    				;
    				break;
    		}
    	}
    	UpdateMapIcon() {
    		if (this.currentState != NpcState.Idle && this.currentState != NpcState.Die) {
    			if (this.map_icon != null && this.map_icon != undefined && this.map_icon.rotation != null)
    				InsManager.GetInstance()._SceneManager.gamePanel.smallMap_ctrl.UpdateNpcMapIcon(this.npc_Sprite3D, this.map_icon);
    		}
    	}
    	ChangeModelTexture(skinnedMeshSprite3D, texturePath) {
    		if (!Platforms.getInstance().isVivo())
    			texturePath = DataSave.GetLoadPath() + texturePath;
    		else
    			texturePath = DataSave.GetServerPath() + texturePath;
    		let blinnPhongMaterial = skinnedMeshSprite3D.skinnedMeshRenderer.material;
    		blinnPhongMaterial.albedoTexture = ResManager._Instance.Get_Texture2D_Res(texturePath);
    		;
    	}
    	GetNpcType() {
    		for (let i = 0; i < MonsterData.length; i++) {
    			if (MonsterData[i].englishName == this.owner.name)
    				return MonsterData[i].monsterType;
    		}
    		return null;
    	}
    	FireBullet() {
    	}
    	onDisable() {
    	}
    }

    class Deer_Ctrl extends EnemyBase {
    	constructor() { super(); }
    	;
    	onAwake() {
    		this.stateRelationMap = [
    			[NpcState.Walk, NpcState.Run, NpcState.Patrol, NpcState.RunAway, NpcState.Hit, NpcState.Die],
    			[NpcState.Idle, NpcState.Run, NpcState.Patrol, NpcState.RunAway, NpcState.Hit, NpcState.Die],
    			[NpcState.Idle, NpcState.Walk, NpcState.Patrol, NpcState.RunAway, NpcState.Hit, NpcState.Die],
    			[NpcState.Idle, NpcState.Walk, NpcState.Run, NpcState.RunAway, NpcState.Hit, NpcState.Die],
    			[NpcState.Idle, NpcState.Walk, NpcState.Run, NpcState.Patrol, NpcState.Hit, NpcState.Die],
    			[],
    			[],
    			[NpcState.Idle, NpcState.Walk, NpcState.Run, NpcState.Patrol, NpcState.Hit, NpcState.Die],
    			[NpcState.Idle, NpcState.Walk, NpcState.Run, NpcState.Patrol, NpcState.RunAway, NpcState.Die],
    			[],
    			[],
    		];
    	}
    	onStart() {
    	}
    	Observe() {
    		if ((Laya.Vector3.distance(this.npc_Sprite3D.transform.position, this.player.transform.position) < this.alertScope && this.SquatdownAlert()) ||
    			(Laya.Vector3.distance(this.npc_Sprite3D.transform.position, this.player.transform.position) < this.alertScope) && this.player_Ctrl.currentState != PlayerState.Die) {
    			this.alertScope = this.init_AlertScope + 4;
    			this.NpcStateSwitch(NpcState.RunAway);
    		}
    		else if (this.currentState != this.initState && Laya.Vector3.distance(this.npc_Sprite3D.transform.position, this.player.transform.position) > this.alertScope) {
    			this.isPursue = false;
    			this.alertScope = this.init_AlertScope;
    			this.NpcStateSwitch(this.initState);
    		}
    	}
    	onUpdate() {
    		if (this.currentState == NpcState.Die)
    			return;
    		this.Observe();
    		this.AutoMove();
    		this.UpdateMapIcon();
    	}
    }

    class PropBase {
    	constructor() {
    		this.propID = null;
    		this.name = "";
    		this.skin = "";
    		this.message = "";
    		this.propType = null;
    		this.maxCount = 1;
    		this.getText = "";
    		this.getType = null;
    		this.sPrice = 0;
    		this.isNew = false;
    	}
    	;
    	GetPropData(propID, propDataArr) {
    		let index = -1;
    		for (let i = 0; i < propDataArr.length; i++) {
    			if (propDataArr[i].propID == propID) {
    				index = i;
    				break;
    			}
    		}
    		if (index == -1)
    			console.error("传入的表数据：", propDataArr, "中没有ID：", propID);
    		return index;
    	}
    }

    class Weapon extends PropBase {
    	constructor(propID) {
    		super();
    		this.atkValue = 1;
    		this.atkDis = 1;
    		this.atkCD = 1;
    		this.hpValue = 100;
    		this.equipmentType = null;
    		this.weaponType = null;
    		this.propType = null;
    		this.expend = 5;
    		let index = this.GetPropData(propID, WeaponData);
    		this.equipmentType = EquipmentType.Weapon;
    		this.propType = WeaponData[index].propType;
    		this.name = WeaponData[index].name;
    		this.weaponType = WeaponData[index].WeaponType;
    		this.propID = WeaponData[index].propID;
    		this.propType = WeaponData[index].propType;
    		this.atkCD = WeaponData[index].atkCD;
    		this.atkValue = WeaponData[index].atkValue;
    		this.atkDis = WeaponData[index].atkDis;
    		this.hpValue = WeaponData[index].hpValue;
    		this.maxCount = WeaponData[index].maxCount;
    		this.skin = WeaponData[index].skin;
    		this.message = WeaponData[index].tip;
    		this.getText = WeaponData[index].getText;
    		this.expend = WeaponData[index].expend;
    		this.sPrice = WeaponData[index].sPrice;
    	}
    }

    class Weapon3D {
    	constructor(weaponType) {
    		this.weaponType = null;
    		this.weapon = null;
    		this.propID = null;
    		this.weaponSprite3D = null;
    		this.trailSprite3D = null;
    		this.atkEffect = null;
    		this.atkTakeTime = 0;
    		this.weaponID = '';
    		this.weaponType = weaponType;
    		this.propID = Weapon3DData[this.weaponType].propID;
    		this.weaponID = Weapon3DData[this.weaponType].AnimID;
    		this.atkTakeTime = Weapon3DData[this.weaponType].atkTakeTime;
    		this.weapon = new Weapon(this.propID);
    	}
    }

    class Bullet_Ctrl extends Laya.Script3D {
    	constructor() {
    		super();
    		this.speed = 50;
    		this.sprite3D = null;
    		this.isMove = false;
    		this.player = null;
    		this.affiliationName = 'Player';
    		this.affiliation = null;
    		this.affiliationSprite3D = null;
    		this.forwordV3 = new Laya.Vector3(0, 0, 0);
    	}
    	onAwake() {
    		this.sprite3D = this.owner;
    		this.player = InsManager.GetInstance()._SceneManager.player;
    	}
    	onStart() {
    	}
    	onEnable() {
    		if (this.affiliationName == PathData.player) {
    			InsManager.GetInstance()._SceneManager.player.playerPos.transform.getForward(this.forwordV3);
    			this.affiliationSprite3D = InsManager.GetInstance()._SceneManager.player.playerPos;
    		}
    		else {
    			if (InsManager.GetInstance()._SceneManager.player.isSquat)
    				this.affiliation.lookAtPoint.transform.getForward(this.forwordV3);
    			else {
    				if (this.affiliation.npcType == NpcType.Robot) {
    					this.affiliation.lookAtPoint.transform.getForward(this.forwordV3);
    				}
    				else {
    					this.affiliation.npc_Sprite3D.transform.getForward(this.forwordV3);
    				}
    			}
    			Laya.Vector3.normalize(this.forwordV3, this.forwordV3);
    			this.affiliationSprite3D = this.affiliation.npc_Sprite3D;
    		}
    	}
    	onUpdate() {
    		if (this.isMove) {
    			if (Laya.Vector3.distance(this.player.playerPos.transform.position, this.sprite3D.transform.position) > 40) {
    				Weapon_Ctrl.GetInstance().BulletEffectRecycle(this.sprite3D);
    				return;
    			}
    			let fd = new Laya.Vector3(0, 0, 0);
    			let moveSpeed = (Laya.timer.delta / 1000) * this.speed;
    			fd = new Laya.Vector3(this.forwordV3.x * moveSpeed, this.forwordV3.y * moveSpeed, this.forwordV3.z * moveSpeed);
    			this.sprite3D.transform.translate(fd, false);
    		}
    	}
    	onTriggerEnter(o) {
    		if (o.owner.name == 'carTrigger')
    			return;
    		if ((o.owner.parent.name == 'NpcList' || o.owner.parent.name == 'EnemyList') && this.affiliationName != PathData.player)
    			return;
    		if (o.owner.name == 'dialog' || o.owner.name == PathData.player || o.owner.name == 'MainTask' || o.owner.name == 'trigger')
    			return;
    		console.log(o.owner.parent.name);
    		if ((o.owner.parent.name == 'NpcList' || o.owner.parent.name == 'EnemyList') && this.affiliationName == PathData.player) {
    			let enemyCtrl = o.owner.getComponent(EnemyBase);
    			if (enemyCtrl != null) {
    				if (enemyCtrl.currentState == NpcState.Die)
    					return;
    				enemyCtrl.SetHP(-InsManager.GetInstance()._SceneManager.player.atkValue);
    			}
    		}
    		console.log(o.owner.name);
    		if (this.affiliationName != PathData.player && o.owner.name == 'playerHit') {
    			if (this.affiliation != null) {
    				this.affiliation.SetPlayerHP();
    				if (this.affiliation.player_Ctrl != null && this.affiliation.player_Ctrl.blood != null) {
    					this.affiliation.player_Ctrl.blood.active = false;
    					this.affiliation.player_Ctrl.blood.active = true;
    				}
    			}
    		}
    		console.log(o.owner.name);
    	}
    	onDisable() {
    	}
    }

    class Weapon_Ctrl {
    	constructor() {
    		this.player = null;
    		this.bulletArr = [];
    		this.bulletHintArr = [];
    	}
    	static GetInstance() {
    		if (this._instance == null)
    			this._instance = new Weapon_Ctrl();
    		return this._instance;
    	}
    	CreateWeapon(weaponType) {
    		let sprite3D = null;
    		let weapon = new Weapon3D(weaponType);
    		for (let i = 0; i < this.player.hand.numChildren; i++) {
    			if (i == weapon.weaponType) {
    				sprite3D = this.player.hand.getChildAt(i);
    				break;
    			}
    		}
    		weapon.weaponSprite3D = sprite3D;
    		if (sprite3D.getChildAt(0) != null && sprite3D.getChildAt(0).getChildAt(0) != null && sprite3D.getChildAt(0).getChildAt(0).name == PathData.Gun_Fire) {
    			weapon.atkEffect = sprite3D.getChildAt(0).getChildAt(0);
    			weapon.atkEffect.active = false;
    			console.log('=================', weapon.atkEffect.name);
    		}
    		return weapon;
    	}
    	InitWeapon() {
    	}
    	BulletEffectRecycle(bulletEffect) {
    		let bullet_ctrl = bulletEffect.getComponent(Bullet_Ctrl);
    		if (bullet_ctrl != null && bullet_ctrl != undefined) {
    			bullet_ctrl.isMove = false;
    			bullet_ctrl.affiliationName = '';
    			bullet_ctrl.affiliation = null;
    			bulletEffect.active = false;
    		}
    	}
    }
    Weapon_Ctrl._instance = null;

    class Equipment_Ctrl {
    	constructor() {
    		this.player = null;
    	}
    	static GetInstance() {
    		if (this._instance == null)
    			this._instance = new Equipment_Ctrl();
    		return this._instance;
    	}
    	ChangehEquipment(equipment, isChangeDefault) {
    		let targetName = equipment.englishName;
    		let pTypeName = targetName.substring(0, equipment.englishName.length - 2);
    		if (isChangeDefault)
    			targetName = pTypeName + "_1";
    		for (let i = 0; i < this.player.playerAnim.owner.numChildren; i++) {
    			let eChild = this.player.playerAnim.owner.getChildAt(i);
    			let eTypeName = eChild.name.substring(0, eChild.name.length - 2);
    			if (eTypeName == pTypeName) {
    				if (eChild.name == targetName) {
    					eChild.active = true;
    				}
    				else {
    					eChild.active = false;
    				}
    			}
    		}
    	}
    	ChangeEquipmentAll() {
    		let propArr = InsManager.GetInstance()._knapsackManager.FindKnapsackData(PathData.Knapsack_EquipmentColumn, PropData.GetInstance().knapsackData);
    		for (let i = 0; i < propArr.propDataArr.length; i++) {
    			if (propArr.propDataArr[i].prop != null && propArr.propDataArr[i].prop.propType == PropType.Equipment) {
    				let targetName = propArr.propDataArr[i].prop.englishName;
    				let pTypeName = targetName.substring(0, targetName.length - 2);
    				for (let j = 0; j < this.player.playerAnim.owner.numChildren; j++) {
    					let eChild = this.player.playerAnim.owner.getChildAt(j);
    					let eTypeName = eChild.name.substring(0, eChild.name.length - 2);
    					if (eTypeName == pTypeName) {
    						if (eChild.name == targetName) {
    							eChild.active = true;
    						}
    						else {
    							eChild.active = false;
    						}
    					}
    				}
    			}
    		}
    	}
    	SetEquipmentHp() {
    		let ekPropArr = InsManager.GetInstance()._knapsackManager.Knapsack_EquipmentColumn.propDataArr;
    		for (let i = 0; i < ekPropArr.length; i++) {
    			if (ekPropArr[i].prop != null && ekPropArr[i].prop.propType == PropType.Equipment) {
    				let e_kpProp = ekPropArr[i].prop;
    				if (e_kpProp == null) {
    					console.error("没有找到装备");
    					return;
    				}
    				e_kpProp.hpValue -= e_kpProp.expend;
    				if (e_kpProp.hpValue <= 0) {
    					InsManager.GetInstance()._UIManager.ShowGameToast(ekPropArr[i].prop.name + "损坏了", ToastType.Hint);
    					ekPropArr[i].prop = null;
    					ekPropArr[i].Count = null;
    					this.ChangehEquipment(e_kpProp, true);
    				}
    			}
    		}
    	}
    }
    Equipment_Ctrl._instance = null;

    class Collector_Ctrl extends Laya.Script3D {
    	constructor() {
    		super();
    		this.sceneManager = null;
    		this.collectorProgress = 0;
    		this.collectorTime = 100;
    	}
    	onStart() {
    		this.sceneManager = InsManager.GetInstance()._SceneManager;
    		Laya.timer.loop(1000, this, this.CollectorTimeLoop);
    	}
    	CollectorTimeLoop() {
    		if (this.collectorProgress >= 1) {
    			return;
    		}
    		else {
    			this.collectorProgress += (1 / this.collectorTime);
    			if (this.collectorProgress > 1)
    				this.collectorProgress = 1;
    			if (this.sceneManager.player.currentGetProp != null && this.sceneManager.player.currentGetProp.node3D == this.owner && this.sceneManager.gamePanel != null) {
    				this.sceneManager.gamePanel.view['center/propGprogress/img/progress'].text = Math.ceil(this.collectorProgress * 100) + "%";
    			}
    		}
    	}
    }

    class Camera_Ctrl extends Laya.Script3D {
    	constructor() {
    		super();
    		this.playerCamera = null;
    		this.shipCameraPoint = null;
    		this.isCameraMove = false;
    		this.anim = null;
    		this.roteteSpeed = 0.0005;
    		this.isRotate = false;
    		this.dir = new Laya.Vector3(0, 0, 0);
    	}
    	onAwake() {
    		this.playerCamera = this.owner;
    		this.anim = this.owner.getComponent(Laya.Animator);
    		this.playerCamera.clearFlag = Laya.CameraClearFlags.Sky;
    		this.playerCamera.nearPlane = 0.1;
    		this.playerCamera.farPlane = 130;
    	}
    	SetMoveCameraParam() {
    		this.playerCamera.transform.localPosition = new Laya.Vector3(0, 0, 0);
    		this.playerCamera.transform.localRotationEuler = new Laya.Vector3(0, 180, 0);
    		this.isCameraMove = true;
    	}
    	SetCameraAnim(animName) {
    		this.anim.play(animName, 0, 0);
    		console.log('播放相机动画');
    	}
    	StartMoveCamera() {
    		InsManager.GetInstance()._SceneManager.player.CameraPoint.transform.rotate(new Laya.Vector3(0, ((1 * Laya.timer.delta) * this.roteteSpeed), 0), false);
    	}
    	onUpdate() {
    		if (this.isRotate)
    			this.StartMoveCamera();
    	}
    	SetCameraAngleInRightAstern() { InsManager.GetInstance()._SceneManager.player.CameraPoint.transform.rotationEuler = InsManager.GetInstance()._SceneManager.player.playerPos.transform.rotationEuler; }
    	SetCameraInPlayer() {
    		InsManager.GetInstance()._SceneManager.player.playerPos.active = true;
    		this.isCameraMove = false;
    		InsManager.GetInstance()._SceneManager.player.playerPos.getChildByName('waist').addChild(this.playerCamera);
    		this.playerCamera.transform.localPosition = new Laya.Vector3(0, 0, 0);
    		this.playerCamera.transform.localRotationEuler = new Laya.Vector3(0, 180, 0);
    	}
    }

    class PhysicsSettingUtils {
    	static SetSpreite3DCollisionOwnRay(sprite3D, collisionLayer) {
    		if (sprite3D == null) {
    			console.log(sprite3D);
    		}
    		let phy = sprite3D.getComponent(Laya.PhysicsCollider);
    		if (phy != null)
    			phy.collisionGroup = collisionLayer;
    		else
    			console.error(sprite3D, ' PhysicsCollider is null');
    	}
    	static SetSprite3DCollisionIsTrigger(sprite3D, isTrigger) {
    		let phy = sprite3D.getComponent(Laya.PhysicsCollider);
    		if (phy != null)
    			phy.isTrigger = isTrigger;
    		else
    			console.error(sprite3D.name + ' PhysicsCollider is null');
    	}
    }

    class BuyPropData {
    	constructor(propID, buyCount, price) {
    		this.propID = null;
    		this.buyCount = 0;
    		this.price = 0;
    		this.propID = propID;
    		this.buyCount = buyCount;
    		this.price = price;
    	}
    }

    class ShopPanel_Ctrl extends UI_Ctrl {
    	constructor() {
    		super();
    		this.coinLabel = null;
    		this.shop_list = null;
    		this.categrouy = null;
    		this.mail_list = null;
    		this.mailBox = null;
    		this.achievementList = null;
    		this.achievementBox = null;
    		this.mail_knapsack = null;
    		this.CurrentPropDataArr = null;
    		this.currentFrame = null;
    		this.buy_bt = null;
    		this.viodeBuy_bt = null;
    		this.title = null;
    		this.rotateAnim = null;
    		this.currentBuyIndex = 0;
    	}
    	onAwake() {
    		super.onAwake();
    		this.view["left_top/close_bt"].on(Laya.Event.CLICK, this, () => { InsManager.GetInstance()._UIManager.RemoveUIPanel(PathData.shopPnale_path, this.owner); });
    		this.coinLabel = this.view["center/bg/cionGroup/count"];
    		this.shop_list = this.view["center/shopList"];
    		this.mail_list = this.view["center/mailBox/mailList"];
    		this.categrouy = this.view["left_center/categrouy"];
    		this.mailBox = this.view['center/mailBox'];
    		this.currentFrame = this.view['center/currentFrame'];
    		this.buy_bt = this.view['center/currentFrame/buy_bt'];
    		this.viodeBuy_bt = this.view['center/currentFrame/videoBuy_bt'];
    		this.achievementList = this.view['center/achievementlBox/achievementList'];
    		this.achievementBox = this.view['center/achievementlBox'];
    		this.title = this.view['left_top/titile'];
    		this.rotateAnim = this.owner['rotate'];
    		this.shop_list.visible = true;
    		this.RandomCommodity(0);
    		EventManager._Instance.Add_Listener(PathData.Event_HINTPOINT, this, this.UpdateHintPoint);
    	}
    	onEnable() {
    		this.InitView();
    	}
    	RandomCommodity(itmeNum) {
    		this.CurrentPropDataArr = [];
    		switch (itmeNum) {
    			case 0:
    				this.currentBuyIndex = 0;
    				for (let i = 0; i < ShopPropData.length; i++) {
    					let buyProp = new BuyPropData(ShopPropData[i].propID, ShopPropData[i].buyCount, ShopPropData[i].price);
    					this.CurrentPropDataArr.push(buyProp);
    				}
    				break;
    			case 1:
    				this.currentBuyIndex = 0;
    				for (let i = 0; i < ShopPropData.length; i++) {
    					if ((ShopPropData[i].propID.toString())[0] != '4') {
    						let buyProp = new BuyPropData(ShopPropData[i].propID, ShopPropData[i].buyCount, ShopPropData[i].price);
    						this.CurrentPropDataArr.push(buyProp);
    					}
    				}
    				break;
    			case 2:
    				this.currentBuyIndex = 0;
    				for (let i = 0; i < ShopPropData.length; i++) {
    					if ((ShopPropData[i].propID.toString())[0] == '4') {
    						let buyProp = new BuyPropData(ShopPropData[i].propID, ShopPropData[i].buyCount, ShopPropData[i].price);
    						this.CurrentPropDataArr.push(buyProp);
    					}
    				}
    				break;
    		}
    		if (itmeNum == 5) {
    			this.mailBox.visible = false;
    			this.shop_list.visible = false;
    			this.currentFrame.visible = false;
    			this.achievementBox.visible = true;
    			this.view['left_center'].visible = false;
    			this.title.skin = PathData.shop_path + 'chengjiu.png';
    		}
    		else {
    			if (itmeNum != 3) {
    				this.mailBox.visible = false;
    				this.shop_list.visible = true;
    				this.currentFrame.visible = true;
    				this.title.skin = PathData.shop_path + 'shangdian.png';
    			}
    			else {
    				this.shop_list.visible = false;
    				this.mailBox.visible = true;
    				this.currentFrame.visible = false;
    				this.title.skin = PathData.shop_path + 'youxiang.png';
    			}
    			this.view['left_center'].visible = true;
    			this.achievementBox.visible = false;
    		}
    		this.InitView();
    	}
    	UpdateCurrentFrame() {
    		if (this.CurrentPropDataArr[this.currentBuyIndex] == null || this.CurrentPropDataArr[this.currentBuyIndex] == undefined)
    			console.error('商品类目下标界超出');
    		let cProp = InsManager.GetInstance()._knapsackManager.GetPropData(this.CurrentPropDataArr[this.currentBuyIndex].propID);
    		this.view['center/currentFrame/title'].text = cProp.name;
    		this.view['center/currentFrame/icon'].skin = PathData.icon_path + cProp.skin;
    		this.view['center/currentFrame/msg_label'].text = cProp.message;
    	}
    	onStart() {
    		for (let i = 0; i < this.categrouy.numChildren; i++) {
    			this.categrouy.getChildAt(i).on(Laya.Event.CLICK, this, this.OnCategrouySelectClick, [i]);
    		}
    		EventManager._Instance.Add_Listener(PathData.EVENT_UPDATECOIN, this, this.UpdateCoinCount);
    		this.buy_bt.on(Laya.Event.CLICK, this, this.OnBuyClick, [this.currentBuyIndex]);
    		this.viodeBuy_bt.on(Laya.Event.CLICK, this, this.OnFreeBuyCallBack);
    		this.view["center/bg/cionGroup/addCoin_bt"].on(Laya.Event.CLICK, this, () => { RewardsManager.GetInstance().Rewards_CoinSubsidy(() => { }); });
    		this.view["center/bg/setting_bt"].on(Laya.Event.CLICK, this, () => { InsManager.GetInstance()._UIManager.ShowUI(PathData.settingPanel_path); });
    		this.rotateAnim.play(0, true);
    	}
    	InitView() {
    		this.UpdateCoinCount();
    		this.view['center/bg/cionGroup/addCoin_bt'].visible = InsManager.GetInstance()._DataSave.isOpenAd;
    		if (this.shop_list.visible) {
    			if (this.CurrentPropDataArr.length <= 0)
    				return;
    			this.shop_list.vScrollBarSkin = "";
    			let data = [];
    			for (let i = 0; i < this.CurrentPropDataArr.length; i++) {
    				data.push(i.toString());
    			}
    			this.shop_list.array = data;
    			this.shop_list.renderHandler = new Laya.Handler(this, this.onListRender_shop_list);
    			this.UpdateCurrentFrame();
    		}
    		else if (this.view['center/mailBox'].visible) {
    			this.mail_list.vScrollBarSkin = "";
    			let data = [];
    			if (this.mail_knapsack == null)
    				this.mail_knapsack = InsManager.GetInstance()._knapsackManager.FindKnapsackData(PathData.Knapsack_Mail, PropData.GetInstance().knapsackData);
    			if (this.mail_knapsack == null) {
    				console.error("没有找到邮箱背包数据");
    				return;
    			}
    			for (let i = 0; i < this.mail_knapsack.propDataArr.length; i++) {
    				data.push(i.toString());
    			}
    			this.mail_list.array = data;
    			this.mail_list.renderHandler = new Laya.Handler(this, this.onListRender_mail_list);
    			if (this.mail_knapsack.propDataArr.length == 0) {
    				this.view['center/mailBox/zwwp_label'].visible = true;
    			}
    			else {
    				this.view['center/mailBox/zwwp_label'].visible = false;
    			}
    		}
    		else if (this.achievementList.visible) {
    			this.achievementList.vScrollBarSkin = "";
    			let data = [];
    			for (let i = 0; i < AchievementData.length; i++) {
    				data.push(i.toString());
    			}
    			this.achievementList.array = data;
    			this.achievementList.renderHandler = new Laya.Handler(this, this.onListRender_achievement_list);
    		}
    		this.InitHintButtonHint();
    	}
    	onListRender_shop_list(cell, index) {
    		if (index >= this.CurrentPropDataArr.length)
    			return;
    		let item = cell.getChildAt(0);
    		let title = item.getChildByName("title");
    		let icon = item.getChildByName("icon");
    		let buy_bt = item.getChildByName("buy_bt");
    		let count = item.getChildByName("count");
    		let buyMsg = buy_bt.getChildAt(0);
    		let select = item.getChildByName('select');
    		let propBase = InsManager.GetInstance()._knapsackManager.GetPropData(this.CurrentPropDataArr[index].propID);
    		title.text = propBase.name;
    		icon.skin = PathData.icon_path + propBase.skin;
    		buyMsg.text = this.CurrentPropDataArr[index].price.toString();
    		count.text = 'X' + this.CurrentPropDataArr[index].buyCount.toString();
    		if (index != this.currentBuyIndex)
    			select.visible = false;
    		else
    			select.visible = true;
    		item.offAll(Laya.Event.CLICK);
    		item.on(Laya.Event.CLICK, this, () => {
    			this.currentBuyIndex = index;
    			select.visible = true;
    			this, this.UpdateCurrentFrame();
    			this.InitView();
    		});
    	}
    	onListRender_achievement_list(cell, index) {
    		if (AchievementData[index] == null || AchievementData[index] == undefined)
    			return;
    		let item = cell.getChildAt(0);
    		let icon = item.getChildByName("icon");
    		let count = item.getChildByName("count");
    		let name = item.getChildByName("name");
    		let get_bt = item.getChildByName("get_bt");
    		let mty_bt = item.getChildByName("mty_bt");
    		let award = item.getChildByName('awardLabel');
    		let pValue = item.getChildByName('progress').getChildByName('value');
    		let progressLabel = item.getChildByName('progress').getChildByName('label');
    		count.text = AchievementData[index].msg;
    		name.text = AchievementData[index].title;
    		console.log(AchievementData[index].missionType, BranchTaskType.CrackerTask, AchievementData[index].missionType == BranchTaskType.CrackerTask);
    		switch (AchievementData[index].missionType) {
    			case BranchTaskType.CrackerTask:
    				icon.skin = PathData.shop_path + 'heikepojie.png';
    				console.log(icon.skin);
    				break;
    			case BranchTaskType.DeliverGoodsTask:
    				icon.skin = PathData.shop_path + 'huoche.png.png';
    				break;
    			case BranchTaskType.GetherTask:
    				icon.skin = PathData.shop_path + 'shouji.png.png';
    				break;
    			case BranchTaskType.HuntTask:
    				icon.skin = PathData.shop_path + 'shouqiang.png';
    				break;
    		}
    		award.text = '奖励：' + AchievementData[index].award + '电子币';
    		if (PropData.GetInstance().missionCountArr[AchievementData[index].missionType] <= AchievementData[index].targetCount)
    			progressLabel.text = PropData.GetInstance().missionCountArr[AchievementData[index].missionType] + '/' + AchievementData[index].targetCount;
    		else
    			progressLabel.text = AchievementData[index].targetCount + '/' + AchievementData[index].targetCount;
    		let width = Math.round(pValue.width * (PropData.GetInstance().missionCountArr[AchievementData[index].missionType] / AchievementData[index].targetCount));
    		if (width == 0) {
    			pValue.mask.width = 0;
    			pValue.visible = false;
    		}
    		else {
    			pValue.visible = true;
    			pValue.mask.width = width;
    		}
    		if (pValue.mask.width >= pValue.width) {
    			if (PropData.GetInstance().achievementComplishArr[index] == 0) {
    				get_bt.visible = true;
    				mty_bt.visible = InsManager.GetInstance()._DataSave.isOpenAd;
    				item.getChildByName('done').visible = false;
    			}
    			else {
    				get_bt.visible = false;
    				mty_bt.visible = false;
    				item.getChildByName('done').visible = true;
    			}
    		}
    		else {
    			get_bt.visible = false;
    			mty_bt.visible = false;
    			item.getChildByName('done').visible = false;
    		}
    		get_bt.offAll(Laya.Event.CLICK);
    		mty_bt.offAll(Laya.Event.CLICK);
    		get_bt.on(Laya.Event.CLICK, this, () => {
    			InsManager.GetInstance()._MissionManager.MissionAward([], [], AchievementData[index].award, 0, null, 1, true);
    			PropData.GetInstance().achievementComplishArr[index] = 1;
    			this.InitView();
    			InsManager.GetInstance()._DataSave.SaveGameData(PathData.PropData);
    		});
    		mty_bt.on(Laya.Event.CLICK, this, () => {
    			RewardsManager.GetInstance().Rewards_Achievement(() => {
    				InsManager.GetInstance()._MissionManager.MissionAward([], [], AchievementData[index].award, 0, null, 2, true);
    				PropData.GetInstance().achievementComplishArr[index] = 1;
    				this.InitView();
    				InsManager.GetInstance()._DataSave.SaveGameData(PathData.PropData);
    			});
    		});
    	}
    	onListRender_mail_list(cell, index) {
    		if (index >= this.mail_knapsack.propDataArr.length)
    			return;
    		let item = cell.getChildAt(0);
    		let icon = item.getChildByName("icon");
    		let count = item.getChildByName("count");
    		let name = item.getChildByName("name");
    		let get_bt = item.getChildByName("get_bt");
    		let mty_bt = item.getChildByName("mty_bt");
    		count.text = this.mail_knapsack.propDataArr[index].Count.toString();
    		name.text = this.mail_knapsack.propDataArr[index].prop.name.toString();
    		icon.skin = PathData.icon_path + this.mail_knapsack.propDataArr[index].prop.skin;
    		get_bt.offAll(Laya.Event.CLICK);
    		mty_bt.offAll(Laya.Event.CLICK);
    		get_bt.on(Laya.Event.CLICK, this, this.OnGetPropClick, [index, 1]);
    		mty_bt.on(Laya.Event.CLICK, this, this.OnGetPropClick, [index, 2]);
    		mty_bt.visible = InsManager.GetInstance()._DataSave.isOpenAd;
    	}
    	OnGetPropClick(index, mtyNum) {
    		let knapsackData = InsManager.GetInstance()._knapsackManager.IsPlayerKpImpletion(this.mail_knapsack.propDataArr[index].prop.propID, (this.mail_knapsack.propDataArr[index].Count * mtyNum));
    		if (knapsackData == null) {
    			if (!InsManager.GetInstance()._DataSave.isOpenAd)
    				InsManager.GetInstance()._UIManager.ShowGameToast("背包空间不足！", ToastType.Hint);
    			else
    				RewardsManager.GetInstance().OpenRewardsBag(4);
    		}
    		else {
    			if (mtyNum > 1) {
    				RewardsManager.GetInstance().Rewards_MailGetDouble(() => {
    					if (this.mail_knapsack.propDataArr[index].prop.propType == PropType.Equipment || this.mail_knapsack.propDataArr[index].prop.propType == PropType.Weapon) {
    						for (let i = 0; i < mtyNum; i++) {
    							InsManager.GetInstance()._knapsackManager.AwardProp(this.mail_knapsack.propDataArr[index].prop.propID, (this.mail_knapsack.propDataArr[index].Count * 1), null, true);
    						}
    					}
    					else {
    						InsManager.GetInstance()._knapsackManager.AwardProp(this.mail_knapsack.propDataArr[index].prop.propID, (this.mail_knapsack.propDataArr[index].Count * mtyNum), null, true);
    					}
    					InsManager.GetInstance()._knapsackManager.RemovePropInMail(index);
    					this.InitView();
    					InsManager.GetInstance()._DataSave.SaveGameData(PathData.PropData);
    				}, () => { });
    			}
    			else {
    				InsManager.GetInstance()._knapsackManager.AwardProp(this.mail_knapsack.propDataArr[index].prop.propID, (this.mail_knapsack.propDataArr[index].Count * mtyNum), null, true);
    				InsManager.GetInstance()._knapsackManager.RemovePropInMail(index);
    				this.InitView();
    				InsManager.GetInstance()._DataSave.SaveGameData(PathData.PropData);
    			}
    		}
    	}
    	OnBuyClick() {
    		if (PlayerData.GetInstance().coin < this.CurrentPropDataArr[this.currentBuyIndex].price) {
    			if (!InsManager.GetInstance()._DataSave.isOpenAd)
    				InsManager.GetInstance()._UIManager.ShowGameToast("金币不足！", ToastType.Hint);
    			RewardsManager.GetInstance().OpenRewardsBag(7);
    			return;
    		}
    		let player_kp = InsManager.GetInstance()._knapsackManager.IsPlayerKpImpletion(this.CurrentPropDataArr[this.currentBuyIndex].propID, this.CurrentPropDataArr[this.currentBuyIndex].buyCount);
    		if (player_kp == null) {
    			if (!InsManager.GetInstance()._DataSave.isOpenAd)
    				InsManager.GetInstance()._UIManager.ShowGameToast("背包空间不足，无法购买更多道具", ToastType.Hint);
    			else
    				RewardsManager.GetInstance().OpenRewardsBag(4);
    		}
    		else {
    			InsManager.GetInstance()._DataUpdateManager.UpdateCoin(-this.CurrentPropDataArr[this.currentBuyIndex].price);
    			let propData = InsManager.GetInstance()._knapsackManager.AddPropData(player_kp, this.CurrentPropDataArr[this.currentBuyIndex].propID, this.CurrentPropDataArr[this.currentBuyIndex].buyCount, null);
    			InsManager.GetInstance()._UIManager.ShowPopoutPanel(PopoutPanelType.ShowImg, propData.prop.name + "x" + this.CurrentPropDataArr[this.currentBuyIndex].buyCount.toString(), PathData.icon_path + propData.prop.skin);
    			Platforms.getInstance().ReportAnalytics(PathData.TTEvent_ShopBuyPropCount, { 'count': 1 });
    		}
    	}
    	OnFreeBuyCallBack() {
    		let player_kp = InsManager.GetInstance()._knapsackManager.IsPlayerKpImpletion(this.CurrentPropDataArr[this.currentBuyIndex].propID, this.CurrentPropDataArr[this.currentBuyIndex].buyCount);
    		if (player_kp == null) {
    			if (!InsManager.GetInstance()._DataSave.isOpenAd)
    				InsManager.GetInstance()._UIManager.ShowGameToast("背包空间不足，无法购买更多道具", ToastType.Hint);
    			else {
    				InsManager.GetInstance()._UIManager.ShowGameToast("背包空间不足，无法购买更多道具", ToastType.Hint);
    				RewardsManager.GetInstance().OpenRewardsBag(4);
    			}
    		}
    		else {
    			RewardsManager.GetInstance().Rewards_FreeBuyShop(() => {
    				let propData = InsManager.GetInstance()._knapsackManager.AddPropData(player_kp, this.CurrentPropDataArr[this.currentBuyIndex].propID, this.CurrentPropDataArr[this.currentBuyIndex].buyCount, null);
    				InsManager.GetInstance()._UIManager.ShowPopoutPanel(PopoutPanelType.ShowImg, propData.prop.name + "x" + this.CurrentPropDataArr[this.currentBuyIndex].buyCount.toString(), PathData.icon_path + propData.prop.skin);
    				Platforms.getInstance().ReportAnalytics(PathData.TTEvent_ShopBuyPropCount, { 'count': 1 });
    			});
    		}
    	}
    	OnCategrouySelectClick(index) {
    		if (index != 5) {
    			for (let i = 0; i < this.categrouy.numChildren; i++) {
    				if (i == index) {
    					this.categrouy.getChildAt(i).getChildByName('select').visible = true;
    					this.categrouy.getChildAt(i).getChildByName('label').fontSize = 34;
    					this.categrouy.getChildAt(i).getChildByName('label').color = '#ffee36';
    				}
    				else {
    					this.categrouy.getChildAt(i).getChildByName('select').visible = false;
    					this.categrouy.getChildAt(i).getChildByName('label').fontSize = 28;
    					this.categrouy.getChildAt(i).getChildByName('label').color = '#ffffff';
    				}
    			}
    		}
    		this.RandomCommodity(index);
    	}
    	UpdateHintPoint(eventName, arg) {
    		switch (arg[0]) {
    			case 'shop_bt':
    				this.view["left_center/categrouy/mail_bt/hint_point"].visible = arg[1];
    				break;
    			default:
    				console.log('未知按钮：', arg[0]);
    				break;
    		}
    	}
    	InitHintButtonHint() {
    		this.UpdateHintPoint('', ['shop_bt', InsManager.GetInstance()._knapsackManager.IsKnapsackOwnProp(InsManager.GetInstance()._knapsackManager.Knapsack_Mail)]);
    	}
    	UpdateCoinCount() {
    		super.UpdateCoin(this.coinLabel);
    	}
    	onDisable() {
    		EventManager._Instance.Dispatch_Event(PathData.Event_HINTPOINT, ['shop_bt', InsManager.GetInstance()._knapsackManager.IsKnapsackOwnProp(InsManager.GetInstance()._knapsackManager.Knapsack_Mail)]);
    	}
    }

    class XiEr_Ctrl extends Laya.Script3D {
    	constructor() {
    		super();
    		this.Anim = null;
    		this.npcSprite3D = null;
    		this.player = null;
    		this.currentState = null;
    		this.isPlayDialog = false;
    	}
    	onAwake() {
    		this.Anim = this.owner.getChildByName('anim').getComponent(Laya.Animator);
    		this.npcSprite3D = this.owner;
    	}
    	onStart() {
    		this.player = InsManager.GetInstance()._SceneManager.player.playerPos;
    	}
    	SwitchState(state) {
    		if (this.currentState != state) {
    			this.currentState = state;
    			this.SwitchAnim(state);
    		}
    	}
    	SwitchAnim(animName) {
    		switch (animName) {
    			case 'Idle':
    				this.Anim.crossFade('Idle', 0.1, 0, 0);
    				break;
    			case 'SayHello':
    				this.Anim.crossFade('SayHello', 0.1, 0, 0);
    				this.npcSprite3D.transform.lookAt(this.player.transform.position, new Laya.Vector3(0, 1, 0));
    				break;
    			case 'Dialog':
    				this.Anim.crossFade('Dialog', 0.1, 0, 0);
    				this.npcSprite3D.transform.lookAt(this.player.transform.position, new Laya.Vector3(0, 1, 0));
    				break;
    			case 'Pin':
    				this.Anim.crossFade('Pin', 0.1, 0, 0);
    				break;
    		}
    	}
    	onUpdate() {
    		if (this.isPlayDialog && GameSystemData.GetInstance().rescueNpcStep != 0) {
    			this.SwitchState(NpcState$1.Dialog);
    		}
    		else {
    			if (Laya.Vector3.distance(this.npcSprite3D.transform.position, this.player.transform.position) < 8 && Laya.Vector3.distance(this.npcSprite3D.transform.position, this.player.transform.position) > 3.5 && GameSystemData.GetInstance().rescueNpcStep != 0) {
    				this.SwitchState(NpcState$1.SayHello);
    			}
    			else {
    				if (GameSystemData.GetInstance().rescueNpcStep != 0)
    					this.SwitchState(NpcState$1.Idle);
    				else
    					this.SwitchState(NpcState$1.Pin);
    			}
    		}
    	}
    	PlayXiErDialog() {
    		switch (GameSystemData.GetInstance().rescueNpcStep) {
    			case 0:
    				InsManager.GetInstance()._UIManager.ShowDialogPanel(['1太好了，没想到在这荒岛之上还能见到活人，年轻人快救救我！', '1我本来想爬到树上摘椰子的，结果跳下来的时候不小心把脚卡石头缝里了。', '0我要怎么才能救你出来？', '1很简单，你只需要敲碎我后面的石头我就能出来了', '1你可以在制造台里做一把石镐，这样敲起来快一点', '0行你不要着急，我这就敲碎石头救你出来。'], () => { });
    				break;
    			case 1:
    				this.isPlayDialog = true;
    				InsManager.GetInstance()._UIManager.ShowDialogPanel(['1太感谢你了年轻人，我无以为报只能以身相许了，呜呜呜...', '0......', '0你是谁，为何会出现在这里？', '1我是一位四处云游的冒险家，在旅途中死掉是我最大的目标，不过这种目标还是说说就行了。。。', '1我在附近岛屿找到了不少好东西，送你当做报答你的救命之恩！'], () => {
    					GameSystemData.GetInstance().rescueNpcStep = 2;
    					InsManager.GetInstance()._DataSave.SaveGameData(PathData.GameSystemData);
    					this.isPlayDialog = false;
    					InsManager.GetInstance()._UIManager.ShowAwardOutpopPanel([PropID.medicalBox, PropID.kele, PropID.Bandage], [2, 2, 1], 20, 0, 1, true);
    				});
    				break;
    			case 2:
    				this.isPlayDialog = true;
    				InsManager.GetInstance()._UIManager.ShowDialogPanel(['1我这里有个好东西，想看看吗？'], () => {
    					InsManager.GetInstance()._UIManager.ShowPopoutPanel(PopoutPanelType.Norm, '想看看希尔的好东西吗？', null, () => {
    						if (RewardsManager.GetInstance().GetLiBao() != null && InsManager.GetInstance()._DataSave.isOpenAd) {
    							RewardsManager.GetInstance().OpenRandomLiBao();
    						}
    						else {
    							let shopPanel = InsManager.GetInstance()._UIManager.ShowUI(PathData.shopPnale_path).getComponent(ShopPanel_Ctrl);
    							shopPanel.OnCategrouySelectClick(0);
    						}
    						this.isPlayDialog = false;
    					}, () => { }, () => {
    						InsManager.GetInstance()._UIManager.ShowDialogPanel(['1那真是太可惜了，听说看了的人2021年能够飞黄腾达哦！', '1想要的话再过来找我吧！'], () => { this.isPlayDialog = false; });
    					});
    				});
    				break;
    		}
    	}
    }
    var NpcState$1;
    (function (NpcState) {
    	NpcState["Idle"] = "Idle";
    	NpcState["SayHello"] = "SayHello";
    	NpcState["Dialog"] = "Dialog";
    	NpcState["Pin"] = "Pin";
    })(NpcState$1 || (NpcState$1 = {}));

    class Platfrom3DCtrl {
    	static GetInstance() {
    		if (this._instance == null)
    			this._instance = new Platfrom3DCtrl();
    		return this._instance;
    	}
    	ChangeTexture(meshSprite3D, texturePaht) {
    		texturePaht = DataSave.GetServerPath() + texturePaht;
    		let blinnPhongMaterial = meshSprite3D.meshRenderer.material;
    		blinnPhongMaterial.albedoTexture = ResManager._Instance.Get_Texture2D_Res(texturePaht);
    	}
    	ChageChildsTexture(parentSprite3D, texturePath) {
    		for (let i = 0; i < parentSprite3D.numChildren; i++) {
    			let meshSprite3D = parentSprite3D.getChildAt(i);
    			this.ChangeTexture(meshSprite3D, texturePath);
    			if (GameSystemData.GetInstance().house_lv > 1) {
    				if (parentSprite3D.name == 'Floor' || parentSprite3D.name == 'Wall' || parentSprite3D.name == 'Door') {
    					meshSprite3D.active = true;
    				}
    			}
    		}
    	}
    	LoadSprite3D(path, loadFinshCallBack, isShowLoadPanel, loadTitle) {
    		if (ResManager._Instance.Get_Sprite3D_Res(path) == null || ResManager._Instance.Get_Sprite3D_Res(path) == undefined) {
    			if (isShowLoadPanel)
    				InsManager.GetInstance()._UIManager.ShowLoadCirclePanel(loadTitle);
    			ResManager._Instance.PreLoadRes_Pkg({
    				sprite3D: [path],
    			}, null, () => {
    				loadFinshCallBack && loadFinshCallBack();
    				if (isShowLoadPanel)
    					InsManager.GetInstance()._UIManager.HidePanel(PathData.loadCirclePanel);
    			});
    		}
    		else {
    			console.log('加载预制体完成：', ResManager._Instance.Get_Sprite3D_Res(path));
    			loadFinshCallBack && loadFinshCallBack();
    			if (isShowLoadPanel)
    				InsManager.GetInstance()._UIManager.HidePanel(PathData.loadCirclePanel);
    		}
    	}
    	CreateSprite3D(path, pos, parent) {
    		if (ResManager._Instance.Get_Sprite3D_Res(path) == null) {
    			console.log('資源為null:', path);
    			return null;
    		}
    		let spr3D = Laya.Sprite3D.instantiate(ResManager._Instance.Get_Sprite3D_Res(path));
    		parent.addChild(spr3D);
    		spr3D.transform.position = pos;
    		return spr3D;
    	}
    	SetNpc() {
    		if (GameSystemData.GetInstance().currentMissionID < InsManager.GetInstance()._GameApp.leaveGuideNum)
    			return;
    		let xierPath = DataSave.GetServerPath() + 'res/Prefabs3D/LayaScene_Prefabs/Conventional/XiEr.lh';
    		if (ResManager._Instance.Get_Sprite3D_Res(xierPath) == null) {
    			this.LoadSprite3D(xierPath, () => {
    				let sprite3D = Laya.Sprite3D.instantiate(ResManager._Instance.Get_Sprite3D_Res(xierPath));
    				InsManager.GetInstance()._SceneManager.baseScene.addChild(sprite3D);
    				sprite3D.transform.position = new Laya.Vector3(23.82, 0, 24.42);
    				InsManager.GetInstance()._SceneManager.xiEr = sprite3D;
    				PhysicsSettingUtils.SetSpreite3DCollisionOwnRay(sprite3D.getChildByName('anim'), PathData.RayCollisionLayer);
    				sprite3D.addComponent(Prop3D);
    				sprite3D.addComponent(XiEr_Ctrl);
    				InsManager.GetInstance()._UIManager.CreateUITrace(sprite3D, TraceType.End);
    			}, false);
    		}
    		else {
    			InsManager.GetInstance()._UIManager.CreateUITrace(InsManager.GetInstance()._SceneManager.xiEr, TraceType.End);
    		}
    	}
    }
    Platfrom3DCtrl._instance = null;

    class MakeBulidTrigger extends Laya.Script3D {
    	constructor() {
    		super();
    		this.meshSprite3D = null;
    		this.isBulid = true;
    	}
    	onStart() {
    		this.meshSprite3D = this.owner;
    	}
    	onTriggerEnter(t) {
    		if (t.owner.name != this.owner.name) {
    			Platfrom3DCtrl.GetInstance().ChangeTexture(this.meshSprite3D, "res/UI/texture/red.png");
    			this.isBulid = false;
    		}
    	}
    	onTriggerExit(t) {
    		if (t.owner.name != this.owner.name) {
    			Platfrom3DCtrl.GetInstance().ChangeTexture(this.meshSprite3D, "res/UI/texture/green.png");
    			this.isBulid = true;
    		}
    	}
    	onCollisionEnter(collision) {
    		Platfrom3DCtrl.GetInstance().ChangeTexture(this.meshSprite3D, "res/UI/texture/red.png");
    		this.isBulid = false;
    		collision.contacts;
    	}
    	onCollisionExit(collision) {
    		Platfrom3DCtrl.GetInstance().ChangeTexture(this.meshSprite3D, "res/UI/texture/green.png");
    		this.isBulid = true;
    	}
    }

    class AnimObs extends Laya.Script3D {
    	constructor() {
    		super();
    		this.runSoundChannel = null;
    		this.npcCtrl = null;
    		this.playerCtrl = null;
    	}
    	onStart() {
    		if (this.owner.parent.parent.getComponent(Player_Ctrl) != null)
    			this.playerCtrl = this.owner.parent.parent.getComponent(Player_Ctrl);
    		if (this.owner.parent.getComponent(EnemyBase) != null)
    			this.npcCtrl = this.owner.parent.getComponent(EnemyBase);
    	}
    	Run() {
    		if (this.playerCtrl.currentState == PlayerState.Run || this.playerCtrl.currentState == PlayerState.Walk) {
    			if (GameSystemData.GetInstance().isPlaySound && this.runSoundChannel == null) {
    				SoundsManager.PlaySounds(PathData.sound_runSound, 0.6);
    			}
    			else {
    				if (this.runSoundChannel != null) {
    					this.runSoundChannel.pause();
    					this.runSoundChannel.play();
    				}
    			}
    		}
    	}
    	Atk() {
    		if (this.playerCtrl == null) {
    			return;
    		}
    		if (InsManager.GetInstance()._SceneManager.npcArr.length > 0) {
    			let enemyCtrl = InsManager.GetInstance()._SceneManager.npcArr[0].getComponent(EnemyBase);
    			if (Laya.Vector3.distance(enemyCtrl.npc_Sprite3D.transform.position, this.playerCtrl.playerPos.transform.position) <= this.playerCtrl.atkScope)
    				enemyCtrl.SetHP(-this.playerCtrl.atkValue);
    		}
    		SoundsManager.PlaySounds(MonsterData[this.playerCtrl.monsterType].sound_atk);
    		this.playerCtrl.isYetAtk = true;
    	}
    	NpcAtk() {
    		console.log('设置玩家血量');
    		if (this.npcCtrl == null)
    			return;
    		this.npcCtrl.FireBullet();
    	}
    }

    class CarTrigger extends Laya.Script3D {
    	constructor() {
    		super();
    		this.car_ctrl = null;
    	}
    	onAwake() {
    		this.car_ctrl = this.owner.parent.getComponent(Car_Ctrl);
    	}
    	onTriggerEnter(o) {
    		if (o.owner.name == PathData.player) {
    			CarManager.GetInstance().targetCar = this.car_ctrl;
    			if (this.car_ctrl.isRightToUse) {
    				InsManager.GetInstance()._SceneManager.gamePanel.inCar_bt.visible = true;
    				InsManager.GetInstance()._SceneManager.gamePanel.inCar_bt.getChildByName('video').visible = false;
    			}
    			else {
    				InsManager.GetInstance()._SceneManager.gamePanel.inCar_bt.visible = true;
    				InsManager.GetInstance()._SceneManager.gamePanel.inCar_bt.getChildByName('video').visible = InsManager.GetInstance()._DataSave.isOpenAd;
    			}
    		}
    		else {
    			if (this.car_ctrl.carRotateState == CarState.Top || this.car_ctrl.carRotateState == CarState.Buttom) {
    				if (o.owner.name != 'Terrain' && o.owner.name != 'bigTerrain')
    					this.car_ctrl.isTrigger = true;
    			}
    		}
    	}
    	onTriggerExit(o) {
    		if (o.owner.name == PathData.player && InsManager.GetInstance()._SceneManager.player.isInCar == false) {
    			CarManager.GetInstance().targetCar = null;
    			InsManager.GetInstance()._SceneManager.gamePanel.inCar_bt.visible = false;
    		}
    		this.car_ctrl.isTrigger = false;
    	}
    }

    class Car_Ctrl extends Laya.Script3D {
    	constructor() {
    		super();
    		this.carType = null;
    		this.isRightToUse = true;
    		this.maxSpeed = 1;
    		this.minSpeed = -1;
    		this.upSpeed = 0.05;
    		this.rotateSpeed = 0.1;
    		this.rotateAngle = 0;
    		this.wheelSpeed = 4;
    		this.carSpeed = 0;
    		this.cameraRotete = 0;
    		this.outPos = null;
    		this.carName = '车子';
    		this.carEnglish = 'Car_Yellow';
    		this.carSpeedState = CarState.SpeedInoperation;
    		this.carRotateState = CarState.RotateInoperation;
    		this.carSprite3D = null;
    		this.player = null;
    		this.blow = null;
    		this.forwardV3 = new Laya.Vector3(0, 0, 0);
    		this.carManager = null;
    		this.runSound = null;
    		this.character = null;
    		this.carTrigger = null;
    		this.wheel_R = null;
    		this.wheel_L = null;
    		this.wheel_B = null;
    		this.isTrigger = false;
    	}
    	InitCarData() {
    		this.carType = this.GetCarType();
    		this.carEnglish = CarData[this.carType].english;
    		this.carName = CarData[this.carType].name;
    		this.maxSpeed = CarData[this.carType].fSpeed;
    		this.minSpeed = CarData[this.carType].rSpeed;
    		this.upSpeed = CarData[this.carType].upSpee;
    		this.rotateSpeed = CarData[this.carType].roteteSpeed;
    		this.carSprite3D = this.owner;
    		this.blow = this.carSprite3D.getChildByName('blow');
    		this.character = this.owner.addComponent(Laya.CharacterController);
    		let sphereShape = new Laya.BoxColliderShape(2.37, 2, 5.56);
    		sphereShape.localOffset = new Laya.Vector3(0, 1, 0);
    		this.character.colliderShape = sphereShape;
    		this.player = InsManager.GetInstance()._SceneManager.player;
    		this.carManager = CarManager.GetInstance();
    		this.wheel_L = this.owner.getChildByName('wheel_L');
    		this.wheel_R = this.owner.getChildByName('wheel_R');
    		this.wheel_B = this.owner.getChildByName('wheel_B');
    		this.carTrigger = this.owner.getChildByName('carTrigger');
    		this.outPos = this.owner.getChildByName('outCarPoint');
    		console.log("车辆信息：", this.carEnglish, this.carName);
    		this.character.ccdMotionThreshold = 0.0001;
    	}
    	onAwake() {
    		this.InitCarData();
    		this.carTrigger.addComponent(CarTrigger);
    	}
    	onEnable() {
    		this.carSpeed = 0;
    	}
    	onStart() {
    		this.carSprite3D.transform.localRotationEulerX = 0;
    		this.carSprite3D.transform.localRotationEulerZ = 0;
    	}
    	onLateUpdate() {
    		if (this.player.isInCar && this.carManager.targetCar == this) {
    			this.CarMove();
    			this.CameraFollow();
    		}
    		else {
    		}
    	}
    	CameraFollow() {
    		this.player.CameraPoint.transform.position = new Laya.Vector3(this.carSprite3D.transform.position.x, this.carSprite3D.transform.position.y + 1, this.carSprite3D.transform.position.z);
    		this.player.playerPos.transform.localPositionX = this.carSprite3D.transform.position.x;
    		this.player.playerPos.transform.localPositionZ = this.carSprite3D.transform.position.z;
    		this.player.playerPos.transform.localRotationEulerY = this.carSprite3D.transform.localRotationEulerY;
    	}
    	InCar() {
    		this.player.playerPos.active = false;
    		this.player.CameraPoint.transform.position = new Laya.Vector3(this.carSprite3D.transform.position.x, this.carSprite3D.transform.position.y + 1, this.carSprite3D.transform.position.z);
    		this.player.CameraPoint.transform.localRotationEuler = new Laya.Vector3(0, 0, 0);
    		this.player.CameraPoint.getChildAt(0).transform.localPositionZ = 5;
    		this.player.isInCar = true;
    		this.carManager.targetCar = this;
    		this.carSprite3D.addChild(this.player.CameraPoint);
    		InsManager.GetInstance()._SceneManager.gamePanel.inCar_bt.visible = false;
    		if (this.carType == CarType.Car_XuFu || this.carType == CarType.Car_FeiJI)
    			this.character.gravity = new Laya.Vector3(0, 0, 0);
    		InsManager.GetInstance()._SceneManager.gamePanel.ShowGamePanelHintBox(CarManager.GetInstance().targetCar.carName);
    	}
    	OutCar() {
    		if ((this.carType == CarType.Car_XuFu || this.carType == CarType.Car_FeiJI) && this.carSprite3D.transform.localPositionY > 1.2) {
    			InsManager.GetInstance()._UIManager.ShowGameToast('请降低高度', ToastType.Hint);
    			return;
    		}
    		this.player.isInCar = false;
    		this.player.CameraPoint.getChildAt(0).transform.localPositionZ = 3;
    		this.player.playerPos.active = true;
    		InsManager.GetInstance()._SceneManager.baseScene.addChild(this.player.CameraPoint);
    		InsManager.GetInstance()._SceneManager.gamePanel.inCar_bt.visible = true;
    		this.player.playerPos.transform.position = new Laya.Vector3(this.outPos.transform.position.x, 0, this.outPos.transform.position.z);
    		if (this.carType == CarType.Car_XuFu || this.carType == CarType.Car_FeiJI)
    			this.character.gravity = new Laya.Vector3(0, -10, 0);
    	}
    	CarMove() {
    		this.UpdateSpeed();
    		this.UpdateRotate();
    		this.onUpdateHeight();
    		if (this.carSprite3D.transform.localRotationEulerX != 0)
    			this.carSprite3D.transform.localRotationEulerX = 0;
    		if (this.carSprite3D.transform.localRotationEulerZ != 0)
    			this.carSprite3D.transform.localRotationEulerZ = 0;
    	}
    	UpdateSpeed() {
    		switch (this.carSpeedState) {
    			case CarState.Fspeed:
    				this.carSpeed += this.upSpeed;
    				break;
    			case CarState.Rspeed:
    				this.carSpeed -= this.upSpeed * 1.5;
    				break;
    			case CarState.SpeedInoperation:
    				if (this.carSpeed > 0.2)
    					this.carSpeed -= this.upSpeed;
    				else if (this.carSpeed < -0.2)
    					this.carSpeed += this.upSpeed;
    				else
    					this.carSpeed = 0;
    				break;
    		}
    		if (this.carSpeed == 0) {
    			return;
    		}
    		if (this.carSpeed > this.maxSpeed)
    			this.carSpeed = this.maxSpeed;
    		if (this.carSpeed < this.minSpeed)
    			this.carSpeed = this.minSpeed;
    		this.wheel_L.transform.localRotationEulerX -= this.carSpeed;
    		this.wheel_R.transform.localRotationEulerX -= this.carSpeed;
    		this.wheel_B.transform.localRotationEulerX -= this.carSpeed;
    		this.carSprite3D.transform.getForward(this.forwardV3);
    		Laya.Vector3.normalize(this.forwardV3, this.forwardV3);
    		let dt = Laya.timer.delta / 1000;
    		this.carSprite3D.transform.translate(new Laya.Vector3((this.forwardV3.x * dt) * this.carSpeed, (this.forwardV3.y * dt) * this.carSpeed, (this.forwardV3.z * dt) * this.carSpeed), false);
    		if (this.carSpeed != 0) {
    			if (this.runSound == null)
    				this.runSound = SoundsManager.PlaySounds(PathData.sound_carRun, 0.5, true);
    			this.runSound.volume = Math.abs(0.1 * this.carSpeed);
    		}
    	}
    	UpdateRotate() {
    		switch (this.carRotateState) {
    			case CarState.Right:
    				this.rotateAngle -= this.wheelSpeed;
    				this.cameraRotete -= this.wheelSpeed / 2;
    				break;
    			case CarState.Left:
    				this.rotateAngle += this.wheelSpeed;
    				this.cameraRotete += this.wheelSpeed / 2;
    				break;
    			case CarState.RotateInoperation:
    				if (this.rotateAngle > this.wheelSpeed)
    					this.rotateAngle -= this.wheelSpeed;
    				else if (this.rotateAngle < -this.wheelSpeed)
    					this.rotateAngle += this.wheelSpeed;
    				else
    					this.rotateAngle = 0;
    				if (this.cameraRotete > this.wheelSpeed / 4)
    					this.cameraRotete -= this.wheelSpeed / 2;
    				else if (this.cameraRotete < -this.wheelSpeed / 4)
    					this.cameraRotete += this.wheelSpeed / 2;
    				else
    					this.cameraRotete = 0;
    				break;
    		}
    		if (this.rotateAngle > 45)
    			this.rotateAngle = 45;
    		if (this.rotateAngle < -45)
    			this.rotateAngle = -45;
    		if (this.cameraRotete > 70)
    			this.cameraRotete = 70;
    		if (this.cameraRotete < -70)
    			this.cameraRotete = -70;
    		if (this.carRotateState == CarState.Left && this.rotateAngle < 0)
    			this.rotateAngle = 0;
    		if (this.carRotateState == CarState.Right && this.rotateAngle > 0)
    			this.rotateAngle = 0;
    		this.wheel_L.transform.localRotationEulerY = this.rotateAngle;
    		this.wheel_R.transform.localRotationEulerY = this.rotateAngle;
    		let bodyAngle = ((Math.abs(this.rotateAngle) * (Math.abs(this.carSpeed) * 0.5)) * this.rotateSpeed) * Laya.timer.delta / 1000;
    		if (this.carSpeed > 0) {
    			if (this.carRotateState == CarState.Left || this.carRotateState == CarState.RotateInoperation)
    				this.carSprite3D.transform.localRotationEulerY += bodyAngle;
    			if (this.carRotateState == CarState.Right || this.carRotateState == CarState.RotateInoperation)
    				this.carSprite3D.transform.localRotationEulerY -= bodyAngle;
    		}
    		if (this.carSpeed < 0) {
    			if (this.carRotateState == CarState.Left || this.carRotateState == CarState.RotateInoperation)
    				this.carSprite3D.transform.localRotationEulerY -= bodyAngle;
    			if (this.carRotateState == CarState.Right || this.carRotateState == CarState.RotateInoperation)
    				this.carSprite3D.transform.localRotationEulerY += bodyAngle;
    		}
    		if (this.blow != null && this.blow != undefined) {
    			if (Math.abs(this.carSpeed) > 1 || this.carSprite3D.transform.localPositionY > 0.5)
    				this.blow.active = true;
    			else
    				this.blow.active = false;
    		}
    		if (this.cameraRotete != 0) {
    			this.player.CameraPoint.transform.localRotationEulerY = (this.cameraRotete * 0.1);
    		}
    	}
    	onUpdateHeight() {
    		if (this.carRotateState == CarState.Top || this.carRotateState == CarState.Buttom) {
    			if (this.isTrigger) {
    				return;
    			}
    			this.carSpeed = 0;
    			this.character.enabled = false;
    		}
    		else {
    			if (this.character.enabled == false) {
    				this.character.enabled = true;
    				this.character.gravity = new Laya.Vector3(0, 0, 0);
    			}
    		}
    		if (this.carRotateState == CarState.Top && this.carSprite3D.transform.localPositionY < 20)
    			this.carSprite3D.transform.localPositionY += 0.05;
    		if (this.carRotateState == CarState.Buttom && this.carSprite3D.transform.localPositionY > 0.02)
    			this.carSprite3D.transform.localPositionY -= 0.05;
    	}
    	GetCarType() {
    		for (let i = 0; i < CarData.length; i++) {
    			if (this.owner.name == CarData[i].english)
    				return i;
    		}
    	}
    	OnSpeedInoperation() {
    		if (this.runSound != null) {
    		}
    	}
    }
    var CarState;
    (function (CarState) {
    	CarState[CarState["Fspeed"] = 0] = "Fspeed";
    	CarState[CarState["Rspeed"] = 1] = "Rspeed";
    	CarState[CarState["Right"] = 2] = "Right";
    	CarState[CarState["Left"] = 3] = "Left";
    	CarState[CarState["Top"] = 4] = "Top";
    	CarState[CarState["Buttom"] = 5] = "Buttom";
    	CarState[CarState["SpeedInoperation"] = 6] = "SpeedInoperation";
    	CarState[CarState["RotateInoperation"] = 7] = "RotateInoperation";
    })(CarState || (CarState = {}));

    class CarManager {
    	constructor() {
    		this.targetCar = null;
    	}
    	static GetInstance() {
    		if (this._instance == null)
    			this._instance = new CarManager();
    		return this._instance;
    	}
    	CreateCar(carType, isShowLoadPanel, pos, angle, finishCall) {
    		let carPaht = DataSave.GetServerPath() + 'res/Prefabs3D/LayaScene_Prefabs/Conventional/' + CarData[carType].english + '.lh';
    		let carSprite3D = null;
    		if (ResManager._Instance.Get_Sprite3D_Res(carPaht) == null || ResManager._Instance.Get_Sprite3D_Res(carPaht) == undefined) {
    			if (isShowLoadPanel)
    				InsManager.GetInstance()._UIManager.ShowLoadCirclePanel('资源加载中...');
    			ResManager._Instance.PreLoadRes_Pkg({
    				sprite3D: [carPaht],
    			}, null, () => {
    				let loadCirclePanel = InsManager.GetInstance()._UIManager.owner.getChildByName(PathData.loadCirclePanel);
    				if (loadCirclePanel != null)
    					InsManager.GetInstance()._UIManager.RemoveUIPanel(PathData.loadCirclePanel, loadCirclePanel);
    				carSprite3D = Laya.Sprite3D.instantiate(ResManager._Instance.Get_Sprite3D_Res(carPaht));
    				InsManager.GetInstance()._SceneManager.gameScene.addChild(carSprite3D);
    				if (carSprite3D != null) {
    					console.log(pos);
    					carSprite3D.transform.localPosition = pos;
    					carSprite3D.transform.localRotationEuler = angle;
    					let carCtrl = carSprite3D.addComponent(Car_Ctrl);
    					if (carType == CarType.Car_FeiJI || carType == CarType.Car_XuFu)
    						carCtrl.isRightToUse = false;
    					finishCall && finishCall();
    				}
    			});
    		}
    		else {
    			carSprite3D = Laya.Sprite3D.instantiate(ResManager._Instance.Get_Sprite3D_Res(carPaht));
    			InsManager.GetInstance()._SceneManager.gameScene.addChild(carSprite3D);
    			if (carSprite3D != null) {
    				carSprite3D.transform.localPosition = pos;
    				carSprite3D.transform.localRotationEuler = angle;
    				let carCtrl = carSprite3D.addComponent(Car_Ctrl);
    				if (carType == CarType.Car_FeiJI || carType == CarType.Car_XuFu)
    					carCtrl.isRightToUse = false;
    				finishCall && finishCall();
    			}
    		}
    	}
    }
    CarManager._instance = null;

    class CameraRayTrigger extends Laya.Script3D {
    	constructor() {
    		super();
    		this.isTrigger = false;
    	}
    	onTriggerStay(t) {
    		if (t.owner.name == 'playerHit' || t.owner.name == 'CameraParent' || t.owner.name == 'Player' || (CarManager.GetInstance().targetCar != null && CarManager.GetInstance().targetCar.carTrigger == t.owner)
    			|| (CarManager.GetInstance().targetCar != null && t.owner == CarManager.GetInstance().targetCar.owner))
    			return;
    		this.isTrigger = true;
    	}
    	onTriggerExit(t) {
    		if (t.owner.name == 'playerHit' || t.owner.name == 'Ray' || t.owner.name == 'Player' || (CarManager.GetInstance().targetCar != null && CarManager.GetInstance().targetCar.carTrigger == t.owner)
    			|| (CarManager.GetInstance().targetCar != null && t.owner == CarManager.GetInstance().targetCar.owner))
    			return;
    		this.isTrigger = false;
    	}
    }

    class CameraDynamicPos extends Laya.Script3D {
    	constructor() {
    		super();
    		this.sprite3D = null;
    		this.camera = null;
    		this.player = null;
    		this.isStay = false;
    		this.cameraRayTrigger = null;
    		this.posZ = 0;
    		this.value = 0;
    	}
    	onStart() {
    		this.sprite3D = this.owner;
    		this.camera = this.sprite3D.getChildAt(0);
    		this.player = InsManager.GetInstance()._SceneManager.player.playerPos;
    		this.cameraRayTrigger = this.sprite3D.getChildByName('Ray').addComponent(CameraRayTrigger);
    		this.owner.getComponent(Laya.Rigidbody3D).canCollideWith = Laya.Physics3DUtils.COLLISIONFILTERGROUP_ALLFILTER ^ PathData.bornPointCollisionLayer;
    		this.cameraRayTrigger.owner.getComponent(Laya.Rigidbody3D).canCollideWith = Laya.Physics3DUtils.COLLISIONFILTERGROUP_ALLFILTER ^ PathData.bornPointCollisionLayer;
    	}
    	onUpdate() {
    		this.CameraReset();
    	}
    	CameraRetract(t) {
    		this.isStay = true;
    		if (this.sprite3D.transform.localPositionZ >= 2.6) {
    			this.value = 0;
    		}
    		else {
    			this.value = 0.1;
    		}
    		this.sprite3D.transform.localPositionZ += this.value;
    	}
    	CameraReset() {
    		if (!this.isStay && !this.cameraRayTrigger.isTrigger) {
    			if (this.sprite3D.transform.localPositionZ <= this.posZ) {
    				this.value = 0;
    			}
    			else {
    				this.value = -0.1;
    			}
    			this.sprite3D.transform.localPositionZ += this.value;
    		}
    	}
    	onTriggerStay(t) {
    		if (t.owner.name == 'playerHit' || t.owner.name == 'Ray' || t.owner.name == 'Player' || (CarManager.GetInstance().targetCar != null && CarManager.GetInstance().targetCar.carTrigger == t.owner)
    			|| (CarManager.GetInstance().targetCar != null && t.owner == CarManager.GetInstance().targetCar.owner))
    			return;
    		this.CameraRetract(t.owner);
    	}
    	onTriggerExit(t) {
    		if (t.owner.name == 'playerHit' || t.owner.name == 'Ray' || t.owner.name == 'Player' || (CarManager.GetInstance().targetCar != null && CarManager.GetInstance().targetCar.carTrigger == t.owner)
    			|| (CarManager.GetInstance().targetCar != null && t.owner == CarManager.GetInstance().targetCar.owner))
    			return;
    		this.isStay = false;
    	}
    }
    var cameraState;
    (function (cameraState) {
    	cameraState[cameraState["forward"] = 0] = "forward";
    })(cameraState || (cameraState = {}));

    class Player_Ctrl extends Laya.Script3D {
    	constructor() {
    		super();
    		this.weaponCtrl = null;
    		this.equipmentCtrl = null;
    		this.joystick = null;
    		this.wayEnd = null;
    		this.aStar = null;
    		this.pocketData = null;
    		this.sceneManager = null;
    		this.target_point = null;
    		this.blood = null;
    		this.playerHintShape = null;
    		this.playerPos = null;
    		this.playerAnim = null;
    		this.cameraDynami = null;
    		this.cameraParent = null;
    		this.CameraPoint = null;
    		this.playerCamera = null;
    		this.rigidbody3D = null;
    		this.currentState = null;
    		this.hand = null;
    		this.currentGetProp = null;
    		this.targetGetNode3D = null;
    		this.character = null;
    		this.hitPoint = null;
    		this.isInScene3D = true;
    		this.isInHouse = false;
    		this.isWaitAnimFinish = false;
    		this.isAutoMove = false;
    		this.isMove = true;
    		this.isSquat = false;
    		this.isUpdateLookAt = false;
    		this.isTakeAtk = true;
    		this.isYetAtk = true;
    		this.isRunState = false;
    		this.isAutoMoveTo3Dplatfrom = false;
    		this.isNpcAtk = true;
    		this.isImOpenForge = false;
    		this.isMakePlatform3D = false;
    		this.isInCar = false;
    		this.currentMonster = null;
    		this.isUpgrade = false;
    		this.stateRelationMap = [
    			[PlayerState.Walk, PlayerState.Run, PlayerState.atk, PlayerState.Down_Idle, PlayerState.Down_Walk, PlayerState.Hit, PlayerState.Die],
    			[PlayerState.Idle, PlayerState.Run, PlayerState.atk, PlayerState.Down_Idle, PlayerState.Hit, PlayerState.Die],
    			[PlayerState.Idle, PlayerState.Walk, PlayerState.atk, PlayerState.Down_Idle, PlayerState.Hit, PlayerState.Die],
    			[PlayerState.Idle, PlayerState.Die],
    			[PlayerState.Walk, PlayerState.Down_Walk, PlayerState.Idle, PlayerState.atk, PlayerState.Hit, PlayerState.Die],
    			[PlayerState.Idle, PlayerState.Hit, PlayerState.Down_Idle],
    			[PlayerState.Idle, PlayerState.Walk, PlayerState.Run],
    			[],
    		];
    		this.animFinishArr = [PlayerState.atk, PlayerState.Hit, PlayerState.Die];
    		this.moveSpeed = 1;
    		this.path_index = -1;
    		this.recordEndPos = null;
    		this.continuGetPropCount = 0;
    		this.continuGetpropID = null;
    		this.animCallBack_1 = null;
    		this.atkTakeTime = .4;
    		this.atkCD = 1;
    		this.monsterType = 0;
    		this.name = "未知生物";
    		this.hpValue = 0;
    		this.atkValue = 0;
    		this.walkSpeed = 1;
    		this.defense = 0;
    		this.runSpeed = 2;
    		this.atkScope = 0;
    		this.alertScope = 5;
    		this.ex = 0;
    		this.effectPos = null;
    		this.rayLength = 10;
    		this.hit = new Laya.HitResult();
    		this.ray = null;
    		this.terrainRay = new Laya.Ray(new Laya.Vector3(0, 0, 0), new Laya.Vector3(0, 0, 1));
    		this.terrainHit = new Laya.HitResult();
    		this.makeSprite3D = null;
    		this.runSoundChannel = null;
    		this.eulerX = 0;
    		this.eulerY = 0;
    		this.forward = new Laya.Vector3(0, 0, 1);
    		this.lerpOffset = new Laya.Vector3(0, 0, 0);
    		this.lookAtEndClone = null;
    		this.lookAtOrigin = new Laya.Vector3(0, 0, 0);
    		this.rotateOffset = 16;
    		this.LookAtFinishCallback = null;
    		this.autoMoveEndDis = 0.5;
    		this.currentTargetPlatfrom = null;
    	}
    	onAwake() {
    		this.character = this.owner.addComponent(Laya.CharacterController);
    		let sphereShape = new Laya.CapsuleColliderShape(0.37, 1.70);
    		sphereShape.localOffset = new Laya.Vector3(0, 0.75, 0);
    		this.character.colliderShape = sphereShape;
    		this.character.fallSpeed = 0;
    		this.character.collisionGroup = PathData.playerCollisionLayer;
    		this.playerPos = this.owner;
    		this.sceneManager = InsManager.GetInstance()._SceneManager;
    		this.sceneManager.player = this;
    		this.moveSpeed = PlayerData.GetInstance().walkSpeed;
    		this.playerAnim = this.owner.getChildAt(0).getChildByName("anim").getComponent(Laya.Animator);
    		this.CameraPoint = this.sceneManager.baseScene.getChildByName("CameraPoint");
    		this.cameraParent = this.CameraPoint.getChildAt(0).getChildAt(0);
    		this.playerCamera = this.sceneManager.baseScene.getChildByName("CameraPoint").getChildAt(0).getChildAt(0).getChildByName('PlayerCamera');
    		this.blood = this.owner.getChildAt(0).getChildByName('Blood');
    		this.effectPos = this.owner.getChildAt(0).getChildByName("effectPos");
    		this.hitPoint = this.owner.getChildAt(0).getChildByName('HitPoint');
    		this.sceneManager.cameraCtrl = this.playerCamera.addComponent(Camera_Ctrl);
    		this.sceneManager.player = this;
    		this.cameraDynami = this.cameraParent.addComponent(CameraDynamicPos);
    		this.weaponCtrl = Weapon_Ctrl.GetInstance();
    		this.equipmentCtrl = Equipment_Ctrl.GetInstance();
    		this.weaponCtrl.player = this;
    		this.equipmentCtrl.player = this;
    		this.playerAnim.owner.addComponent(AnimObs);
    		this.InitAnim();
    		GameSystemData.GetInstance().playerLV = 1;
    	}
    	UpdatePlayerNode() {
    		this.playerAnim = this.owner.getChildAt(0).getChildByName("anim").getComponent(Laya.Animator);
    		this.playerAnim.owner.addComponent(AnimObs);
    		this.blood = this.owner.getChildAt(0).getChildByName('Blood');
    		this.hitPoint = this.owner.getChildAt(0).getChildByName('HitPoint');
    		this.effectPos = this.owner.getChildAt(0).getChildByName("effectPos");
    		this.InitState();
    		this.InitAnim();
    		InsManager.GetInstance()._DataUpdateManager.ResetPlayerData(this.hpValue);
    		this.cameraDynami.posZ = MonsterCameraPos[this.monsterType].pos[2];
    		this.cameraParent.transform.localPosition = new Laya.Vector3(MonsterCameraPos[this.monsterType].pos[0], MonsterCameraPos[this.monsterType].pos[1], MonsterCameraPos[this.monsterType].pos[2]);
    	}
    	onEnable() {
    		this.InitState();
    	}
    	onStart() {
    		;
    		this.pocketData = InsManager.GetInstance()._knapsackManager.FindKnapsackData(PathData.Knapsack_PlayerPocket, PropData.GetInstance().knapsackData);
    		this.equipmentCtrl.ChangeEquipmentAll();
    		this.aStar = new AStar();
    		this.aStar.isIgnoreObstacle = true;
    		this.wayEnd = this.aStar.CreateCube(4000, 4000, this.sceneManager.way, new Laya.Vector4(1, 1, 1, 1));
    		this.recordEndPos = this.wayEnd.transform.position.clone();
    	}
    	InitState(isResetEx = true) {
    		this.monsterType = this.GetNpcType();
    		if (isResetEx) {
    			this.name = MonsterData[this.monsterType].name;
    			this.hpValue = MonsterData[this.monsterType].hpValue;
    			this.defense = MonsterData[this.monsterType].defense;
    			this.atkValue = MonsterData[this.monsterType].atkValue + 20;
    			this.atkScope = MonsterData[this.monsterType].atkScope;
    			this.walkSpeed = MonsterData[this.monsterType].walkSpeed;
    			this.runSpeed = MonsterData[this.monsterType].runSpeed;
    			this.alertScope = MonsterData[this.monsterType].alertScope;
    			this.ex = MonsterData[this.monsterType].ex;
    			InsManager.GetInstance()._DataUpdateManager.SetExpValue(this.ex);
    			EventManager._Instance.Dispatch_Event(PathData.EVENT_SetExProgress, null);
    		}
    		else {
    			EventManager._Instance.Dispatch_Event(PathData.EVENT_SetExProgress, null);
    			EventManager._Instance.Dispatch_Event(PathData.EVENT_UpdateExProgress, null);
    		}
    		if (PlayerData.GetInstance().hp == PlayerData.GetInstance().maxHp)
    			InsManager.GetInstance()._DataUpdateManager.ResetPlayerData(this.hpValue);
    		this.currentState = PlayerState.Idle;
    		this.isWaitAnimFinish = false;
    		this.PlayerAnimSwitch();
    		InsManager.GetInstance()._DataUpdateManager.SetHpData(this.hpValue);
    		if (InsManager.GetInstance()._SceneManager.gamePanel) {
    			InsManager.GetInstance()._SceneManager.gamePanel.nameText.text = this.name;
    			InsManager.GetInstance()._SceneManager.gamePanel.lvNum.text = this.GetPlayerLv().toString();
    		}
    	}
    	GetNpcType() {
    		for (let i = 0; i < MonsterData.length; i++) {
    			if (MonsterData[i].englishName == this.owner.getChildAt(0).name)
    				return MonsterData[i].monsterType;
    		}
    		return null;
    	}
    	InitAnim() {
    		for (let i = 1; i < 2; i++) {
    			((this.playerAnim.getControllerLayer().getAnimatorState(PathData.Anim_Atk + "_" + i)).addScript(AnimatorState)).SetPlayerValue(this, true);
    		}
    		((this.playerAnim.getControllerLayer().getAnimatorState(PathData.Anim_Hit)).addScript(AnimatorState)).SetPlayerValue(this, false);
    	}
    	onUpdate() {
    		if (this.sceneManager.gameScene != null) {
    			this.SetLookAt();
    			this.Move();
    			this.AutoMove();
    			InsManager.GetInstance()._SceneManager.MinDisNpcShowAtkTargetImg();
    			this.MakePlatform3DUpdatePos();
    		}
    		this.LaunchRay();
    	}
    	LaunchRay() {
    	}
    	Player_Atk() {
    		if (!this.isTakeAtk || (this.isWaitAnimFinish && this.currentState != PlayerState.atk) || !this.isYetAtk) {
    			console.log(!this.isTakeAtk, (this.isWaitAnimFinish && this.currentState != PlayerState.atk), !this.isYetAtk);
    			return;
    		}
    		else {
    			this.LookAttackTarget();
    		}
    	}
    	LookAttackTarget() {
    		if (this.sceneManager.npcArr.length > 0) {
    			this.sceneManager.npcArr = CalculateExtend.SortFormMinDis(this.sceneManager.npcArr, this.playerPos);
    			if (Laya.Vector3.distance(this.playerPos.transform.position, this.sceneManager.npcArr[0].transform.position) <= this.atkScope) {
    				let enemyCtrl = this.sceneManager.npcArr[0].getComponent(EnemyBase);
    				let lookV3 = new Laya.Vector3(0, 0, 0);
    				Laya.Vector3.subtract(enemyCtrl.npc_Sprite3D.transform.position, this.playerPos.transform.position, lookV3);
    				this.playerPos.transform.lookAt(enemyCtrl.npc_Sprite3D.transform.position, new Laya.Vector3(0, 1, 0));
    				this.AtkResult();
    			}
    			else {
    				this.AtkResult();
    				console.log("攻击不到最近目标：" + this.sceneManager.npcArr[0].getComponent(EnemyBase).name + " 距离：" + Laya.Vector3.distance(this.playerPos.transform.position, this.sceneManager.npcArr[0].transform.position));
    			}
    		}
    		else {
    			this.AtkResult();
    			console.log("地图上边没有敌人");
    		}
    	}
    	AtkResult() {
    		if (this.currentGetProp != null && this.currentGetProp.getConsume > 0 && Laya.Vector3.distance(this.playerPos.transform.position, this.currentGetProp.node3D.transform.position) <= this.atkScope) {
    			if (this.currentGetProp.propType != PropType.Object3D && this.currentGetProp.propType != PropType.Object3DProp)
    				return;
    			Laya.timer.once(this.atkTakeTime * 1000, this, () => {
    				if (this.currentGetProp == null)
    					return;
    				if (this.currentGetProp.propType == PropType.Object3D) {
    					if (this.currentGetProp.getConsume != -1)
    						this.currentGetProp.getConsume--;
    				}
    				else {
    					this.Get3DObjectProp();
    				}
    				this.sceneManager.gamePanel.ShowPick_Progress(this.currentGetProp);
    				if (this.currentGetProp.getConsume <= 0 && this.currentGetProp.getConsume != -1) {
    					switch (this.currentGetProp.prop3DID) {
    					}
    					this.currentGetProp.HideSelf(true);
    					this.currentGetProp = null;
    					this.sceneManager.gamePanel.pick_progress.visible = false;
    				}
    				else {
    					if (this.hit != null)
    						InsManager.GetInstance()._SceneManager.ShowHideEffect(this.hit.point, 1);
    				}
    			});
    		}
    		else {
    			let allHit = this.GetCurrentTargetPoint();
    			if (allHit != null) {
    				Laya.timer.once(this.atkTakeTime * 1000, this, () => { InsManager.GetInstance()._SceneManager.ShowHideEffect(allHit.point, 1); });
    			}
    		}
    		this.PlayerStateSwitch(PlayerState.atk);
    	}
    	GetCurrentTargetPoint() {
    		let allHitArr = [];
    		let allRay = new Laya.Ray(new Laya.Vector3(0, 0, 0), new Laya.Vector3(0, 0, 1));
    		this.playerCamera.viewportPointToRay(this.sceneManager.screenCenterPos, allRay);
    		if (this.sceneManager.baseScene.physicsSimulation.rayCastAll(allRay, allHitArr, this.atkScope)) {
    			for (let i = 0; i < allHitArr.length; i++) {
    				if (allHitArr[i].collider.owner.name != PathData.player) {
    					return allHitArr[i];
    				}
    			}
    		}
    		return null;
    	}
    	GetCurrentTerrainPoint() {
    		this.playerCamera.viewportPointToRay(this.sceneManager.screenCenterPos, this.terrainRay);
    		if (this.sceneManager.baseScene.physicsSimulation.rayCast(this.terrainRay, this.terrainHit, 15, PathData.TerrainCollisionLayer, PathData.TerrainCollisionLayer)) {
    			return this.terrainHit;
    		}
    		return null;
    	}
    	SetStartMakePlatform3D(makeSprite3D) {
    		this.isMakePlatform3D = true;
    		this.makeSprite3D = makeSprite3D;
    	}
    	MakePlatform3DUpdatePos() {
    		if (this.isMakePlatform3D && this.makeSprite3D != null) {
    			let hit = this.GetCurrentTerrainPoint();
    			if (hit != null) {
    				this.makeSprite3D.transform.localPosition = new Laya.Vector3(hit.point.x, 0.1, hit.point.z);
    			}
    			else {
    				console.log('未找到与地面接触点');
    			}
    		}
    	}
    	OkMakeBulid() {
    		if (this.makeSprite3D == null)
    			return;
    		let makeBulidTrigger = this.makeSprite3D.getComponent(MakeBulidTrigger);
    		if (!makeBulidTrigger.isBulid || this.GetCurrentTerrainPoint() == null) {
    			InsManager.GetInstance()._UIManager.ShowGameToast('不能放置在此处', ToastType.Game);
    			return false;
    		}
    		this.isMakePlatform3D = false;
    		MaterialUtlis.SetMaterialOpaque(this.makeSprite3D);
    		Platfrom3DCtrl.GetInstance().ChangeTexture(this.makeSprite3D, DataSave.GetLoadPath() + "res/UI/texture/" + this.makeSprite3D.name + ".png");
    		this.makeSprite3D.addComponent(Prop3D);
    		if (this.makeSprite3D.name == 'DewCollector')
    			this.makeSprite3D.addComponent(Collector_Ctrl);
    		PhysicsSettingUtils.SetSprite3DCollisionIsTrigger(this.makeSprite3D, false);
    		PhysicsSettingUtils.SetSpreite3DCollisionOwnRay(this.makeSprite3D, PathData.RayCollisionLayer);
    		let charcter = this.makeSprite3D.getComponent(Laya.CharacterController);
    		charcter.destroy();
    		makeBulidTrigger.destroy();
    		if (this.sceneManager.ForgePlatform != null)
    			this.sceneManager.ForgePlatform.addChild(this.makeSprite3D);
    		if (this.makeSprite3D.name != 'Box') {
    			InsManager.GetInstance()._knapsackManager.CreateRandomPropKnapsack(KnapsackType.ForgeList, this.makeSprite3D.name, PropData.GetInstance().knapsackData, new KnapsackSaveContainer3D(this.makeSprite3D.name, this.makeSprite3D.transform.position, this.sceneManager.gameScene.name));
    		}
    		else {
    			InsManager.GetInstance()._knapsackManager.CreateRandomPropKnapsack(KnapsackType.Box, this.makeSprite3D.name, PropData.GetInstance().knapsackData, new KnapsackSaveContainer3D(this.makeSprite3D.name, this.makeSprite3D.transform.position, this.sceneManager.gameScene.name));
    		}
    		InsManager.GetInstance()._UIManager.ShowGameToast(InsManager.GetInstance()._knapsackManager.Knapsack_PlayerPocket.propDataArr[this.sceneManager.gamePanel.bulidPropIndex].prop.name + '放置成功', ToastType.Hint);
    		InsManager.GetInstance()._knapsackManager.ClearPropSaveData(InsManager.GetInstance()._knapsackManager.Knapsack_PlayerPocket.propDataArr[this.sceneManager.gamePanel.bulidPropIndex]);
    		this.sceneManager.ShowMakeEffect(new Laya.Vector3(this.makeSprite3D.transform.position.x, this.makeSprite3D.transform.position.y + 0.3, this.makeSprite3D.transform.position.z), 0);
    		return true;
    	}
    	CancelMakeBulid() {
    		if (this.makeSprite3D == null)
    			return;
    		this.isMakePlatform3D = false;
    		this.makeSprite3D.destroy();
    	}
    	HideAtkNpc() {
    		if (this.currentGetProp != null && this.currentGetProp.node3D != null && (this.currentGetProp.node3D.getChildByName(PathData.dieTrigger) != null && this.currentGetProp.node3D.getChildByName(PathData.dieTrigger).active)) {
    			if (this.currentGetProp.node3D.getComponent(EnemyBase) != null && this.currentGetProp.node3D.getComponent(EnemyBase).dieKnapsackData != null) {
    				if (InsManager.GetInstance()._knapsackManager.IsKnapsackOwnProp(this.currentGetProp.node3D.getComponent(EnemyBase).dieKnapsackData) == false) {
    					let skinMeshSprite = this.currentGetProp.node3D.getChildByName('anim').getChildByName('meshRenderer');
    					this.currentGetProp = null;
    					this.sceneManager.gamePanel.openPlatform_bt.visible = false;
    					CommandBuffer_Outline.GetInstance().RemoveCommandBuffer_Outline();
    				}
    			}
    		}
    	}
    	Player_Pickup(tempProp3D) {
    		if (CarManager.GetInstance().targetCar != null) {
    			if (CarManager.GetInstance().targetCar.isRightToUse || !InsManager.GetInstance()._DataSave.isOpenAd)
    				CarManager.GetInstance().targetCar.InCar();
    			else {
    				InsManager.GetInstance()._UIManager.ShowGameToast('观看完整视频获得车辆驾驶权限', ToastType.Game);
    				RewardsManager.GetInstance().Rewards_UnLockCarRightToUse(() => {
    					if (CarManager.GetInstance().targetCar != null) {
    						CarManager.GetInstance().targetCar.isRightToUse = true;
    						InsManager.GetInstance()._UIManager.ShowGameToast('你已解锁该载具使用权限', ToastType.Game);
    						CarManager.GetInstance().targetCar.InCar();
    					}
    					else {
    						InsManager.GetInstance()._UIManager.ShowGameToast('载具解锁异常', ToastType.Game);
    					}
    				});
    			}
    			return;
    		}
    		if (this.currentGetProp == null) {
    			console.log('找不到当前物体');
    			return;
    		}
    		;
    		if (this.currentGetProp.propID == PropID.VendingMachine) {
    			InsManager.GetInstance()._UIManager.ShowKnapsackPanel(KpOpenType.NpcList, InsManager.GetInstance()._knapsackManager.Knapsack_PlayerPocket.id, PropData.GetInstance().knapsackData);
    			return;
    		}
    		let kd_player = InsManager.GetInstance()._knapsackManager.IsPlayerKpImpletion(this.currentGetProp.propID, this.currentGetProp.kpNum);
    		if (kd_player == null && this.currentGetProp.propType != PropType.Object3D) {
    			if (InsManager.GetInstance()._DataSave.isOpenAd)
    				RewardsManager.GetInstance().OpenRewardsBag(4);
    			else
    				InsManager.GetInstance()._UIManager.ShowGameToast("背包没有足够的空间!", ToastType.Hint);
    			return;
    		}
    		if (this.currentGetProp.get3DType == GetType.PickUp) {
    			if (this.currentGetProp.propType == PropType.Object3D) {
    				if (this.currentGetProp == null)
    					return;
    				let boxKd = null;
    				let kpType = null;
    				let kpOpenType = null;
    				switch (this.currentGetProp.prop3DID) {
    					default:
    						console.log("不知道是啥：", this.currentGetProp.prop3DID);
    						break;
    				}
    				let knapsackDataArr = null;
    				if (kpType == KnapsackType.GAM_Box || kpType == KnapsackType.Zoo_Backpack || kpType == KnapsackType.Zombie_Backpackers)
    					knapsackDataArr = InsManager.GetInstance()._DataSave.knapsackRamdonDataArr;
    				else
    					knapsackDataArr = PropData.GetInstance().knapsackData;
    				boxKd = InsManager.GetInstance()._knapsackManager.FindKnapsackContainer3D(this.currentGetProp.node3D, knapsackDataArr);
    				if (boxKd == null) {
    					let kpName = this.currentGetProp.node3D.name;
    					boxKd = InsManager.GetInstance()._knapsackManager.CreateRandomPropKnapsack(kpType, kpName, knapsackDataArr, new KnapsackSaveContainer3D(this.currentGetProp.node3D.name, this.currentGetProp.node3D.transform.position, this.sceneManager.gameScene.name));
    				}
    				else {
    				}
    				InsManager.GetInstance()._UIManager.ShowKnapsackPanel(kpOpenType, boxKd.id, knapsackDataArr);
    			}
    			else {
    				if (this.currentGetProp == null) {
    					console.error('this.currentGetProp is null');
    					return;
    				}
    				if (this.currentGetProp.propID != null && (this.currentGetProp.propType != PropType.Consumables && this.currentGetProp.propType != PropType.Material)) {
    					console.log('前后道具拾取类型不匹配返回');
    					return;
    				}
    				InsManager.GetInstance()._MissionManager.NewTaskFirst_Monitor(PathData.First_Pick3DAssets);
    				InsManager.GetInstance()._DataUpdateManager.UpdateExpValue(1);
    				this.isWaitAnimFinish = false;
    				this.currentGetProp.HideSelf(false);
    				SoundsManager.PlaySounds(PathData.sound_get);
    				InsManager.GetInstance()._BranchManager.SaveAchievementTask(BranchTaskType.GetherTask, 1);
    				this.GetPropFrom3D(kd_player, this.currentGetProp, this.currentGetProp.kpNum, true);
    				if (tempProp3D != null && tempProp3D != undefined)
    					this.currentGetProp = tempProp3D;
    			}
    		}
    	}
    	Get3DObjectProp() {
    		if (this.currentGetProp == null || this.currentGetProp.propType != PropType.Object3DProp)
    			return;
    		let kd_player = InsManager.GetInstance()._knapsackManager.IsPlayerKpImpletion(this.currentGetProp.propID, this.currentGetProp.kpNum);
    		let propCount = 1;
    	}
    	GetPropFrom3D(knapsackData, prop3D, count, isRemoveNode3D) {
    		if (this.currentGetProp == null)
    			return;
    		console.log(prop3D.kpNum, count);
    		let kpProp = null;
    		if (prop3D.propType == PropType.Object3DProp) {
    			kpProp = InsManager.GetInstance()._knapsackManager.AddPropData(knapsackData, prop3D.propID, prop3D.kpNum * count, MissionType.CrackerTask);
    		}
    		else {
    			kpProp = InsManager.GetInstance()._knapsackManager.AddPropData(knapsackData, prop3D.propID, prop3D.kpNum, MissionType.CrackerTask);
    		}
    		InsManager.GetInstance()._MissionManager.MissionOverAllMonitor(MissionMonitorType.Prop3D_Get, prop3D.propID);
    		if (kpProp != null && prop3D != null && this.currentGetProp.propType != PropType.Object3DProp)
    			InsManager.GetInstance()._UIManager.ShowGameToast(kpProp.prop.name + "  x" + prop3D.kpNum, ToastType.Hint);
    		if (this.currentGetProp.propType == PropType.Object3DProp) {
    			if (this.continuGetpropID == kpProp.prop.propID) {
    				this.continuGetPropCount += count;
    			}
    			else {
    				this.continuGetPropCount = count;
    			}
    			this.continuGetpropID = kpProp.prop.propID;
    		}
    		if (isRemoveNode3D) {
    			this.sceneManager.AutoGetPropAssetArr = this.sceneManager.RemoveScene3DResProp(this.currentGetProp.node3D, this.sceneManager.AutoGetPropAssetArr);
    			this.sceneManager.AllGetPropAssetArr = this.sceneManager.RemoveScene3DResProp(this.currentGetProp.node3D, this.sceneManager.AllGetPropAssetArr);
    			this.currentGetProp = null;
    		}
    	}
    	Move() {
    		if (this.isInCar)
    			return;
    		this.CameraPoint.transform.position = new Laya.Vector3(this.playerPos.transform.position.x, this.playerPos.transform.position.y + 0.4, this.playerPos.transform.position.z);
    		if (this.isWaitAnimFinish || !this.isMove || this.currentState == PlayerState.Hit) {
    			this.character.move(new Laya.Vector3(0, 0, 0));
    			return;
    		}
    		if (this.joystick.dir.x === 0 && this.joystick.dir.y === 0) {
    			InsManager.GetInstance()._SceneManager.gamePanel.runEffect.visible = false;
    			if (this.isSquat)
    				this.PlayerStateSwitch(PlayerState.Down_Idle);
    			else
    				this.PlayerStateSwitch(PlayerState.Idle);
    			return;
    		}
    		else {
    			let dt = Laya.timer.delta / 1000;
    			let forwad = new Laya.Vector3(0, 0, 0);
    			this.playerPos.transform.getForward(forwad);
    			forwad = new Laya.Vector3((forwad.x * dt) * this.moveSpeed, (forwad.y * dt) * this.moveSpeed, (forwad.z * dt) * this.moveSpeed);
    			this.character.move(forwad);
    			this.UpdateLookAt(this.joystick.v3);
    			this.isRunState = true;
    			if (this.moveSpeed == PlayerData.GetInstance().runSpeed) {
    				InsManager.GetInstance()._SceneManager.gamePanel.runEffect.visible = true;
    				this.PlayerStateSwitch(PlayerState.Run);
    			}
    			if (this.moveSpeed == PlayerData.GetInstance().walkSpeed) {
    				InsManager.GetInstance()._SceneManager.gamePanel.runEffect.visible = false;
    				this.PlayerStateSwitch(PlayerState.Walk);
    			}
    			if (this.moveSpeed == PlayerData.GetInstance().downMoveSpeed)
    				this.PlayerStateSwitch(PlayerState.Down_Walk);
    		}
    	}
    	AddMoveSpeed(isAdd) {
    		if (isAdd && this.currentState == PlayerState.Walk) {
    			SoundsManager.PlaySounds(PathData.sound_addSpeed);
    			this.moveSpeed = PlayerData.GetInstance().runSpeed;
    		}
    		else {
    			this.moveSpeed = PlayerData.GetInstance().walkSpeed;
    		}
    	}
    	Squat() {
    		if (this.currentMonster != null) {
    			MaterialUtlis.SetSkinMeshlinearLucency(this.currentMonster.owner.getChildAt(0).getChildAt(1), null, this.currentMonster.owner);
    			this.ex += this.currentMonster.ex;
    			InsManager.GetInstance()._DataUpdateManager.UpdateExpValue(this.currentMonster.ex);
    			InsManager.GetInstance()._SceneManager.CreateEffect(PathData.eat_prefabs_path, this.owner.transform.position);
    			EventManager._Instance.Dispatch_Event(PathData.EVENT_UpdateExProgress, null);
    			InsManager.GetInstance()._UIManager.ShowGameToast('吞噬经验 +' + this.currentMonster.ex, ToastType.Game);
    			SoundsManager.PlaySounds(PathData.sound_TunShi);
    			this.currentMonster = null;
    			this.GetPlayerLv();
    		}
    	}
    	Upgrade() {
    		this.isUpgrade = true;
    		GameSystemData.GetInstance().playerModelLevel++;
    		InsManager.GetInstance()._DataSave.SaveGameData(PathData.GameSystemData);
    		PathData.player_Prefabs_path = MonsterPathData[GameSystemData.GetInstance().playerModelLevel].path;
    		EventManager._Instance.Dispatch_Event(PathData.Event_UpdateChangeBtn, false);
    		EventManager._Instance.Dispatch_Event(PathData.EVENT_SetExProgress, null);
    		InsManager.GetInstance()._SceneManager.CreateEffect(PathData.light_prefabs_path, this.owner.transform.position);
    		InsManager.GetInstance()._SceneManager.gamePanel.UpdateUpgrandMonsterMsg(GameSystemData.GetInstance().playerModelLevel);
    		InsManager.GetInstance()._UIManager.allKeep.visible = true;
    		this.sceneManager.cameraCtrl.isRotate = true;
    	}
    	onLateUpdate() {
    		if (this.currentState == PlayerState.Walk || this.currentState == PlayerState.Run || (this.sceneManager.gamePanel != null && this.sceneManager.gamePanel.isOnSlider)) {
    			this.sceneManager.Update3DPlatformSigboardPos();
    		}
    	}
    	viewMove(vx, vy, speed) {
    		this.eulerX = this.CameraPoint.transform.localRotationEuler.x - (vy * (speed * (Laya.timer.delta / 1000)));
    		this.eulerY = this.CameraPoint.transform.localRotationEuler.y - (vx * (speed * (Laya.timer.delta / 1000)));
    		if (this.eulerX > 30)
    			this.eulerX = 30;
    		if (this.eulerX < -30)
    			this.eulerX = -30;
    		this.CameraPoint.transform.localRotationEuler = new Laya.Vector3(this.eulerX, this.eulerY, 0);
    		this.joystick.self_node.rotation = this.CameraPoint.transform.localRotationEulerY;
    	}
    	SetLookAt() {
    		if (this.isUpdateLookAt) {
    			if (this.lookAtEndClone == null || Laya.Vector3.distance(this.forward, this.lookAtEndClone) >= 0.01) {
    				this.lookAtEndClone = this.lookAtOrigin.clone();
    				this.playerPos.transform.getForward(this.forward);
    				Laya.Vector3.add(this.playerPos.transform.position, new Laya.Vector3(this.forward.x, 0, this.forward.z), this.forward);
    				Laya.Vector3.add(this.playerPos.transform.position, new Laya.Vector3(this.lookAtEndClone.x, 0, this.lookAtEndClone.z), this.lookAtEndClone);
    				Laya.Vector3.lerp(this.forward, this.lookAtEndClone, this.rotateOffset * (Laya.timer.delta / 1000), this.lerpOffset);
    				this.playerPos.transform.lookAt(this.lerpOffset, new Laya.Vector3(0, 1, 0), false);
    				if (Laya.Vector3.distance(this.forward, this.lookAtEndClone) < 0.05) {
    					this.playerPos.transform.lookAt(this.lookAtEndClone, new Laya.Vector3(0, 1, 0), false);
    					this.lookAtEndClone = null;
    					this.isUpdateLookAt = false;
    					if (this.LookAtFinishCallback != null && this.LookAtFinishCallback != undefined)
    						this.LookAtFinishCallback();
    					this.LookAtFinishCallback = null;
    				}
    			}
    		}
    	}
    	UpdateLookAt(lookAtOrigin, finishCall) {
    		this.lookAtEndClone == null;
    		Laya.Vector3.normalize(lookAtOrigin, this.lookAtOrigin);
    		this.isUpdateLookAt = true;
    		this.LookAtFinishCallback = finishCall;
    	}
    	Die() {
    		this.isWaitAnimFinish = false;
    		this.PlayerStateSwitch(PlayerState.Die);
    		this.isMove = false;
    		this.sceneManager.gamePanel.ShowHpHitImg(true);
    		Laya.timer.once(2000, this, () => { InsManager.GetInstance()._UIManager.ShowUI(PathData.resultPanel_path); });
    		Platforms.getInstance().ReportAnalytics(PathData.TTEvent_DieCount, { 'count': 1 });
    	}
    	PlayerStateSwitch(state) {
    		if (state == PlayerState.atk && this.currentState == PlayerState.atk) {
    			this.stateExit(this.currentState);
    			this.stateEnter(state);
    			this.currentState = state;
    			this.PlayerAnimSwitch();
    			return;
    		}
    		else {
    		}
    		if (this.currentState != state && !this.isWaitAnimFinish && this.currentState != PlayerState.Die) {
    			let isSwitch = false;
    			if (this.currentState != null) {
    				for (let i = 0; i < this.stateRelationMap[this.currentState].length; i++) {
    					if (this.stateRelationMap[this.currentState][i] == state) {
    						isSwitch = true;
    						break;
    					}
    				}
    			}
    			if (isSwitch || this.currentState == null) {
    				this.stateExit(this.currentState);
    				this.stateEnter(state);
    				this.currentState = state;
    				this.PlayerAnimSwitch();
    			}
    			else {
    				this.currentState = PlayerState.Idle;
    				this.PlayerAnimSwitch();
    			}
    		}
    		else {
    		}
    	}
    	stateEnter(state) {
    		switch (state) {
    			case PlayerState.Run:
    				if (GameSystemData.GetInstance().isPlaySound) {
    				}
    				break;
    			default: break;
    		}
    	}
    	stateExit(state) {
    		switch (state) {
    			case PlayerState.Run:
    			case PlayerState.Walk:
    				this.isRunState = false;
    				break;
    			default: break;
    		}
    	}
    	PlayerAnimSwitch() {
    		for (let i = 0; i < this.animFinishArr.length; i++) {
    			if (this.currentState == this.animFinishArr[i]) {
    				this.isWaitAnimFinish = true;
    				break;
    			}
    		}
    		if (this.currentState != PlayerState.atk && this.currentState != PlayerState.Idle && !this.isTakeAtk)
    			this.isTakeAtk = true;
    		switch (this.currentState) {
    			case PlayerState.Idle:
    				if (this.isYetAtk == false)
    					this.isYetAtk = true;
    				this.playerAnim.crossFade('Idle', 0.05, 0, 0);
    				this.character.move(new Laya.Vector3(0, 0, 0));
    				if (this.sceneManager.gamePanel != null && this.sceneManager.gamePanel.isAddSpeed) {
    					this.sceneManager.gamePanel.isAddSpeed = false;
    					this.moveSpeed = PlayerData.GetInstance().walkSpeed;
    				}
    				break;
    			case PlayerState.Walk:
    				this.playerAnim.crossFade(('Walk'), 0.05, 0, 0);
    				break;
    			case PlayerState.Run:
    				this.playerAnim.crossFade(('Run'), 0.05, 0, 0);
    				break;
    			case PlayerState.atk:
    				this.isTakeAtk = false;
    				Laya.timer.once(this.atkCD * 1000, this, () => { this.isTakeAtk = true; });
    				this.isYetAtk = false;
    				this.playerAnim.crossFade(('Atk_1'), 0.02, 0, 0);
    				break;
    			case PlayerState.Down_Idle:
    				this.playerAnim.crossFade('Down_Idle', 0.05, 0, 0);
    				this.character.move(new Laya.Vector3(0, 0, 0));
    				console.log('下蹲动画');
    				break;
    			case PlayerState.Down_Walk:
    				this.playerAnim.crossFade('Down_Walk', 0.05, 0, 0);
    				console.log('下蹲动画');
    				break;
    			case PlayerState.Hit:
    				this.playerAnim.crossFade('Hit', 0.05, 0, 0);
    				break;
    			case PlayerState.Die:
    				this.playerAnim.crossFade('Die', 0.05, 0, 0);
    				console.log('====Die====');
    				break;
    			default:
    				console.log("error:未知状态：" + this.currentState);
    				break;
    		}
    	}
    	playerWeaponSwitch() {
    	}
    	SetAutoMove(pos, isMoveTo3Dplatfrom) {
    		if (this.aStar != null && this.isTakeAtk && !this.isWaitAnimFinish) {
    			this.isMove = false;
    			this.isAutoMoveTo3Dplatfrom = isMoveTo3Dplatfrom;
    			this.wayEnd.transform.position = new Laya.Vector3(pos.x, this.playerPos.transform.position.y, pos.z);
    			this.UpdateEndPoint();
    			this.isAutoMove = true;
    		}
    	}
    	AutoMove() {
    		if (this.isAutoMove && this.aStar.isfinish) {
    			if (this.path_index < 0) {
    				this.path_index = this.aStar.runPath.length - 1;
    				this.playerPos.transform.lookAt(new Laya.Vector3(this.aStar.runPath[this.path_index].x, 0, this.aStar.runPath[this.path_index].z), new Laya.Vector3(0, 1, 0), false);
    			}
    			if (Laya.Vector3.distance(this.playerPos.transform.position, this.aStar.runPath[this.path_index]) <= 0.3 && this.path_index > 0) {
    				this.path_index--;
    				this.playerPos.transform.lookAt(new Laya.Vector3(this.aStar.runPath[this.path_index].x, 0, this.aStar.runPath[this.path_index].z), new Laya.Vector3(0, 1, 0), false);
    			}
    			if (this.isAutoMoveTo3Dplatfrom)
    				this.autoMoveEndDis = 2;
    			else
    				this.autoMoveEndDis = 0.5;
    			if (Laya.Vector3.distance(this.playerPos.transform.position, this.aStar.runPath[0]) > this.autoMoveEndDis) {
    				this.playerPos.transform.translate(new Laya.Vector3(0, 0, -((Laya.timer.delta / 1000) * this.moveSpeed)), true);
    				this.PlayerStateSwitch(PlayerState.Run);
    			}
    			else {
    				this.PlayerStateSwitch(PlayerState.Idle);
    				this.isMove = true;
    				if (this.isAutoMoveTo3Dplatfrom) {
    					this.isAutoMove = false;
    					this.isAutoMoveTo3Dplatfrom = false;
    				}
    			}
    		}
    	}
    	UpdateEndPoint() {
    		if (this.recordEndPos != null && Laya.Vector3.distance(this.wayEnd.transform.position, this.recordEndPos) >= 1) {
    			let isOk = this.aStar.StartAstarPathfinding(this.playerPos, this.wayEnd);
    			if (!isOk) {
    				console.log('寻路点无法到达');
    				this.isMove = true;
    				this.isAutoMove = false;
    				return;
    			}
    			this.recordEndPos = this.wayEnd.transform.position.clone();
    			this.path_index = -1;
    		}
    	}
    	onTriggerEnter(t) {
    		this.Prop3DTriggerEnter(t);
    	}
    	onTriggerExit(t) {
    		this.Prop3DTriggerExit(t);
    		if (t.owner.name == 'House') {
    			this.isInHouse = false;
    		}
    	}
    	Prop3DTriggerEnter(t) {
    		if (t.owner.getComponent(EnemyBase)) {
    			CommandBuffer_Outline.GetInstance().RemoveCommandBuffer_Outline();
    			if (InsManager.GetInstance()._SceneManager.gamePanel.change_bt.visible)
    				return;
    			InsManager.GetInstance()._SceneManager.gamePanel.eat_bt.visible = true;
    			CommandBuffer_Outline.GetInstance().AddCommandBuffet_Outline(t.owner.getChildAt(0).getChildAt(1));
    			this.currentMonster = t.owner.getComponent(EnemyBase);
    			if (Laya.Browser.onAndroid) {
    				if (this.currentMonster) {
    					let blinnPhongMaterial = this.currentMonster.owner.getChildAt(0).getChildAt(1).skinnedMeshRenderer.material;
    					blinnPhongMaterial._Color = new Laya.Vector4(1, 1, 1, 0);
    				}
    				let blinnPhongMaterial = t.owner.getChildAt(0).getChildAt(1).skinnedMeshRenderer.material;
    				blinnPhongMaterial._Color = new Laya.Vector4(255 / 255, 112 / 255, 0 / 255, 0);
    			}
    		}
    		if (t.owner.parent == InsManager.GetInstance()._SceneManager.propParent) {
    			SoundsManager.PlaySounds(PathData.sound_eatProp);
    			InsManager.GetInstance()._SceneManager.CreateEffect(PathData.prop_prefabs_path, this.owner.transform.position);
    			if (t.owner.name == "AtkProp") {
    				InsManager.GetInstance()._SceneManager.CreateEffect(PathData.atk_prefabs_path, this.owner.transform.position);
    				var addValue = this.atkValue * .3;
    				var currentMonsterType = this.monsterType;
    				this.atkValue += addValue;
    				InsManager.GetInstance()._UIManager.ShowGameToast('12秒内攻击力增加', ToastType.Game);
    				Laya.timer.once(12000, this, () => {
    					InsManager.GetInstance()._SceneManager.atkEffect.active = false;
    					if (currentMonsterType != this.monsterType) {
    						console.log("已进化");
    						return;
    					}
    					this.atkValue -= addValue;
    				});
    			}
    			else if (t.owner.name == "DefenseProp") {
    				var addValue = this.defense * .3;
    				var currentMonsterType = this.monsterType;
    				this.defense += addValue;
    				InsManager.GetInstance()._SceneManager.CreateEffect(PathData.de_prefabs_path, this.owner.transform.position);
    				InsManager.GetInstance()._UIManager.ShowGameToast('12秒内防御力增加', ToastType.Game);
    				Laya.timer.once(12000, this, () => {
    					InsManager.GetInstance()._SceneManager.deEffect.active = false;
    					if (currentMonsterType != this.monsterType) {
    						console.log("已进化");
    						return;
    					}
    					this.defense -= addValue;
    				});
    			}
    			else if (t.owner.name == "HpProp") {
    				InsManager.GetInstance()._SceneManager.CreateEffect(PathData.hp_prefabs_path, this.owner.transform.position);
    				InsManager.GetInstance()._DataUpdateManager.SetHpData(Math.floor(MonsterData[this.monsterType].hpValue * 0.3));
    				InsManager.GetInstance()._UIManager.ShowGameToast('血量 +' + Math.floor(MonsterData[this.monsterType].hpValue * 0.3), ToastType.Game);
    			}
    			else if (t.owner.name == "ExProp") {
    				InsManager.GetInstance()._SceneManager.CreateEffect(PathData.ex_prefabs_path, this.owner.transform.position);
    				InsManager.GetInstance()._DataUpdateManager.UpdateExpValue(Math.floor(MonsterData[this.monsterType].ex * .5));
    				EventManager._Instance.Dispatch_Event(PathData.EVENT_UpdateExProgress, null);
    				InsManager.GetInstance()._UIManager.ShowGameToast('吞噬经验 +' + Math.floor(MonsterData[this.monsterType].ex * .5), ToastType.Game);
    			}
    			t.owner.active = false;
    			Laya.timer.once(20000, this, () => { t.owner.active = true; });
    		}
    		if (t.owner.parent.name == "EnemyBornPoints") {
    			InsManager.GetInstance()._SceneManager.MonsterBorn(t.owner.name);
    		}
    	}
    	Prop3DTriggerExit(t) {
    		InsManager.GetInstance()._SceneManager.gamePanel.eat_bt.visible = false;
    		CommandBuffer_Outline.GetInstance().RemoveCommandBuffer_Outline();
    		if (this.currentMonster && Laya.Browser.onAndroid) {
    			let blinnPhongMaterial = this.currentMonster.owner.getChildAt(0).getChildAt(1).skinnedMeshRenderer.material;
    			blinnPhongMaterial._Color = new Laya.Vector4(1, 1, 1, 0);
    		}
    		this.currentMonster = null;
    	}
    	SetHp(value, isShowHitImg, isPlayHitAnim, isPlaySound) {
    		if (this.currentState == PlayerState.Die || this.isUpgrade)
    			return;
    		if (value < 0) {
    			value += Math.floor((value * (PlayerData.GetInstance().defenseValue * 0.01))) + CalculateExtend.RandomNumber(1, 3);
    			if (value >= 0)
    				value = -1;
    			InsManager.GetInstance()._UIManager.CreateTextFormSprite3DPos(Math.abs(value).toString(), this.sceneManager.gamePanel.owner, this.playerPos, [50, 100, 150, 200], [400, 600, 400], true);
    		}
    		InsManager.GetInstance()._DataUpdateManager.SetHpData(value);
    		this.equipmentCtrl.SetEquipmentHp();
    		if (PlayerData.GetInstance().hp <= 0) {
    			this.Die();
    		}
    		else {
    			this.PlayerStateSwitch(PlayerState.Hit);
    		}
    		if (isShowHitImg)
    			this.sceneManager.gamePanel.ShowHpHitImg(false);
    		if (isPlaySound) {
    			let random = Math.random() * 2;
    			if (random >= 1)
    				SoundsManager.PlaySounds(PathData.sound_playerHit_2, 1);
    			else {
    				SoundsManager.PlaySounds(PathData.sound_playerHit_2, 1);
    			}
    		}
    	}
    	InBigMap() {
    		InsManager.GetInstance()._UIManager.RemoveUIPanel_All();
    		InsManager.GetInstance()._UIManager.ShowUI(PathData.startPanel_path);
    		InsManager.GetInstance()._TimeManager.StopTimeConsuming();
    	}
    	ResurgencePlayer(isSaveData) {
    		Laya.timer.once(3500, this, () => { this.sceneManager.player.isNpcAtk = true; });
    		if (!isSaveData) {
    			CommandBuffer_Outline.GetInstance().RemoveCommandBuffer_Outline();
    			this.sceneManager.currentMapIndex = 0;
    			this.sceneManager.targetMapIndex = 0;
    			PlayerData.GetInstance().hp = 20;
    			PlayerData.GetInstance().mp = PlayerData.GetInstance().maxMp;
    			console.log("清空背包");
    		}
    		this.isMove = true;
    		this.isTakeAtk = true;
    		this.InitState(!isSaveData);
    		this.PlayerAnimSwitch();
    		this.sceneManager.gamePanel.StopHpHit();
    		this.sceneManager.gamePanel.UdatePlayerHpProgress();
    		if (isSaveData)
    			InsManager.GetInstance()._TimeManager.StartTimeConsuming();
    		InsManager.GetInstance()._DataSave.SaveGameDataAll();
    	}
    	GetPlayerLv() {
    		var lv = 0;
    		for (var i = 0; i < this.monsterType; i++) {
    			lv += MonsterData[i].UpLevel;
    		}
    		lv += Math.floor((PlayerData.GetInstance().exp - MonsterData[this.monsterType].ex) / MonsterData[this.monsterType].ex);
    		return lv + 1;
    	}
    	GetPlayerStar() {
    		return Math.floor((PlayerData.GetInstance().exp - MonsterData[this.monsterType].ex) / MonsterData[this.monsterType].ex);
    	}
    	onDisable() {
    	}
    	onDestroy() {
    		this.sceneManager.player = null;
    	}
    }

    class Wolf_Ctrl extends EnemyBase {
    	constructor() { super(); }
    	;
    	onAwake() {
    		this.stateRelationMap = [
    			[NpcState.Run, NpcState.Patrol, NpcState.Pursue, NpcState.Atk, NpcState.Hit, NpcState.Die],
    			[NpcState.Idle, NpcState.Run, NpcState.Patrol, NpcState.Hit, NpcState.Die],
    			[NpcState.Idle, NpcState.Patrol, NpcState.Pursue, NpcState.Hit, NpcState.Die],
    			[NpcState.Idle, NpcState.Run, NpcState.Pursue, NpcState.Atk, NpcState.Hit, NpcState.Die],
    			[NpcState.Idle, NpcState.Run, NpcState.Patrol, NpcState.Hit, NpcState.Die],
    			[NpcState.Idle, NpcState.Run, NpcState.Atk, NpcState.Patrol, NpcState.Pursue, NpcState.Hit, NpcState.Die],
    			[NpcState.Idle, NpcState.Run, NpcState.Atk, NpcState.Patrol, NpcState.Pursue, NpcState.Hit, NpcState.Die],
    			[],
    			[NpcState.Idle, NpcState.Run, NpcState.Atk, NpcState.Patrol, NpcState.Pursue, NpcState.Die],
    			[],
    			[],
    		];
    	}
    	onStart() {
    	}
    	Observe() {
    		if ((Laya.Vector3.distance(this.npc_Sprite3D.transform.position, this.player.transform.position) < this.alertScope && this.SquatdownAlert()) ||
    			(Laya.Vector3.distance(this.npc_Sprite3D.transform.position, this.player.transform.position) < this.alertScope) && this.player_Ctrl.currentState != PlayerState.Die) {
    			this.Pursue();
    			this.alertScope = this.init_AlertScope + 4;
    		}
    		else {
    			this.isPursue = false;
    			this.alertScope = this.init_AlertScope;
    			if (this.rStateNum < 1) {
    				this.NpcStateSwitch(this.initState);
    			}
    			else {
    				this.NpcStateSwitch(NpcState.Patrol);
    			}
    		}
    	}
    	onUpdate() {
    		if (this.currentState == NpcState.Die)
    			return;
    		this.Observe();
    		this.AutoMove();
    		this.UpdateMapIcon();
    	}
    }

    class Zombie_Ctrl extends EnemyBase {
    	constructor() { super(); }
    	;
    	onAwake() {
    		this.stateRelationMap = [
    			[NpcState.Run, NpcState.Run, NpcState.Patrol, NpcState.Pursue, NpcState.Atk, NpcState.Hit, NpcState.Die],
    			[NpcState.Idle, NpcState.Run, NpcState.Patrol, NpcState.Hit, NpcState.Die],
    			[NpcState.Idle, NpcState.Patrol, NpcState.Pursue, NpcState.Hit, NpcState.Die],
    			[NpcState.Idle, NpcState.Run, NpcState.Pursue, NpcState.Atk, NpcState.Hit, NpcState.Die],
    			[NpcState.Idle, NpcState.Run, NpcState.Patrol, NpcState.Hit, NpcState.Die],
    			[NpcState.Idle, NpcState.Run, NpcState.Atk, NpcState.Patrol, NpcState.Pursue, NpcState.Hit, NpcState.Die],
    			[NpcState.Idle, NpcState.Run, NpcState.Atk, NpcState.Hit, NpcState.Patrol, NpcState.Pursue, NpcState.Die],
    			[],
    			[NpcState.Idle, NpcState.Atk, NpcState.Patrol, NpcState.Pursue, NpcState.Die],
    			[],
    			[],
    		];
    	}
    	onStart() {
    		super.InitMonsterData();
    		Laya.timer.once(2000, this, () => { this.NpcStateSwitch(NpcState.Patrol); });
    	}
    	Observe() {
    		if (this.currentState == NpcState.Die)
    			return;
    		if (((Laya.Vector3.distance(this.npc_Sprite3D.transform.position, this.player.transform.position) > this.alertScope) || this.player_Ctrl.currentState == PlayerState.Die || !this.isAtkPlayer))
    			this.isHitFound = false;
    		if (this.isHitFound) {
    			this.Pursue();
    		}
    		else {
    			this.isPursue = false;
    			this.NpcStateSwitch(NpcState.Patrol);
    		}
    	}
    	onUpdate() {
    		if (this.currentState == NpcState.Die || this.npc_Sprite3D == null)
    			return;
    		this.Observe();
    		this.AutoMove();
    		this.UpdateMapIcon();
    	}
    }

    class Consumables extends PropBase {
    	constructor(propID) {
    		super();
    		this.hp = 0;
    		this.mp = 0;
    		this.hungerDegrees = 0;
    		this.moistrue = 0;
    		let index = this.GetPropData(propID, ConsumablesData);
    		this.propID = propID;
    		this.name = ConsumablesData[index].name;
    		this.message = ConsumablesData[index].tip;
    		this.skin = ConsumablesData[index].skin;
    		this.propType = ConsumablesData[index].propType;
    		this.maxCount = ConsumablesData[index].maxCount;
    		this.hp = ConsumablesData[index].hp;
    		this.mp = ConsumablesData[index].mp;
    		this.hungerDegrees = ConsumablesData[index].hungerDegrees;
    		this.moistrue = ConsumablesData[index].moistrue;
    		this.getText = ConsumablesData[index].getText;
    		this.sPrice = ConsumablesData[index].sPrice;
    	}
    }

    class Equipment extends PropBase {
    	constructor(propID) {
    		super();
    		this.atk = 0;
    		this.englishName = "";
    		this.defense = 0;
    		this.gasDefense = 0;
    		this.runSpeed = 0;
    		this.atkSpeed = 0;
    		this.equipmentType = null;
    		this.hpValue = 100;
    		this.expend = 5;
    		let index = this.GetPropData(propID, EquipmentData);
    		this.propID = propID;
    		this.englishName = EquipmentData[index].englishName;
    		this.equipmentType = EquipmentData[index].equipmentType;
    		this.name = EquipmentData[index].name;
    		this.hpValue = EquipmentData[index].hpValue;
    		this.message = EquipmentData[index].tip;
    		this.skin = EquipmentData[index].skin;
    		this.propType = EquipmentData[index].propType;
    		this.maxCount = EquipmentData[index].maxCount;
    		this.atk = EquipmentData[index].atk;
    		this.defense = EquipmentData[index].defense;
    		this.gasDefense = EquipmentData[index].gasDefense;
    		this.runSpeed = EquipmentData[index].runSpeed;
    		this.atkSpeed = EquipmentData[index].atkSpeed;
    		this.getText = EquipmentData[index].getText;
    		this.expend = EquipmentData[index].expend;
    	}
    }

    class Material extends PropBase {
    	constructor(propID) {
    		super();
    		let index = this.GetPropData(propID, MaterialData);
    		this.propID = propID;
    		this.name = MaterialData[index].name;
    		this.message = MaterialData[index].tip;
    		this.skin = MaterialData[index].skin;
    		this.maxCount = MaterialData[index].maxCount;
    		this.propType = MaterialData[index].propType;
    		this.getText = MaterialData[index].getText;
    		this.sPrice = MaterialData[index].sPrice;
    	}
    }

    class Building extends PropBase {
    	constructor(propID) {
    		super();
    		this.sprite3D_path = "";
    		this.englishName = '';
    		this.roleType = null;
    		let index = this.GetPropData(propID, BuildingData);
    		this.propID = BuildingData[index].propID;
    		this.propType = BuildingData[index].propType;
    		this.sprite3D_path = BuildingData[index].sprite3D_path;
    		this.name = BuildingData[index].name;
    		this.skin = BuildingData[index].skin;
    		this.message = BuildingData[index].tip;
    		this.maxCount = BuildingData[index].maxCount;
    		this.getText = BuildingData[index].getText;
    		this.roleType = BuildingData[index].roleType;
    		for (let i = 0; i < Get3DPropData.length; i++) {
    			if (this.propID == Get3DPropData[i].propID) {
    				this.englishName = Get3DPropData[i].englishName;
    			}
    		}
    	}
    }

    class MissionPropData {
    	constructor() {
    		this.propID = null;
    		this.count = null;
    		this.getType = null;
    	}
    }

    class Platfrom3DKnapsackData extends KnapsackSaveData {
    	constructor() {
    		super(...arguments);
    		this.lateForgeTimeSecondArr = [0, 0, 0, 0];
    		this.unLockArr = [true, false, false, false];
    		this.hp = 0;
    	}
    }

    class KnapsackManager {
    	constructor() {
    		this.Knapsack_PlayerPocket = null;
    		this.Knapsack_EquipmentColumn = null;
    		this.Knapsack_Mail = null;
    	}
    	InitGetPlayerKnapsack() {
    		this.Knapsack_PlayerPocket = this.FindKnapsackData(PathData.Knapsack_PlayerPocket, PropData.GetInstance().knapsackData);
    		this.Knapsack_EquipmentColumn = this.FindKnapsackData(PathData.Knapsack_EquipmentColumn, PropData.GetInstance().knapsackData);
    		this.Knapsack_Mail = this.FindKnapsackData(PathData.Knapsack_Mail, PropData.GetInstance().knapsackData);
    		if (this.Knapsack_EquipmentColumn.propDataArr[0].prop == null) {
    			this.AddPropData(this.Knapsack_EquipmentColumn, PropID.Fist, 1, null);
    			this.AddPropData(this.Knapsack_EquipmentColumn, PropID.SMYH, 1, null);
    		}
    	}
    	CreateKnapsack(knapsackType, name, knapsackDataArr, Container3D) {
    		let id = this.GetKnapsackID(knapsackDataArr);
    		for (let i = 0; i < knapsackDataArr.length; i++) {
    			if (knapsackDataArr[i].id == id) {
    				console.log("已存在具有相同的 id ：" + id);
    				return null;
    			}
    		}
    		let kd = null;
    		if (knapsackType == KnapsackType.ForgeList)
    			kd = new Platfrom3DKnapsackData();
    		else
    			kd = new KnapsackSaveData();
    		kd.knapsackType = knapsackType;
    		kd.id = id;
    		if (name != "" && name != null && name != undefined)
    			kd.name = name;
    		else
    			kd.name = KnapsackTypeData[knapsackType].name;
    		if (Container3D != null && Container3D != undefined)
    			kd.container3D = Container3D;
    		kd.sumRow = KnapsackTypeData[knapsackType].row;
    		kd.maxRow = KnapsackTypeData[knapsackType].maxRow;
    		kd.lineNum = KnapsackTypeData[knapsackType].line;
    		for (let i = 0; i < (kd.sumRow * kd.lineNum); i++) {
    			kd.propDataArr.push(new PropSaveData(0, i, null));
    		}
    		knapsackDataArr.push(kd);
    		InsManager.GetInstance()._DataSave.SaveGameData(PathData.PropData);
    		return kd;
    	}
    	ClearKnapsackPropData(knapsackdata) {
    		if (knapsackdata == null || knapsackdata == undefined)
    			console.error("error: knapsack data is null ！");
    		for (let i = 0; i < knapsackdata.propDataArr.length; i++) {
    			if (knapsackdata.propDataArr[i].prop != null)
    				this.ClearPropSaveData(knapsackdata.propDataArr[i]);
    		}
    	}
    	IsKnapsackOwnProp(knapsackSaveData) {
    		for (let i = 0; i < knapsackSaveData.propDataArr.length; i++) {
    			if (knapsackSaveData.propDataArr[i].prop != null) {
    				return true;
    			}
    		}
    		return false;
    	}
    	ExpandKnapsackline() {
    		if (this.Knapsack_PlayerPocket.sumRow >= LifeData.knapsackMaxRow) {
    			InsManager.GetInstance()._UIManager.ShowGameToast('背包解锁格数已达到上限数量', ToastType.Game);
    			return;
    		}
    		this.Knapsack_PlayerPocket.sumRow++;
    		console.log(this.Knapsack_PlayerPocket.sumRow >= 3, this.Knapsack_PlayerPocket.sumRow < LifeData.knapsackMaxRow, this.Knapsack_PlayerPocket.maxRow <= this.Knapsack_PlayerPocket.sumRow);
    		if (this.Knapsack_PlayerPocket.sumRow >= 3 && this.Knapsack_PlayerPocket.sumRow < LifeData.knapsackMaxRow && this.Knapsack_PlayerPocket.maxRow <= this.Knapsack_PlayerPocket.sumRow)
    			this.Knapsack_PlayerPocket.maxRow = this.Knapsack_PlayerPocket.sumRow + 1;
    		for (let i = 0; i < this.Knapsack_PlayerPocket.lineNum; i++) {
    			this.Knapsack_PlayerPocket.propDataArr.push(new PropSaveData(0, 0, null));
    			this.Knapsack_PlayerPocket.propDataArr[this.Knapsack_PlayerPocket.propDataArr.length - 1].index = this.Knapsack_PlayerPocket.propDataArr.length - 1;
    		}
    		InsManager.GetInstance()._UIManager.ShowPopoutPanel(PopoutPanelType.ShowImg, '背包格数+5', PathData.icon_path + 'icon_e_beibao.png');
    		InsManager.GetInstance()._DataSave.SaveGameData(PathData.PropData);
    	}
    	DeleteKnapsack(id, knapsackDataArr) {
    		for (let i = 0; i < knapsackDataArr.length; i++) {
    			if (knapsackDataArr[i].id == id) {
    				knapsackDataArr.splice(i, 1);
    				return true;
    			}
    		}
    		console.log("没有找到背包：" + id);
    		return false;
    	}
    	FindKnapsackData(id_name, knapsackDataArr) {
    		if (id_name === null || id_name === "") {
    			console.log(id_name === null, id_name === "");
    			console.log("无效 ID:" + id_name);
    			return null;
    		}
    		let knapsackData = null;
    		for (let i = 0; i < knapsackDataArr.length; i++) {
    			if (knapsackDataArr[i].name == id_name || knapsackDataArr[i].id == id_name) {
    				knapsackData = knapsackDataArr[i];
    				break;
    			}
    		}
    		if (knapsackData == null)
    			console.log("未能找到背包：" + id_name);
    		return knapsackData;
    	}
    	GetKnapsackID(knapsackDataArr) {
    		let knapsackID = PropData.GetInstance().knapsackID += 1;
    		return knapsackID;
    	}
    	AddPropData(knapsackdata, propID, count, getType) {
    		let pd = null;
    		for (let i = 0; i < knapsackdata.propDataArr.length; i++) {
    			if (knapsackdata.propDataArr[i].prop != null && knapsackdata.propDataArr[i].prop.propID == propID) {
    				if ((knapsackdata.propDataArr[i].Count + count) <= knapsackdata.propDataArr[i].prop.maxCount) {
    					knapsackdata.propDataArr[i].Count += count;
    					pd = knapsackdata.propDataArr[i];
    					break;
    				}
    			}
    		}
    		if (pd == null) {
    			let index = -1;
    			for (let i = 0; i < knapsackdata.propDataArr.length; i++) {
    				if (knapsackdata.propDataArr[i].prop == null && index < 0) {
    					index = i;
    					break;
    				}
    			}
    			if (index >= 0 && pd == null) {
    				let prop = this.GetPropData(propID);
    				prop.getType = getType;
    				pd = new PropSaveData(count, index, prop);
    				knapsackdata.propDataArr[index] = pd;
    			}
    		}
    		if (pd != null) {
    			EventManager._Instance.Dispatch_Event(PathData.EVENT_UPDATEGAMEPANELSPTBUTTON, '更新游戏界面道具补充按钮');
    			if (knapsackdata.id == this.Knapsack_PlayerPocket.id) {
    				EventManager._Instance.Dispatch_Event(PathData.Event_HINTPOINT, ['knapsack_bt', true]);
    				this.SavePlayerPropData(pd.prop.propID, count, getType);
    				if (pd.prop.propID.toString()[0] == '4') {
    					let kpDataArr = InsManager.GetInstance()._knapsackManager.IsContainsNullItem([InsManager.GetInstance()._knapsackManager.Knapsack_EquipmentColumn]);
    					if (kpDataArr != null && InsManager.GetInstance()._UIManager.owner.getChildByName(PathData.knapsackPanel_path) == null) {
    						InsManager.GetInstance()._knapsackManager.ExchangePropData(InsManager.GetInstance()._knapsackManager.Knapsack_PlayerPocket, pd.index, InsManager.GetInstance()._knapsackManager.Knapsack_EquipmentColumn, kpDataArr[1]);
    						pd = InsManager.GetInstance()._knapsackManager.Knapsack_EquipmentColumn.propDataArr[kpDataArr[1]];
    						pd.prop.isNew = false;
    						InsManager.GetInstance()._UIManager.ShowGameToast('武器已自动装备', ToastType.Hint);
    					}
    					else {
    						if (InsManager.GetInstance()._UIManager.owner.getChildByName(PathData.knapsackPanel_path) == null)
    							InsManager.GetInstance()._UIManager.ShowGameToast('装备栏已满,请手动装备武器', ToastType.Hint);
    					}
    				}
    				if (pd != null)
    					pd.prop.getType = null;
    			}
    		}
    		return pd;
    	}
    	AwardProp(propID, count, closeCallback, isShowOutpop, getype) {
    		let knapsackData = InsManager.GetInstance()._knapsackManager.IsPlayerKpImpletion(propID, 1);
    		if (knapsackData == null) {
    			InsManager.GetInstance()._knapsackManager.AddPropInMail([propID], [count]);
    			InsManager.GetInstance()._UIManager.ShowGameToast("奖励已发放到邮箱", ToastType.Hint);
    		}
    		else {
    			let propData = this.AddPropData(knapsackData, propID, count, getype);
    			if (isShowOutpop)
    				InsManager.GetInstance()._UIManager.ShowPopoutPanel(PopoutPanelType.ShowImg, propData.prop.name + " x" + count.toString(), (PathData.icon_path + propData.prop.skin), null, closeCallback);
    		}
    	}
    	RemovePropData(knapsackdata, propData) {
    		for (let i = 0; i < knapsackdata.propDataArr.length; i++) {
    			if (knapsackdata.propDataArr[i].index == propData.index && knapsackdata.propDataArr[i].prop.propID == propData.prop.propID) {
    				this.ClearPropSaveData(knapsackdata.propDataArr[i]);
    				InsManager.GetInstance()._DataSave.SaveGameData(PathData.PropData);
    				break;
    			}
    		}
    	}
    	ExchangePropData(knapsackDataA, indexA, knapsackDataB, indexB) {
    		let playerProp = null;
    		let otherProp = null;
    		let playerKnapsack = null;
    		let playerIndex = 0;
    		let otherKnapsack = null;
    		let otherIndex = 0;
    		if ((knapsackDataA.id == this.Knapsack_PlayerPocket.id) || (knapsackDataB.id == this.Knapsack_PlayerPocket.id) ||
    			(knapsackDataA == this.Knapsack_EquipmentColumn || knapsackDataB == this.Knapsack_EquipmentColumn) || (knapsackDataA.id == knapsackDataB.id) || (knapsackDataA.knapsackType == KnapsackType.Box || knapsackDataB.knapsackType == KnapsackType.Box) ||
    			(knapsackDataA.knapsackType == KnapsackType.ForgeList || knapsackDataB.knapsackType == KnapsackType.ForgeList)) {
    			if (knapsackDataA == this.Knapsack_EquipmentColumn || knapsackDataB == this.Knapsack_EquipmentColumn)
    				console.log("是装备界面");
    			if (knapsackDataA.id == knapsackDataB.id) {
    			}
    		}
    		else {
    			if (knapsackDataA.id == this.Knapsack_PlayerPocket.id) {
    				playerProp = new PropSaveData(knapsackDataA.propDataArr[indexA].Count, knapsackDataA.propDataArr[indexA].index, knapsackDataA.propDataArr[indexA].prop);
    				otherProp = new PropSaveData(knapsackDataB.propDataArr[indexB].Count, knapsackDataB.propDataArr[indexB].index, knapsackDataB.propDataArr[indexB].prop);
    				playerKnapsack = knapsackDataA;
    				playerIndex = indexA;
    				otherKnapsack = knapsackDataB;
    				otherIndex = indexB;
    			}
    			else {
    				if (knapsackDataA.propDataArr[indexA].prop != null)
    					otherProp = new PropSaveData(knapsackDataA.propDataArr[indexA].Count, knapsackDataA.propDataArr[indexA].index, knapsackDataA.propDataArr[indexA].prop);
    				playerProp = new PropSaveData(0, 0, null);
    				if (knapsackDataB.propDataArr[indexB].prop != null)
    					playerProp.prop = InsManager.GetInstance()._knapsackManager.GetPropData(knapsackDataB.propDataArr[indexB].prop.propID);
    				playerProp = knapsackDataB.propDataArr[indexB];
    				playerKnapsack = knapsackDataB;
    				playerIndex = indexB;
    				otherKnapsack = knapsackDataA;
    				otherIndex = indexA;
    			}
    			if (playerKnapsack.id != this.Knapsack_PlayerPocket.id)
    				console.error("找到的玩家背包是错误的：", playerKnapsack);
    		}
    		if (knapsackDataB.propDataArr[indexB].prop != null && knapsackDataA.propDataArr[indexA].prop.propID == knapsackDataB.propDataArr[indexB].prop.propID &&
    			knapsackDataA.propDataArr[indexA].Count + knapsackDataB.propDataArr[indexB].Count <= knapsackDataB.propDataArr[indexB].prop.maxCount) {
    			knapsackDataB.propDataArr[indexB].Count += knapsackDataA.propDataArr[indexA].Count;
    			this.ClearPropSaveData(knapsackDataA.propDataArr[indexA]);
    		}
    		else {
    			let tempPropData = new PropSaveData(0, 0, null);
    			tempPropData.Count = knapsackDataA.propDataArr[indexA].Count;
    			tempPropData.prop = knapsackDataA.propDataArr[indexA].prop;
    			knapsackDataA.propDataArr[indexA].Count = knapsackDataB.propDataArr[indexB].Count;
    			knapsackDataA.propDataArr[indexA].prop = knapsackDataB.propDataArr[indexB].prop;
    			knapsackDataB.propDataArr[indexB].Count = tempPropData.Count;
    			knapsackDataB.propDataArr[indexB].prop = tempPropData.prop;
    		}
    		if (playerKnapsack != null) {
    			if (playerProp.prop != null) {
    				InsManager.GetInstance()._knapsackManager.SavePlayerPropData(playerKnapsack.propDataArr[playerIndex].prop.propID, playerProp.Count, playerProp.prop.getType);
    				playerProp.prop.getType = null;
    			}
    		}
    	}
    	PutinKnapsackAllProp(takeOutKd, putinKd) {
    		if (putinKd.sumRow <= 0)
    			return;
    		for (let i = takeOutKd.propDataArr.length - 1; i >= 0; i--) {
    			if (takeOutKd.propDataArr[i].prop != null && this.IsImpletion(putinKd, takeOutKd.propDataArr[i].prop.propID, takeOutKd.propDataArr[i].Count)) {
    				this.AddPropData(putinKd, takeOutKd.propDataArr[i].prop.propID, takeOutKd.propDataArr[i].Count, takeOutKd.propDataArr[i].prop.getType);
    				this.ClearPropSaveData(takeOutKd.propDataArr[i]);
    			}
    		}
    		if (this.IsHasNullGrid(this.Knapsack_PlayerPocket) == false) {
    			if (!InsManager.GetInstance()._DataSave.isOpenAd)
    				InsManager.GetInstance()._UIManager.ShowGameToast('背包空间不足！', ToastType.Hint);
    			else
    				RewardsManager.GetInstance().OpenRewardsBag(4);
    		}
    	}
    	PutinKnapsackSpecificProp(takeOutKd, putinKd) {
    		if (putinKd.sumRow <= 0)
    			return;
    		for (let i = takeOutKd.propDataArr.length - 1; i >= 0; i--) {
    			if (takeOutKd.propDataArr[i].prop != null && (takeOutKd.propDataArr[i].prop.propType == PropType.Consumables || takeOutKd.propDataArr[i].prop.propType == PropType.Material) && this.IsImpletion(putinKd, takeOutKd.propDataArr[i].prop.propID, takeOutKd.propDataArr[i].Count)) {
    				this.AddPropData(putinKd, takeOutKd.propDataArr[i].prop.propID, takeOutKd.propDataArr[i].Count, takeOutKd.propDataArr[i].prop.getType);
    				this.ClearPropSaveData(takeOutKd.propDataArr[i]);
    			}
    		}
    	}
    	ClearUpPlayerKnapsackProp() {
    		for (let i = 0; i < this.Knapsack_PlayerPocket.propDataArr.length; i++) {
    			if (this.Knapsack_PlayerPocket.propDataArr[i] != undefined && this.Knapsack_PlayerPocket.propDataArr[i] != null && this.Knapsack_PlayerPocket.propDataArr[i].prop != null) {
    				let propSaveData = new PropSaveData(this.Knapsack_PlayerPocket.propDataArr[i].Count, this.Knapsack_PlayerPocket.propDataArr[i].index, this.Knapsack_PlayerPocket.propDataArr[i].prop);
    				this.ClearPropSaveData(this.Knapsack_PlayerPocket.propDataArr[i]);
    				let propBase = this.AddPropData(this.Knapsack_PlayerPocket, propSaveData.prop.propID, propSaveData.Count, propSaveData.prop.getType);
    				if (propBase != null)
    					propBase.prop.isNew = propSaveData.prop.isNew;
    			}
    		}
    	}
    	IsImpletion(knapsackdata, propID, count) {
    		let pd = null;
    		let index = -1;
    		for (let i = 0; i < knapsackdata.propDataArr.length; i++) {
    			if (knapsackdata.propDataArr[i].prop != null && knapsackdata.propDataArr[i].prop.propID == propID) {
    				if ((knapsackdata.propDataArr[i].Count + count) <= knapsackdata.propDataArr[i].prop.maxCount) {
    					pd = knapsackdata.propDataArr[i];
    					break;
    				}
    			}
    			if (knapsackdata.propDataArr[i].prop == null && index < 0 && pd == null) {
    				index = i;
    			}
    		}
    		if (pd != null || index > -1)
    			return true;
    		else
    			return false;
    	}
    	IsHasNullGrid(knapsackdata) {
    		for (let i = 0; i < knapsackdata.propDataArr.length; i++) {
    			if (knapsackdata.propDataArr[i].prop == null) {
    				return true;
    			}
    		}
    		return false;
    	}
    	IsPlayerKpImpletion(propID, count) {
    		let pocketKd = this.FindKnapsackData(PathData.Knapsack_PlayerPocket, PropData.GetInstance().knapsackData);
    		if (!this.IsImpletion(pocketKd, propID, count)) {
    			return null;
    		}
    		else {
    			return pocketKd;
    		}
    	}
    	IsContainsNullItem(knapsackdataArr) {
    		for (let i = 0; i < knapsackdataArr.length; i++) {
    			if (knapsackdataArr[i].sumRow <= 0 || knapsackdataArr[i].propDataArr.length < 0)
    				continue;
    			for (let j = 0; j < knapsackdataArr[i].propDataArr.length; j++) {
    				if (knapsackdataArr[i].propDataArr[j].prop == null) {
    					return [knapsackdataArr[i], j];
    				}
    			}
    		}
    		return null;
    	}
    	FindKnapsackTypeData(knapsackType) {
    		for (let i = 0; i < KnapsackTypeData.length; i++) {
    			if (KnapsackTypeData[i].knapsackType == knapsackType)
    				return i;
    		}
    		console.error("Error： 未能找到背包类型：" + knapsackType);
    		return -1;
    	}
    	CreateRandomPropKnapsack(knapsackType, kpName, knapsackDataArr, container3D) {
    		let kd = this.CreateKnapsack(knapsackType, kpName, knapsackDataArr, container3D);
    		console.log('创建随机道具背包');
    		for (let i = 0; i < Get3DPropData.length; i++) {
    			if (Get3DPropData[i].englishName == container3D.name) {
    				this.ExtractProp(Get3DPropData[i].name, kd);
    				break;
    			}
    		}
    		return kd;
    	}
    	ExtractProp(name, kd) {
    		console.log('抽取道具');
    		let index = null;
    		let propArr = [];
    		let propCount = [];
    		if (name == '资源箱' || name == '行李箱')
    			name = '箱子';
    		for (let i = 0; i < DropItemConfigs.length; i++) {
    			if (DropItemConfigs[i].name == name) {
    				index = i;
    				break;
    			}
    		}
    		if (index != null) {
    			for (let i = 0; i < DropItemConfigs[index].count; i++) {
    				for (let j = 0; j < DropItemConfigs[index].prop.length; j++) {
    					let random = CalculateExtend.RandomNumber(1, 100);
    					let isExist = false;
    					if (propArr.length > 0) {
    						for (let k = 0; k < propArr.length; k++) {
    							if (propArr[k] == DropItemConfigs[index].prop[j])
    								isExist = true;
    						}
    					}
    					if (DropItemConfigs[index].probability[j] >= random && isExist == false) {
    						propArr.push(DropItemConfigs[index].prop[j]);
    						propCount.push(CalculateExtend.RandomNumber(1, DropItemConfigs[index].maxCount[j]));
    						break;
    					}
    				}
    			}
    		}
    		else {
    			console.log('传入的' + name + "是无效的");
    		}
    		if (propArr.length > 0) {
    			for (let i = 0; i < propArr.length; i++) {
    				this.AddPropData(kd, propArr[i], propCount[i], MissionType.MoveEndPosTask);
    			}
    		}
    		return propArr;
    	}
    	FindKnapsackContainer3D(sprite3D, knapsackDataArr) {
    		let kd = null;
    		for (let i = 0; i < knapsackDataArr.length; i++) {
    			if (knapsackDataArr[i].container3D != null) {
    				if (knapsackDataArr[i].container3D.name == sprite3D.name &&
    					Laya.Vector3.equals(sprite3D.transform.position, knapsackDataArr[i].container3D.position) &&
    					InsManager.GetInstance()._SceneManager.gameScene.name == knapsackDataArr[i].container3D.sceneNname) {
    					kd = knapsackDataArr[i];
    				}
    			}
    		}
    		return kd;
    	}
    	ClearPropSaveData(propSaveData) {
    		propSaveData.Count = 0;
    		propSaveData.prop = null;
    	}
    	GetPropData(propID) {
    		let prop = null;
    		let str = propID + '';
    		let initial = str[0];
    		switch (initial) {
    			case PathData.weaponType:
    				prop = new Weapon(propID);
    				prop.isNew = true;
    				break;
    			case PathData.equipmentType:
    				prop = new Equipment(propID);
    				prop.isNew = true;
    				break;
    			case PathData.consumablesType:
    				prop = new Consumables(propID);
    				break;
    			case PathData.materialType:
    				prop = new Material(propID);
    				break;
    			case PathData.bulidingType:
    				prop = new Building(propID);
    				break;
    			default:
    				console.error("不知道是啥：" + propID);
    				break;
    		}
    		return prop;
    	}
    	GetProp3DChineseName(englishName) {
    		for (let i = 0; i < Get3DPropData.length; i++) {
    			if (Get3DPropData[i].englishName == englishName) {
    				return Get3DPropData[i].name;
    			}
    		}
    		console.error('传入的英文名字无效：' + englishName);
    		return null;
    	}
    	GetPlayerKnapsackProp(propID) {
    		let kpArr = this.GetPlayerPropKnapsackArr();
    		for (let i = 0; i < kpArr.length; i++) {
    			for (let j = 0; j < kpArr[i].propDataArr.length; j++) {
    				if (kpArr[i].propDataArr[j].prop != null) {
    					if (kpArr[i].propDataArr[j].prop.propID == propID)
    						return kpArr[i].propDataArr[j];
    				}
    			}
    		}
    		return null;
    	}
    	GetPossessPropCount(kpDataArr, propID) {
    		let propCount = 0;
    		for (let i = 0; i < kpDataArr.length; i++) {
    			for (let j = 0; j < kpDataArr[i].propDataArr.length; j++) {
    				if (kpDataArr[i].propDataArr[j].prop != null) {
    					if (kpDataArr[i].propDataArr[j].prop.propID == propID)
    						propCount += kpDataArr[i].propDataArr[j].Count;
    				}
    			}
    		}
    		return propCount;
    	}
    	IsPlayerPossessPropCountS(propIDArr, propCountArr) {
    		let kpArr = this.GetPlayerPropKnapsackArr();
    		for (let i = 0; i < propIDArr.length; i++) {
    			if (this.GetPossessPropCount(kpArr, propIDArr[i]) < propCountArr[i]) {
    				return false;
    			}
    			else {
    			}
    		}
    		return true;
    	}
    	GetLackPropCountS(propIDArr, propCountArr) {
    		let kpArr = this.GetPlayerPropKnapsackArr();
    		for (let i = 0; i < propIDArr.length; i++) {
    			if (this.GetPossessPropCount(kpArr, propIDArr[i]) < propCountArr[i]) {
    				return propIDArr[i];
    			}
    			else {
    			}
    		}
    		return null;
    	}
    	ReducePlayerKnapsackPropCount(propIDArr, propCountArr) {
    		if (!this.IsPlayerPossessPropCountS(propIDArr, propCountArr)) {
    			console.error('不够减少');
    			return false;
    		}
    		;
    		let playerKnapsackArr = this.GetPlayerPropKnapsackArr();
    		for (let i = 0; i < propIDArr.length; i++) {
    			for (let j = 0; j < playerKnapsackArr.length; j++) {
    				for (let k = 0; k < playerKnapsackArr[j].propDataArr.length; k++) {
    					if (playerKnapsackArr[j].propDataArr[k].prop != null && propCountArr[i] > 0) {
    						if (playerKnapsackArr[j].propDataArr[k].prop.propID == propIDArr[i]) {
    							let propCount = playerKnapsackArr[j].propDataArr[k].Count;
    							playerKnapsackArr[j].propDataArr[k].Count -= propCountArr[i];
    							propCountArr[i] -= propCount;
    							if (playerKnapsackArr[j].propDataArr[k].Count <= 0)
    								this.ClearPropSaveData(playerKnapsackArr[j].propDataArr[k]);
    						}
    					}
    					if (propCountArr[i] <= 0) {
    						break;
    					}
    				}
    				if (propCountArr[i] <= 0) {
    					break;
    				}
    			}
    		}
    		return true;
    	}
    	ReducePropTypeAll(propIDArr) {
    		let playerKnapsackArr = this.GetPlayerPropKnapsackArr();
    		for (let i = 0; i < propIDArr.length; i++) {
    			for (let j = 0; j < playerKnapsackArr.length; j++) {
    				for (let k = 0; k < playerKnapsackArr[j].propDataArr.length; k++) {
    					if (playerKnapsackArr[j].propDataArr[k].prop != null) {
    						if (playerKnapsackArr[j].propDataArr[k].prop.propID == propIDArr[i]) {
    							this.ClearPropSaveData(playerKnapsackArr[j].propDataArr[k]);
    						}
    					}
    				}
    			}
    		}
    	}
    	GetPropIndex(propID, knapsackData) {
    		for (let i = 0; i < knapsackData.propDataArr.length; i++) {
    			if (knapsackData.propDataArr[i].prop.propID == propID) {
    				return i;
    			}
    		}
    		return -1;
    	}
    	GetPlayerPropKnapsackArr() {
    		let kpArr = [];
    		let kp_pocket = this.FindKnapsackData(PathData.Knapsack_PlayerPocket, PropData.GetInstance().knapsackData);
    		let kp_equipment = this.FindKnapsackData(PathData.Knapsack_EquipmentColumn, PropData.GetInstance().knapsackData);
    		kpArr.push(kp_pocket);
    		kpArr.push(kp_equipment);
    		return kpArr;
    	}
    	IsExistNewHintProp() {
    		for (let i = 0; i < this.Knapsack_PlayerPocket.propDataArr.length; i++) {
    			if (this.Knapsack_PlayerPocket.propDataArr[i].prop != null && this.Knapsack_PlayerPocket.propDataArr[i].prop.isNew)
    				return true;
    		}
    		return false;
    	}
    	AddPropInMail(propIDArr, PropcountArr) {
    		let mail_knapsack = InsManager.GetInstance()._knapsackManager.FindKnapsackData(PathData.Knapsack_Mail, PropData.GetInstance().knapsackData);
    		for (let i = 0; i < propIDArr.length; i++) {
    			let prop = InsManager.GetInstance()._knapsackManager.GetPropData(propIDArr[i]);
    			let propSaveData = new PropSaveData(PropcountArr[i], mail_knapsack.propDataArr.length, prop);
    			mail_knapsack.propDataArr.push(propSaveData);
    		}
    		EventManager._Instance.Dispatch_Event(PathData.Event_HINTPOINT, ['shop_bt', true]);
    		EventManager._Instance.Dispatch_Event(PathData.Event_HINTPOINT, ['mail_bt', true]);
    		InsManager.GetInstance()._DataSave.SaveGameData(PathData.PropData);
    	}
    	RemovePropInMail(index) {
    		let mail_knapsack = InsManager.GetInstance()._knapsackManager.FindKnapsackData(PathData.Knapsack_Mail, PropData.GetInstance().knapsackData);
    		if (mail_knapsack.propDataArr.length > index) {
    			mail_knapsack.propDataArr.splice(index, 1);
    			EventManager._Instance.Dispatch_Event(PathData.Event_HINTPOINT, ['mail_bt', false]);
    		}
    	}
    	SavePlayerPropData(propID, count, getType) {
    		if (getType != null) {
    			let isHas = false;
    			for (let i = 0; i < PropData.GetInstance().propCountArr.length; i++) {
    				if (PropData.GetInstance().propCountArr[i].propID == propID && PropData.GetInstance().propCountArr[i].getType == getType) {
    					PropData.GetInstance().propCountArr[i].count += count;
    					isHas = true;
    				}
    			}
    			if (!isHas) {
    				let missionPropData = new MissionPropData();
    				missionPropData.count = count;
    				missionPropData.getType = getType;
    				missionPropData.propID = propID;
    				PropData.GetInstance().propCountArr.push(missionPropData);
    			}
    			InsManager.GetInstance()._MissionManager.CurrentMissionPropMonitor(propID, getType);
    			InsManager.GetInstance()._DataSave.SaveGameData(PathData.PropData);
    		}
    	}
    	IsOwnProp(propID) {
    		for (let i = 0; i < PropData.GetInstance().propCountArr.length; i++) {
    			if (PropData.GetInstance().propCountArr[i].propID == propID) {
    				return false;
    			}
    		}
    		return true;
    	}
    	OwnPropCount(propID, getType) {
    		for (let i = 0; i < PropData.GetInstance().propCountArr.length; i++) {
    			if (PropData.GetInstance().propCountArr[i].propID == propID && PropData.GetInstance().propCountArr[i].getType == getType) {
    				return PropData.GetInstance().propCountArr[i].count;
    			}
    		}
    		return 0;
    	}
    	GetProp3DID(englishName) {
    		let prop3DID = null;
    		for (let i = 0; i < Get3DPropData.length; i++) {
    			if (Get3DPropData[i].englishName == englishName) {
    				prop3DID = Get3DPropData[i].prop3DID;
    				break;
    			}
    		}
    		return prop3DID;
    	}
    	GetRecoverProp(type) {
    		if (type == 'Hp') {
    			for (let i = 0; i < this.Knapsack_PlayerPocket.propDataArr.length; i++) {
    				if (this.Knapsack_PlayerPocket.propDataArr[i].prop != null) {
    					let propBase = this.GetPropData(this.Knapsack_PlayerPocket.propDataArr[i].prop.propID);
    					if (propBase.hp != null && propBase.hp != undefined && propBase.hp > 0)
    						return propBase;
    				}
    			}
    		}
    		if (type == 'Mp') {
    			for (let i = 0; i < this.Knapsack_PlayerPocket.propDataArr.length; i++) {
    				if (this.Knapsack_PlayerPocket.propDataArr[i].prop != null) {
    					let propBase = this.GetPropData(this.Knapsack_PlayerPocket.propDataArr[i].prop.propID);
    					if (propBase.mp != null && propBase.mp != undefined && propBase.mp > 0)
    						return propBase;
    				}
    			}
    		}
    		return null;
    	}
    	ClosePlayerKnapsack() {
    		InsManager.GetInstance()._knapsackManager.ClearKnapsackPropData(InsManager.GetInstance()._knapsackManager.FindKnapsackData(PathData.Knapsack_EquipmentColumn, PropData.GetInstance().knapsackData));
    		InsManager.GetInstance()._knapsackManager.ClearKnapsackPropData(InsManager.GetInstance()._knapsackManager.FindKnapsackData(PathData.Knapsack_PlayerPocket, PropData.GetInstance().knapsackData));
    	}
    	InitPlayerKnapsackData() {
    		InsManager.GetInstance()._knapsackManager.CreateKnapsack(KnapsackType.Pocket, PathData.Knapsack_PlayerPocket, PropData.GetInstance().knapsackData);
    		InsManager.GetInstance()._knapsackManager.CreateKnapsack(KnapsackType.EquipmentColumn, PathData.Knapsack_EquipmentColumn, PropData.GetInstance().knapsackData);
    		InsManager.GetInstance()._knapsackManager.CreateKnapsack(KnapsackType.Mail, PathData.Knapsack_Mail, PropData.GetInstance().knapsackData);
    		this.InitGetPlayerKnapsack();
    	}
    }

    class DataUpdateManager {
    	UpdateCoin(addCount) {
    		PlayerData.GetInstance().coin += addCount;
    		if (PlayerData.GetInstance().coin > 999999)
    			PlayerData.GetInstance().coin = 999999;
    		InsManager.GetInstance()._DataSave.SaveGameData(PathData.PlayerData);
    		EventManager._Instance.Dispatch_Event(PathData.EVENT_UPDATECOIN, addCount);
    	}
    	SetHpData(value) {
    		PlayerData.GetInstance().hp += value;
    		if (PlayerData.GetInstance().hp < 0)
    			PlayerData.GetInstance().hp = 0;
    		if (PlayerData.GetInstance().hp > PlayerData.GetInstance().maxHp)
    			PlayerData.GetInstance().hp = PlayerData.GetInstance().maxHp;
    		EventManager._Instance.Dispatch_Event(PathData.EVENT_SETPLAYERHP, PlayerData.GetInstance().hp);
    		InsManager.GetInstance()._DataSave.SaveGameData(PathData.PlayerData);
    	}
    	SetMpData(value) {
    		PlayerData.GetInstance().mp += value;
    		if (PlayerData.GetInstance().mp > PlayerData.GetInstance().maxMp)
    			PlayerData.GetInstance().mp = PlayerData.GetInstance().maxMp;
    		if (PlayerData.GetInstance().mp < 0)
    			PlayerData.GetInstance().mp = 0;
    		EventManager._Instance.Dispatch_Event(PathData.EVENT_SETPLAYERMP, PlayerData.GetInstance().mp);
    		InsManager.GetInstance()._DataSave.SaveGameData(PathData.PlayerData);
    	}
    	SetHungerDegreesData(value) {
    		PlayerData.GetInstance().hungerDegrees += value;
    		if (PlayerData.GetInstance().hungerDegrees > 100)
    			PlayerData.GetInstance().hungerDegrees = 100;
    		if (PlayerData.GetInstance().hungerDegrees < 0)
    			PlayerData.GetInstance().hungerDegrees = 0;
    		EventManager._Instance.Dispatch_Event(PathData.EVENT_UPDATELIFEPROPERTYLABEL, [PlayerData.GetInstance().hungerDegrees, PlayerData.GetInstance().moistrue]);
    		InsManager.GetInstance()._DataSave.SaveGameData(PathData.PlayerData);
    	}
    	SetMoistrueData(value) {
    		PlayerData.GetInstance().moistrue += value;
    		if (PlayerData.GetInstance().moistrue > 100)
    			PlayerData.GetInstance().moistrue = 100;
    		if (PlayerData.GetInstance().moistrue < 0)
    			PlayerData.GetInstance().moistrue = 0;
    		EventManager._Instance.Dispatch_Event(PathData.EVENT_UPDATELIFEPROPERTYLABEL, [PlayerData.GetInstance().hungerDegrees, PlayerData.GetInstance().moistrue]);
    		InsManager.GetInstance()._DataSave.SaveGameData(PathData.PlayerData);
    	}
    	UpdateExpValue(value) {
    		PlayerData.GetInstance().exp += value;
    		InsManager.GetInstance()._DataSave.SaveGameData(PathData.PlayerData);
    	}
    	SetExpValue(value) {
    		PlayerData.GetInstance().exp = value;
    		InsManager.GetInstance()._DataSave.SaveGameData(PathData.PlayerData);
    	}
    	SetPlayerLv() {
    		PlayerData.GetInstance().lv++;
    		InsManager.GetInstance()._DataSave.SaveGameData(PathData.PlayerData);
    	}
    	ResetPlayerData(hpValue) {
    		PlayerData.GetInstance().maxHp = hpValue;
    		PlayerData.GetInstance().hp = hpValue;
    		EventManager._Instance.Dispatch_Event(PathData.EVENT_SETPLAYERHP, PlayerData.GetInstance().hp);
    		InsManager.GetInstance()._DataSave.SaveGameData(PathData.PlayerData);
    	}
    	ResetPlayerLifeData() {
    		PlayerData.GetInstance().hp = PlayerData.GetInstance().maxHp;
    		PlayerData.GetInstance().mp = PlayerData.GetInstance().maxMp;
    		PlayerData.GetInstance().moistrue = PlayerData.GetInstance().moistrue = 100;
    		PlayerData.GetInstance().hungerDegrees = PlayerData.GetInstance().hungerDegrees = 100;
    		PlayerData.GetInstance().existTime = 0;
    	}
    }

    class MissionPanel_Ctrl extends UI_Ctrl {
    	constructor() {
    		super();
    		this.missionList = null;
    		this.missionData = MainMissionData;
    		this.ulockArr = [];
    		this.indetail_panel = null;
    		this.listMaxIndex = 0;
    		this.missionIDArr = [];
    	}
    	onAwake() {
    		super.onAwake();
    		this.view["bg/close_bt"].on(Laya.Event.CLICK, this, this.OnCloseClick);
    		this.indetail_panel = this.view["indetail_panel"];
    		this.missionList = this.view["bg/missionList"];
    		this.ulockArr = GameSystemData.GetInstance().amMission;
    		this.missionData = MainMissionData;
    	}
    	onEnable() {
    		InsManager.GetInstance()._UIManager.OnClassFrameAnimtion(this.view["bg"], this.owner, true, 0.7);
    		this.InitView();
    	}
    	onStart() {
    		this.view["indetail_panel"].on(Laya.Event.CLICK, this, this.OnCloseIndetailPanel);
    	}
    	InitView() {
    		this.missionIDArr = [];
    		this.missionList.vScrollBarSkin = "";
    		let data = [];
    		console.log(this.ulockArr);
    		for (let i = 0; i <= this.missionData.length; i++) {
    			if (this.ulockArr[i] == 1) {
    				data.push(this.missionData[i].mission_ID);
    				this.missionIDArr.push(this.missionData[i].mission_ID);
    			}
    		}
    		for (let i = 0; i <= this.missionData.length; i++) {
    			if (this.ulockArr[i] == 0) {
    				data.push(this.missionData[i].mission_ID);
    				this.missionIDArr.push(this.missionData[i].mission_ID);
    			}
    		}
    		this.listMaxIndex = data.length;
    		this.missionList.array = data;
    		this.missionList.renderHandler = new Laya.Handler(this, this.onListRender);
    	}
    	onListRender(cell, index) {
    		if (index >= this.listMaxIndex)
    			return;
    		let m_Id = this.missionIDArr[index];
    		let item = cell.getChildAt(0);
    		let undone_label = item.getChildByName("undone_label");
    		let content = item.getChildByName("content");
    		let get_bt = item.getChildByName("get_bt");
    		let propItems = item.getChildByName("propItems");
    		let msg = item.getChildByName("msg");
    		if (this.missionData[m_Id] == undefined) {
    			console.log(this.missionData);
    			console.log(m_Id);
    		}
    		content.text = this.missionData[m_Id].tkd;
    		msg.text = this.missionData[m_Id].msg;
    		if (this.ulockArr[m_Id] == 1) {
    			get_bt.visible = true;
    			get_bt.on(Laya.Event.CLICK, this, this.OnGetAwardClick, [m_Id]);
    			undone_label.visible = false;
    		}
    		else {
    			get_bt.visible = false;
    			undone_label.visible = true;
    		}
    		if (this.missionData[m_Id].award.prop.propIDArr.length > 0) {
    			for (let i = 0; i < this.missionData[m_Id].award.prop.propIDArr.length; i++) {
    				let prop = InsManager.GetInstance()._knapsackManager.GetPropData(this.missionData[m_Id].award.prop.propIDArr[i]);
    				let pItem = propItems.getChildAt(i);
    				pItem.getChildByName("img").skin = PathData.icon_path + prop.skin;
    				pItem.getChildByName("count").text = "x" + this.missionData[m_Id].award.prop.propCountArr[i];
    				pItem.visible = true;
    			}
    		}
    		let awardCount = this.missionData[m_Id].award.prop.propIDArr.length;
    		if (this.missionData[m_Id].award.cion > 0) {
    			let pItem = propItems.getChildAt(awardCount);
    			if (pItem == null) {
    				console.error("pItem getChild index go beyond");
    			}
    			else {
    				pItem.getChildByName("img").skin = PathData.cion_icon_img;
    				pItem.getChildByName("count").text = "x" + this.missionData[m_Id].award.cion;
    				pItem.visible = true;
    				awardCount++;
    			}
    		}
    		if (this.missionData[m_Id].award.exp > 0) {
    			let pItem = propItems.getChildAt(awardCount);
    			if (pItem == null) {
    				console.error("pItem getChild index go beyond");
    			}
    			else {
    				pItem.getChildByName("img").skin = PathData.exp_icon_img;
    				pItem.getChildByName("count").text = "x" + this.missionData[m_Id].award.exp;
    				pItem.visible = true;
    				awardCount++;
    			}
    		}
    		for (let i = 0; i < propItems.numChildren; i++) {
    			if (i >= awardCount) {
    				propItems.getChildAt(i).visible = false;
    			}
    		}
    	}
    	OnPickMissionTypeClick(type) {
    		switch (type) {
    			case 0:
    				this.missionData = MainMissionData;
    				this.ulockArr = GameSystemData.GetInstance().mainMission;
    				break;
    			case 1:
    				this.missionData = MainMissionData;
    				this.ulockArr = GameSystemData.GetInstance().amMission;
    				break;
    			default: break;
    		}
    		this.InitView();
    	}
    	OpenIndetailPanel(msgStr, propID, propCount, mission_Type) {
    		let ownCount = InsManager.GetInstance()._knapsackManager.OwnPropCount(propID, mission_Type);
    		this.view["indetail_panel/bg/msg"].text = msgStr + ownCount + "/" + propCount;
    		this.indetail_panel.visible = true;
    		InsManager.GetInstance()._UIManager.OnClassFrameAnimtion(this.view["indetail_panel/bg"], (this.indetail_panel), true, 0.7);
    		console.log("打开详情");
    	}
    	OnCloseIndetailPanel() {
    		this.indetail_panel.visible = false;
    	}
    	OnPlayerAutoMoveInTarger(index) {
    		console.log("前往");
    	}
    	OnGetAwardClick(m_id) {
    		this.Stimulate_MissionAwardCall(m_id, 1);
    	}
    	OnDoubleGetAwardClick(m_id) {
    		if (Platforms.getInstance().platform == null) {
    			this.Stimulate_MissionAwardCall(m_id, 2);
    			InsManager.GetInstance()._UIManager.ShowGameToast("弹出视频激励", ToastType.Game);
    		}
    		else {
    			InsManager.GetInstance()._UIManager.ShowGameToast("显示激励视频", ToastType.Game);
    		}
    	}
    	Stimulate_MissionAwardCall(m_id, mte) {
    		InsManager.GetInstance()._UIManager.ShowAwardOutpopPanel(this.missionData[m_id].award.prop.propIDArr, this.missionData[m_id].award.prop.propCountArr, this.missionData[m_id].award.cion, this.missionData[m_id].award.exp, mte, true);
    		if (this.missionData == MainMissionData)
    			GameSystemData.GetInstance().amMission[m_id] = 2;
    		if (this.missionData == MainMissionData)
    			GameSystemData.GetInstance().mainMission[m_id] = 2;
    		GameSystemData.GetInstance().currentMissionID++;
    		EventManager._Instance.Dispatch_Event(PathData.EVENT_UPDATEGAMEMISSIONPANEL, MainMissionData[GameSystemData.GetInstance().currentMissionID]);
    		InsManager.GetInstance()._DataSave.SaveGameData(PathData.GameSystemData);
    		this.InitView();
    	}
    	OnCloseClick() {
    		InsManager.GetInstance()._UIManager.OnClassFrameAnimtion(this.view["bg"], this.owner, false, 0.7);
    	}
    	onDisable() {
    		EventManager._Instance.Dispatch_Event(PathData.Event_HINTPOINT, ['mission_bt', InsManager.GetInstance()._MissionManager.IsMissionAwardStay()]);
    		if (this.indetail_panel.visible) {
    			this.indetail_panel.visible = false;
    		}
    	}
    }

    class ResultPanel_Ctrl extends UI_Ctrl {
    	constructor() {
    		super();
    		this.recordBanner_label = null;
    		this.time_label = null;
    		this.dTime = 10;
    	}
    	onAwake() {
    		super.onAwake();
    		this.recordBanner_label = this.view["center/bg/RecordBanner/label"];
    		this.time_label = this.view["center/bg/time"];
    	}
    	onEnable() {
    		InsManager.GetInstance()._TimeManager.StopTimeConsuming();
    		this.InitView();
    	}
    	onStart() {
    		this.view["center/bg/coin_bt"].on(Laya.Event.CLICK, this, this.OnCoinBtClick);
    		this.view["center/bg/video_bt"].on(Laya.Event.CLICK, this, this.OnVideoBtClick);
    		this.view["center/bg/restart_bt"].on(Laya.Event.CLICK, this, this.OnRestartClick);
    	}
    	InitView() {
    		this.sceneManager.player.isNpcAtk = false;
    		this.dTime = 10;
    		this.recordBanner_label.text = "本次生存时间记录：" + PlayerData.GetInstance().existTime + "分钟";
    		this.time_label.text = this.dTime.toString();
    		if (InsManager.GetInstance()._DataSave.isOpenAd) {
    			this.view["center/bg/video_bt"].visible = true;
    			this.view["center/bg/coin_bt"].pos(718, 362);
    		}
    		else {
    			this.view["center/bg/video_bt"].visible = false;
    			this.view["center/bg/coin_bt"].pos(444, 362);
    		}
    		Laya.timer.loop(1000, this, this.CountDown);
    	}
    	CountDown() {
    		if (this.dTime <= 0) {
    			this.CountDownEnd();
    		}
    		else {
    			this.dTime--;
    			this.time_label.text = this.dTime.toString();
    		}
    	}
    	CountDownEnd() {
    		this.sceneManager.player.isNpcAtk = true;
    		Laya.timer.clear(this, this.CountDown);
    		InsManager.GetInstance()._UIManager.RemoveUIPanel(PathData.resultPanel_path, this.owner);
    		this.sceneManager.player.ResurgencePlayer(false);
    	}
    	OnCoinBtClick() {
    		if (PlayerData.GetInstance().coin >= LifeData.ResurgencePrice) {
    			InsManager.GetInstance()._DataUpdateManager.UpdateCoin(-LifeData.ResurgencePrice);
    			Laya.timer.clear(this, this.CountDown);
    			InsManager.GetInstance()._UIManager.RemoveUIPanel(PathData.resultPanel_path, this.owner);
    			this.sceneManager.player.ResurgencePlayer(true);
    		}
    		else {
    			InsManager.GetInstance()._UIManager.ShowGameToast('金币不足！', ToastType.Game);
    		}
    	}
    	OnRestartClick() {
    		Laya.timer.clear(this, this.CountDown);
    		InsManager.GetInstance()._UIManager.RemoveUIPanel(PathData.resultPanel_path, this.owner);
    		this.sceneManager.player.ResurgencePlayer(false);
    	}
    	OnVideoBtClick() {
    		RewardsManager.GetInstance().Rewards_PlayerResurgence(() => {
    			Laya.timer.clear(this, this.CountDown);
    			InsManager.GetInstance()._UIManager.RemoveUIPanel(PathData.resultPanel_path, this.owner);
    			this.sceneManager.player.ResurgencePlayer(true);
    		}, () => {
    			this.InitView();
    		});
    	}
    }

    class DebugPanel_Ctrl extends UI_Ctrl {
    	constructor() {
    		super();
    		this.prop_input_id = null;
    		this.hSlider = null;
    		this.hint = null;
    	}
    	onAwake() {
    		super.onAwake();
    	}
    	onStart() {
    		this.view["left_center/bg/ok_bt"].on(Laya.Event.CLICK, this, this.OnAddPropOkClick);
    		this.prop_input_id = this.view["left_center/bg/prop_input_id"];
    		this.hSlider = this.view["left_center/bg/hSlider"];
    		this.hint = this.view["left_center/bg/hint"];
    		this.view["left_center/close_bt"].on(Laya.Event.CLICK, this, () => { InsManager.GetInstance()._UIManager.RemoveUIPanel(PathData.debugPanel_path, this.owner); });
    		this.hSlider.setSlider(0, 20, 0);
    	}
    	OnAddPropOkClick() {
    		let propID = parseInt(this.prop_input_id.text);
    		let count = this.hSlider.value;
    		if (propID == null || propID == undefined) {
    			this.hint.text = "propID 转换失败：" + propID;
    			console.log("propID 转换失败：", propID);
    			return;
    		}
    		else {
    			this.hint.text = "";
    		}
    		let prop = InsManager.GetInstance()._knapsackManager.GetPropData(propID);
    		if (count > prop.maxCount) {
    			this.hint.text = "输入数量超过背包最大保存格个数";
    			return;
    		}
    		let kd_player = InsManager.GetInstance()._knapsackManager.IsPlayerKpImpletion(propID, count);
    		if (kd_player == null) {
    			this.hint.text = "背包没有足够的空间";
    			return;
    		}
    		InsManager.GetInstance()._knapsackManager.AddPropData(kd_player, propID, count, MissionType.MoveEndPosTask);
    		this.hint.text = "添加成功";
    	}
    }

    class BearBoss_Ctrl extends EnemyBase {
    	constructor() { super(); }
    	onAwake() {
    		this.stateRelationMap = [
    			[NpcState.Run, NpcState.Patrol, NpcState.Pursue, NpcState.Atk, NpcState.Roar, NpcState.Die],
    			[NpcState.Idle, NpcState.Run, NpcState.Patrol, NpcState.Roar, NpcState.Die],
    			[NpcState.Idle, NpcState.Patrol, NpcState.Pursue, NpcState.Roar, NpcState.Die],
    			[NpcState.Idle, NpcState.Run, NpcState.Pursue, NpcState.Atk, NpcState.Roar, NpcState.Hit, NpcState.Die],
    			[],
    			[NpcState.Idle, NpcState.Run, NpcState.Atk, NpcState.Patrol, NpcState.Roar, NpcState.Pursue, NpcState.Die],
    			[NpcState.Idle, NpcState.Run, NpcState.Atk, NpcState.Patrol, NpcState.Roar, NpcState.Pursue, NpcState.Die],
    			[],
    			[],
    			[],
    			[NpcState.Idle, NpcState.Walk, NpcState.Run, NpcState.Patrol, NpcState.Atk, NpcState.Pursue, NpcState.Die],
    		];
    	}
    	onStart() {
    	}
    	Observe() {
    		if ((Laya.Vector3.distance(this.npc_Sprite3D.transform.position, this.player.transform.position) < this.alertScope && this.SquatdownAlert()) ||
    			(Laya.Vector3.distance(this.npc_Sprite3D.transform.position, this.player.transform.position) < this.alertScope) && this.player_Ctrl.currentState != PlayerState.Die) {
    			this.alertScope = this.init_AlertScope + 4;
    			if (this.currentState != NpcState.Roar && this.isRoar) {
    				this.NpcStateSwitch(NpcState.Roar);
    				console.log('播放咆哮音效');
    			}
    			else {
    				if (!this.isRoar)
    					this.Pursue();
    			}
    		}
    		else {
    			this.isPursue = false;
    			this.alertScope = this.init_AlertScope;
    			if (this.rStateNum < 1) {
    				this.NpcStateSwitch(this.initState);
    			}
    			else {
    				this.NpcStateSwitch(NpcState.Patrol);
    			}
    		}
    	}
    	SetHP(value) {
    	}
    	onUpdate() {
    		if (this.currentState == NpcState.Die)
    			return;
    		this.Observe();
    		this.AutoMove();
    		this.UpdateMapIcon();
    	}
    }

    class CartoonPanel_Ctrl extends UI_Ctrl {
    	constructor() {
    		super();
    		this.ani = null;
    	}
    	onAwake() {
    		super.onAwake();
    		this.skip_label = this.view['right_buttom/skip_label'];
    	}
    	onEnable() {
    	}
    	onStart() {
    		SoundsManager.PlayBgMusic(PathData.gameSceneMusic, 0.4);
    		this.ani = this.owner['ani1'];
    		this.ani.play(0, false);
    		this.skip_label.on(Laya.Event.CLICK, this, this.OnSkip);
    		Laya.timer.once(11000, this, () => {
    			InsManager.GetInstance()._UIManager.OnClassFrameAnimtion(this.view['right_buttom/skip_label'], this.owner, false, 1.2);
    		});
    		InsManager.GetInstance()._UIManager.OnClassFrameAnimtion(this.view['right_buttom/skip_label'], this.owner, false, 1.2);
    	}
    	OnSkip() {
    		InsManager.GetInstance()._UIManager.OnClassFrameAnimtion(this.view['right_buttom/skip_label'], this.owner, false, 1.2);
    	}
    	onDisable() {
    		Laya.timer.clearAll(this);
    	}
    }

    class TTSharePanel_Ctrl extends UI_Ctrl {
    	constructor() { super(); }
    	onAwake() {
    		super.onAwake();
    	}
    	onEnable() {
    		Platforms.getInstance().isTakeRecordVideo = true;
    		InsManager.GetInstance()._UIManager.OnClassFrameAnimtion(this.view["center/bg"], this.owner, true, 0.7);
    		this.sceneManager.player.isNpcAtk = false;
    	}
    	onStart() {
    		this.view['center/bg/close_bt'].on(Laya.Event.CLICK, this, () => {
    			InsManager.GetInstance()._UIManager.OnClassFrameAnimtion(this.view["center/bg"], this.owner, false, 0.7);
    			Platforms.getInstance().isTakeRecordVideo = true;
    			Platforms.getInstance().isHasRecord = false;
    		});
    		this.view['center/bg/share_bt'].on(Laya.Event.CLICK, this, this.OnShareButtonClick);
    	}
    	OnShareButtonClick() {
    		Platforms.getInstance().onShareVideo((id) => {
    			if (id == 1) {
    				InsManager.GetInstance()._UIManager.OnClassFrameAnimtion(this.view["center/bg"], this.owner, false, 0.7);
    				InsManager.GetInstance()._MissionManager.MissionAward([PropID.bento], [5], 0, 0, () => { InsManager.GetInstance()._UIManager.ShowGameToast('录屏分享成功', ToastType.Game); }, 1, true);
    				Platforms.getInstance().isHasRecord = false;
    			}
    			else {
    				InsManager.GetInstance()._UIManager.ShowGameToast('录屏分享失败，无法获得奖励', ToastType.Game);
    			}
    		});
    	}
    	onDisable() {
    		this.sceneManager.player.isNpcAtk = true;
    	}
    }

    class Deer_Ctrl$1 extends EnemyBase {
    	constructor() { super(); }
    	;
    	onAwake() {
    		this.stateRelationMap = [
    			[NpcState.Run, NpcState.Patrol, NpcState.Pursue, NpcState.Atk, NpcState.Hit, NpcState.Die],
    			[NpcState.Idle, NpcState.Run, NpcState.Patrol, NpcState.Hit, NpcState.Die],
    			[NpcState.Idle, NpcState.Patrol, NpcState.Pursue, NpcState.Hit, NpcState.Die],
    			[],
    			[],
    			[NpcState.Idle, NpcState.Run, NpcState.Atk, NpcState.Patrol, NpcState.Pursue, NpcState.Hit, NpcState.Die],
    			[NpcState.Idle, NpcState.Run, NpcState.Atk, NpcState.Patrol, NpcState.Pursue, NpcState.Hit, NpcState.Die],
    			[],
    			[NpcState.Idle, NpcState.Run, NpcState.Atk, NpcState.Patrol, NpcState.Pursue, NpcState.Die],
    			[],
    			[],
    		];
    	}
    	onStart() {
    	}
    	Observe() {
    		if (this.isMakeAtk && this.player_Ctrl.currentState != PlayerState.Die && !this.isAtkCD && this.isMakeAtk && this.currentState != NpcState.Atk && Laya.Vector3.distance(this.npc_Sprite3D.transform.position, this.player_Ctrl.playerPos.transform.position) <= this.atkScope) {
    			this.Atk();
    			this.npc_Sprite3D.transform.lookAt(this.player_Ctrl.playerPos.transform.position, new Laya.Vector3(0, 1, 0));
    		}
    		else {
    			if (!this.isMakeAtk)
    				this.NpcStateSwitch(NpcState.Idle);
    		}
    	}
    	onUpdate() {
    		if (this.currentState == NpcState.Die)
    			return;
    		this.Observe();
    		this.UpdateMapIcon();
    	}
    }

    class Shark_Ctrl extends EnemyBase {
    	constructor() { super(); }
    	;
    	onAwake() {
    		this.stateRelationMap = [
    			[NpcState.Run, NpcState.Patrol, NpcState.Pursue, NpcState.Atk, NpcState.Hit, NpcState.Die],
    			[NpcState.Idle, NpcState.Run, NpcState.Patrol, NpcState.Hit, NpcState.Die],
    			[NpcState.Idle, NpcState.Patrol, NpcState.Pursue, NpcState.Hit, NpcState.Die],
    			[],
    			[],
    			[NpcState.Idle, NpcState.Run, NpcState.Atk, NpcState.Patrol, NpcState.Pursue, NpcState.Hit, NpcState.Die],
    			[NpcState.Idle, NpcState.Run, NpcState.Atk, NpcState.Patrol, NpcState.Pursue, NpcState.Hit, NpcState.Die],
    			[],
    			[NpcState.Idle, NpcState.Run, NpcState.Atk, NpcState.Patrol, NpcState.Pursue, NpcState.Die],
    			[],
    			[],
    		];
    	}
    	onStart() {
    	}
    	Observe() {
    		if (this.isMakeAtk && this.player_Ctrl.currentState != PlayerState.Die && !this.isAtkCD && this.isMakeAtk && this.currentState != NpcState.Atk) {
    			this.Atk();
    			this.npc_Sprite3D.transform.lookAt(this.player_Ctrl.playerPos.transform.position, new Laya.Vector3(0, 1, 0));
    		}
    		else {
    			if (!this.isMakeAtk)
    				this.NpcStateSwitch(NpcState.Idle);
    		}
    	}
    	onUpdate() {
    		if (this.currentState == NpcState.Die)
    			return;
    		this.Observe();
    		this.UpdateMapIcon();
    	}
    	Die() {
    		console.log(InsManager.GetInstance()._SceneManager.npcArr);
    		super.Die();
    		let isHasShark = false;
    		for (let i = 0; i < InsManager.GetInstance()._SceneManager.npcArr.length; i++) {
    			console.log(InsManager.GetInstance()._SceneManager.npcArr[i].name, this.owner.name);
    			if (InsManager.GetInstance()._SceneManager.npcArr[i].name == this.owner.name) {
    				isHasShark = true;
    			}
    		}
    		if (!isHasShark) {
    			InsManager.GetInstance()._SceneManager.gamePanel.CancelDynamicBanner();
    		}
    	}
    }

    class CarCtrlPanel_Ctrl extends UI_Ctrl {
    	constructor() {
    		super(...arguments);
    		this.speedTouchID = -1;
    		this.RotatedTouchID = -2;
    		this.isUpdateSpeed = true;
    		this.isUpdateRotate = true;
    	}
    	onAwake() {
    		super.onAwake();
    	}
    	onStart() {
    		this.view['left_buttom/left_bt'].on(Laya.Event.MOUSE_DOWN, this, this.onLeft);
    		this.view['left_buttom/right_bt'].on(Laya.Event.MOUSE_DOWN, this, this.onRight);
    		this.view['right_buttom/add_bt'].on(Laya.Event.MOUSE_DOWN, this, this.onAdvance);
    		this.view['right_buttom/retreat_bt'].on(Laya.Event.MOUSE_DOWN, this, this.onRetreat);
    		this.view['right_center/outCar_bt'].on(Laya.Event.CLICK, this, this.onOutCar);
    		this.view['left_buttom/top_bt'].on(Laya.Event.MOUSE_DOWN, this, this.onTop);
    		this.view['left_buttom/buttom_bt'].on(Laya.Event.MOUSE_DOWN, this, this.onButtom);
    	}
    	onEnable() {
    		Laya.stage.on(Laya.Event.MOUSE_UP, this, this.onStageUp);
    		if (CarManager.GetInstance().targetCar != null && (CarManager.GetInstance().targetCar.carType == CarType.Car_XuFu || CarManager.GetInstance().targetCar.carType == CarType.Car_FeiJI)) {
    			this.view['left_buttom/top_bt'].visible = true;
    			this.view['left_buttom/buttom_bt'].visible = true;
    		}
    		else {
    			this.view['left_buttom/top_bt'].visible = false;
    			this.view['left_buttom/buttom_bt'].visible = false;
    		}
    	}
    	onAdvance(event) {
    		if (!this.isUpdateSpeed)
    			return;
    		this.isUpdateSpeed = false;
    		this.speedTouchID = event.touchId;
    		CarManager.GetInstance().targetCar.carSpeedState = CarState.Fspeed;
    	}
    	onRetreat(event) {
    		if (!this.isUpdateSpeed)
    			return;
    		this.isUpdateSpeed = false;
    		this.speedTouchID = event.touchId;
    		CarManager.GetInstance().targetCar.carSpeedState = CarState.Rspeed;
    	}
    	onLeft(event) {
    		console.log('left', this.isUpdateRotate);
    		if (!this.isUpdateRotate)
    			return;
    		this.isUpdateRotate = false;
    		this.RotatedTouchID = event.touchId;
    		CarManager.GetInstance().targetCar.carRotateState = CarState.Left;
    	}
    	onRight(event) {
    		if (!this.isUpdateRotate)
    			return;
    		this.isUpdateRotate = false;
    		this.RotatedTouchID = event.touchId;
    		CarManager.GetInstance().targetCar.carRotateState = CarState.Right;
    	}
    	onTop(event) {
    		if (!this.isUpdateRotate)
    			return;
    		this.isUpdateRotate = false;
    		this.RotatedTouchID = event.touchId;
    		CarManager.GetInstance().targetCar.carRotateState = CarState.Top;
    	}
    	onButtom(event) {
    		if (!this.isUpdateRotate)
    			return;
    		this.isUpdateRotate = false;
    		this.RotatedTouchID = event.touchId;
    		CarManager.GetInstance().targetCar.carRotateState = CarState.Buttom;
    	}
    	onStageUp(event) {
    		if (event.touchId == this.speedTouchID) {
    			this.isUpdateSpeed = true;
    			CarManager.GetInstance().targetCar.carSpeedState = CarState.SpeedInoperation;
    			CarManager.GetInstance().targetCar.OnSpeedInoperation();
    			console.log('速度抬起');
    		}
    		if (event.touchId == this.RotatedTouchID) {
    			this.isUpdateRotate = true;
    			CarManager.GetInstance().targetCar.carRotateState = CarState.RotateInoperation;
    			console.log('旋转抬起===', this.isUpdateRotate);
    		}
    	}
    	onOutCar() {
    		if (CarManager.GetInstance().targetCar != null)
    			CarManager.GetInstance().targetCar.OutCar();
    	}
    	onKeyDown(e) {
    		switch (e.keyCode) {
    			case 65:
    				this.onLeft(e);
    				break;
    			case 68:
    				this.onRight(e);
    				break;
    			case 87:
    				this.onAdvance(e);
    				break;
    			case 83:
    				this.onRetreat(e);
    				break;
    		}
    	}
    	onKeyUp(e) {
    		switch (e.keyCode) {
    			case 65:
    			case 68:
    				this.isUpdateRotate = true;
    				CarManager.GetInstance().targetCar.carRotateState = CarState.RotateInoperation;
    				console.log('旋转抬起====================================');
    				break;
    			case 87:
    			case 83:
    				this.isUpdateSpeed = true;
    				CarManager.GetInstance().targetCar.carSpeedState = CarState.SpeedInoperation;
    				CarManager.GetInstance().targetCar.OnSpeedInoperation();
    				console.log('速度抬起');
    				break;
    		}
    	}
    	onDisable() {
    		Laya.stage.off(Laya.Event.MOUSE_UP, this, this.onStageUp);
    	}
    }

    class ComputerPanel_Ctrl extends UI_Ctrl {
    	constructor() {
    		super();
    		this.pointer = null;
    		this.moveAnim = null;
    		this.isMove = true;
    		this.mpStarBox = null;
    		this.hpStarBox = null;
    		this.hpStar = 3;
    		this.mpStar = 0;
    		this.triggerSprite3D = null;
    	}
    	onAwake() {
    		super.onAwake();
    		this.pointer = this.view['center/bg/strip/pointer'];
    		this.view['center/bg/start_bt'].on(Laya.Event.CLICK, this, this.onStartMove);
    		this.view['center/bg/close_bt'].on(Laya.Event.CLICK, this, () => { InsManager.GetInstance()._UIManager.OnClassFrameAnimtion(this.view["center/bg"], this.owner, false, 0.7); });
    		this.mpStarBox = this.view['center/bg/mp_star_box'];
    		this.hpStarBox = this.view['center/bg/hp_star_box'];
    		this.moveAnim = this.owner['move'];
    		this.InitData();
    	}
    	InitData() {
    		this.hpStar = 3;
    		this.mpStar = 0;
    		for (let i = 0; i < this.hpStarBox.numChildren; i++) {
    			this.hpStarBox.getChildAt(i).skin = PathData.game_path + 'aixin.png';
    		}
    		for (let i = 0; i < this.mpStarBox.numChildren; i++) {
    			this.mpStarBox.getChildAt(i).skin = PathData.game_path + 'xingxing_1.png';
    		}
    	}
    	onEnable() {
    		InsManager.GetInstance()._UIManager.OnClassFrameAnimtion(this.view["center/bg"], this.owner, true, 0.7);
    		this.moveAnim.play(0, true);
    	}
    	onStartMove() {
    		if (this.mpStar >= 3 || this.hpStar <= 0)
    			return;
    		if (this.isMove) {
    			if (this.pointer.x > 180 && this.pointer.x < 260) {
    				SoundsManager.PlaySounds('oky.mp3');
    				this.mpStarBox.getChildAt(this.mpStar).skin = PathData.game_path + 'xingxing.png';
    				this.mpStar++;
    				if (this.mpStar >= 3) {
    					InsManager.GetInstance()._knapsackManager.SavePlayerPropData(PropID.CrackerTask, 1, MissionType.CrackerTask);
    					InsManager.GetInstance()._UIManager.ShowGameToast('操作成功', ToastType.Game);
    					if (this.triggerSprite3D) {
    						InsManager.GetInstance()._UIManager.ClearUITrace(this.triggerSprite3D);
    						this.triggerSprite3D.removeSelf();
    					}
    					if (InsManager.GetInstance()._SceneManager.gameScene.getChildByName('MissionProp') != null && GameSystemData.GetInstance().currentMissionID == 18) {
    						let missionProp = InsManager.GetInstance()._SceneManager.gameScene.getChildByName('MissionProp');
    						for (let i = 0; i < missionProp.numChildren; i++) {
    							console.log(Laya.Vector3.distance(missionProp.getChildAt(i).transform.position, this.triggerSprite3D.transform.position));
    							if (Laya.Vector3.distance(missionProp.getChildAt(i).transform.position, this.triggerSprite3D.transform.position) < 5) {
    								missionProp.getChildAt(i).active = true;
    							}
    						}
    					}
    					else {
    						InsManager.GetInstance()._UIManager.ShowDialogPanel(['8技术不错，这是一点小意思，还请艾迪先生收下。'], () => {
    							InsManager.GetInstance()._BranchManager.SaveAchievementTask(BranchTaskType.CrackerTask, 1);
    							InsManager.GetInstance()._BranchManager.BranchAward();
    						});
    					}
    					Laya.timer.once(1500, this, () => { InsManager.GetInstance()._UIManager.RemoveUIPanel(PathData.computerPanel_path, this.owner); this.InitData(); });
    				}
    			}
    			else {
    				SoundsManager.PlaySounds('error.mp3');
    				this.hpStar--;
    				this.hpStarBox.getChildAt(this.hpStar).skin = PathData.game_path + 'aixin_1.png';
    				if (this.hpStar == 0) {
    					InsManager.GetInstance()._UIManager.ShowGameToast('操作失败，请重试！', ToastType.Game);
    					Laya.timer.once(1500, this, () => { InsManager.GetInstance()._UIManager.RemoveUIPanel(PathData.computerPanel_path, this.owner); this.InitData(); });
    				}
    			}
    		}
    		else {
    			SoundsManager.PlaySounds(PathData.sound_buttonSound);
    			this.moveAnim.play(this.moveAnim.index, true);
    			this.isMove = true;
    		}
    	}
    }

    class ChosePanel_Ctrl extends UI_Ctrl {
    	constructor() {
    		super(...arguments);
    		this.leftBtn = null;
    		this.rightBtn = null;
    		this.startBtn = null;
    		this.backBtn = null;
    		this.eggName = null;
    		this.currentIndex = 0;
    		this.eggs = null;
    	}
    	onAwake() {
    		super.onAwake();
    		this.leftBtn = this.view['btns/leftBtn'];
    		this.rightBtn = this.view['btns/rightBtn'];
    		this.startBtn = this.view['btns/startBtn'];
    		this.backBtn = this.view['btns/backBtn'];
    		this.eggName = this.view['eggNameBg'];
    		this.leftBtn.on(Laya.Event.CLICK, this, this.UpdateEggs, [-1]);
    		this.rightBtn.on(Laya.Event.CLICK, this, this.UpdateEggs, [1]);
    		this.startBtn.on(Laya.Event.CLICK, this, this.JumpScene, [DataSave.GetServerPath() + PathData.Scene3DArr_Path.BigScene]);
    		this.backBtn.on(Laya.Event.CLICK, this, () => { InsManager.GetInstance()._UIManager.ShowUI(PathData.startPanel_path).getComponent(StartPanel_Ctrl); });
    	}
    	JumpScene(sceneName) {
    		SoundsManager.PlaySounds(PathData.sound_buttonSound);
    		this.sceneManager.oldSceneName = this.sceneManager.sceneName;
    		this.sceneManager.oldScenePath = this.sceneManager.enterScenePath;
    		let startPanel = InsManager.GetInstance()._UIManager.ShowUI(PathData.startPanel_path).getComponent(StartPanel_Ctrl);
    		this.sceneManager.enterScenePath = sceneName;
    		PlayerData.GetInstance().isFirst = false;
    		GameSystemData.GetInstance().playerModelLevel = 0;
    		PlayerData.GetInstance().lv = 1;
    		GameSystemData.GetInstance().playerLV = 1;
    		PathData.player_Prefabs_path = MonsterPathData[0].path;
    		this.sceneManager.CreateRole(RoleType.Player, this.sceneManager.player.playerPos.transform.position, 0, false);
    		InsManager.GetInstance()._DataSave.SaveGameData(PathData.GameSystemData);
    		InsManager.GetInstance()._DataSave.SaveGameData(PathData.PlayerData);
    		startPanel.OnLoadGameScenePanel();
    	}
    	UpdateEggs(index) {
    		SoundsManager.PlaySounds(PathData.sound_buttonSound);
    		if (this.eggs == null)
    			this.eggs = InsManager.GetInstance()._SceneManager.baseScene.getChildByName("ChoseEgg").getChildByName("Eggs");
    		this.eggs.getChildAt(this.currentIndex).active = false;
    		this.eggName.getChildAt(this.currentIndex).visible = false;
    		this.currentIndex += index;
    		if (this.currentIndex > this.eggs.numChildren - 2)
    			this.currentIndex = 0;
    		else if (this.currentIndex < 0)
    			this.currentIndex = this.eggs.numChildren - 2;
    		this.eggs.getChildAt(this.currentIndex).active = true;
    		this.eggName.getChildAt(this.currentIndex).visible = true;
    	}
    }

    class Effect_Ctrl extends Laya.Script {
    	constructor() {
    		super(...arguments);
    		this.playerPos = null;
    		this.height = 0.5;
    	}
    	onAwake() {
    		this.playerPos = InsManager.GetInstance()._SceneManager.player.owner;
    		if (this.owner.name == "light") {
    			Laya.timer.once(1500, this, () => { this.owner.active = false; });
    		}
    		if (this.owner.name == "atkEffect" || this.owner.name == "deEffect" || this.owner.name == "eat")
    			this.height = InsManager.GetInstance()._SceneManager.player.effectPos.transform.position.y;
    	}
    	onEnable() {
    		if (this.owner.name == "atkEffect" || this.owner.name == "deEffect") {
    			var scale = 1 + (InsManager.GetInstance()._SceneManager.player.monsterType / 18);
    			this.owner.transform.localScale = new Laya.Vector3(scale, scale, scale);
    		}
    	}
    	onUpdate() {
    		this.owner.transform.position = new Laya.Vector3(this.playerPos.transform.position.x, this.height, this.playerPos.transform.position.z);
    	}
    	onDisable() {
    		if (this.owner.name == "atkEffect" || this.owner.name == "deEffect") {
    			this.owner.transform.localScale = new Laya.Vector3(1, 1, 1);
    		}
    	}
    }

    function RegUIClass() {
    	Laya.ClassUtils.regClass("StartPanel_Ctrl", StartPanel_Ctrl);
    	Laya.ClassUtils.regClass("SigninPanel_Ctrl", SigninPanel_Ctrl);
    	Laya.ClassUtils.regClass("SettingPanel_Ctrl", SettingPanel_Ctrl);
    	Laya.ClassUtils.regClass("GamePanel_Ctrl", GamePanel_Ctrl);
    	Laya.ClassUtils.regClass("KnapsackPanel_Ctrl", KnapsackPanel_Ctrl);
    	Laya.ClassUtils.regClass("PopoutPanel_Ctrl", PopoutPanel_Ctrl);
    	Laya.ClassUtils.regClass("MissionPanel_Ctrl", MissionPanel_Ctrl);
    	Laya.ClassUtils.regClass("ShopPanel_Ctrl", ShopPanel_Ctrl);
    	Laya.ClassUtils.regClass("DialogPanel_Ctrl", DialogPanel_Ctrl);
    	Laya.ClassUtils.regClass("ResultPanel_Ctrl", ResultPanel_Ctrl);
    	Laya.ClassUtils.regClass("Toast_Ctrl", Toast_Ctrl);
    	Laya.ClassUtils.regClass("DebugPanel_Ctrl", DebugPanel_Ctrl);
    	Laya.ClassUtils.regClass("AwardPopoutPanel_Ctrl", AwardPopoutPanel_Ctrl);
    	Laya.ClassUtils.regClass("DialogBannerPanel_Ctrl", DialogBannerPanel_Ctrl);
    	Laya.ClassUtils.regClass("TipsPanel_Ctrl", TipsPanel_Ctrl);
    	Laya.ClassUtils.regClass("ScreenPanel_Ctrl", ScreenPanel_Ctrl);
    	Laya.ClassUtils.regClass("RewardsPopoutPanel_Ctrl", RewardsPopoutPanel_Ctrl);
    	Laya.ClassUtils.regClass("CartoonPanel_Ctrl", CartoonPanel_Ctrl);
    	Laya.ClassUtils.regClass("VivoNativeAdPanel_Ctrl", VivoNativeAdPanel_Ctrl);
    	Laya.ClassUtils.regClass("TTSharePanel_Ctrl", TTSharePanel_Ctrl);
    	Laya.ClassUtils.regClass("LoadCirclePanel_Ctrl", LoadCirclePanel_Ctrl);
    	Laya.ClassUtils.regClass("CarCtrlPanel_Ctrl", CarCtrlPanel_Ctrl);
    	Laya.ClassUtils.regClass("ComputerPanel_Ctrl", ComputerPanel_Ctrl);
    	Laya.ClassUtils.regClass("ChosePanel_Ctrl", ChosePanel_Ctrl);
    	Laya.ClassUtils.regClass("UpgradePanel_Ctrl", UpgradePanel_Ctrl);
    	Laya.ClassUtils.regClass("Effect_Ctrl", Effect_Ctrl);
    	Laya.ClassUtils.regClass("Player_Ctrl", Player_Ctrl);
    	Laya.ClassUtils.regClass("Turtle_Ctrl", Deer_Ctrl$1);
    	Laya.ClassUtils.regClass("Deer_Ctrl", Deer_Ctrl);
    	Laya.ClassUtils.regClass("Wolf_Ctrl", Wolf_Ctrl);
    	Laya.ClassUtils.regClass("Zombie_Ctrl", Zombie_Ctrl);
    	Laya.ClassUtils.regClass("Shark_Ctrl", Shark_Ctrl);
    	Laya.ClassUtils.regClass("BearBoss_Ctrl", BearBoss_Ctrl);
    	if (InsManager.GetInstance()._DataSave == null)
    		InsManager.GetInstance()._DataSave = new DataSave();
    	if (InsManager.GetInstance()._knapsackManager == null)
    		InsManager.GetInstance()._knapsackManager = new KnapsackManager();
    	if (InsManager.GetInstance()._DataUpdateManager == null)
    		InsManager.GetInstance()._DataUpdateManager = new DataUpdateManager();
    }

    class SelfRotate extends Laya.Script {
    	constructor() {
    		super();
    		this.sprite3D = null;
    	}
    	onStart() {
    		this.sprite3D = this.owner;
    	}
    	onUpdate() {
    		this.sprite3D.transform.rotate(new Laya.Vector3(0, 0, 0.03), true);
    	}
    }

    class SceneManager extends Laya.Script {
    	constructor() {
    		super();
    		this.prop3D = null;
    		this.ForgePlatform = null;
    		this.shipPos = null;
    		this.scene1_Npc = null;
    		this.house = null;
    		this.savePropBox = null;
    		this.arrow = null;
    		this.mainTaskBoard = null;
    		this.xiEr = null;
    		this.cutTreeEffect_big = null;
    		this.cutTreeEffect_samll = null;
    		this.miningEffect = null;
    		this.someSmallEffect = null;
    		this.eatEffect = null;
    		this.propEffect = null;
    		this.lightEffect = null;
    		this.hpEffect = null;
    		this.exEffect = null;
    		this.deEffect = null;
    		this.atkEffect = null;
    		this.build = null;
    		this.VendingMachine = null;
    		this.baseScene = null;
    		this.gameScene = null;
    		this.bigScene = null;
    		this.player = null;
    		this.gamePanel = null;
    		this.carPanel = null;
    		this.cameraCtrl = null;
    		this.npcList = null;
    		this.enemyList = null;
    		this.mK4Box = null;
    		this.awardBox = null;
    		this.way = null;
    		this.AutoGetPropAssetArr = [];
    		this.AllGetPropAssetArr = [];
    		this.platfrom3DArr = [];
    		this.npcArr = [];
    		this.currentSceneType = null;
    		this.scenePath = "";
    		this.sceneName = '';
    		this.oldSceneName = '';
    		this.oldScenePath = '';
    		this.currentMapIndex = 0;
    		this.targetMapIndex = 0;
    		this.enterScenePath = DataSave.GetServerPath() + PathData.Scene3DArr_Path.BigScene;
    		this.screenCenterPos = new Laya.Vector2(0, 0);
    		this.monsterBornPoints = [];
    		this.propParent = null;
    		this.map = [];
    		this.posV3 = null;
    		this.eulerV3 = null;
    		this.minDis3DProp = null;
    		this.platformSigboardImgArr = [];
    		this.platformSprite3DArr = [];
    		this.index = 0;
    		this.count = 0;
    	}
    	;
    	onAwake() {
    		if (InsManager.GetInstance()._SceneManager == null)
    			InsManager.GetInstance()._SceneManager = this;
    		this.aStar = new AStar();
    	}
    	LoadGameScene(scenePath, onLoadFinished) {
    		if (this.scenePath != "" && this.scenePath != scenePath) {
    		}
    		this.scenePath = scenePath;
    		console.log('新场景路径：', this.scenePath);
    		if (this.baseScene.getChildByName(this.sceneName) != null) {
    			this.baseScene.getChildByName(this.sceneName).active = true;
    			onLoadFinished();
    		}
    		else {
    			ResManager._Instance.PreLoadRes_Pkg({
    				sprite3D: [this.scenePath],
    			}, null, onLoadFinished);
    		}
    		this.baseScene.physicsSimulation.fixedTimeStep = 1 / 120;
    	}
    	EnterStartPanel() {
    		if (this.baseScene == null) {
    			this.BaseSceneInit();
    		}
    		if (InsManager.GetInstance()._DataSave.isSkipGuide) {
    		}
    		InsManager.GetInstance()._UIManager.ShowUI("StartPanel");
    		Platforms.getInstance().ReportAnalytics(PathData.TTEvent_EnterStartPanel, { 'count': 1 });
    	}
    	EnterGameScene() {
    		this.PlayGameSceneMusic();
    		console.log("进入场景");
    		InsManager.GetInstance()._UIManager.RemoveUIPanel_All();
    		this.gamePanel = InsManager.GetInstance()._UIManager.ShowUI("GamePanel").getComponent(GamePanel_Ctrl);
    		this.player.joystick = this.gamePanel.joystick;
    		if (this.scenePath == DataSave.GetServerPath() + PathData.Scene3DArr_Path.ChoseScene) {
    			InsManager.GetInstance()._UIManager.ShowUI("ChosePanel");
    			this.gamePanel.owner.visible = false;
    		}
    		else
    			this.gamePanel.owner.visible = true;
    		this.GameSceneInit();
    		InsManager.GetInstance()._TimeManager.StartTimeConsuming();
    		Platforms.getInstance().ReportAnalytics(PathData.TTEvent_MapEnterCount, { 'map': this.currentMapIndex });
    	}
    	BaseSceneInit() {
    		this.baseScene = ResManager._Instance.Get_Scens3D_Res(DataSave.GetServerPath() + PathData.base_scene_path);
    		Laya.stage.addChild(this.baseScene);
    		this.baseScene.zOrder = -1;
    		this.mK4Box = this.baseScene.getChildByName('MK4Box');
    		if (this.way == null)
    			this.way = this.baseScene.getChildByName("Way");
    		let pos = new Laya.Vector3(-13.2, 0, -3.8);
    		this.CreateRole(RoleType.Player, pos, 0, false);
    		PathData.player_Prefabs_path = MonsterPathData[GameSystemData.GetInstance().playerModelLevel].path;
    		this.CreateRole(RoleType.Player, this.player.playerPos.transform.position, 0, false);
    	}
    	GameSceneInit() {
    		if (this.gameScene != null && this.gameScene.name != 'Scene_1') {
    			if (this.npcList != null) {
    				if (this.npcList.numChildren > 0) {
    					for (let i = 0; i < this.npcList.numChildren; i++) {
    						this.npcList.getChildAt(i).removeSelf();
    					}
    				}
    			}
    			if (this.enemyList != null) {
    				if (this.enemyList.numChildren > 0) {
    					for (let i = 0; i < this.enemyList.numChildren; i++) {
    						this.enemyList.getChildAt(i).removeSelf();
    					}
    				}
    			}
    			this.gameScene.active = false;
    			this.gameScene = null;
    		}
    		else {
    			if (this.gameScene != null)
    				this.gameScene.active = false;
    		}
    		this.gameScene = ResManager._Instance.Get_Sprite3D_Res(this.scenePath);
    		this.gameScene.active = true;
    		this.baseScene.addChild(this.gameScene);
    		this.gameScene.transform.position = new Laya.Vector3(0, 0, 0);
    		this.npcList = this.gameScene.getChildByName('NpcList');
    		this.enemyList = this.gameScene.getChildByName('EnemyList');
    		ResManager.sources = [];
    		ResManager.checkSprite3D(this.gameScene);
    		InsManager.GetInstance()._DataSave.knapsackRamdonDataArr = [];
    		this.prop3D = this.gameScene.getChildByName("Prop3D");
    		if (this.scenePath == DataSave.GetServerPath() + PathData.Scene3DArr_Path.BigScene) {
    			this.bigScene = this.gameScene;
    			this.build = this.gameScene.getChildByName("Buliding");
    			this.VendingMachine = this.gameScene.getChildByName("VendingMachine");
    			this.CreateRole(RoleType.DongHuangTaiYi, new Laya.Vector3(104, 0, -123), 0, false, (enemy) => {
    			});
    			for (let i = 0; i < this.bigScene.getChildByName("EnemyBornPoints").numChildren; i++) {
    				this.bigScene.getChildByName("EnemyBornPoints").getChildAt(i).getComponent(Laya.PhysicsCollider).collisionGroup = PathData.bornPointCollisionLayer;
    				this.monsterBornPoints.push(this.bigScene.getChildByName("EnemyBornPoints").getChildAt(i).getComponent(Laya.PhysicsCollider));
    			}
    			this.propParent = this.bigScene.getChildByName("Props");
    		}
    		if (this.gameScene != null && this.gameScene.getChildByName('Npc') != null) {
    			let npc = this.gameScene.getChildByName('Npc');
    			if (npc.numChildren > 0) {
    				for (let i = 0; i < npc.numChildren; i++) {
    					if (npc.getChildAt(i).getComponent(Prop3D) == null) {
    						npc.getChildAt(i).addComponent(Prop3D);
    						if (npc.getChildAt(i).getChildByName('branch') != null)
    							npc.getChildAt(i).addComponent(BranchNpc_Ctrl);
    					}
    				}
    			}
    		}
    		if (this.enterScenePath == DataSave.GetServerPath() + PathData.Scene3DArr_Path.BigScene) {
    			this.gamePanel.smallMap_ctrl.bg_img.visible = true;
    			for (let i = 0; i < this.gamePanel.smallMap_ctrl.centerParent.numChildren; i++) {
    				if (this.gamePanel.smallMap_ctrl.centerParent.getChildAt(i).name == 'guide')
    					this.gamePanel.smallMap_ctrl.centerParent.getChildAt(i).visible = true;
    			}
    		}
    		else {
    			for (let i = 0; i < this.gamePanel.smallMap_ctrl.centerParent.numChildren; i++) {
    				if (this.gamePanel.smallMap_ctrl.centerParent.getChildAt(i).name == 'guide')
    					this.gamePanel.smallMap_ctrl.centerParent.getChildAt(i).visible = false;
    			}
    			this.gamePanel.smallMap_ctrl.bg_img.visible = false;
    		}
    		this.gamePanel.smallMap_ctrl.DetroyAllMapIcon();
    		this.gamePanel.OnEnterNewMap();
    		this.SceneInit(this.currentMapIndex);
    		this.PushPorp3DInPlayerAssetsArr();
    		this.SetPlatformVisible();
    		this.gamePanel.smallMap_ctrl.AddPropStaticSmallMap(this.AutoGetPropAssetArr);
    		if (this.gameScene.name == 'Scene_1') {
    			for (let i = 0; i < this.build.numChildren; i++) {
    				if (this.build.getChildAt(i).name == 'LantouJLB' || this.build.getChildAt(i).name == 'HongYueJLB' || this.build.getChildAt(i).name == 'HyJLB' || this.build.getChildAt(i).name == 'YsJLB')
    					this.gamePanel.smallMap_ctrl.AddSprite3DSmallMap(this.build.getChildAt(i), 'julebu.png');
    				if (this.build.getChildAt(i).name == 'CsZs' || this.build.getChildAt(i).name == 'Hlzs')
    					this.gamePanel.smallMap_ctrl.AddSprite3DSmallMap(this.build.getChildAt(i), 'shiyanshi.png');
    				if (this.build.getChildAt(i).name == 'Pmk')
    					this.gamePanel.smallMap_ctrl.AddSprite3DSmallMap(this.build.getChildAt(i), 'pingminku.png');
    				if (this.build.getChildAt(i).name == 'MarkHouse')
    					this.gamePanel.smallMap_ctrl.AddSprite3DSmallMap(this.build.getChildAt(i), 'npcjia.png');
    			}
    			for (let i = 0; i < this.VendingMachine.numChildren; i++) {
    				this.gamePanel.smallMap_ctrl.AddSprite3DSmallMap(this.VendingMachine.getChildAt(i), 'shangdian.png');
    			}
    			if (this.oldSceneName == '') {
    				console.log('==========大地图首次进入触发===============');
    			}
    		}
    		this.CreateRoleS();
    		CommandBuffer_Outline.GetInstance().init();
    	}
    	PushPorp3DInPlayerAssetsArr() {
    		this.AutoGetPropAssetArr = [];
    		this.AllGetPropAssetArr = [];
    	}
    	CreateRoleS() {
    	}
    	CreateRole(roleType, pos, eulerY, isEmeny, finishCall) {
    		let roleAssetPath = "";
    		let roleClassName = "";
    		switch (roleType) {
    			case RoleType.Player:
    				roleAssetPath = PathData.player_Prefabs_path;
    				roleClassName = PathData.tsName;
    				break;
    			case RoleType.XiaoXie:
    				roleAssetPath = PathData.XiaoXie_Prefabs_path;
    				break;
    			case RoleType.DaXie:
    				roleAssetPath = PathData.DaXie_Prefabs_path;
    				break;
    			case RoleType.PingFeng:
    				roleAssetPath = PathData.PingFeng_Prefabs_path;
    				break;
    			case RoleType.DiMianEr:
    				roleAssetPath = PathData.DiMianEr_Prefabs_path;
    				break;
    			case RoleType.PaoXiao:
    				roleAssetPath = PathData.PaoXiao_Prefabs_path;
    				break;
    			case RoleType.XiMuWang:
    				roleAssetPath = PathData.XiMuWang_Prefabs_path;
    				break;
    			case RoleType.DongHuangTaiYi:
    				roleAssetPath = PathData.DongHuangTaiYi_Prefabs_path;
    				break;
    			case RoleType.Fuzhu:
    				roleAssetPath = PathData.Fuzhu_Prefabs_path;
    				break;
    			case RoleType.DanKang:
    				roleAssetPath = PathData.DanKang_Prefabs_path;
    				break;
    			case RoleType.NianShow:
    				roleAssetPath = PathData.NianShow_Prefabs_path;
    				break;
    			case RoleType.KungPeng:
    				roleAssetPath = PathData.KungPeng_Prefabs_path;
    				break;
    			case RoleType.Zheng:
    				roleAssetPath = PathData.Zheng_Prefabs_path;
    				break;
    			case RoleType.B_DanKnag:
    				roleAssetPath = PathData.B_DanKnag_Prefabs_path;
    				break;
    			case RoleType.YingZhao:
    				roleAssetPath = PathData.YingZhao_Prefabs_path;
    				break;
    			case RoleType.QiongQi:
    				roleAssetPath = PathData.QiongQi_Prefabs_path;
    				break;
    			case RoleType.B_kungPeng:
    				roleAssetPath = PathData.B_kungPeng_Prefabs_path;
    				break;
    			case RoleType.B_YingZhao:
    				roleAssetPath = PathData.B_YingZhao_Prefabs_path;
    				break;
    			case RoleType.B_QiongQi:
    				roleAssetPath = PathData.B_QiongQi_Prefabs_path;
    				break;
    			default: break;
    		}
    		if (roleType != RoleType.Player)
    			roleClassName = MonsterData[roleType - 1].ts;
    		if (ResManager._Instance.Get_Sprite3D_Res(DataSave.GetServerPath() + roleAssetPath) != null) {
    			let s = this.InstanceRoleObj(roleType, roleClassName, DataSave.GetServerPath() + roleAssetPath, eulerY, pos, isEmeny);
    			if (finishCall)
    				finishCall(s);
    		}
    		else {
    			Platfrom3DCtrl.GetInstance().LoadSprite3D(DataSave.GetServerPath() + roleAssetPath, () => {
    				let s = this.InstanceRoleObj(roleType, roleClassName, DataSave.GetServerPath() + roleAssetPath, eulerY, pos, isEmeny);
    				if (finishCall)
    					finishCall(s);
    			}, false);
    		}
    	}
    	InstanceRoleObj(roleType, roleClassName, roleAssetPath, eulerY, pos, isEmeny) {
    		if (roleType != RoleType.Player)
    			roleClassName = MonsterData[roleType - 1].ts;
    		if (ResManager._Instance.Get_Sprite3D_Res(roleAssetPath) != null) {
    			let role = ResManager._Instance.Get_Sprite3D_Res(roleAssetPath);
    			if (role == null)
    				console.log("3D资源 为null :" + roleAssetPath);
    			let roleIns = Laya.Sprite3D.instantiate(role);
    			if (roleType == RoleType.Player)
    				this.baseScene.addChild(roleIns);
    			else {
    				if (isEmeny) {
    					if (MainMissionData[GameSystemData.GetInstance().currentMissionID].sceneType == SceneType.BigScene)
    						this.bigScene.getChildByName('EnemyList').addChild(roleIns);
    					else
    						this.enemyList.addChild(roleIns);
    				}
    				else {
    					if (MainMissionData[GameSystemData.GetInstance().currentMissionID].sceneType == SceneType.BigScene)
    						this.bigScene.getChildByName('NpcList').addChild(roleIns);
    					else
    						this.npcList.addChild(roleIns);
    				}
    			}
    			roleIns.transform.position = pos;
    			if (eulerY != undefined && eulerY != null)
    				roleIns.transform.localRotationEulerY = eulerY;
    			if (roleType == RoleType.Player) {
    				if (this.player == null) {
    					let roleClass = Laya.ClassUtils.getClass(roleClassName);
    					let pClass = roleIns.addComponent(roleClass);
    					this.player = pClass;
    					if (roleIns.getChildAt(0).getComponent(Laya.PhysicsCollider))
    						roleIns.getChildAt(0).getComponent(Laya.PhysicsCollider).destroy();
    					roleIns.getChildAt(0).getChildAt(0).getComponent(Laya.PhysicsCollider).destroy();
    					if (this.gamePanel)
    						this.player.joystick = this.gamePanel.joystick;
    				}
    				else {
    					roleIns.transform.position = new Laya.Vector3(0, 0, 0);
    					if (roleIns.getComponent(Laya.PhysicsCollider))
    						roleIns.getComponent(Laya.PhysicsCollider).destroy();
    					roleIns.getChildAt(0).getComponent(Laya.PhysicsCollider).destroy();
    					this.player.owner.getChildAt(0).destroy();
    					this.player.owner.addChild(roleIns);
    					this.player.UpdatePlayerNode();
    				}
    			}
    			else {
    				if (true) {
    					let roleClass = Laya.ClassUtils.getClass(roleClassName);
    					roleIns.addComponent(roleClass);
    					roleIns.getComponent(roleClass).roleType = roleType;
    					if (isEmeny) {
    						this.npcArr.push(roleIns);
    						if (roleIns.getComponent(EnemyBase) != null) {
    							let enemybase = roleIns.getComponent(EnemyBase);
    							enemybase.isAtkPlayer = isEmeny;
    						}
    					}
    				}
    			}
    			return roleIns;
    		}
    		else {
    			console.error('加载资源异常，请检查！');
    			return null;
    		}
    	}
    	CreateSoleRole(roleType, pos, eulerY, rolePropID, finishCall) {
    		let role = null;
    		let roleName = null;
    		for (let i = 0; i < Get3DPropData.length; i++) {
    			if (Get3DPropData[i].propID == rolePropID) {
    				roleName = Get3DPropData[i].englishName;
    				console.log(Get3DPropData[i].propID, rolePropID);
    				console.log(Get3DPropData[i].englishName);
    				break;
    			}
    		}
    		if (roleName != null) {
    			for (let i = 0; i < this.npcList.numChildren; i++) {
    				if (this.npcList.getChildAt(i).name == roleName) {
    					role = this.npcList.getChildAt(i);
    					break;
    				}
    			}
    		}
    		if (role != null) {
    			role.transform.position = pos;
    			role.transform.localRotationEulerY = eulerY;
    			role.active = true;
    			finishCall(role);
    		}
    		else {
    			console.log('npclist 里边没有', roleType);
    			this.CreateRole(roleType, pos, eulerY, false, finishCall);
    		}
    	}
    	CreateEffect(effectPath, pos) {
    		if (effectPath == PathData.eat_prefabs_path && this.eatEffect != null) {
    			this.eatEffect.active = false;
    			this.eatEffect.transform.position = pos;
    			this.eatEffect.active = true;
    			return;
    		}
    		if (effectPath == PathData.light_prefabs_path && this.lightEffect != null) {
    			this.lightEffect.active = false;
    			this.lightEffect.transform.position = pos;
    			this.lightEffect.active = true;
    			return;
    		}
    		if (effectPath == PathData.atk_prefabs_path && this.atkEffect != null) {
    			this.atkEffect.active = false;
    			this.atkEffect.transform.position = pos;
    			this.atkEffect.active = true;
    			return;
    		}
    		if (effectPath == PathData.hp_prefabs_path && this.hpEffect != null) {
    			this.hpEffect.active = false;
    			this.hpEffect.transform.position = pos;
    			this.hpEffect.active = true;
    			return;
    		}
    		if (effectPath == PathData.de_prefabs_path && this.deEffect != null) {
    			this.deEffect.active = false;
    			this.deEffect.transform.position = pos;
    			this.deEffect.active = true;
    			return;
    		}
    		if (effectPath == PathData.ex_prefabs_path && this.exEffect != null) {
    			this.exEffect.active = false;
    			this.exEffect.transform.position = pos;
    			this.exEffect.active = true;
    			return;
    		}
    		if (effectPath == PathData.prop_prefabs_path && this.propEffect != null) {
    			this.propEffect.active = false;
    			this.propEffect.transform.position = pos;
    			this.propEffect.active = true;
    			return;
    		}
    		var effectRes;
    		var effectSprite3D;
    		Platfrom3DCtrl.GetInstance().LoadSprite3D(DataSave.GetServerPath() + effectPath, () => {
    			effectRes = ResManager._Instance.Get_Sprite3D_Res(DataSave.GetServerPath() + effectPath);
    			effectSprite3D = Laya.Sprite3D.instantiate(effectRes);
    			if (effectPath == PathData.eat_prefabs_path)
    				this.eatEffect = effectSprite3D;
    			if (effectPath == PathData.prop_prefabs_path)
    				this.propEffect = effectSprite3D;
    			if (effectPath == PathData.light_prefabs_path)
    				this.lightEffect = effectSprite3D;
    			if (effectPath == PathData.atk_prefabs_path)
    				this.atkEffect = effectSprite3D;
    			if (effectPath == PathData.hp_prefabs_path)
    				this.hpEffect = this.hpEffect;
    			if (effectPath == PathData.ex_prefabs_path)
    				this.exEffect = effectSprite3D;
    			if (effectPath == PathData.de_prefabs_path)
    				this.deEffect = effectSprite3D;
    			this.baseScene.addChild(effectSprite3D);
    			effectSprite3D.addComponent(Effect_Ctrl);
    			effectSprite3D.transform.position = new Laya.Vector3(pos.x, 1, pos.z);
    			effectSprite3D.transform.localRotationEuler = new Laya.Vector3(0, 0, 0);
    			if (effectPath == PathData.hp_prefabs_path || effectPath == PathData.ex_prefabs_path)
    				effectSprite3D.transform.localRotationEuler = new Laya.Vector3(-90, 0, 0);
    		}, false);
    	}
    	PushScene3DResProp(root) {
    		for (var i = 0; i < root.numChildren; i++) {
    			let child = root.getChildAt(i);
    			if (child.active) {
    				for (let i = 0; i < Get3DPropData.length; i++) {
    					if (child.name == Get3DPropData[i].englishName) {
    						if (child.getComponent(Prop3D) == null)
    							child.addComponent(Prop3D);
    						if (child.getComponent(SelfRotate) == null && child.name != 'plasticDrum')
    							child.addComponent(SelfRotate);
    						let prop3D = child.getComponent(Prop3D);
    						this.AutoGetPropAssetArr.push(prop3D);
    						this.AllGetPropAssetArr.push(prop3D);
    						break;
    					}
    				}
    			}
    		}
    	}
    	RemoveScene3DResProp(sprite3D, prop3DArr) {
    		for (let i = 0; i < prop3DArr.length; i++) {
    			if (sprite3D == prop3DArr[i].node3D) {
    				if (prop3DArr[i].mapIcon_img != null)
    					prop3DArr[i].mapIcon_img.destroy();
    				prop3DArr.splice(i, 1);
    			}
    		}
    		return prop3DArr;
    	}
    	SceneInit(sceneIndex) {
    		if (this.gameScene == null) {
    			console.error("error : gameScene is null");
    			return;
    		}
    		if (sceneIndex != 0) {
    			this.platfrom3DArr = [];
    		}
    		if (this.enterScenePath == DataSave.GetServerPath() + PathData.Scene3DArr_Path.BigScene) {
    			if (this.oldSceneName != '') {
    				let outPos = this.build.getChildByName(this.oldSceneName).getChildByName('outPos');
    				this.SetPlayerInScene3D(outPos.transform.position, outPos.transform.rotationEuler);
    				InsManager.GetInstance()._knapsackManager.SavePlayerPropData(PropID.outDoor, 1, MissionType.MoveEndPosTask);
    			}
    			else {
    				this.SetPlayerInScene3D(new Laya.Vector3(100, 0, -125), new Laya.Vector3(0, 180, 0));
    			}
    		}
    		else {
    		}
    		let sceneCname = '';
    		if (InsManager.GetInstance()._DataSave.currentMapData == MapData.map_3) {
    			console.error('==================================================8888');
    		}
    		this.gamePanel.ShowGamePanelHintBox(sceneCname);
    		console.log('大地图 寻路数据', this.enterScenePath, this.currentSceneType);
    	}
    	SetPlayerInScene3D(pos, rEuler) {
    		if (NodeManager.GetInstance().GetNode(PathData.startPanel_path) == null) {
    			return;
    		}
    		if (this.gameScene == null) {
    			console.log("gameScene is Null ");
    			return;
    		}
    		this.baseScene.addChild(this.player.owner);
    		this.player.character.fallSpeed = 55;
    		this.player.InitState();
    		if (pos != null && pos != undefined)
    			this.player.playerPos.transform.position = pos;
    		if (rEuler != null && rEuler != undefined)
    			this.player.playerPos.transform.rotationEuler = new Laya.Vector3(0, rEuler.y, 0);
    		if (this.player.joystick != null)
    			this.player.joystick.self_node.rotation = this.player.CameraPoint.transform.localRotationEulerY;
    		this.player.viewMove(0, 0, 0);
    		this.player.isMove = true;
    		this.player.isInScene3D = true;
    		this.player.isNpcAtk = true;
    		this.cameraCtrl.SetCameraAngleInRightAstern();
    		if (this.posV3 == null || this.eulerV3 == null || pos != null) {
    			console.log('没有上一个保存点直接返回');
    			return;
    		}
    		;
    	}
    	MinDisGet3DPropShowCircle() {
    		if (this.minDis3DProp != null && (this.minDis3DProp != this.FindMinDis3DProp() || Laya.Vector3.distance(this.player.playerPos.transform.position, this.minDis3DProp.transform.position) >= LifeData.prop3DminDis)) {
    			if (this.minDis3DProp.getChildByName(PathData.circle) != null)
    				this.minDis3DProp.getChildByName(PathData.circle).active = false;
    			this.minDis3DProp = null;
    		}
    		this.minDis3DProp = this.FindMinDis3DProp();
    		if (this.minDis3DProp != null && this.minDis3DProp.getChildByName(PathData.circle) != null && Laya.Vector3.distance(this.player.playerPos.transform.position, this.minDis3DProp.transform.position) < LifeData.prop3DminDis) {
    			this.minDis3DProp.getChildByName(PathData.circle).active = true;
    			if (this.minDis3DProp.parent.parent.name == PathData.Prop3D)
    				this.player.targetGetNode3D = this.minDis3DProp;
    		}
    	}
    	MinDisNpcShowAtkTargetImg() {
    		if (this.npcArr.length <= 0) {
    			if (this.gamePanel.atkTarget_img.visible)
    				this.gamePanel.atkTarget_img.visible = false;
    			return;
    		}
    		let npcSprite3D = this.FindMinDisEnemy();
    		if (npcSprite3D != null && Laya.Vector3.distance(npcSprite3D.transform.position, this.player.playerPos.transform.position) < 5.6) {
    			this.gamePanel.atkTarget_img.visible = true;
    			let v4 = new Laya.Vector4(0, 0, 0, 0);
    			InsManager.GetInstance()._SceneManager.player.playerCamera.worldToViewportPoint(npcSprite3D.transform.position, v4);
    			this.gamePanel.atkTarget_img.pos(v4.x, v4.y);
    		}
    		else {
    			this.gamePanel.atkTarget_img.visible = false;
    		}
    	}
    	FindMinDis3DProp() {
    		CalculateExtend.SortMinDisFormProp3D(this.AllGetPropAssetArr, this.player.playerPos);
    		if (this.AllGetPropAssetArr.length > 0)
    			return this.AllGetPropAssetArr[0].node3D;
    		else
    			return null;
    	}
    	FindMinDisEnemy() {
    		if (this.npcArr.length > 0) {
    			CalculateExtend.SortFormMinDis(this.npcArr, this.player.playerPos);
    			return this.npcArr[0];
    		}
    		else {
    			return null;
    		}
    	}
    	Add3DPlatformSigboard() {
    		this.ClearPlatformSigboard();
    		if (this.platformSigboardImgArr.length == 0 && this.platformSprite3DArr.length > 0 && this.currentMapIndex == 0) {
    			for (let i = 0; i < this.platformSprite3DArr.length; i++) {
    				let prefab = ResManager._Instance.Get_Prefab_Res("res/UI_Prefabs/sigboard.json");
    				if (prefab === null) {
    					console.log("error: 预制体加载为 null：");
    					return;
    				}
    				let img = prefab.create();
    				this.gamePanel.spriteHand_root.addChild(img);
    				let v4 = new Laya.Vector4(0, 0, 0, 0);
    				img.name = 'sigboard';
    				this.platformSigboardImgArr.push(img);
    				let propID = null;
    				for (let j = 0; j < Get3DPropData.length; j++) {
    					if (Get3DPropData[j].englishName == InsManager.GetInstance()._SceneManager.ForgePlatform.name || Get3DPropData[j].englishName == this.platformSprite3DArr[i].name) {
    						propID = Get3DPropData[j].propID;
    						break;
    					}
    				}
    				if (propID != null) {
    					let b_prop = InsManager.GetInstance()._knapsackManager.GetPropData(propID);
    					this.UpdatePlatform3DSigboardState();
    					img.getChildByName('icon').skin = PathData.icon_path + b_prop.skin;
    					img.getChildByName('label').text = b_prop.name;
    				}
    				img.visible = false;
    				Laya.timer.once(100, this, () => {
    					InsManager.GetInstance()._SceneManager.player.playerCamera.worldToViewportPoint(this.platformSprite3DArr[i].transform.localPosition, v4);
    					img.pos(v4.x, v4.y - 40);
    					img.visible = true;
    				});
    			}
    		}
    	}
    	ClearPlatformSigboard() {
    		if (this.platformSigboardImgArr.length > 0) {
    			for (let i = 0; i < this.platformSigboardImgArr.length; i++) {
    				this.platformSigboardImgArr[i].destroy();
    			}
    			this.platformSigboardImgArr = [];
    		}
    	}
    	UpdatePlatform3DSigboardState() {
    		if (this.currentSceneType != SceneType.BigScene)
    			return;
    		if (this.platformSigboardImgArr.length > 0 && this.platformSprite3DArr.length > 0 && this.currentMapIndex == 0 && this.platformSigboardImgArr.length == this.platformSprite3DArr.length) {
    			for (let i = 0; i < this.platformSigboardImgArr.length; i++) {
    				for (let j = 0; j < PropData.GetInstance().knapsackData.length; j++) {
    					if (PropData.GetInstance().knapsackData[j].container3D != null && (PropData.GetInstance().knapsackData[j].container3D.name == this.platformSprite3DArr[i].name || PropData.GetInstance().knapsackData[j].container3D.name == this.platformSprite3DArr[i].parent.name) && Laya.Vector3.distance(PropData.GetInstance().knapsackData[j].container3D.position, this.platformSprite3DArr[i].transform.position) < 0.1) {
    						if (PropData.GetInstance().knapsackData[j].container3D.sceneNname == this.gameScene.name && InsManager.GetInstance()._knapsackManager.IsKnapsackOwnProp(PropData.GetInstance().knapsackData[j])) {
    							if (this.platformSigboardImgArr[i] != null && this.platformSigboardImgArr[i] != undefined)
    								this.platformSigboardImgArr[i].skin = PathData.game_path + 'kuang_2.png';
    						}
    						else {
    							if (this.platformSigboardImgArr[i] != null && this.platformSigboardImgArr[i] != undefined)
    								this.platformSigboardImgArr[i].skin = PathData.game_path + 'kuang_1.png';
    						}
    						break;
    					}
    				}
    			}
    		}
    	}
    	SetPlatformVisible() {
    		if (this.platformSigboardImgArr.length > 0) {
    			for (let i = 0; i < this.platformSigboardImgArr.length; i++) {
    				if (this.currentMapIndex == 0)
    					this.platformSigboardImgArr[i].visible = true;
    				else
    					this.platformSigboardImgArr[i].visible = false;
    			}
    		}
    	}
    	Update3DPlatformSigboardPos() {
    		if (this.platformSigboardImgArr.length > 0 && this.platformSprite3DArr.length > 0 && this.currentMapIndex == 0) {
    			for (let i = 0; i < this.platformSigboardImgArr.length; i++) {
    				let ms = this.platformSprite3DArr[i];
    				if (ms == null || ms == undefined) {
    					console.log(this.platformSprite3DArr[i].name + "装换网格组件失败");
    					return;
    				}
    				if (ms.meshRenderer.isRender) {
    					let v4 = new Laya.Vector4(0, 0, 0, 0);
    					InsManager.GetInstance()._SceneManager.player.playerCamera.worldToViewportPoint(this.platformSprite3DArr[i].transform.localPosition, v4);
    					this.platformSigboardImgArr[i].pos(v4.x, v4.y - 40);
    					this.platformSigboardImgArr[i].visible = true;
    				}
    				else {
    					this.platformSigboardImgArr[i].visible = false;
    				}
    			}
    		}
    	}
    	ShowHideEffect(pos, id) {
    	}
    	ShowMakeEffect(pos, id) {
    	}
    	PlayGameSceneMusic() {
    		SoundsManager.PlayBgMusic(PathData.gameSceneMusic, 0.4);
    	}
    	MonsterBorn(pointName) {
    		for (var i = 0; i < MonsterBornData.length; i++) {
    			if (MonsterBornData[i].name == pointName) {
    				Laya.timer.loop(500, this, this.LoopCreate, [i]);
    			}
    		}
    	}
    	LoopCreate(i) {
    		if (this.count < MonsterBornData[i].monsterNums[this.index]) {
    			this.CreateRole(MonsterBornData[i].monsterTypes[this.index], Laya.Browser.window.patrol.getRandomNode('level', 0, this.monsterBornPoints[i].owner.transform.position, 50), 0, false, () => { });
    			this.count++;
    		}
    		else {
    			this.index++;
    			this.count = 0;
    			if (this.index >= MonsterBornData[i].monsterTypes.length) {
    				this.index = 0;
    				Laya.timer.clear(this, this.LoopCreate);
    			}
    		}
    	}
    	RandomPos(centerPoint) {
    		var pos;
    		if (this.map.length <= 0)
    			this.aStar.InitMap();
    		pos = new Laya.Vector3(this.randomNumber(centerPoint.x - 50, centerPoint.x + 50), centerPoint.y, this.randomNumber(centerPoint.z - 50, centerPoint.z + 50));
    		if (!this.aStar.map[150 - pos.x][pos.z + 150].isWall)
    			return new Laya.Vector3(this.aStar.map[-pos.x + 150][pos.y + 150].posX, 0, this.aStar.map[-pos.x + 150][pos.y + 150].posY);
    		else {
    			return new Laya.Vector3(-29, 0, 20);
    		}
    		;
    	}
    	randomNumber(min, max) {
    		return Math.floor(parseInt(Math.random() * (max - min + 1) + min, 10));
    	}
    }

    class TimerManager extends Laya.Script {
    	constructor() {
    		super();
    		this.delayMap = {};
    	}
    	onAwake() {
    		if (InsManager.GetInstance()._TimeManager == null)
    			InsManager.GetInstance()._TimeManager = this;
    	}
    	StartTimeConsuming() {
    		console.log("开始时间消耗");
    	}
    	StopTimeConsuming() {
    		Laya.timer.clear(this, this.ConsumingLifeAttributes);
    		Laya.timer.clear(this, this.ExistRecordTime);
    		console.log("结束时间消耗");
    	}
    	ConsumingLifeAttributes() {
    	}
    	ExistRecordTime() {
    		PlayerData.GetInstance().existTime++;
    		InsManager.GetInstance()._DataSave.SaveGameData(PathData.PlayerData);
    	}
    	CallTimeCtrl(delayName, delayTime, func) {
    		if (this.delayMap[delayName] == null || this.delayMap[delayName] == undefined)
    			this.delayMap[delayName] = true;
    		if (this.delayMap[delayName]) {
    			this.delayMap[delayName] = false;
    			func && func();
    			Laya.timer.once(delayTime, this, () => { this.delayMap[delayName] = true; });
    		}
    	}
    	ClearCallTime(delayName) {
    		this.delayMap[delayName] = false;
    		this.delayMap[delayName] = null;
    	}
    	onDestroy() {
    		InsManager.GetInstance()._DataSave.SaveGameData(PathData.PlayerData);
    	}
    }

    class MissionManager extends Laya.Script {
    	constructor() {
    		super();
    		this.sceneManager = null;
    		this.uiManager = null;
    		this.isInitMission = true;
    		this.only_buttonName = "";
    		this.svStep = 0;
    		this.targetEnemyArr = [];
    		this.minDis3DProp = null;
    	}
    	onAwake() {
    		if (InsManager.GetInstance()._MissionManager == null)
    			InsManager.GetInstance()._MissionManager = this;
    		this.sceneManager = InsManager.GetInstance()._SceneManager;
    		this.uiManager = InsManager.GetInstance()._UIManager;
    	}
    	InitMainMission() {
    		for (let i = GameSystemData.GetInstance().currentMissionID; i >= 0; i--) {
    			if (MainMissionData[GameSystemData.GetInstance().currentMissionID].sceneType != SceneType.BigScene) {
    				GameSystemData.GetInstance().currentMissionID--;
    			}
    			else {
    				break;
    			}
    		}
    		this.isInitMission = false;
    		this.sceneManager.SetPlayerInScene3D(new Laya.Vector3(73, 0, -75), new Laya.Vector3(0, 90, 0));
    		this.Mission_LaunchMonitor(GameSystemData.GetInstance().currentMissionID, 200);
    	}
    	NewTaskFirst_Monitor(tag) {
    	}
    	Mission_LaunchMonitor(missionID, delayTime) {
    		console.log('任务：', missionID, '启动');
    		if (GameSystemData.GetInstance().currentMissionID >= MainMissionData.length) {
    			this.sceneManager.gamePanel.UINodeShowCtrl('banner_hint', false);
    			return;
    		}
    		;
    		if (missionID != GameSystemData.GetInstance().currentMissionID || GameSystemData.GetInstance().currentMissionID >= MainMissionData.length) {
    			console.log('任务重复启动返回', missionID, GameSystemData.GetInstance().currentMissionID);
    			return;
    		}
    		;
    		this.uiManager.allKeep.visible = true;
    		Laya.timer.once(delayTime, this, () => {
    			this.uiManager.allKeep.visible = false;
    			if (MainMissionData[missionID].dialog.length > 0) {
    				this.PreviousMissionContent(missionID);
    				InsManager.GetInstance()._UIManager.ShowDialogPanel(MainMissionData[missionID].dialog, () => { this.LaterMissionContent(missionID); });
    			}
    			else {
    				this.PreviousMissionContent(missionID);
    				this.LaterMissionContent(missionID);
    			}
    		});
    	}
    	PreviousMissionContent(missionID) {
    	}
    	LaterMissionContent(missionID) {
    	}
    	Mission_FinishMonitor(missionID, delayTime, isFinishNext) {
    		if (missionID == GameSystemData.GetInstance().currentMissionID) {
    			this.uiManager.allKeep.visible = true;
    			Laya.timer.once(delayTime, this, () => {
    				this.uiManager.allKeep.visible = false;
    				if (MainMissionData[missionID].endlog.length > 0) {
    					this.EndMissionContent(missionID);
    					InsManager.GetInstance()._UIManager.ShowDialogPanel(MainMissionData[missionID].endlog, () => {
    						this.GrantMissionAward(missionID, () => {
    							GameSystemData.GetInstance().currentMissionID++;
    							InsManager.GetInstance()._DataSave.SaveGameData(PathData.GameSystemData);
    							if (isFinishNext) {
    								this.Mission_LaunchMonitor(GameSystemData.GetInstance().currentMissionID, 500);
    							}
    							else {
    								console.log('任务结束');
    							}
    						});
    					});
    				}
    				else {
    					this.EndMissionContent(missionID);
    					this.GrantMissionAward(missionID, () => {
    						GameSystemData.GetInstance().currentMissionID++;
    						InsManager.GetInstance()._DataSave.SaveGameData(PathData.GameSystemData);
    						if (isFinishNext) {
    							this.Mission_LaunchMonitor(GameSystemData.GetInstance().currentMissionID, 500);
    						}
    						else {
    							console.log('任务结束');
    						}
    					});
    				}
    			});
    		}
    		else {
    			console.log('???');
    		}
    	}
    	EndMissionContent(missionID) {
    		if (GameSystemData.GetInstance().currentMissionID == missionID) {
    			InsManager.GetInstance()._UIManager.ClearAllUITrace();
    		}
    	}
    	GrantMissionAward(monitor_ID, finishCallBack) {
    		if (MainMissionData[monitor_ID].award.prop.propIDArr.length <= 0 && MainMissionData[monitor_ID].award.cion <= 0 && MainMissionData[monitor_ID].award.exp <= 0) {
    			finishCallBack();
    		}
    		else {
    			this.uiManager.allKeep.visible = true;
    			Laya.timer.once(400, this, () => {
    				this.uiManager.allKeep.visible = false;
    				InsManager.GetInstance()._UIManager.ShowAwardOutpopPanel(MainMissionData[monitor_ID].award.prop.propIDArr, MainMissionData[monitor_ID].award.prop.propCountArr, MainMissionData[monitor_ID].award.cion, MainMissionData[monitor_ID].award.exp, 1, true, () => {
    					finishCallBack();
    				});
    			});
    		}
    	}
    	MissionAward(propArr, propCountArr, cionCount, exp, callback, mteNum, isShow) {
    		if (propArr.length > 0) {
    			for (let i = 0; i < propArr.length; i++) {
    				InsManager.GetInstance()._knapsackManager.AwardProp(propArr[i], propCountArr[i] * mteNum, callback, isShow);
    			}
    		}
    		if (cionCount > 0) {
    			InsManager.GetInstance()._DataUpdateManager.UpdateCoin((cionCount * mteNum));
    			if (isShow)
    				InsManager.GetInstance()._UIManager.ShowPopoutPanel(PopoutPanelType.ShowImg, "金币x" + (cionCount * mteNum).toString(), PathData.cion_icon_img, null, callback);
    		}
    		if (exp > 0) {
    		}
    	}
    	FindMinDisPropLookAtArrow(prop3DId) {
    		if (prop3DId == null || prop3DId >= Get3DPropData.length) {
    			console.error('prop3DID 超出范围或者 为 null');
    			return;
    		}
    		let propSprite3D = null;
    		CalculateExtend.SortMinDisFormProp3D(this.sceneManager.AutoGetPropAssetArr, this.sceneManager.player.playerPos);
    		for (let i = 0; i < this.sceneManager.AutoGetPropAssetArr.length; i++) {
    			if (this.sceneManager.AutoGetPropAssetArr[i].englishName == Get3DPropData[prop3DId].englishName) {
    				propSprite3D = this.sceneManager.AutoGetPropAssetArr[i].node3D;
    				break;
    			}
    		}
    		if (propSprite3D != null)
    			this.sceneManager.gamePanel.CreateUITrace(propSprite3D, TraceType.End);
    		return propSprite3D;
    	}
    	ShowMissionHintLabel_PropID(propIDArr, propCountArr) {
    		if (this.sceneManager.gamePanel == null)
    			return;
    		let str = "";
    		for (let i = 0; i < propIDArr.length; i++) {
    			str += InsManager.GetInstance()._knapsackManager.GetPropData(propIDArr[i]).name +
    				InsManager.GetInstance()._knapsackManager.GetPossessPropCount(InsManager.GetInstance()._knapsackManager.GetPlayerPropKnapsackArr(), propIDArr[i]) +
    				"/" + propCountArr[i] + "    ";
    		}
    		if (!this.sceneManager.gamePanel.mission_hint.visible) {
    			this.sceneManager.gamePanel.mission_hint.visible = true;
    			this.sceneManager.gamePanel.mission_hint_label.visible = true;
    		}
    		this.sceneManager.gamePanel.mission_hint_label.text = str;
    	}
    	ShowMissionHintLabel_Prop3DID(title, targetName, targetCount) {
    		if (this.sceneManager.gamePanel == null)
    			return;
    		let str = "";
    		str += title + "  " + targetName + "  " + GameSystemData.GetInstance().cuMissionItemNumArr[0] + "/" + targetCount;
    		if (!this.sceneManager.gamePanel.mission_hint.visible) {
    			this.sceneManager.gamePanel.mission_hint.visible = true;
    			this.sceneManager.gamePanel.mission_hint_label.visible = true;
    		}
    		this.sceneManager.gamePanel.mission_hint_label.text = str;
    	}
    	InitMission() {
    		for (let i = 0; i < MainMissionData.length; i++) {
    			GameSystemData.GetInstance().amMission.push(0);
    		}
    	}
    	AddAmMissionInPanel() {
    		if (GameSystemData.GetInstance().amMission[0] == -1) {
    			for (let i = 0; i < 35; i++) {
    				GameSystemData.GetInstance().amMission[i] = 0;
    			}
    			InsManager.GetInstance()._DataSave.SaveGameData(PathData.GameSystemData);
    		}
    	}
    	CurrentMissionPropMonitor(propID, getType) {
    		if (GameSystemData.GetInstance().currentMissionID >= MainMissionData.length)
    			return;
    		Laya.timer.once(600, this, () => {
    			console.log('-----------------------:', propID, MainMissionData[GameSystemData.GetInstance().currentMissionID].makeProp[0]);
    			if (propID == MainMissionData[GameSystemData.GetInstance().currentMissionID].makeProp[0] && MainMissionData[GameSystemData.GetInstance().currentMissionID].mission_Type == getType) {
    				if (this.sceneManager.gamePanel != null)
    					this.sceneManager.gamePanel.UpdateMissionBannerHint(GameSystemData.GetInstance().currentMissionID);
    				if (MainMissionData[GameSystemData.GetInstance().currentMissionID].propCount[0] <= InsManager.GetInstance()._knapsackManager.OwnPropCount(MainMissionData[GameSystemData.GetInstance().currentMissionID].makeProp[0], MainMissionData[GameSystemData.GetInstance().currentMissionID].mission_Type)) {
    					GameSystemData.GetInstance().amMission[GameSystemData.GetInstance().currentMissionID] = 1;
    					console.log(MainMissionData[GameSystemData.GetInstance().currentMissionID].propCount[0], InsManager.GetInstance()._knapsackManager.OwnPropCount(MainMissionData[GameSystemData.GetInstance().currentMissionID].makeProp[0], MainMissionData[GameSystemData.GetInstance().currentMissionID].mission_Type));
    					Platforms.getInstance().ReportAnalytics(PathData.TTEvent_Mission, { 'count': GameSystemData.GetInstance().currentMissionID });
    					InsManager.GetInstance()._DataSave.SaveGameData(PathData.GameSystemData);
    					PropData.GetInstance().propCountArr = [];
    					console.log('任务完成检测：', GameSystemData.GetInstance().currentMissionID);
    					switch (GameSystemData.GetInstance().currentMissionID) {
    						default:
    							this.Mission_FinishMonitor(GameSystemData.GetInstance().currentMissionID, 0, true);
    							break;
    					}
    				}
    				else {
    					console.log('任务检测 未完成', MainMissionData[GameSystemData.GetInstance().currentMissionID].propCount[0], InsManager.GetInstance()._knapsackManager.OwnPropCount(MainMissionData[GameSystemData.GetInstance().currentMissionID].makeProp[0], MainMissionData[GameSystemData.GetInstance().currentMissionID].mission_Type));
    				}
    			}
    			else {
    				console.log('=======不是当前要检测的任务', GameSystemData.GetInstance().currentMissionID);
    			}
    			EventManager._Instance.Dispatch_Event(PathData.Event_HINTPOINT, ['mission_bt', InsManager.GetInstance()._MissionManager.IsMissionAwardStay()]);
    			EventManager._Instance.Dispatch_Event(PathData.EVENT_UPDATEGAMEMISSIONPANEL, propID);
    			console.log("检测是否成功");
    		});
    	}
    	IsMissionAwardStay() {
    		for (let i = 0; i < GameSystemData.GetInstance().amMission.length; i++) {
    			if (GameSystemData.GetInstance().amMission[i] == 1)
    				return true;
    		}
    		return false;
    	}
    	SetEnemyAtkGrade(sprite3DArr, atkGrade) {
    		if (sprite3DArr.length > 0) {
    			for (let i = 0; i < sprite3DArr.length; i++) {
    				let eb = sprite3DArr[i].getComponent(EnemyBase);
    				if (eb) {
    					switch (atkGrade) {
    						case 0:
    							eb.StayAtkPlayer();
    							break;
    						case 1:
    							eb.AlertAtkPlayer();
    							break;
    						case 2:
    							eb.BeginAtkPlayer();
    							break;
    					}
    				}
    			}
    		}
    	}
    	MissionOverAllMonitor(missionMonitorType, data) {
    		switch (missionMonitorType) {
    			case MissionMonitorType.Prop3D_Trigger:
    				break;
    			case MissionMonitorType.Prop3D_Get:
    				break;
    			case MissionMonitorType.Open_Knapsack:
    				break;
    			case MissionMonitorType.Close_Knapsack:
    				break;
    			case MissionMonitorType.Button_Click:
    				break;
    			case MissionMonitorType.Prop_Exchange:
    				break;
    			case MissionMonitorType.Emeny_Die:
    				break;
    		}
    	}
    }

    class BranchManager extends Laya.Script {
    	constructor() {
    		super();
    		this.sceneManager = null;
    		this.uiManager = null;
    		this.currentBranch = null;
    		this.branchNpc = null;
    		this.targetNpc = null;
    		this.HuntTaskPosArr = [
    			[new Laya.Vector3(-76.9, 0, -66.37)],
    			[new Laya.Vector3(52.7, 0, 73.9), new Laya.Vector3(45.3, 0, 73.9)],
    			[new Laya.Vector3(-81.58, 0, -67.51), new Laya.Vector3(-76.9, 0, -66.37)],
    			[new Laya.Vector3(-171.5, 0, 32.1), new Laya.Vector3(-170, 0, 30.4), new Laya.Vector3(-173, 0, 37.5)],
    		];
    		this.HuntTaskRotateArr = [
    			[-252.1],
    			[7.4, -44],
    			[7.4, -252.1],
    			[-252.1, -180, -188]
    		];
    		this.huntTaskNpcArr = [];
    		this.CrackerTask = null;
    	}
    	onAwake() {
    		if (InsManager.GetInstance()._BranchManager == null)
    			InsManager.GetInstance()._BranchManager = this;
    		this.sceneManager = InsManager.GetInstance()._SceneManager;
    		this.uiManager = InsManager.GetInstance()._UIManager;
    	}
    	CreateBranch(branchType, branchNpc) {
    		this.currentBranch = branchType;
    		this.branchNpc = branchNpc;
    		switch (branchType) {
    			case BranchTaskType.CrackerTask:
    				if (ResManager._Instance.Get_Prefab_Res(DataSave.GetServerPath() + PathData.MainTask_prefabs_path) != null) {
    					let sp3D_1 = Platfrom3DCtrl.GetInstance().CreateSprite3D(DataSave.GetServerPath() + PathData.MainTask_prefabs_path, new Laya.Vector3(4.95, 0, 3.52), InsManager.GetInstance()._SceneManager.gameScene);
    					sp3D_1.name = 'CrackerTask';
    					this.CrackerTask = sp3D_1;
    					this.sceneManager.gamePanel.CreateUITrace(sp3D_1, TraceType.Branch, "ditu_lanse.png");
    				}
    				else {
    					Platfrom3DCtrl.GetInstance().LoadSprite3D(DataSave.GetServerPath() + PathData.MainTask_prefabs_path, () => {
    						let sp3D_1 = Platfrom3DCtrl.GetInstance().CreateSprite3D(DataSave.GetServerPath() + PathData.MainTask_prefabs_path, new Laya.Vector3(4.95, 0, 3.52), InsManager.GetInstance()._SceneManager.gameScene);
    						sp3D_1.name = 'CrackerTask';
    						this.CrackerTask = sp3D_1;
    						this.sceneManager.gamePanel.CreateUITrace(sp3D_1, TraceType.Branch, "ditu_lanse.png");
    					}, true, '任务加载中');
    				}
    				break;
    			case BranchTaskType.DeliverGoodsTask:
    				InsManager.GetInstance()._UIManager.ShowGameToast(branchNpc.goodsMsg, ToastType.Game);
    				let npc = InsManager.GetInstance()._SceneManager.gameScene.getChildByName('Npc');
    				if (npc) {
    					let r = 0;
    					while (true) {
    						r = CalculateExtend.RandomNumber(0, npc.numChildren - 1);
    						if (npc.getChildAt(r) != this.branchNpc.owner)
    							break;
    					}
    					this.targetNpc = npc.getChildAt(r);
    					InsManager.GetInstance()._SceneManager.gamePanel.CreateUITrace(this.targetNpc, TraceType.Branch, "ditu_lanse.png");
    				}
    				console.log('执行支线送东西');
    				break;
    			case BranchTaskType.HuntTask:
    				console.log('执行支线打人', this.huntTaskNpcArr);
    				break;
    		}
    		this.branchNpc.gantanhao.active = false;
    		if (this.branchNpc.takeHint != '')
    			this.ShowBranchHint();
    	}
    	SaveAchievementTask(branchTaskType, count) {
    		PropData.GetInstance().missionCountArr[branchTaskType] += count;
    		InsManager.GetInstance()._DataSave.SaveGameData(PathData.PropData);
    	}
    	isTakeBranchAward() {
    		for (let i = 0; i < AchievementData.length; i++) {
    			if (PropData.GetInstance().missionCountArr[AchievementData[i].missionType] >= AchievementData[i].targetCount && PropData.GetInstance().achievementComplishArr[i] == 0)
    				return true;
    		}
    		return false;
    	}
    	BranchAward() {
    		if (this.currentBranch != null) {
    			InsManager.GetInstance()._MissionManager.MissionAward([], [], 30, 0, null, 1, true);
    			this.branchNpc.HideBranch();
    			this.HideBranchHint();
    			this.currentBranch = null;
    			this.branchNpc = null;
    			if (this.CrackerTask != null) {
    				this.CrackerTask.destroy();
    				this.CrackerTask = null;
    			}
    			if (this.targetNpc != null) {
    				InsManager.GetInstance()._UIManager.ClearUITrace(this.targetNpc);
    				InsManager.GetInstance()._SceneManager.gamePanel.smallMap_ctrl.DestroyLimitIcon(this.targetNpc);
    				this.targetNpc = null;
    			}
    		}
    	}
    	ShowBranchHint() {
    		InsManager.GetInstance()._SceneManager.gamePanel.branchHint.visible = true;
    		InsManager.GetInstance()._SceneManager.gamePanel.branchHint.getChildAt(0).text = '委托任务：' + this.branchNpc.takeHint;
    	}
    	HideBranchHint() {
    		InsManager.GetInstance()._SceneManager.gamePanel.branchHint.visible = false;
    	}
    	CancleBranch() {
    		if (this.currentBranch != null) {
    			this.branchNpc.HideBranch();
    			this.currentBranch = null;
    			this.branchNpc = null;
    			this.HideBranchHint();
    			if (this.CrackerTask != null) {
    				this.CrackerTask.destroy();
    				this.CrackerTask = null;
    			}
    			if (this.targetNpc != null) {
    				InsManager.GetInstance()._UIManager.ClearUITrace(this.targetNpc);
    				InsManager.GetInstance()._SceneManager.gamePanel.smallMap_ctrl.DestroyLimitIcon(this.targetNpc);
    				this.targetNpc = null;
    			}
    		}
    	}
    }

    class GameManager extends Laya.Script {
    	constructor() { super(); }
    	onAwake() {
    		RegUIClass();
    		this.owner.addComponent(EventManager);
    		this.owner.addComponent(ResManager);
    		this.owner.addComponent(UIManager);
    		this.owner.addComponent(SceneManager);
    		this.owner.addComponent(TimerManager);
    		this.owner.addComponent(MissionManager);
    		this.owner.addComponent(BranchManager);
    		InsManager.GetInstance()._DataSave.InitGameData();
    	}
    }

    class Geometry extends Laya.Script {
    	constructor() {
    		super();
    		this.faces = [];
    		this.vertices = [];
    	}
    	mergeVertices() {
    		var verticesMap = {};
    		var unique = new Array, changes = [];
    		var v, key;
    		var precisionPoints = 4;
    		var precision = Math.pow(10, precisionPoints);
    		var i, il, face;
    		var indices, j, jl;
    		for (i = 0, il = this.vertices.length; i < il; i++) {
    			v = this.vertices[i];
    			key = Math.round(v.x * precision) + '_' + Math.round(v.y * precision) + '_' + Math.round(v.z * precision);
    			if (verticesMap[key] == null) {
    				verticesMap[key] = i;
    				unique.push(v);
    				changes[i] = unique.length - 1;
    			}
    			else {
    				changes[i] = changes[verticesMap[key]];
    			}
    		}
    		;
    		var faceIndicesToRemove = [];
    		for (i = 0, il = this.faces.length; i < il; i++) {
    			face = this.faces[i];
    			face.a = changes[face.a];
    			face.b = changes[face.b];
    			face.c = changes[face.c];
    			indices = [face.a, face.b, face.c];
    			var dupIndex = -1;
    			for (var n = 0; n < 3; n++) {
    				if (indices[n] == indices[(n + 1) % 3]) {
    					dupIndex = n;
    					faceIndicesToRemove.push(i);
    					break;
    				}
    			}
    		}
    		for (i = faceIndicesToRemove.length - 1; i >= 0; i--) {
    			var idx = faceIndicesToRemove[i];
    			this.faces.splice(idx, 1);
    		}
    		;
    		var diff = this.vertices.length - unique.length;
    		this.vertices = unique;
    		return diff;
    	}
    }

    class Face extends Laya.Script {
    	constructor(a, b, c) {
    		super();
    		this.c = 0;
    		this.b = 0;
    		this.a = 0;
    		this.c = c;
    		this.b = b;
    		this.a = a;
    	}
    }

    class NavMesh extends Laya.Script {
    	constructor() {
    		super();
    		if (Laya.Browser.onWeiXin) {
    		}
    		else {
    			this.patrol = Laya.Browser.window.patrol;
    		}
    		this.playerNavMeshGroup = null;
    	}
    	InitNavMesh(complete) {
    		this.navUrl = "res/mesh/SampleScene.json";
    		Laya.loader.load(this.navUrl, new Laya.Handler(this, this.onNavLoaded, [complete]), null, "json");
    	}
    	onNavLoaded(complete) {
    		var json = Laya.loader.getRes(this.navUrl);
    		var p2 = json.vertices;
    		var ii = json.faces;
    		var faces = [];
    		for (var i = 0; i < ii.length / 5; i++) {
    			faces.push(new Face(ii[i * 5 + 1], ii[i * 5 + 2], ii[i * 5 + 3]));
    		}
    		var p = [];
    		for (i = 0; i < p2.length; i += 3) {
    			p.push(new Laya.Vector3(p2[i], p2[i + 1], p2[i + 2]));
    		}
    		var g = new Geometry();
    		g.faces = faces;
    		g.vertices = p;
    		var zoneNodes = this.patrol.buildNodes(g);
    		this.patrol.setZoneData('level', zoneNodes);
    		complete.run();
    	}
    }

    ;
    class Game_App extends GameManager {
    	constructor() {
    		super();
    		this.load_panel = null;
    		this.sceneManager = null;
    		this.leaveGuideNum = 6;
    		this.isShowAd = false;
    		this.isAndroid = true;
    	}
    	onAwake() {
    		if (InsManager.GetInstance()._GameApp == null)
    			InsManager.GetInstance()._GameApp = this;
    		this.load_panel = this.owner.getChildByName("LoadPanel");
    		this.load_panel.getChildByName("center").getChildByName("value").scaleX = 0;
    		this.SetVersionLabel();
    		Platforms.getInstance().onInit(() => { Platforms.getInstance().onLogin(); });
    		this.load_panel.getChildByName("center").getChildByName("gameMsg").text = "";
    		super.onAwake();
    		this.GameLoadStart();
    		this.sceneManager = InsManager.GetInstance()._SceneManager;
    		InsManager.GetInstance()._knapsackManager.InitGetPlayerKnapsack();
    		Laya.timer.once(60000, this, () => { this.isShowAd = true; console.log('可以展示了'); });
    	}
    	GameLoadStart() {
    		//音频mp3 or ogg
    		// if (!Laya.Browser.onAndroid) {
    		PathData.soundTpye = ".mp3";
    		// }
    		// else {
    		// 	PathData.soundPrefixPath = "res/Sound_ogg/";
    		// 	PathData.soundTpye = ".ogg";
    		// }
    		Laya.stage.addComponent(NavMesh).InitNavMesh(Laya.Handler.create(this, null));
    		ResManager._Instance.PreLoadRes_Pkg({
    			scene3D: [
    				DataSave.GetServerPath() + PathData.base_scene_path,
    			],
    			prefabs: [
    				DataSave.GetLoadPath() + "res/UI_Prefabs/StartPanel.json",
    				DataSave.GetLoadPath() + "res/UI_Prefabs/SigninPanel.json",
    				DataSave.GetLoadPath() + "res/UI_Prefabs/SettingPanel.json",
    				DataSave.GetLoadPath() + "res/UI_Prefabs/PopoutPanel.json",
    				DataSave.GetLoadPath() + "res/UI_Prefabs/GamePanel.json",
    				DataSave.GetLoadPath() + "res/UI_Prefabs/KnapsackPanel.json",
    				DataSave.GetLoadPath() + "res/UI_Prefabs/Toast.json",
    				DataSave.GetLoadPath() + "res/UI_Prefabs/ShopPanel.json",
    				DataSave.GetLoadPath() + "res/UI_Prefabs/MissionPanel.json",
    				DataSave.GetLoadPath() + "res/UI_Prefabs/ResultPanel.json",
    				DataSave.GetLoadPath() + "res/UI_Prefabs/DialogPanel.json",
    				DataSave.GetLoadPath() + "res/UI_Prefabs/DebugPanel.json",
    				DataSave.GetLoadPath() + "res/UI_Prefabs/Tip.json",
    				DataSave.GetLoadPath() + "res/UI_Prefabs/AwardPopoutPanel.json",
    				DataSave.GetLoadPath() + "res/UI_Prefabs/EnterIntoPanel.json",
    				DataSave.GetLoadPath() + "res/UI_Prefabs/DialogBannerPanel.json",
    				DataSave.GetLoadPath() + "res/UI_Prefabs/TipsPanel.json",
    				DataSave.GetLoadPath() + "res/UI_Prefabs/RewardsPopoutPanel.json",
    				DataSave.GetLoadPath() + "res/UI_Prefabs/CartoonPanel.json",
    				DataSave.GetLoadPath() + "res/UI_Prefabs/VivoNativeAdPanel.json",
    				DataSave.GetLoadPath() + "res/UI_Prefabs/sigboard.json",
    				DataSave.GetLoadPath() + "res/UI_Prefabs/TraceUI.json",
    				DataSave.GetLoadPath() + "res/UI_Prefabs/TTSharePanel.json",
    				DataSave.GetLoadPath() + "res/UI_Prefabs/LoadCirclePanel.json",
    				DataSave.GetLoadPath() + "res/UI_Prefabs/CarCtrlPanel.json",
    				DataSave.GetLoadPath() + "res/UI_Prefabs/ComputerPanel.json",
    				DataSave.GetLoadPath() + "res/UI_Prefabs/ChosePanel.json",
    				DataSave.GetLoadPath() + "res/UI_Prefabs/UpgradePanel.json"
    			],
    			sprite3D: [
    				DataSave.GetServerPath() + PathData.player_Prefabs_path,
    				DataSave.GetServerPath() + PathData.XiaoXie_Prefabs_path,
    				DataSave.GetServerPath() + PathData.DaXie_Prefabs_path,
    				DataSave.GetServerPath() + PathData.PingFeng_Prefabs_path,
    				DataSave.GetServerPath() + PathData.DiMianEr_Prefabs_path,
    				DataSave.GetServerPath() + PathData.PaoXiao_Prefabs_path,
    				DataSave.GetServerPath() + PathData.XiMuWang_Prefabs_path,
    				DataSave.GetServerPath() + PathData.DongHuangTaiYi_Prefabs_path,
    				DataSave.GetServerPath() + PathData.Fuzhu_Prefabs_path,
    				DataSave.GetServerPath() + PathData.DanKang_Prefabs_path,
    				DataSave.GetServerPath() + PathData.NianShow_Prefabs_path,
    				DataSave.GetServerPath() + PathData.KungPeng_Prefabs_path,
    				DataSave.GetServerPath() + PathData.Zheng_Prefabs_path,
    				DataSave.GetServerPath() + PathData.B_DanKnag_Prefabs_path,
    				DataSave.GetServerPath() + PathData.YingZhao_Prefabs_path,
    				DataSave.GetServerPath() + PathData.QiongQi_Prefabs_path,
    				DataSave.GetServerPath() + PathData.B_kungPeng_Prefabs_path,
    				DataSave.GetServerPath() + PathData.B_YingZhao_Prefabs_path,
    				DataSave.GetServerPath() + PathData.B_QiongQi_Prefabs_path,
    				DataSave.GetServerPath() + PathData.light_prefabs_path,
    				DataSave.GetServerPath() + PathData.hp_prefabs_path,
    				DataSave.GetServerPath() + PathData.ex_prefabs_path,
    				DataSave.GetServerPath() + PathData.prop_prefabs_path,
    				DataSave.GetServerPath() + PathData.de_prefabs_path,
    				DataSave.GetServerPath() + PathData.eat_prefabs_path,
    				DataSave.GetLoadPath() + PathData.cube_prefabs_path
    			],
    			sounds: [
    				DataSave.GetLoadPath() + PathData.soundPrefixPath + PathData.sound_buttonSound + PathData.soundTpye,
    				DataSave.GetLoadPath() + PathData.soundPrefixPath + PathData.sound_runSound + PathData.soundTpye,
    				DataSave.GetLoadPath() + PathData.soundPrefixPath + PathData.sound_playerDie + PathData.soundTpye,
    				DataSave.GetLoadPath() + PathData.soundPrefixPath + PathData.sound_playerHit_1 + PathData.soundTpye,
    				DataSave.GetLoadPath() + PathData.soundPrefixPath + PathData.sound_playerHit_2 + PathData.soundTpye,
    				DataSave.GetLoadPath() + PathData.soundPrefixPath + PathData.sound_atk_fist + PathData.soundTpye,
    				DataSave.GetLoadPath() + PathData.soundPrefixPath + PathData.sound_atk_pistol + PathData.soundTpye,
    				DataSave.GetLoadPath() + PathData.soundPrefixPath + PathData.sound_get + PathData.soundTpye,
    				DataSave.GetLoadPath() + PathData.soundPrefixPath + PathData.sound_carRun + PathData.soundTpye,
    				DataSave.GetLoadPath() + PathData.soundPrefixPath + 'fire' + PathData.soundTpye,
    				DataSave.GetLoadPath() + PathData.soundPrefixPath + 'oky' + PathData.soundTpye,
    				DataSave.GetLoadPath() + PathData.soundPrefixPath + 'error' + PathData.soundTpye,
    				DataSave.GetLoadPath() + PathData.soundPrefixPath + PathData.sound_atk_DME + PathData.soundTpye,
    				DataSave.GetLoadPath() + PathData.soundPrefixPath + PathData.sound_atk_DongHuangTaiYi + PathData.soundTpye,
    				DataSave.GetLoadPath() + PathData.soundPrefixPath + PathData.sound_atk_KungPeng + PathData.soundTpye,
    				DataSave.GetLoadPath() + PathData.soundPrefixPath + PathData.sound_atk_Normal + PathData.soundTpye,
    				DataSave.GetLoadPath() + PathData.soundPrefixPath + PathData.sound_atk_PangXie + PathData.soundTpye,
    				DataSave.GetLoadPath() + PathData.soundPrefixPath + PathData.sound_atk_QingQi + PathData.soundTpye,
    				DataSave.GetLoadPath() + PathData.soundPrefixPath + PathData.sound_atk_YingZhao + PathData.soundTpye,
    				DataSave.GetLoadPath() + PathData.soundPrefixPath + PathData.sound_atk_pig + PathData.soundTpye,
    				DataSave.GetLoadPath() + PathData.soundPrefixPath + PathData.sound_die_Normal + PathData.soundTpye,
    				DataSave.GetLoadPath() + PathData.soundPrefixPath + PathData.sound_eatProp + PathData.soundTpye,
    				DataSave.GetLoadPath() + PathData.soundPrefixPath + PathData.sound_light + PathData.soundTpye,
    				DataSave.GetLoadPath() + PathData.soundPrefixPath + PathData.sound_upLevel + PathData.soundTpye,
    				DataSave.GetLoadPath() + PathData.soundPrefixPath + PathData.sound_TunShi + PathData.soundTpye,
    				DataSave.GetLoadPath() + PathData.soundPrefixPath + PathData.sound_lightOver + PathData.soundTpye,
    				DataSave.GetLoadPath() + PathData.soundPrefixPath + PathData.sound_addSpeed + PathData.soundTpye,
    			],
    			atlas: [
    				DataSave.GetServerPath() + "res/atlas/res/UI/start.atlas",
    				DataSave.GetServerPath() + "res/atlas/res/UI/game.atlas",
    				DataSave.GetServerPath() + "res/atlas/res/UI/knapsack.atlas",
    				DataSave.GetServerPath() + "res/atlas/res/UI/public.atlas",
    				DataSave.GetServerPath() + "res/atlas/res/UI/icon.atlas",
    				DataSave.GetServerPath() + "res/atlas/res/UI/setting.atlas",
    				DataSave.GetServerPath() + "res/atlas/res/UI/signin.atlas",
    				DataSave.GetServerPath() + "res/atlas/res/UI/cartoon.atlas",
    				DataSave.GetServerPath() + "res/atlas/res/UI/rewards.atlas",
    				DataSave.GetServerPath() + "res/atlas/res/UI/shop.atlas",
    			],
    		}, this.SetLoadPanel.bind(this), this.Enter_StartPanel.bind(this));
    	}
    	onStart() {
    	}
    	LoadGameScene3D(onLoadFinished, scenePath) {
    		console.log('========加载3D场景资源===========', scenePath);
    		this.sceneManager.LoadGameScene(scenePath, onLoadFinished);
    	}
    	SetLoadPanel(progress) {
    		this.load_panel.getChildByName("center").getChildByName("value").scaleX = progress;
    		this.load_panel.getChildByName("center").getChildByName("starStip").getChildByName('star').x = (this.load_panel.getChildByName("center").getChildByName("progress").width * progress) - (this.load_panel.getChildByName("center").getChildByName("starStip").getChildByName('star').width / 2);
    	}
    	Enter_StartPanel() {
    		Laya.timer.once(100, this, () => {
    			InsManager.GetInstance()._DataSave.GetIntervalDate();
    			InsManager.GetInstance()._SceneManager.EnterStartPanel();
    		});
    	}
    	Enter_GameScene3D() {
    		console.log('进入3D场景');
    		InsManager.GetInstance()._SceneManager.EnterGameScene();
    		InsManager.GetInstance()._GameApp.load_panel.visible = false;
    	}
    	GetVariedAssetPath(name) {
    		let path = "";
    		switch (name) {
    			case 'CartoonPanel':
    				if (GameSystemData.GetInstance().currentMissionID < this.leaveGuideNum)
    					path = "res/atlas/res/UI/cartoon.atlas";
    				else
    					path = "";
    				break;
    		}
    		return path;
    	}
    	ShowUIPlatformAd(name) {
    		console.log("新窗口加载", name);
    		// if (!InsManager.GetInstance()._DataSave.isOpenAd)
    		// 	return;
    		// if (name == PathData.cartoonPanel) {
    		// 	Platforms.getInstance().hideBanner();
    		// }
    		// if (Platforms.getInstance().isOppo()) {
    		// 	if (this.isShowAd) {
    		// 		if (name == PathData.signinPanel_path || name == PathData.settingPanel_path || name == PathData.carCtrlPanel_path || name == PathData.shopPnale_path || name == PathData.knapsackPanel_path || name == PathData.startPanel_path) {
    		// 			Platforms.getInstance().showBanner('0');
    		// 			console.log('显示banner');
    		// 		}
    		// 	}
    		// }
    		// if (Platforms.getInstance().isVivo()) {
    		// 	if (name == PathData.settingPanel_path || name == PathData.signinPanel_path || name == PathData.shopPnale_path || name == PathData.startPanel_path || name == PathData.knapsackPanel_path || name == PathData.carCtrlPanel_path) {
    		// 		Platforms.getInstance().showBanner('0');
    		// 		console.log('Show Vivo Banner');
    		// 	}
    		// 	if (name == PathData.awardPopout_path || name == PathData.resultPanel_path) {
    		// 		Platforms.getInstance().showNativeAd('', () => { console.log('显示VIVO 原生广告成功: ', name); }, 0);
    		// 		console.log('Show Vivo NativeAD======');
    		// 	}
    		// }
    		// if (Platforms.getInstance().isToutiao()) {
    		// 	if (name == PathData.settingPanel_path || name == PathData.popoutPanel_path || name == PathData.shipUpgradeSucceedPanel || name == PathData.resultPanel_path) {
    		// 		Platforms.getInstance().showBanner('0');
    		// 		console.log('显示头条banner');
    		// 	}
    		// 	if (name != PathData.vivoNativeAdPanel && name != PathData.resultPanel_path && name != PathData.awardPopout_path && name != PathData.rewardsPopoutPanel_path && name != PathData.cartoonPanel &&
    		// 		name != PathData.shipUpgradeSucceedPanel && name != PathData.signinPanel_path && name != PathData.dialogPanel_path && name != PathData.toast_path) {
    		// 		if (InsManager.GetInstance()._DataSave.isFirstOpen && name == PathData.startPanel_path)
    		// 			return;
    		// 		if (GameSystemData.GetInstance().currentMissionID < 5)
    		// 			return;
    		// 		Platforms.getInstance().showNativeAd('', () => { console.log('显示 头条 插屏广告成功: ', name); }, 0);
    		// 		console.log('Show tt InsterAD======');
    		// 	}
    		// }
    		// if (Platforms.getInstance().isHuaWei()) {
    		// 	if (name == PathData.knapsackPanel_path || name == PathData.shopPnale_path || name == PathData.carCtrlPanel_path || name == PathData.popoutPanel_path ||
    		// 		name == PathData.rewardsPopoutPanel_path || name == PathData.signinPanel_path) {
    		// 		setTimeout(() => {
    		// 			PlatformAdManager.getInstance().showPFBannerAd("0");
    		// 		}, 1000);
    		// 	}
    		// 	if (name == PathData.settingPanel_path || name == PathData.awardPopout_path || name == PathData.resultPanel_path || name == "UpgradePanel") {
    		// 		setTimeout(() => {
    		// 			PlatformAdManager.getInstance().showCustomAd();
    		// 		}, 500);
    		// 	}
    		// 	if (PlatformAdManager.getInstance().platform == "android" && name == PathData.startPanel_path) {
    		// 		setTimeout(() => {
    		// 			PlatformAdManager.getInstance().showCustomAd();
    		// 		}, 500);
    		// 	}
    		// }

    		// if(name == "ChosePanel" || name == "SettingPanel" || name == "UpgradePanel" || name == "AwardPopoutPanel"){

    		// }else if(name == "ResultPanel") {

    		// }

    		if (name == "ResultPanel") {
    			Advertisement.insertAdverV();
    		} else {
    			if (name != "Toast") {
    				Advertisement.insertAdverV3();
    			}
    		}
    	}
    	ShowUIPlatformHideBanner(name) {
    		if (Platforms.getInstance().isVivo()) {
    			if (name == PathData.settingPanel_path || name == PathData.signinPanel_path || name == PathData.shopPnale_path || name == PathData.startPanel_path || name == PathData.knapsackPanel_path || name == PathData.carCtrlPanel_path || name == PathData.cartoonPanel) {
    				Platforms.getInstance().hideBanner();
    				console.log('隐藏banner');
    			}
    		}
    		if (Platforms.getInstance().isToutiao()) {
    			if (name == PathData.settingPanel_path || name == PathData.popoutPanel_path || name == PathData.shipUpgradeSucceedPanel || name == PathData.resultPanel_path) {
    				Platforms.getInstance().hideBanner();
    				console.log('隐藏banner');
    			}
    		}
    		if (Platforms.getInstance().isOppo()) {
    			if (name == PathData.awardPopout_path || name == PathData.rewardsPopoutPanel_path || name == PathData.signinPanel_path || name == PathData.settingPanel_path || name == PathData.carCtrlPanel_path || name == PathData.shopPnale_path || name == PathData.knapsackPanel_path || name == PathData.startPanel_path || name == PathData.cartoonPanel) {
    				Platforms.getInstance().hideBanner();
    				console.log('隐藏banner');
    			}
    		}
    	}
    	SetVersionLabel() {
    		let versionLabel = this.load_panel.getChildByName('vsionCode');
    		let versionLabel2 = versionLabel.getChildByName('vsionCode');
    		if (Platforms.getInstance().isOppo()) {
    			versionLabel.text = '1.0.0';
    			versionLabel2.text = '1.0.0';
    		}
    		if (Platforms.getInstance().isVivo()) {
    			versionLabel.text = '1.0.0';
    			versionLabel2.text = '1.0.0';
    		}
    		if (Platforms.getInstance().isToutiao()) {
    			versionLabel.text = '1.0.0';
    			versionLabel2.text = '1.0.0';
    		}
    		if (Platforms.getInstance().isAndroid()) {
    			versionLabel.text = '1.0.0';
    			versionLabel2.text = '1.0.0';
    		}
    		if (Platforms.getInstance().isIos()) {
    			versionLabel.text = '1.0.0';
    			versionLabel2.text = '1.0.0';
    		}
    		if (Platforms.getInstance().isHuaWei()) {
    			versionLabel.text = '1.0.0';
    			versionLabel2.text = '1.0.0';
    		}

    		versionLabel.text = '';
    		versionLabel2.text = '';
    	}
    }
    Game_App._Instance = null;

    class LoadShufflingText extends Laya.Script {
    	constructor() {
    		super();
    		this.time = 1000;
    		this.isRandom = false;
    		this.textDataID = 1;
    		this.textDataArr = [];
    		this.index = 0;
    	}
    	onEnable() {
    		switch (this.textDataID) {
    			case 1:
    				this.textDataArr = PathData.LoadText_Arr1;
    				break;
    			case 2:
    				this.textDataArr = PathData.LoadText_Arr2;
    				break;
    			default:
    				this.textDataArr = PathData.LoadText_Arr1;
    				break;
    		}
    		this.index = 0;
    		Laya.timer.loop(this.time, this, this.ShufflingTextTimeLoop);
    	}
    	ShufflingTextTimeLoop() {
    		if (this.isRandom) {
    			this.index = CalculateExtend.RandomNumber(0, this.textDataArr.length - 1);
    		}
    		else {
    			this.index++;
    		}
    		if (this.index >= this.textDataArr.length)
    			this.index = 0;
    		this.label.text = this.textDataArr[this.index];
    	}
    	onDisable() {
    		Laya.timer.clear(this, this.ShufflingTextTimeLoop);
    	}
    }

    class Native_Ad extends Laya.Script {
    	constructor() {
    		super();
    		this._id = "";
    		this.ad_bt = null;
    		this.cell = null;
    		this.img = null;
    		this.index = 0;
    		this.close_bt = null;
    		this.isUpdate = null;
    		this.saveRes = null;
    		this.isShow = true;
    		this.nativeAd = null;
    	}
    	onAwake() {
    		this.cell = this.owner;
    		this.img = this.cell.getChildByName("img");
    		this.ad_bt = this.cell.getChildByName("ad_bt");
    		this.close_bt = this.cell.getChildByName("close_bt");
    		if (this.close_bt != null)
    			this.close_bt.on(Laya.Event.CLICK, this, () => {
    				this.cell.visible = false;
    				if (this.isUpdate) {
    					Laya.timer.once(50000, this, this.InitView);
    				}
    			});
    	}
    	onEnable() {
    		this.cell.visible = false;
    		if (!this.isShow)
    			return;
    		this.IsShowNativeFrame(false);
    		if (InsManager.GetInstance()._GameApp.isShowAd) {
    			this.InitView();
    		}
    	}
    	InitView() {
    		if (this._id == "" || this._id == null || this.id == undefined) {
    			console.error("没有传入正确的id");
    			return;
    		}
    		let self = this;
    		console.log('调用嵌入式原生');
    		if (this.saveRes && this.nativeAd != null) {
    			console.log('复用之前的资源', this.saveRes);
    			this.UpdateNative(this.saveRes, this.nativeAd, self);
    		}
    		Platforms.getInstance().showNativeAd(this._id, (res, nativeAd) => {
    			if (this.cell)
    				this.cell.offAll(Laya.Event.CLICK);
    			this.UpdateNative(res, nativeAd, self);
    			console.log('重新拉取广告资源成功');
    		}, 1);
    	}
    	UpdateNative(res, nativeAd, self) {
    		if (res)
    			this.saveRes = res;
    		if (Platforms.getInstance().isOppo() || Platforms.getInstance().isHuaWei())
    			res = res.adList[0];
    		if (res.imgUrlList != null && res.imgUrlList != undefined && res.imgUrlList.length > 0) {
    			Platforms.getInstance().hideBanner();
    			self.img.skin = res.imgUrlList[0];
    			this.nativeAd = nativeAd;
    			this.cell.visible = true;
    			this.IsShowNativeFrame(true);
    			nativeAd.reportAdShow({
    				adId: res.adId
    			});
    			self.cell.on(Laya.Event.CLICK, this, () => {
    				if (nativeAd) {
    					nativeAd.reportAdClick({ adId: res.adId });
    				}
    			});
    			if (this.ad_bt != null) {
    				this.ad_bt.on(Laya.Event.CLICK, this, () => {
    					if (nativeAd) {
    						nativeAd.reportAdClick({ adId: res.adId });
    					}
    				});
    			}
    		}
    		else if (res.icon != null && res.icon != undefined && res.icon != "") {
    			Platforms.getInstance().hideBanner();
    			self.img.skin = res.icon;
    			this.cell.visible = true;
    			this.IsShowNativeFrame(true);
    			nativeAd.reportAdShow({
    				adId: res.adId
    			});
    			if (this.ad_bt != null) {
    				this.ad_bt.on(Laya.Event.CLICK, this, () => {
    					if (nativeAd) {
    						nativeAd.reportAdClick({ adId: res.adId });
    					}
    				});
    			}
    			self.cell.on(Laya.Event.CLICK, this, () => {
    				if (nativeAd) {
    					nativeAd.reportAdClick({ adId: res.adId });
    				}
    			});
    			console.log('icon', res.icon);
    		}
    		else {
    			this.cell.visible = false;
    			this.IsShowNativeFrame(false);
    			console.log("没有找到原生 广告 资源：", res);
    		}
    		console.log('=============55555');
    	}
    	IsShowNativeFrame(isShow) {
    		if (this.cell.parent.getChildByName('native_frame') != null) {
    			this.cell.parent.getChildByName('native_frame').visible = isShow;
    		}
    	}
    	onDisable() {
    		Laya.timer.clearAll(this);
    		if (this.cell)
    			this.cell.offAll(Laya.Event.CLICK);
    	}
    }

    class huxi extends Laya.Script {
    	constructor() { super(); }
    	onStart() {
    		this.Startbt = this.owner;
    		this.playhuxi(this.Startbt, 800, 1.1);
    	}
    	onEnable() {
    	}
    	breath(target, timer, maxSize) {
    		target.scale(1, 1);
    		let size = 1;
    		Laya.timer.loop(timer, this, () => {
    			if (size == 1) {
    				size = maxSize;
    			}
    			else {
    				size = 1;
    			}
    			Laya.Tween.to(target, { scaleX: size, scaleY: size }, timer);
    		});
    	}
    	playhuxi(target, speed = 1000, maxSize) {
    		var self = this;
    		var w = target.width * target.scaleX;
    		var h = target.height * target.scaleY;
    		var os = target.scaleX;
    		var ts = target.scaleX * maxSize;
    		var bw = w * 0.05;
    		var bh = h * 0.05;
    		var ox = target.x;
    		var oy = target.y;
    		var nx = target.x - bw;
    		var ny = target.y - bh;
    		var handler = () => {
    			if (!target)
    				return;
    			Laya.Tween.to(target, { x: nx, y: ny, scaleX: ts, scaleY: ts }, speed, null, Laya.Handler.create(self, () => {
    				if (!target)
    					return;
    				Laya.Tween.to(target, { x: ox, y: oy, scaleX: os, scaleY: os }, speed, null, Laya.Handler.create(self, handler));
    			}));
    		};
    		handler();
    	}
    }

    class DxOppoNativeAd extends Laya.Script {
    	constructor() {
    		super(...arguments);
    		this.adImg = null;
    		this.adCloseBtn = null;
    		this.adTitle = null;
    		this.adSource = null;
    		this.adClickBtn = null;
    		this.adClickTxt = null;
    		this.adRes = null;
    		this.isAdClose = false;
    	}
    	onAwake() {
    		this.adImg = this.owner.getChildByName("dxAd");
    		this.adCloseBtn = this.adImg.getChildByName("dxCloseBtn");
    		this.adTitle = this.adImg.getChildByName("dxTitle");
    		this.adSource = this.adImg.getChildByName("dxSource");
    		this.adClickBtn = this.owner.getChildByName("dxClickBtn");
    		this.adClickTxt = this.adClickBtn.getChildByName("dxLabel");
    		if (PlatformAdManager.getInstance().platform != PlatformAdManager.getInstance().platformList[2]) {
    			this.owner.visible = false;
    			console.log("===非OPPO 小游戏, 隐藏嵌入式原生dxOppoNativeAd===");
    			return;
    		}
    	}
    	setNativeAd(res) {
    		PlatformAdManager.lastNativeAd_Func = () => {
    			console.log("dx ===================> 关闭可能存在的原生广告");
    			this.owner.visible = false;
    		};
    		if (res == null) {
    			this.setTest();
    			return;
    		}
    		this.owner.visible = true;
    		this.adRes = res;
    		let imgUrl = res["imgUrlList"][0];
    		if (imgUrl == null || imgUrl == undefined) {
    			imgUrl = res["iconUrlList"][0];
    		}
    		this.adImg.skin = imgUrl;
    		this.adSource.text = res["title"].toString();
    		this.adTitle.text = res["desc"].toString();
    		this.adClickTxt.text = "点击查看";
    		this.adClickBtn.off(Laya.Event.CLICK, this, this.onClickAd);
    		this.adClickBtn.on(Laya.Event.CLICK, this, this.onClickAd);
    		this.adImg.off(Laya.Event.CLICK, this, this.onClickAd);
    		this.adImg.on(Laya.Event.CLICK, this, this.onClickAd);
    		this.adCloseBtn.off(Laya.Event.CLICK, this, this.onCloseAd);
    		this.adCloseBtn.on(Laya.Event.CLICK, this, this.onCloseAd);
    	}
    	setTest() {
    		console.log("================ 嵌入式 setTest ===============> ");
    		this.owner.visible = true;
    		this.adTitle.text = "测试广告，或者广告出错";
    		this.adSource.text = "？？？";
    		this.adClickTxt.text = "点击查看";
    		this.adCloseBtn.off(Laya.Event.CLICK, this, this.onTestCloseAd);
    		this.adCloseBtn.on(Laya.Event.CLICK, this, this.onTestCloseAd);
    		this.adClickBtn.off(Laya.Event.CLICK, this, this.onTestClickAd);
    		this.adClickBtn.on(Laya.Event.CLICK, this, this.onTestClickAd);
    		this.adImg.off(Laya.Event.CLICK, this, this.onTestClickAd);
    		this.adImg.on(Laya.Event.CLICK, this, this.onTestClickAd);
    	}
    	onTestCloseAd() {
    		console.log("================ 嵌入式 关闭广告 ===============> ");
    		this.owner.visible = false;
    		this.adCloseBtn.off(Laya.Event.CLICK, this, this.onTestCloseAd);
    		this.adClickBtn.off(Laya.Event.CLICK, this, this.onTestClickAd);
    		this.adImg.off(Laya.Event.CLICK, this, this.onTestClickAd);
    	}
    	onTestClickAd() {
    		console.log("================ 嵌入式 点击广告 ===============> ");
    		this.onTestCloseAd();
    		this.adCloseBtn.off(Laya.Event.CLICK, this, this.onTestCloseAd);
    		this.adClickBtn.off(Laya.Event.CLICK, this, this.onTestClickAd);
    		this.adImg.off(Laya.Event.CLICK, this, this.onTestClickAd);
    	}
    	onClickAd() {
    		console.log("====================> 点击原生嵌入式广告: " + this.adRes.adId);
    		PlatformAdManager.getInstance().onNativeAdClick(this.adRes.adId);
    		this.owner.visible = false;
    		this.adClickBtn.off(Laya.Event.CLICK, this, this.onClickAd);
    		this.adImg.off(Laya.Event.CLICK, this, this.onClickAd);
    		this.adCloseBtn.off(Laya.Event.CLICK, this, this.onCloseAd);
    	}
    	onCloseAd() {
    		this.isAdClose = true;
    		this.owner.visible = false;
    		this.adClickBtn.off(Laya.Event.CLICK, this, this.onClickAd);
    		this.adImg.off(Laya.Event.CLICK, this, this.onClickAd);
    		this.adCloseBtn.off(Laya.Event.CLICK, this, this.onCloseAd);
    	}
    	onDisable() {
    		PlatformAdManager.lastNativeAd_Func = null;
    	}
    }

    class DxShowOppoNativeAd extends Laya.Script {
    	constructor() {
    		super();
    		this.dxOppoNativeAd = null;
    		this.visibleNode = null;
    		this.adId = PlatformAdManager.getInstance().oppoNativeAdId;
    		this.isActive = true;
    	}
    	onAwake() {
    		this.dxOppoNativeAd = this.owner.getComponent(DxOppoNativeAd);
    		if (!this.visibleNode) {
    			this.visibleNode = this.owner.parent;
    		}
    		if (this.isStart) {
    			this.adId = PlatformAdManager.getInstance().oppoStartNativeAdId;
    		}
    		else {
    			this.adId = PlatformAdManager.getInstance().oppoNativeAdId;
    		}
    	}
    	onEnable() {
    		if (PlatformAdManager.getInstance().platform != PlatformAdManager.getInstance().platformList[2]) {
    			this.owner.visible = false;
    			console.log("===非OPPO 小游戏, 隐藏嵌入式原生DxShowOppoNativeAd===");
    			return;
    		}
    		if (this.dxOppoNativeAd) {
    			setTimeout(() => {
    				if (this.visibleNode.visible) {
    					this.owner.visible = false;
    					console.log("id: " + this.adId);
    					this.isActive = true;
    					PlatformAdManager.getInstance().showNativeAd(this.adId, (res) => {
    						this.dxOppoNativeAd.setNativeAd(res);
    					});
    				}
    				else {
    					console.log("嵌入式原生节点未激活 ================> " + this.adId);
    					this.isActive = false;
    				}
    			}, 1);
    		}
    	}
    	onUpdate() {
    		if (!this.isActive && this.visibleNode.visible) {
    			this.owner.visible = false;
    			console.log("id: " + this.adId);
    			this.isActive = true;
    			PlatformAdManager.getInstance().showNativeAd(this.adId, (res) => {
    				this.dxOppoNativeAd.setNativeAd(res);
    			});
    		}
    	}
    	onCloseThisAd() {
    		this.owner.visible = false;
    	}
    	onDisable() {
    	}
    }

    class UIFlickerTween extends Laya.Script {
    	constructor() {
    		super();
    		this.img = null;
    		this.timer = 1600;
    	}
    	onAwake() {
    		this.img = this.owner;
    	}
    	onEnable() {
    		this.UIAnim_AlphaFlicker();
    		this.AlphaFlickerLoop();
    	}
    	UIAnim_AlphaFlicker() {
    		this.img.alpha = 1;
    		Laya.timer.loop(this.timer, this, this.AlphaFlickerLoop);
    	}
    	AlphaFlickerLoop() {
    		Laya.Tween.to(this.img, { alpha: 0.4 }, this.timer / 2, Laya.Ease.linearIn, Laya.Handler.create(this, () => {
    			Laya.Tween.to(this.img, { alpha: 1 }, this.timer / 2, Laya.Ease.linearInOut);
    		}));
    	}
    	onDisable() {
    		Laya.timer.clearAll(this);
    	}
    }

    class OppoBannerAd extends Laya.Script {
    	constructor() {
    		super();
    		this._id = "";
    	}
    	onEnable() {
    		if (this._id == "")
    			console.log('id 异常：', this._id);
    		if (Platforms.getInstance().isOppo()) {
    			Platforms.getInstance().showBanner(this._id);
    		}
    	}
    	onDisable() {
    		if (Platforms.getInstance().isOppo()) {
    			Platforms.getInstance().hideBanner();
    		}
    	}
    }

    class FollowZoom extends Laya.Script {
    	constructor() {
    		super();
    		this.img = null;
    	}
    	onStart() {
    		this.img = this.owner;
    		this.img.scale((Laya.stage.width / 1280), (Laya.stage.height / 720));
    	}
    }

    class yszc_android extends Laya.Script {
    	constructor() {
    		super();
    		this.intType = 1000;
    		this.numType = 1000;
    		this.strType = "hello laya";
    		this.boolType = true;
    	}
    	onEnable() {
    		console.log(this.owner);
    		this.yszc = this.owner;
    		this.more = this.yszc.parent.getChildByName("more");
    		this.rz = this.yszc.parent.getChildByName("rz");
    		this.yszc2 = this.owner;
    		this.rz.top = 20;
    		this.rz.centerX = 0;
    		this.rz.fontSize = 30;
    		this.rz.font = "SimHei";
    		this.rz.bold = true;
    		this.rz.color = "white";
    		if (PlatformAdManager.getInstance().platform == PlatformAdManager.getInstance().platformList[0]) {
    			this.more.visible = false;
    			if (Platforms_Android.getInstance().isHW) {
    				this.more.visible = false;
    				this.yszc2.visible = false;
    				this.rz.visible = false;
    			}
    		}
    		else {
    			this.more.visible = false;
    			this.more.active = false;
    		}
    		this.more.on(Laya.Event.CLICK, this, this.More);
    		this.yszc.on(Laya.Event.CLICK, this, this.Yszc);
    		setInterval(() => {
    			PlatformAdManager.getInstance().showPFBannerAd("0");
    		}, 30000);
    		this.more.visible = false;
    		this.yszc.visible = false;
    	}
    	More() {
    		Platforms_Android.getInstance().moreGame();
    	}
    	Yszc(CLICK, arg1, OnClick) {
    		PlatformAdManager.getInstance().showYSZC();
    	}
    	onDisable() {
    	}
    }

    class TipsEffect extends Laya.Script {
    	constructor() { super(); }
    	onEnable() {
    		this.owner.y = Laya.stage.height / 2;
    		this.startTween();
    	}
    	onDisable() {
    		Laya.Tween.clearAll(this.owner);
    	}
    	startTween() {
    		Laya.Tween.to(this.owner, { y: Laya.stage.height / 2 - 200 }, 1000, null, Laya.Handler.create(this, () => {
    			this.owner.removeSelf();
    			this.destroy();
    		}));
    	}
    }

    class TextCtrl extends Laya.Script {
    	constructor() {
    		super();
    		this.txt = null;
    	}
    	onAwake() {
    		this.txt.text = "推送个人信息保护政策\n\n本隐私政策发布时间：2021.5.1\n本隐私政策生效时间：2021.5.1\n本隐私政策更新时间：2021.5.1\n本隐私政策规定了深圳市时间坊贸易有限公司（以下简称“深圳市时间坊贸易有限公司”或“我们”）在您使用PUSH通知服务时，如何收集，使用，披露，处理和保护您提供给我们的所有信息。在此场景中，开发者作为数据控制者决定用户数据的处理目的、方式，PUSH在为用户提供推送服务过程中作为数据处理者，接受开发者委托并根据开发者指示处理用户数据。通过PUSH收集的信息的使用应仅限于提供客户已委托我们使用的服务。\n请您仔细阅读《PUSH个人信息保护政策》并确定您已了解我们收集、处理和共享您的个人信息时所遵循的规范。如您不同意协议中的任何条款，请停止使用Push推送服务或者通过privacy@heytap.com与我们联系。\n我们在其客户端的指导下收集信息，并且与其处理任何特定个人数据没有直接关系。如果您是我们其中一个客户端的使用者，并且不想再继续使用负载应用了我方服务的该客户端，请直接与您所使用的客户端方联系。\n本个人信息保护政策将帮助您了解以下内容：\n一、 我们如何收集和使用您的个人信息\n二、 我们如何保留您的个人信息\n三、 我们如何共享、转让或公开披露您的个人信息\n四、 我们如何保护您的个人信息\n五、 您对您的个人信息的权利\n六、 您的个人信息如何在全球范围移转\n七、本个人信息保护政策如何更新\n\n一、 我们如何收集和使用您的个人信息为向您提供推送服务，发送关于软件更新或新品发布的通知（包括营销信息）、评估广告效果等目的，您同意我们暂存从开发者处获得消息内容，并收集您的设备相关信息（如IMEI号，Serial Number，IMSI，User ID，Android ID，Google Advertising ID, 手机Region设置，设备型号，手机电量，手机操作系统版本及语言）、使用推送服务的应用信息（如APP包名及版本号，运行状态）、推送SDK版本号、网络相关信息（如IP或域名连接结果，当前网络类型）、消息发送结果，通知栏状态（如通知栏权限、用户点击行为），锁屏状态（如是否锁屏，是否允许锁屏通知）。具体而言，我们可能会将您的个人信息用于下列目的：\n1、将开发者提供的应用服务中与您相关的信息（如私信、账户变化、关注动态及营销信息等）及时推送到您的设备终端。\n2、提供、处理、维护、改善、开发我们的产品和/或提供给您的服务，包括按照您的系统、设备、应用信息等推送符合技术标准的消息，记录消息发送结果返回给开发者，提供折叠不重要通知等功能。\n3、分析和开发与我们产品或服务的使用相关的统计信息，以更好地改进我们的产品或服务。\n4、优化产品的性能，如折叠消息算法的优化。\n5、储存并维护与您相关的信息，用于我们运营业务或履行法律义务。\n6、进行与市场营销有关的活动，例如提供并更新市场营销或推广内容。如果您不再希望收到某些类型的推广内容，除非适用法律另有规定。\n7、您可以按照消息中提供的方法（例如消息底部的退订链接）选择退订。\n我们将严格遵守本个人信息保护政策所述的目的来使用您的个人信息，您的个人信息将仅用于收集时即已确定、说明并且获得您授权的目的。如我们要将信息用于本政策未载明的其它用途时，会事先征求您的同意。如我们要将基于特定目的收集而来的信息用于其他目的时，会事先征求您的同意。在没有用户同意情况下，我们不会将用户个人信息和行为数据出售或提供给第三方使用。\n\n二、 我们如何保留您的个人信息\n出于遵循法律规范、解决纠纷或履行协议的目的，在您的账户处于活跃状态，或停止接受通知服务之前，我们需要保留必要的个人信息。\n在我们因特殊原因停止运营我们的部分或全部产品或服务时，我们会及时向您告知并停止相关产品或服务的个人信息收集和处理活动，同时将我们所持有的与该述产品或服务相关的个人信息进行删除或匿名化处理，除非法律法规另有规定。\n\n三、 我们如何共享、转让披露您的个人信息\n1. 我们如何共享、转让您的个人信息\n我们可能不时会与其关联公司和与我们合作提供产品和服务的战略合作伙伴共享部分个人信息或在其他情形中共享、转让您的个人信息，以便提供您要求的产品或服务。\n1.1、关联公司：为便于我们顺利开展业务运营，为您提供深圳市时间坊贸易有限公司产品和服务的全部能力，您的个人信息可能会与我们的关联公司共享。例如，基于深圳市时间坊贸易有限公司帐号使用服务时，您的个人信息可能会与我们的关联公司共享，以便协助您累计计算帐号积分、协助您在其他使用深圳市时间坊贸易有限公司帐号支持的产品或功能时完成积分兑换、会员等用户权益。我们只会共享必要的个人信息，如果我们或关联公司改变个人信息的使用及处理目的，将再次征求您的授权同意。\n1.2、与授权合作伙伴共享：仅为实现本个人信息保护政策中声明的目的，我们的某些服务将由授权合作伙伴提供。我们可能会与合作伙伴共享您的某些个人信息，以提供合作向您提供服务并提升用户体验。具体而言：\n我们需要向我们的广告、分析服务类的合作伙伴（包括但不限于广告服务商、第三方广告监测服务商、信息流服务供应商）共享您的设备信息和行为数据，以便完成广告投放并监测广告的有效性等情况。我们仅会在必要限度内向上述授权合作伙伴共享您的个人信息。\n1）我们需要向我们的营销、推广类合作伙伴（例如我们委托第三方举办或与第三方联合举办的营销、推广活动中）共享您的姓名、手机号码、邮箱地址、地址、银行帐号、支付宝帐号信息，以便第三方统计活动参与情况并向您发放奖励，包括但不限于发放您的权益或邮寄奖品等。例如：当我们需要向您发放活动奖品时，我们会将您预留在活动中的联系人信息告知物流公司，以便完成配送。\n2）我们需要向我们的供应商（包括但不限于云服务供应商、短信或其他技术服务供应商、支付或金融业务相关服务供应商、短视频等内容服务供应商）共享您的个人信息，以便实现必要的产品或服务功能。例如，我们委托第三方技术服务供应商代表我们提供语音到文字转换服务时。该供应商可能会收到并存储某些个人信息，这些第三方不会将这些信息用于任何其它目的。\n3）在一些情况下，我们会委托第三方代表我们处理您的个人信息。例如代表我们发送短信或电子邮件、提供技术支持的公司，这些公司只能将您的个人信息用于代表我们向您提供服务。\n1.3、在涉及合并、收购或破产清算时，如涉及到个人信息转让，我们会在要求新的持有您个人信息的公司、组织继续受此隐私政策的约束，否则我们将要求该公司、组织重新向您征求授权同意。如果不涉及个人信息转让，我们会对您进行充分告知，并将我们控制的所有个人信息删除或做匿名化处理。\n我们仅会出于合法、正当、必要、特定、明确的目的共享或转让您的个人信息，并且只会共享服务所必需的个人信息。同时，我们会通过协议或其他适当措施，要求上述第三方采取相当的保密和安全措施来处理个人信息。\n\n2.我们如何公开披露您的个人信息\n我们仅会在以下情况下，公开披露您的个人信息：\n\n1）获得您明确同意后；\n2）基于法律的披露：在法律强制要求遵守传票或其他法律程序、诉讼或政府主管部门强制性要求的情况下，若我们真诚地相信披露对保护我们的权利、保护您的安全或他人的安全、调查欺诈或响应政府要求是必要的，我们可能会披露您的个人信息。\n3. 共享、转让或公开披露个人信息的授权同意例外\n您已充分知晓，依据可适用的法律，在以下情形中，我们共享、转让或公开披露您的个人信息无需事先征得您的授权同意：\n\n1）与我们履行法律法规规定的义务相关的；\n2）与国家安全、国防安全直接相关的；\n3）与公共安全、公共卫生、重大公共利益直接相关的；\n4）与刑事侦查、起诉、审判和判决执行等直接相关的；\n5）出于维护您或其他个人的生命、财产等重大合法权益但又很难得到您本人授权同意的；\n6）所涉及的个人信息是您已自行向社会公众公开的；\n7）从合法公开披露的信息，如合法的新闻报道、政府信息公开等渠道，收集的您的个人信息的。\n\n四、我们如何保护您的个人信息\n1. 我们如何保护您的个人信息\n我们采取了合理可行的技术安全和组织措施，以保护所收集的与服务有关的信息。我们已使用符合业界标准的安全防护措施保护您提供的个人信息，防止数据遭到未经授权的访问、公开披露、使用、修改、损坏或丢失。我们会采取一切合理可行的措施，保护您的个人信息。\n\n2. 个人信息安全事件的通知与应对\n但是请注意，虽然我们采取了合理的措施保护您的信息，但没有任何网站、Internet 传输、计算机系统或无线连接是绝对安全的。在发生个人信息安全事件后，我们将按照相关法律法规的要求，及时向您告知：安全事件的基本情况和可能的影响、我们已采取或将要采取的处置措施、您可自主防范和降低风险的建议、对您的补救措施等。我们将及时将事件相关情况以邮件、信函、电话、推送通知等方式告知您。难以逐一告知个人信息主体时，我们会采取合理、有效的方式发布公告。同时，我们还将按照监管部门要求，主动上报个人信息安全事件的处置情况。\n\n五、 您对您的个人信息的权利\n在提供通知服务的场景下，我们与所处理的任何特定个人数据没有直接关系。如您需要查询访问权限，或试图纠正，修改或删除不正确数据的个人，应向相应客户端（数据控制方）提出请求。如果被要求删除数据，我们将在合理的时间内做出回应。\n您有权行使关于您的个人数据的权利，包括访问权、纠正权等。根据相关适用法律若包含更多的权利，如删除权、反对或限制处理的权利、可携带权等，我们也将根据法律规定按照您的要求实现数据主体的权利。相关法律规定在对您的信息使用是基于您的同意的情况下，则有权撤回该同意。如果您认为我们对您个人数据的处理违反了适用法律，您可以向监管机构投诉。\n\n六、 您的个人信息如何在全球范围转移\n作为一家在全球运营的公司，我们通过遍布全球的资源和服务器提供产品或服务，为保障服务效果（例如确保处理速度），在不违反当地数据保护法律的前提下，我们会根据手机销售区域、设置地存储用户个人数据，数据中心分布在中国大陆、法国、新加坡、印度，这意味着，您的个人信息可能会被转移到您使用产品或服务所在国家/地区的境外管辖区，或者受到来自这些管辖区的访问。\n您已理解在不同的数据保护法律下存在的风险有所不同，在此类情况下，我们会采取措施确保我们收集的数据依据本个人信息保护政策和适用法律的要求进行处理，并确保您的个人信息得到您使用产品或服务所在国家/地区同等的保护。例如，我们会请求您对跨境转移个人信息的同意，或者在跨境数据转移之前实施加密、去标识化、与数据接收方签署必要的数据传输/共享协议等安全举措。\n\n七、 本个人信息保护政策如何更新\n我们保留不时更新或修改本隐私政策的权利。我们会通过不同渠道向您发送变更通知。对于个人信息保护政策的重大变更，若您向我们提供了电子邮箱，我们会在变更生效前通过您的电子邮件通知您，否则我们会在我们的网站上发布告示或通过我们的设备向您推送通知。\n本个人信息保护政策容许调整，但未经您明示同意，我们不会削弱您按照本个人信息保护政策所享有的权利。\n如您不同意以上个人信息保护政策，我们将无法收集和使用提供服务所必需的信息，从而无法为您正常提供服务。\n本个人信息保护政策自更新之日起生效。\n\n如果您对我们的个人信息保护政策或做法有任何问题或疑虑，请通过以下方式联系我们：\n\n深圳市时间坊贸易有限公司\n\n地址：深圳市宝安区西乡街道渔业旧村二巷14号102\n隐私政策：http://www.szsjmyi.com/aspcms/about/about-492.html\n\n邮编：518100";
    		this.txt.on(Laya.Event.MOUSE_DOWN, this, this.onMouseDown);
    		this.mouY = 0;
    	}
    	onMouseDown() {
    		this.mouX = this.txt.mouseX;
    		this.mouY = this.txt.mouseY;
    		Laya.stage.on(Laya.Event.MOUSE_MOVE, this, this.scrollText);
    		Laya.stage.on(Laya.Event.MOUSE_UP, this, this.finishScrollText);
    	}
    	scrollText() {
    		var nowX = this.txt.mouseX;
    		var nowY = this.txt.mouseY;
    		this.txt.scrollY += this.mouY - nowY;
    		this.mouY = nowY;
    	}
    	finishScrollText() {
    		Laya.stage.off(Laya.Event.MOUSE_MOVE, this, this.scrollText);
    		Laya.stage.off(Laya.Event.MOUSE_UP, this, this.finishScrollText);
    	}
    }

    class HWPriverPolicy extends UIWindow {
    	onAwake() {
    		this.content.text = "是否退出游戏";
    	}
    	onOpen(obj) {
    		console.log('onOpen');
    		this.objcb = obj;
    		console.log(obj);
    		let self = this;
    		let agreebtn = this.owner.getChildByName('bg').getChildByName('agree');
    		agreebtn.on(Laya.Event.CLICK, this, this.agree);
    		console.log(agreebtn);
    		let notagreebtn = this.owner.getChildByName('bg').getChildByName('noagree');
    		notagreebtn.on(Laya.Event.CLICK, this, this.notAgree);
    		let winHeight = Laya.stage.height;
    		let winWidth = Laya.stage.width;
    		console.log("width=" + winWidth + ",height=" + winHeight);
    		if (winWidth > winHeight) {
    			let prehe = winHeight * 4 / 5;
    			let scale = prehe / self.owner.getChildByName('bg').height;
    			console.log(self.owner.getChildByName('bg').height);
    			self.owner.scaleX = scale;
    			self.owner.scaleY = scale;
    			self.owner.x = (winWidth - self.owner.width * scale) / 2;
    			self.owner.y = (winHeight - self.owner.height * scale) / 2;
    		}
    		else {
    			let prehe = winWidth * 4 / 5;
    			let scale = prehe / self.owner.getChildByName('bg').width;
    			self.owner.scaleX = scale;
    			self.owner.scaleY = scale;
    			self.owner.x = (winWidth - self.owner.width * scale) / 2;
    			self.owner.y = (winHeight - self.owner.height * scale) / 2;
    		}
    		this.content = this.owner.getChildByName("bg").getChildByName("Box").getChildByName("Text");
    		console.log("on open");
    	}
    	onClose() {
    		let agreebtn = this.owner.getChildByName('bg').getChildByName('agree');
    		agreebtn.off(Laya.Event.CLICK, this, this.agree);
    		let notagreebtn = this.owner.getChildByName('bg').getChildByName('noagree');
    		notagreebtn.off(Laya.Event.CLICK, this, this.notAgree);
    	}
    	agree() {
    		console.log("-------------1");
    		console.log("agree");
    		Platforms_QuickGame.getInstance().exitgame(true);
    		this.owner.visible = false;
    		UI_Manager.getInstance().hideUI('HWPriverPolicy');
    		this.objcb && this.objcb.agreecb();
    	}
    	notAgree() {
    		this.owner.visible = false;
    		UI_Manager.getInstance().hideUI('HWPriverPolicy');
    		hwH5GameAPI.prototype.gamelogin(() => {
    		});
    		this.objcb && this.objcb.notAgreecb();
    	}
    }

    class UIWidget extends UIPanel {
    }

    class MyToastTip extends UIWidget {
    	constructor() {
    		super(...arguments);
    		this.label = null;
    	}
    	onOpen(obj) {
    		this.label.text = obj;
    		let self = this;
    		let normalWidth = 1280;
    		let normalHeight = 720;
    		let winHeight = Laya.stage.height;
    		let winWidth = Laya.stage.width;
    		self.owner.y = winHeight * 2 / 3;
    		if (winWidth > winHeight) {
    			let prehe = winWidth * 3 / 5;
    			let scale = prehe / self.owner.width;
    			self.owner.scaleX = scale;
    			self.owner.scaleY = scale;
    		}
    		else {
    			let prehe = winWidth * 5 / 5;
    			let scale = prehe / self.owner.width;
    			self.owner.scaleX = scale;
    			self.owner.scaleY = scale;
    		}
    		setTimeout(() => {
    			if (self.owner.visible) {
    				self.owner.visible = false;
    			}
    		}, 2000);
    	}
    }

    class UI_NativeBanner extends UIWindow {
    	constructor() {
    		super(...arguments);
    		this.nativeId = '';
    		this.counttime = 0;
    		this.stime = 0;
    	}
    	onEnable() {
    		let self = this;
    		let sdm = window['SDK_Manager'];
    		let nativead = this.owner.getChildByName('NativeAD');
    		console.log('UI_NativeBanner:onEnable');
    		nativead.visible = false;
    		if (!sdm.map_allNativeAd.get(nativead)) {
    			sdm.map_allNativeAd.set(nativead, true);
    		}
    		setTimeout(() => {
    			let sbanner = function () {
    				sdm.Invoke(() => { }, InvokeConfig.createNative, function (adres) {
    					if (adres) {
    						let onNativeAdClick1 = function (id) {
    							sdm.Invoke(() => { }, InvokeConfig.onNativeAdClick, id);
    						};
    						let del = {
    							onNativeAdClick: onNativeAdClick1,
    							res: adres,
    							pnode: nativead,
    						};
    						UI_Manager.getInstance().showUIWithNode(nativead, del);
    					}
    				}, self.nativeId);
    			};
    			sbanner();
    			this.flushbanner = setInterval(function () {
    				self.counttime++;
    				if (self.counttime == SDK_config.bannerFlushTime) {
    					self.counttime = 0;
    					sbanner();
    				}
    			}, 1000);
    		}, this.stime);
    	}
    	onDisable() {
    		clearInterval(this.flushbanner);
    	}
    }

    class UI_hwNativeSplash extends UIWindow {
    	onOpen(obj) {
    		let self = this;
    		let overcb = function () {
    			obj.overcb();
    			self.adnode.visible = false;
    			UI_Manager.getInstance().hideUI(self.owner.name);
    		};
    		this.overcb = overcb;
    		console.log('==onEnable==');
    		this.adnode = this.owner.getChildByName("NativeAD");
    		this.closebtn = this.owner.getChildByName("btn_close");
    		this.jump = this.closebtn.getChildByName('jump');
    		this.closebtn.on(Laya.Event.CLICK, this, function () {
    			overcb && overcb();
    			if (self.intervalId) {
    				clearInterval(self.intervalId);
    			}
    		});
    		this.closebtn.visible = false;
    		this.adnode.visible = false;
    		window['Platforms_QuickGame'].platformAPI.createNative(function (adres) {
    			if (adres) {
    				self.adnode.visible = true;
    				self.closebtn.visible = true;
    				self.timecount = 0;
    				let onNativeAdClick1 = function (id) {
    					window['SDK_Manager'].Invoke(InvokeConfig.onNativeAdClick, id);
    				};
    				let del = {
    					onNativeAdClick: onNativeAdClick1,
    					res: adres,
    					pnode: self.adnode,
    				};
    				UI_Manager.getInstance().showUIWithNode(self.adnode, del);
    				self.intervalId = setInterval(function () {
    					self.timecount++;
    					console.log(self.timecount);
    					if (self.timecount >= 0) {
    						self.jump.text = "跳过 " + (5 - self.timecount);
    					}
    					if (self.timecount == 5) {
    						overcb();
    						clearInterval(self.intervalId);
    					}
    				}, 1000);
    			}
    			else {
    				if (overcb) {
    					overcb();
    				}
    			}
    		}, SDK_config.GameIdConfig.huaweiID.NativeSplahId);
    	}
    }

    class UI_NativeIcon extends Laya.Script {
    	constructor() {
    		super(...arguments);
    		this.nativeId = '';
    		this.counttime = 0;
    	}
    	onEnable() {
    		let self = this;
    		let sdm = window['SDK_Manager'];
    		let nativead = this.owner.getChildByName('NativeAD');
    		if (!sdm.map_allNativeAd.get(nativead)) {
    			sdm.map_allNativeAd.set(nativead, true);
    		}
    		nativead.visible = false;
    		let showicon = function () {
    			sdm.Invoke(() => { }, InvokeConfig.createNative, function (adres) {
    				if (adres) {
    					let onNativeAdClick1 = function (id) {
    						sdm.Invoke(() => { }, InvokeConfig.onNativeAdClick, id);
    					};
    					let del = {
    						onNativeAdClick: onNativeAdClick1,
    						res: adres,
    					};
    					UI_Manager.getInstance().showUIWithNode(nativead, del);
    				}
    			}, self.nativeId);
    		};
    		showicon();
    		this.flushIcon = setInterval(function () {
    			self.counttime++;
    			if (self.counttime == 20) {
    				self.counttime = 0;
    				showicon();
    			}
    		}, 1000);
    	}
    	onDisable() {
    		clearInterval(this.flushIcon);
    	}
    }

    class UI_NativeImage extends Laya.Script {
    	constructor() {
    		super(...arguments);
    		this.nativeId = '';
    		this.type = 0;
    	}
    	onEnable() {
    		if (this.type == 3)
    			return;
    		console.log('==onEnable==');
    		let self = this;
    		let sdm = window['SDK_Manager'];
    		let nativead = this.owner.getChildByName('NativeAD');
    		nativead.visible = false;
    		if (!sdm.map_allNativeAd.get(nativead)) {
    			sdm.map_allNativeAd.set(nativead, true);
    		}
    		let closefun = function () {
    			console.log("'close'");
    		};
    		sdm.Invoke(() => { }, InvokeConfig.createNative, function (adres) {
    			if (adres) {
    				let onNativeAdClick1 = function (id) {
    					sdm.Invoke(() => { }, InvokeConfig.onNativeAdClick, id);
    				};
    				let del = {
    					onNativeAdClick: onNativeAdClick1,
    					res: adres,
    					pnode: nativead,
    					onClose: closefun
    				};
    				UI_Manager.getInstance().showUIWithNode(nativead, del);
    			}
    		}, self.nativeId);
    	}
    	onEnableA() {
    		console.log('==onEnableA==');
    		let self = this;
    		let sdm = window['SDK_Manager'];
    		let nativead = this.owner.getChildByName('NativeAD');
    		nativead.visible = false;
    		if (!sdm.map_allNativeAd.get(nativead)) {
    			sdm.map_allNativeAd.set(nativead, true);
    		}
    		let closefun = function () {
    			console.log("'close'");
    		};
    		sdm.Invoke(() => { }, InvokeConfig.createNative, function (adres) {
    			if (adres) {
    				let onNativeAdClick1 = function (id) {
    					sdm.Invoke(() => { }, InvokeConfig.onNativeAdClick, id);
    				};
    				let del = {
    					onNativeAdClick: onNativeAdClick1,
    					res: adres,
    					pnode: nativead,
    					onClose: closefun
    				};
    				UI_Manager.getInstance().showUIWithNode(nativead, del);
    			}
    		}, self.nativeId);
    	}
    }

    class GameConfig {
    	constructor() {
    	}
    	static init() {
    		var reg = Laya.ClassUtils.regClass;
    		reg("AdScript/DxYSZC2.ts", DxYSZC2);
    		reg("AdScript/DxYSZC.ts", DxYSZC);
    		reg("AdScript/DxYSZC_c_001.ts", DxYSZC_c_001);
    		reg("Srcipt/game/Game_App.ts", Game_App);
    		reg("Srcipt/utils/LoadShufflingText.ts", LoadShufflingText);
    		reg("Srcipt/utils/UI_Button.ts", UI_Button);
    		reg("Srcipt/Platforms/Native/Native_Ad.ts", Native_Ad);
    		reg("AdScript/huxi.ts", huxi);
    		reg("AdScript/Oppoh5GameAPI/DxOppoNativeAd.ts", DxOppoNativeAd);
    		reg("AdScript/Oppoh5GameAPI/DxShowOppoNativeAd.ts", DxShowOppoNativeAd);
    		reg("Srcipt/utils/Joystick.ts", Joystick);
    		reg("AdScript/Oppoh5GameAPI/DxOppoNativeIconAd.ts", DxOppoNativeIconAd);
    		reg("Srcipt/game/SmallMap_Ctrl.ts", SmallMap_Ctrl);
    		reg("Srcipt/Prop/KnapsackItem.ts", KnapsackItem);
    		reg("Srcipt/Prop/KnapsackList.ts", KnapsackList);
    		reg("Srcipt/Prop/EquipmentList.ts", EquipmentList);
    		reg("Srcipt/utils/UIFlickerTween.ts", UIFlickerTween);
    		reg("Srcipt/Platforms/OppoBannerAd.ts", OppoBannerAd);
    		reg("Srcipt/utils/FollowZoom.ts", FollowZoom);
    		reg("AdScript/yszc_androidandvivo.ts", yszc_android);
    		reg("AdScript/TipsEffect.ts", TipsEffect);
    		reg("AdScript/huaweih5/Tool/TextCtrl.ts", TextCtrl);
    		reg("AdScript/huaweih5/Platforms/QuickGame/huaweiH5GameAPI/HWPriverPolicy.ts", HWPriverPolicy);
    		reg("AdScript/huaweih5/Platforms/QuickGame/_Demo/Tip/MyToastTip.ts", MyToastTip);
    		reg("AdScript/huaweih5/Platforms/QuickGame/_Demo/Native/UI_NativeAd.ts", UI_NativeAd);
    		reg("AdScript/huaweih5/Platforms/QuickGame/_Demo/Native/UI_NativeBanner.ts", UI_NativeBanner);
    		reg("AdScript/huaweih5/Platforms/QuickGame/huaweiH5GameAPI/UI_NativeSplash.ts", UI_hwNativeSplash);
    		reg("AdScript/huaweih5/Platforms/QuickGame/_Demo/Native/UI_NativeIcon.ts", UI_NativeIcon);
    		reg("AdScript/huaweih5/Platforms/QuickGame/_Demo/Native/UI_NativeImage.ts", UI_NativeImage);
    	}
    }
    GameConfig.width = 1280;
    GameConfig.height = 720;
    GameConfig.scaleMode = "fixedheight";
    GameConfig.screenMode = "horizontal";
    GameConfig.alignV = "middle";
    GameConfig.alignH = "center";
    GameConfig.startScene = "SC1.scene";
    GameConfig.sceneRoot = "";
    GameConfig.debug = false;
    GameConfig.stat = false;
    GameConfig.physicsDebug = false;
    GameConfig.exportSceneToJson = true;
    GameConfig.init();

    class Main {
    	constructor() {
    		var n = 100;
    		if (window['conch'] && window['conch'].setOnBackPressedFunction) {
    			window['conch'].setOnBackPressedFunction(() => {
    				console.log('press back ' + n);
    				if (n-- <= 0) {
    					window['conch'].exit();
    				}
    			});
    		}
    		if (window["Laya3D"])
    			Laya3D.init(GameConfig.width, GameConfig.height);
    		else
    			Laya.init(GameConfig.width, GameConfig.height, Laya["WebGL"]);
    		Laya["Physics"] && Laya["Physics"].enable();
    		Laya["DebugPanel"] && Laya["DebugPanel"].enable();
    		Laya.stage.scaleMode = GameConfig.scaleMode;
    		Laya.stage.screenMode = GameConfig.screenMode;
    		Laya.stage.alignV = GameConfig.alignV;
    		Laya.stage.alignH = GameConfig.alignH;
    		Laya.URL.exportSceneToJson = GameConfig.exportSceneToJson;
    		if (GameConfig.debug || Laya.Utils.getQueryString("debug") == "true")
    			Laya.enableDebugPanel();
    		if (GameConfig.physicsDebug && Laya["PhysicsDebugDraw"])
    			Laya["PhysicsDebugDraw"].enable();
    		if (GameConfig.stat)
    			Laya.Stat.show();
    		Laya.alertGlobalError(false);

    		// Laya.ResourceVersion.enable("version.json", Laya.Handler.create(this, this.onVersionLoaded), Laya.ResourceVersion.FILENAME_VERSION);

    		if (window.qg) {
    			let self = this;
    			let loaded = Laya.LocalStorage.getItem("Loaded");
    			if (loaded != 1) {
    				console.log("进入了这里");
    				var downloadTask = qg$1.download({
    					url: "http://res.njmobaike.com/CDN/ShanHaiShenShouJinHua/MoNiShanHaiJing/1.1.0/bin.zip",
    					success: function (data) {
    						console.log(`handling success, tempFilePath = ${data.tempFilePath}`);
    						qg$1.unzipFile({
    							srcUri: data.tempFilePath,
    							dstUri: qg$1.env.USER_DATA_PATH + "/bin",
    							success: function (uri) {
    								console.log(`handling success: ${uri}`);
    								Laya.URL.basePath = qg$1.env.USER_DATA_PATH + "/bin/";
    								Laya.LocalStorage.setItem("Loaded", 1);

    								Laya.ResourceVersion.enable("version.json", Laya.Handler.create(self, self.onVersionLoaded), Laya.ResourceVersion.FILENAME_VERSION);
    							},
    							fail: function (data, code) {
    								console.log(`handling fail, code = ${code}`);
    							}
    						});
    					},
    					fail: function (data, code) {
    						console.log(`handling fail, code = ${code}`);
    					}
    				});

    				downloadTask.onProgressUpdate(function (msg) {
    					console.log('SSSSSSSSSSSSSSSSS');
    					var progress = msg["progress"];
    					console.log(progress + "%");
    				});
    			}
    			else {
    				Laya.URL.basePath = qg$1.env.USER_DATA_PATH + "/bin/";

    				Laya.ResourceVersion.enable("version.json", Laya.Handler.create(this, this.onVersionLoaded), Laya.ResourceVersion.FILENAME_VERSION);
    			}
    		}
    		else {
    			Laya.ResourceVersion.enable("version.json", Laya.Handler.create(this, this.onVersionLoaded), Laya.ResourceVersion.FILENAME_VERSION);
    		}

    		Advertisement.initVal();
    	}
    	onVersionLoaded() {
    		Laya.AtlasInfoManager.enable("fileconfig.json", Laya.Handler.create(this, this.onConfigLoaded));

    		// let self = this;
    		// Laya.loader.create("prefab/jkgg.prefab", Laya.Handler.create(this, prefab => {
    		// 	let jkgg = Laya.Pool.getItemByCreateFun("jkgg", prefab.create, prefab)
    		// 	jkgg.width = Laya.stage.width;
    		// 	jkgg.height = Laya.stage.height;
    		// 	Laya.stage.addChild(jkgg);
    		// 	Laya.timer.once(3 * 1000, this, function () {
    		// 		jkgg.visible = false;

    		// 		Laya.loader.load("prefab/fwtk.json", Laya.Handler.create(this, function (pref) {
    		// 		    var fwtkp = new Laya.Prefab();
    		// 		    fwtkp.json = pref;
    		// 		    var fwtks = Laya.Pool.getItemByCreateFun("fwtk", fwtkp.create, fwtkp);
    		// 		    fwtks.pos(Laya.stage.width / 2, Laya.stage.height / 2);
    		// 		    fwtks.scaleX = 1;
    		// 		    fwtks.scaleY = 1;
    		// 		    fwtks.getChildByName('btn_yes').on(Laya.Event.MOUSE_DOWN, this, function () {
    		// 		        Laya.LocalStorage.setItem('ycys', JSON.parse('true'));
    		// 		        fwtks.removeSelf();

    		// 		Laya.AtlasInfoManager.enable("fileconfig.json", Laya.Handler.create(self, self.onConfigLoaded));

    		// 		    })
    		// 		    fwtks.getChildByName('btn_no').on(Laya.Event.MOUSE_DOWN, this, function () {
    		// 		        qg.exitApplication({
    		// 		            success: function () {
    		// 		                console.log("exitApplication success");
    		// 		            },
    		// 		            fail: function () {
    		// 		                console.log("exitApplication fail");
    		// 		            },
    		// 		            complete: function () {
    		// 		                console.log("exitApplication complete");
    		// 		            }
    		// 		        });
    		// 		    })
    		// 		    Laya.stage.addChild(fwtks);
    		// 		}))

    		// 	})
    		// }));
    	}
    	onConfigLoaded() {
    		GameConfig.startScene && Laya.Scene.open(GameConfig.startScene);
    		PlatformAdManager.getInstance().enterGameShowYSZCDia();
    	}
    }
    new Main();

}());
