From 5b48b2f5e5a823f41860712a724f0b17b1294bc1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=8E=8B=E7=AB=8B=E5=B8=AE?= <3294713004@qq.com> Date: Mon, 24 Mar 2025 16:40:12 +0800 Subject: [PATCH] =?UTF-8?q?refactor(boards):=20=E8=A7=84=E8=8C=83=E5=8C=96?= =?UTF-8?q?arduino=E6=9D=BF=E5=8D=A1=E4=BB=A3=E7=A0=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- boards/default_src/arduino/blocks/ethernet.js | 1208 +---------------- boards/default_src/arduino/blocks/text.js | 19 +- .../default_src/arduino/blocks/variables.js | 30 +- .../arduino/generators/ethernet.js | 1188 +--------------- .../arduino/templates/json/cities.json | 1185 ++++++++++++++++ .../arduino_avr/blocks/actuator.js | 442 ++++-- .../default_src/arduino_avr/blocks/blynk.js | 36 +- .../arduino_avr/blocks/communicate.js | 81 +- .../default_src/arduino_avr/blocks/control.js | 219 +-- .../default_src/arduino_avr/blocks/display.js | 203 ++- .../arduino_avr/blocks/ethernet.js | 49 +- .../default_src/arduino_avr/blocks/factory.js | 13 +- .../default_src/arduino_avr/blocks/inout.js | 112 +- .../default_src/arduino_avr/blocks/lists.js | 16 +- .../default_src/arduino_avr/blocks/logic.js | 3 +- boards/default_src/arduino_avr/blocks/math.js | 164 ++- boards/default_src/arduino_avr/blocks/pins.js | 5 + .../default_src/arduino_avr/blocks/scoop.js | 16 +- .../default_src/arduino_avr/blocks/sensor.js | 251 ++-- .../default_src/arduino_avr/blocks/serial.js | 31 +- .../default_src/arduino_avr/blocks/storage.js | 38 +- boards/default_src/arduino_avr/blocks/text.js | 61 +- .../default_src/arduino_avr/blocks/tools.js | 1 - boards/default_src/arduino_avr/template.xml | 10 - .../arduino_esp32/blocks/actuator.js | 1 - .../arduino_esp32/blocks/communicate.js | 5 +- .../arduino_esp32/blocks/control.js | 43 +- .../arduino_esp32/blocks/ethernet.js | 6 +- .../arduino_esp32/blocks/handbit.js | 50 +- .../default_src/arduino_esp32/blocks/inout.js | 24 +- .../arduino_esp32/blocks/mixepi.js | 57 +- .../default_src/arduino_esp32/blocks/mixgo.js | 45 +- .../arduino_esp32/blocks/pinout.js | 1 - .../default_src/arduino_esp32/blocks/pins.js | 3 +- .../arduino_esp32/blocks/pocketcard.js | 3 + .../arduino_esp32/blocks/sensor.js | 22 +- .../arduino_esp32/blocks/serial.js | 31 +- .../arduino_esp32/blocks/storage.js | 15 +- .../default_src/arduino_esp8266/template.xml | 112 +- 39 files changed, 2523 insertions(+), 3276 deletions(-) create mode 100644 boards/default_src/arduino/templates/json/cities.json diff --git a/boards/default_src/arduino/blocks/ethernet.js b/boards/default_src/arduino/blocks/ethernet.js index 5cc18ca4..9d4d657a 100644 --- a/boards/default_src/arduino/blocks/ethernet.js +++ b/boards/default_src/arduino/blocks/ethernet.js @@ -1,7 +1,9 @@ import * as Blockly from 'blockly/core'; +import CITYS_DATA from '../templates/json/cities.json'; const ETHERNET_HUE = 0; -const WEATHER_HUE = "#27b6ac"; +const WEATHER_HUE = '#27b6ac'; + /** * @name 模块名 Http GET请求 @@ -59,1192 +61,6 @@ export const http_post = { } }; -const CITYS_DATA = { - "本地": { - "-": { - "pinyin": "ip" - } - }, - "北京": { - "-": { - "pinyin": "beijing" - } - }, - "天津": { - "-": { - "pinyin": "tianjin" - } - }, - "河北": { - "石家庄": { - "pinyin": "shijiazhuang" - }, - "邯郸": { - "pinyin": "handan" - }, - "邢台": { - "pinyin": "xingtai" - }, - "衡水": { - "pinyin": "hengshui" - }, - "保定": { - "pinyin": "baoding" - }, - "沧州": { - "pinyin": "cangzhou" - }, - "张家口": { - "pinyin": "zhangjiakou" - }, - "廊坊": { - "pinyin": "langfang" - }, - "承德": { - "pinyin": "chengde" - }, - "唐山": { - "pinyin": "tangshan" - }, - "秦皇岛": { - "pinyin": "qinhuangdao" - } - }, - "山西": { - "太原": { - "pinyin": "taiyuan" - }, - "运城": { - "pinyin": "yuncheng" - }, - "临汾": { - "pinyin": "linfen" - }, - "吕梁": { - "pinyin": "lvliang" - }, - "朔州": { - "pinyin": "shuozhou" - }, - "晋城": { - "pinyin": "jincheng" - }, - "长治": { - "pinyin": "changzhi" - }, - "晋中": { - "pinyin": "jinzhong" - }, - "阳泉": { - "pinyin": "yangquan" - }, - "忻州": { - "pinyin": "xinzhou" - }, - "大同": { - "pinyin": "datong" - } - }, - "内蒙古": { - "呼和浩特": { - "pinyin": "huhehaote" - }, - "阿左旗": { - "pinyin": "azuoqi" - }, - "乌海": { - "pinyin": "wuhai" - }, - "临河": { - "pinyin": "linhe" - }, - "鄂尔多斯": { - "pinyin": "eerduosi" - }, - "包头": { - "pinyin": "baotou" - }, - "集宁": { - "pinyin": "jining" - }, - "锡林浩特": { - "pinyin": "xilinhaote" - }, - "赤峰": { - "pinyin": "chifeng" - }, - "通辽": { - "pinyin": "tongliao" - }, - "乌兰浩特": { - "pinyin": "wulanhaote" - }, - "海拉尔": { - "pinyin": "hailaer" - } - }, - "辽宁": { - "沈阳": { - "pinyin": "shenyang" - }, - "大连": { - "pinyin": "dalian" - }, - "葫芦岛": { - "pinyin": "huludao" - }, - "朝阳": { - "pinyin": "chaoyang" - }, - "营口": { - "pinyin": "yingkou" - }, - "锦州": { - "pinyin": "jinzhou" - }, - "盘锦": { - "pinyin": "panjin" - }, - "阜新": { - "pinyin": "fuxin" - }, - "鞍山": { - "pinyin": "anshan" - }, - "辽阳": { - "pinyin": "liaoyang" - }, - "丹东": { - "pinyin": "dandong" - }, - "本溪": { - "pinyin": "benxi" - }, - "抚顺": { - "pinyin": "fushun" - }, - "铁岭": { - "pinyin": "tieling" - } - }, - "吉林": { - "长春": { - "pinyin": "changchun" - }, - "通化": { - "pinyin": "tonghua" - }, - "白山": { - "pinyin": "baishan" - }, - "辽源": { - "pinyin": "liaoyuan" - }, - "四平": { - "pinyin": "siping" - }, - "吉林": { - "pinyin": "jilin" - }, - "延吉": { - "pinyin": "yanji" - }, - "白城": { - "pinyin": "baicheng" - }, - "松原": { - "pinyin": "songyuan" - } - }, - "黑龙江": { - "哈尔滨": { - "pinyin": "haerbin" - }, - "牡丹江": { - "pinyin": "mudanjiang" - }, - "大庆": { - "pinyin": "daqing" - }, - "齐齐哈尔": { - "pinyin": "qiqihaer" - }, - "绥化": { - "pinyin": "suihua" - }, - "伊春": { - "pinyin": "yichun" - }, - "大兴安岭": { - "pinyin": "daxinganling" - }, - "黑河": { - "pinyin": "heihe" - }, - "鸡西": { - "pinyin": "jixi" - }, - "七台河": { - "pinyin": "qitaihe" - }, - "佳木斯": { - "pinyin": "jiamusi" - }, - "鹤岗": { - "pinyin": "hegang" - }, - "双鸭山": { - "pinyin": "shuangyashan" - } - }, - "上海": { - "-": { - "pinyin": "shanghai" - } - }, - "江苏": { - "南京": { - "pinyin": "nanjing" - }, - "镇江": { - "pinyin": "zhenjiang" - }, - "苏州": { - "pinyin": "suzhou" - }, - "无锡": { - "pinyin": "wuxi" - }, - "常州": { - "pinyin": "changzhou" - }, - "南通": { - "pinyin": "nantong" - }, - "扬州": { - "pinyin": "yangzhou" - }, - "淮安": { - "pinyin": "huaian" - }, - "泰州": { - "pinyin": "taizhou" - }, - "盐城": { - "pinyin": "yancheng" - }, - "徐州": { - "pinyin": "xuzhou" - }, - "宿迁": { - "pinyin": "suqian" - }, - "连云港": { - "pinyin": "lianyungang" - } - }, - "浙江": { - "杭州": { - "pinyin": "hangzhou" - }, - "温州": { - "pinyin": "wenzhou" - }, - "衢州": { - "pinyin": "quzhou" - }, - "丽水": { - "pinyin": "lishui" - }, - "金华": { - "pinyin": "jinhua" - }, - "绍兴": { - "pinyin": "shaoxing" - }, - "湖州": { - "pinyin": "huzhou" - }, - "嘉兴": { - "pinyin": "jiaxing" - }, - "台州": { - "pinyin": "taizhou" - }, - "宁波": { - "pinyin": "ningbo" - }, - "舟山": { - "pinyin": "zhoushan" - } - }, - "安徽": { - "合肥": { - "pinyin": "hefei" - }, - "安庆": { - "pinyin": "anqing" - }, - "池州": { - "pinyin": "chizhou" - }, - "铜陵": { - "pinyin": "tongling" - }, - "六安": { - "pinyin": "luan" - }, - "阜阳": { - "pinyin": "fuyang" - }, - "淮南": { - "pinyin": "huainan" - }, - "蚌埠": { - "pinyin": "bengbu" - }, - "宿州": { - "pinyin": "suzhou" - }, - "黄山": { - "pinyin": "huangshan" - }, - "宣城": { - "pinyin": "xuancheng" - }, - "芜湖": { - "pinyin": "wuhu" - }, - "马鞍山": { - "pinyin": "maanshan" - }, - "滁州": { - "pinyin": "chuzhou" - }, - "亳州": { - "pinyin": "bozhou" - }, - "淮北": { - "pinyin": "huaibei" - } - }, - "福建": { - "福州": { - "pinyin": "fuzhou" - }, - "漳州": { - "pinyin": "zhangzhou" - }, - "厦门": { - "pinyin": "xiamen" - }, - "龙岩": { - "pinyin": "longyan" - }, - "三明": { - "pinyin": "sanming" - }, - "泉州": { - "pinyin": "quanzhou" - }, - "莆田": { - "pinyin": "putian" - }, - "南平": { - "pinyin": "nanping" - }, - "宁德": { - "pinyin": "ningde" - } - }, - "江西": { - "南昌": { - "pinyin": "nanchang" - }, - "赣州": { - "pinyin": "ganzhou" - }, - "萍乡": { - "pinyin": "pingxiang" - }, - "吉安": { - "pinyin": "jian" - }, - "宜春": { - "pinyin": "yichun" - }, - "新余": { - "pinyin": "xinyu" - }, - "抚州": { - "pinyin": "fuzhou" - }, - "鹰潭": { - "pinyin": "yingtan" - }, - "上饶": { - "pinyin": "shangrao" - }, - "景德镇": { - "pinyin": "jingdezhen" - }, - "九江": { - "pinyin": "jiujiang" - } - }, - "山东": { - "济南": { - "pinyin": "jinan" - }, - "枣庄": { - "pinyin": "zaozhuang" - }, - "菏泽": { - "pinyin": "heze" - }, - "济宁": { - "pinyin": "jining" - }, - "聊城": { - "pinyin": "liaocheng" - }, - "泰安": { - "pinyin": "taian" - }, - "莱芜": { - "pinyin": "laiwu" - }, - "德州": { - "pinyin": "dezhou" - }, - "淄博": { - "pinyin": "zibo" - }, - "滨州": { - "pinyin": "binzhou" - }, - "临沂": { - "pinyin": "linyi" - }, - "日照": { - "pinyin": "rizhao" - }, - "青岛": { - "pinyin": "qingdao" - }, - "潍坊": { - "pinyin": "weifang" - }, - "东营": { - "pinyin": "dongying" - }, - "烟台": { - "pinyin": "yantai" - }, - "威海": { - "pinyin": "weihai" - } - }, - "河南": { - "郑州": { - "pinyin": "zhengzhou" - }, - "三门峡": { - "pinyin": "sanmenxia" - }, - "洛阳": { - "pinyin": "luoyang" - }, - "信阳": { - "pinyin": "xinyang" - }, - "南阳": { - "pinyin": "nanyang" - }, - "驻马店": { - "pinyin": "zhumadian" - }, - "漯河": { - "pinyin": "luohe" - }, - "周口": { - "pinyin": "zhoukou" - }, - "平顶山": { - "pinyin": "pingdingshan" - }, - "许昌": { - "pinyin": "xuchang" - }, - "济源": { - "pinyin": "jiyuan" - }, - "开封": { - "pinyin": "kaifeng" - }, - "焦作": { - "pinyin": "jiaozuo" - }, - "新乡": { - "pinyin": "xinxiang" - }, - "鹤壁": { - "pinyin": "hebi" - }, - "濮阳": { - "pinyin": "puyang" - }, - "安阳": { - "pinyin": "anyang" - }, - "商丘": { - "pinyin": "shangqiu" - } - }, - "湖北": { - "武汉": { - "pinyin": "wuhan" - }, - "恩施": { - "pinyin": "enshi" - }, - "宜昌": { - "pinyin": "yichang" - }, - "荆州": { - "pinyin": "jingzhou" - }, - "神农架": { - "pinyin": "shennongjia" - }, - "荆门": { - "pinyin": "jingmen" - }, - "襄阳": { - "pinyin": "xiangyang" - }, - "十堰": { - "pinyin": "shiyan" - }, - "潜江": { - "pinyin": "qianjiang" - }, - "天门": { - "pinyin": "tianmen" - }, - "仙桃": { - "pinyin": "xiantao" - }, - "咸宁": { - "pinyin": "xianning" - }, - "黄石": { - "pinyin": "huangshi" - }, - "孝感": { - "pinyin": "xiaogan" - }, - "鄂州": { - "pinyin": "ezhou" - }, - "黄冈": { - "pinyin": "huanggang" - }, - "随州": { - "pinyin": "suizhou" - } - }, - "湖南": { - "长沙": { - "pinyin": "changsha" - }, - "永州": { - "pinyin": "yongzhou" - }, - "怀化": { - "pinyin": "huaihua" - }, - "邵阳": { - "pinyin": "shaoyang" - }, - "娄底": { - "pinyin": "loudi" - }, - "吉首": { - "pinyin": "jishou" - }, - "张家界": { - "pinyin": "zhangjiajie" - }, - "益阳": { - "pinyin": "yiyang" - }, - "常德": { - "pinyin": "changde" - }, - "郴州": { - "pinyin": "chenzhou" - }, - "衡阳": { - "pinyin": "hengyang" - }, - "湘潭": { - "pinyin": "xiangtan" - }, - "株洲": { - "pinyin": "zhuzhou" - }, - "岳阳": { - "pinyin": "yueyang" - } - }, - "广东": { - "广州": { - "pinyin": "guangzhou" - }, - "湛江": { - "pinyin": "zhanjiang" - }, - "茂名": { - "pinyin": "maoming" - }, - "阳江": { - "pinyin": "yangjiang" - }, - "珠海": { - "pinyin": "zhuhai" - }, - "云浮": { - "pinyin": "yunfu" - }, - "肇庆": { - "pinyin": "zhaoqing" - }, - "江门": { - "pinyin": "jiangmen" - }, - "佛山": { - "pinyin": "foshan" - }, - "中山": { - "pinyin": "zhongshan" - }, - "东莞": { - "pinyin": "dongguan" - }, - "清远": { - "pinyin": "qingyuan" - }, - "深圳": { - "pinyin": "shenzhen" - }, - "惠州": { - "pinyin": "huizhou" - }, - "河源": { - "pinyin": "heyuan" - }, - "韶关": { - "pinyin": "shaoguan" - }, - "汕尾": { - "pinyin": "shanwei" - }, - "汕头": { - "pinyin": "shantou" - }, - "揭阳": { - "pinyin": "jieyang" - }, - "潮州": { - "pinyin": "chaozhou" - }, - "梅州": { - "pinyin": "meizhou" - } - }, - "广西": { - "南宁": { - "pinyin": "nanning" - }, - "崇左": { - "pinyin": "chongzuo" - }, - "防城港": { - "pinyin": "fangchenggang" - }, - "北海": { - "pinyin": "beihai" - }, - "钦州": { - "pinyin": "qinzhou" - }, - "百色": { - "pinyin": "baise" - }, - "贵港": { - "pinyin": "guigang" - }, - "来宾": { - "pinyin": "laibin" - }, - "河池": { - "pinyin": "hechi" - }, - "柳州": { - "pinyin": "liuzhou" - }, - "玉林": { - "pinyin": "yulin" - }, - "梧州": { - "pinyin": "wuzhou" - }, - "桂林": { - "pinyin": "guilin" - }, - "贺州": { - "pinyin": "hezhou" - } - }, - "海南": { - "海口": { - "pinyin": "haikou" - }, - "西沙": { - "pinyin": "xisha" - }, - "三亚": { - "pinyin": "sanya" - }, - "乐东": { - "pinyin": "ledong" - }, - "五指山": { - "pinyin": "wuzhishan" - }, - "东方": { - "pinyin": "dongfang" - }, - "昌江": { - "pinyin": "changjiang" - }, - "白沙": { - "pinyin": "baisha" - }, - "儋州": { - "pinyin": "danzhou" - }, - "保亭": { - "pinyin": "baoting" - }, - "陵水": { - "pinyin": "lingshui" - }, - "万宁": { - "pinyin": "wanning" - }, - "琼中": { - "pinyin": "qiongzhong" - }, - "屯昌": { - "pinyin": "tunchang" - }, - "琼海": { - "pinyin": "qionghai" - }, - "文昌": { - "pinyin": "wenchang" - }, - "临高": { - "pinyin": "lingao" - }, - "澄迈": { - "pinyin": "chengmai" - }, - "定安": { - "pinyin": "dingan" - }, - "南沙": { - "pinyin": "nansha" - }, - "中沙": { - "pinyin": "wuzhishan" - } - }, - "重庆": { - "-": { - "pinyin": "chongqing" - } - }, - "四川": { - "成都": { - "pinyin": "chengdu" - }, - "甘孜": { - "pinyin": "ganzi" - }, - "攀枝花": { - "pinyin": "panzhihua" - }, - "凉山": { - "pinyin": "liangshan" - }, - "雅安": { - "pinyin": "yaan" - }, - "乐山": { - "pinyin": "leshan" - }, - "眉山": { - "pinyin": "meishan" - }, - "宜宾": { - "pinyin": "yibin" - }, - "泸州": { - "pinyin": "luzhou" - }, - "自贡": { - "pinyin": "zigong" - }, - "资阳": { - "pinyin": "ziyang" - }, - "内江": { - "pinyin": "neijiang" - }, - "遂宁": { - "pinyin": "suining" - }, - "南充": { - "pinyin": "nanchong" - }, - "广安": { - "pinyin": "guangan" - }, - "阿坝": { - "pinyin": "aba" - }, - "德阳": { - "pinyin": "deyang" - }, - "绵阳": { - "pinyin": "mianyang" - }, - "巴中": { - "pinyin": "bazhong" - }, - "广元": { - "pinyin": "guangyuan" - }, - "达州": { - "pinyin": "dazhou" - } - }, - "贵州": { - "贵阳": { - "pinyin": "guiyang" - }, - "兴义": { - "pinyin": "xingyi" - }, - "水城": { - "pinyin": "shuicheng" - }, - "安顺": { - "pinyin": "anshun" - }, - "毕节": { - "pinyin": "bijie" - }, - "都匀": { - "pinyin": "duyun" - }, - "凯里": { - "pinyin": "kaili" - }, - "遵义": { - "pinyin": "zunyi" - }, - "铜仁": { - "pinyin": "tongren" - } - }, - "云南": { - "昆明": { - "pinyin": "kunming" - }, - "景洪": { - "pinyin": "jinghong" - }, - "普洱": { - "pinyin": "puer" - }, - "临沧": { - "pinyin": "lincang" - }, - "德宏": { - "pinyin": "dehong" - }, - "保山": { - "pinyin": "baoshan" - }, - "怒江": { - "pinyin": "nujiang" - }, - "大理": { - "pinyin": "dali" - }, - "香格里拉": { - "pinyin": "xianggelila" - }, - "丽江": { - "pinyin": "lijiang" - }, - "红河": { - "pinyin": "honghe" - }, - "玉溪": { - "pinyin": "yuxi" - }, - "楚雄": { - "pinyin": "chuxiong" - }, - "文山": { - "pinyin": "wenshan" - }, - "曲靖": { - "pinyin": "qujing" - }, - "昭通": { - "pinyin": "zhaotong" - } - }, - "西藏": { - "拉萨": { - "pinyin": "lasa" - }, - "阿里": { - "pinyin": "ali" - }, - "日喀则": { - "pinyin": "rikaze" - }, - "山南": { - "pinyin": "shannan" - }, - "林芝": { - "pinyin": "linzhi" - }, - "那曲": { - "pinyin": "naqu" - }, - "昌都": { - "pinyin": "changdu" - } - }, - "陕西": { - "西安": { - "pinyin": "xian" - }, - "汉中": { - "pinyin": "hanzhong" - }, - "安康": { - "pinyin": "ankang" - }, - "宝鸡": { - "pinyin": "baoji" - }, - "杨凌": { - "pinyin": "yangling" - }, - "咸阳": { - "pinyin": "xianyang" - }, - "铜川": { - "pinyin": "tongchuan" - }, - "渭南": { - "pinyin": "weinan" - }, - "商洛": { - "pinyin": "shangluo" - }, - "延安": { - "pinyin": "yanan" - }, - "榆林": { - "pinyin": "yulin" - } - }, - "甘肃": { - "兰州": { - "pinyin": "lanzhou" - }, - "武都": { - "pinyin": "wudu" - }, - "张掖": { - "pinyin": "zhangye" - }, - "嘉峪关": { - "pinyin": "jiayuguan" - }, - "酒泉": { - "pinyin": "jiuquan" - }, - "合作": { - "pinyin": "hezuo" - }, - "临夏": { - "pinyin": "linxia" - }, - "天水": { - "pinyin": "tianshui" - }, - "定西": { - "pinyin": "dingxi" - }, - "白银": { - "pinyin": "baiyin" - }, - "平凉": { - "pinyin": "pingliang" - }, - "武威": { - "pinyin": "wuwei" - }, - "金昌": { - "pinyin": "jinchang" - }, - "庆阳": { - "pinyin": "qingyang" - } - }, - "青海": { - "西宁": { - "pinyin": "xining" - }, - "玉树": { - "pinyin": "yushu" - }, - "格尔木": { - "pinyin": "geermu" - }, - "果洛": { - "pinyin": "guoluo" - }, - "海南": { - "pinyin": "hainan" - }, - "海西": { - "pinyin": "haixi" - }, - "海北": { - "pinyin": "haibei" - }, - "黄南": { - "pinyin": "huangnan" - }, - "海东": { - "pinyin": "haidong" - } - }, - "宁夏": { - "银川": { - "pinyin": "yinchuan" - }, - "固原": { - "pinyin": "guyuan" - }, - "中卫": { - "pinyin": "zhongwei" - }, - "吴忠": { - "pinyin": "wuzhong" - }, - "石嘴山": { - "pinyin": "shizuishan" - } - }, - "新疆": { - "乌鲁木齐": { - "pinyin": "wulumuqi" - }, - "喀什": { - "pinyin": "kashi" - }, - "阿图什": { - "pinyin": "atushi" - }, - "和田": { - "pinyin": "hetian" - }, - "阿拉尔": { - "pinyin": "alaer" - }, - "阿克苏": { - "pinyin": "akesu" - }, - "伊宁": { - "pinyin": "yining" - }, - "博乐": { - "pinyin": "bole" - }, - "库尔勒": { - "pinyin": "kuerle" - }, - "石河子": { - "pinyin": "shihezi" - }, - "吐鲁番": { - "pinyin": "tulufan" - }, - "昌吉": { - "pinyin": "changji" - }, - "五家渠": { - "pinyin": "wujiaqu" - }, - "塔城": { - "pinyin": "tacheng" - }, - "克拉玛依": { - "pinyin": "kelamayi" - }, - "阿勒泰": { - "pinyin": "aletai" - }, - "哈密": { - "pinyin": "hami" - } - }, - "香港": { - "-": { - "pinyin": "hong kong" - } - }, - "澳门": { - "-": { - "pinyin": "macao" - } - }, - "台湾": { - "台北": { - "pinyin": "taipei" - }, - "高雄": { - "pinyin": "gaoxiong" - }, - "台中": { - "pinyin": "taizhong" - } - } -}; - var PROVINCES = [], key; for (key in CITYS_DATA) PROVINCES.push([key, key]); @@ -1299,7 +115,11 @@ export const weather_seniverse_city_weather = { .appendField(Blockly.Msg.MIXLY_API_PRIVATE_KEY); this.appendDummyInput("") .appendField(Blockly.Msg.MIXLY_LANGUAGE) - .appendField(new Blockly.FieldDropdown([["简体中文", "zh-Hans"], ["繁體中文", "zh-Hant"], ["English", "en"]]), "language"); + .appendField(new Blockly.FieldDropdown([ + ["简体中文", "zh-Hans"], + ["繁體中文", "zh-Hant"], + ["English", "en"] + ]), "language"); this.appendDummyInput("") .appendField(Blockly.Msg.MIXLY_TEMPERATURE_UNIT) .appendField(new Blockly.FieldDropdown([[Blockly.Msg.MIXLY_CELSIUS + "(℃)", "c"], [Blockly.Msg.MIXLY_FAHRENHEIT + "(℉)", "f"]]), "unit"); @@ -1317,8 +137,16 @@ export const weather_get_seniverse_weather_info = { init: function () { this.appendDummyInput("") //.appendField("心知天气") - .appendField(new Blockly.FieldDropdown([[Blockly.Msg.MIXLY_LIVE_WEATHER, "weather/now"], [Blockly.Msg.MIXLY_3_DAY_WEATHER_FORECAST, "weather/daily"], [Blockly.Msg.MIXLY_6_LIFE_INDEXES, "life/suggestion"]]), "api") - .appendField(new Blockly.FieldDropdown([[Blockly.Msg.MIXLY_AVAILABLE, "update"], [Blockly.Msg.MIXLY_GET_DATA_UPDATE_TIME, "getLastUpdate"], [Blockly.Msg.MIXLY_GET_SERVER_RESPONSE_STATUS_CODE, "getServerCode"]]), "type"); + .appendField(new Blockly.FieldDropdown([ + [Blockly.Msg.MIXLY_LIVE_WEATHER, "weather/now"], + [Blockly.Msg.MIXLY_3_DAY_WEATHER_FORECAST, "weather/daily"], + [Blockly.Msg.MIXLY_6_LIFE_INDEXES, "life/suggestion"] + ]), "api") + .appendField(new Blockly.FieldDropdown([ + [Blockly.Msg.MIXLY_AVAILABLE, "update"], + [Blockly.Msg.MIXLY_GET_DATA_UPDATE_TIME, "getLastUpdate"], + [Blockly.Msg.MIXLY_GET_SERVER_RESPONSE_STATUS_CODE, "getServerCode"] + ]), "type"); this.setInputsInline(true); this.setOutput(true, null); this.setColour(WEATHER_HUE); diff --git a/boards/default_src/arduino/blocks/text.js b/boards/default_src/arduino/blocks/text.js index 43fe80b1..f16eea02 100644 --- a/boards/default_src/arduino/blocks/text.js +++ b/boards/default_src/arduino/blocks/text.js @@ -2,22 +2,23 @@ import * as Blockly from 'blockly/core'; const TEXTS_HUE = 160; + export const text_base64_url_codec = { init: function () { - this.appendValueInput("VALUE") + this.appendValueInput('VALUE') .setCheck(null) .setAlign(Blockly.inputs.Align.LEFT) .appendField(new Blockly.FieldDropdown([ - ["Base64", "BASE64"], - ["URL", "URL"] - ]), "TYPE") + ['Base64', 'BASE64'], + ['URL', 'URL'] + ]), 'TYPE') .appendField(new Blockly.FieldDropdown([ - ["编码", "ENCODE"], - ["解码", "DECODE"] - ]), "OPTION"); + [Blockly.Msg.MIXPY_TEXT_ENCODE, 'ENCODE'], + [Blockly.Msg.MIXPY_TEXT_DECODE, 'DECODE'] + ]), 'OPTION'); this.setOutput(true, null); this.setColour(TEXTS_HUE); - this.setTooltip(""); - this.setHelpUrl(""); + this.setTooltip(''); + this.setHelpUrl(''); } }; \ No newline at end of file diff --git a/boards/default_src/arduino/blocks/variables.js b/boards/default_src/arduino/blocks/variables.js index 4261e9c5..77c6ca63 100644 --- a/boards/default_src/arduino/blocks/variables.js +++ b/boards/default_src/arduino/blocks/variables.js @@ -1,21 +1,21 @@ import * as Blockly from 'blockly/core'; import { Variables } from 'blockly/core'; - const VARIABLES_HUE = 330; -// ************************************************************************ -// THIS SECTION IS INSERTED INTO BLOCKLY BY BLOCKLYDUINO. + export const variables_declare = { - // Variable setter. init: function () { this.setColour(VARIABLES_HUE); this.appendValueInput('VALUE', null) .appendField(Blockly.Msg.MIXLY_DECLARE) - .appendField(new Blockly.FieldDropdown([[Blockly.Msg.MIXLY_GLOBAL_VARIABLE, "global_variate"], [Blockly.Msg.MIXLY_LOCAL_VARIABLE, "local_variate"]]), "variables_type") + .appendField(new Blockly.FieldDropdown([ + [Blockly.Msg.MIXLY_GLOBAL_VARIABLE, 'global_variate'], + [Blockly.Msg.MIXLY_LOCAL_VARIABLE, 'local_variate'] + ]), 'variables_type') .appendField(new Blockly.FieldTextInput('item'), 'VAR') .appendField(Blockly.Msg.MIXLY_AS) - .appendField(new Blockly.FieldDropdown(Variables.DATA_TYPE), "TYPE") + .appendField(new Blockly.FieldDropdown(Variables.DATA_TYPE), 'TYPE') .appendField(Blockly.Msg.MIXLY_VALUE); this.setPreviousStatement(true); this.setNextStatement(true); @@ -30,7 +30,6 @@ export const variables_declare = { } } }; -// ************************************************************************ export const variables_get = { init: function () { @@ -47,15 +46,7 @@ export const variables_get = { if (Blockly.Names.equals(oldName, this.getFieldValue('VAR'))) { this.setFieldValue(newName, 'VAR'); } - }/*, - onchange: function() { - var varName = Blockly.Arduino.variableDB_.getName(this.getFieldValue('VAR'),Blockly.Variables.NAME_TYPE); - if(Blockly.Arduino.definitions_['var_declare'+varName]){ - this.setWarningText(null); - }else{ - this.setWarningText(Blockly.Msg.MIXLY_WARNING_NOT_DECLARE); - } - }*/ + } }; export const variables_set = { @@ -77,6 +68,7 @@ export const variables_set = { } } }; + /** * Block for basic data type change. * @this Blockly.Block @@ -90,8 +82,4 @@ export const variables_change = { this.setOutput(true); this.setTooltip(Blockly.Msg.MIXLY_TOOLTIP_VARIABLES_CHANGE); } -}; - - - - +}; \ No newline at end of file diff --git a/boards/default_src/arduino/generators/ethernet.js b/boards/default_src/arduino/generators/ethernet.js index 4d824729..242b275f 100644 --- a/boards/default_src/arduino/generators/ethernet.js +++ b/boards/default_src/arduino/generators/ethernet.js @@ -1,5 +1,7 @@ import * as Blockly from 'blockly/core'; import * as Mixly from 'mixly'; +import CITYS_DATA from '../templates/json/cities.json'; + /** * @name 模块名 Http GET请求 @@ -105,1192 +107,6 @@ export const http_post = function () { return code; }; -const CITYS_DATA = { - "本地": { - "-": { - "pinyin": "ip" - } - }, - "北京": { - "-": { - "pinyin": "beijing" - } - }, - "天津": { - "-": { - "pinyin": "tianjin" - } - }, - "河北": { - "石家庄": { - "pinyin": "shijiazhuang" - }, - "邯郸": { - "pinyin": "handan" - }, - "邢台": { - "pinyin": "xingtai" - }, - "衡水": { - "pinyin": "hengshui" - }, - "保定": { - "pinyin": "baoding" - }, - "沧州": { - "pinyin": "cangzhou" - }, - "张家口": { - "pinyin": "zhangjiakou" - }, - "廊坊": { - "pinyin": "langfang" - }, - "承德": { - "pinyin": "chengde" - }, - "唐山": { - "pinyin": "tangshan" - }, - "秦皇岛": { - "pinyin": "qinhuangdao" - } - }, - "山西": { - "太原": { - "pinyin": "taiyuan" - }, - "运城": { - "pinyin": "yuncheng" - }, - "临汾": { - "pinyin": "linfen" - }, - "吕梁": { - "pinyin": "lvliang" - }, - "朔州": { - "pinyin": "shuozhou" - }, - "晋城": { - "pinyin": "jincheng" - }, - "长治": { - "pinyin": "changzhi" - }, - "晋中": { - "pinyin": "jinzhong" - }, - "阳泉": { - "pinyin": "yangquan" - }, - "忻州": { - "pinyin": "xinzhou" - }, - "大同": { - "pinyin": "datong" - } - }, - "内蒙古": { - "呼和浩特": { - "pinyin": "huhehaote" - }, - "阿左旗": { - "pinyin": "azuoqi" - }, - "乌海": { - "pinyin": "wuhai" - }, - "临河": { - "pinyin": "linhe" - }, - "鄂尔多斯": { - "pinyin": "eerduosi" - }, - "包头": { - "pinyin": "baotou" - }, - "集宁": { - "pinyin": "jining" - }, - "锡林浩特": { - "pinyin": "xilinhaote" - }, - "赤峰": { - "pinyin": "chifeng" - }, - "通辽": { - "pinyin": "tongliao" - }, - "乌兰浩特": { - "pinyin": "wulanhaote" - }, - "海拉尔": { - "pinyin": "hailaer" - } - }, - "辽宁": { - "沈阳": { - "pinyin": "shenyang" - }, - "大连": { - "pinyin": "dalian" - }, - "葫芦岛": { - "pinyin": "huludao" - }, - "朝阳": { - "pinyin": "chaoyang" - }, - "营口": { - "pinyin": "yingkou" - }, - "锦州": { - "pinyin": "jinzhou" - }, - "盘锦": { - "pinyin": "panjin" - }, - "阜新": { - "pinyin": "fuxin" - }, - "鞍山": { - "pinyin": "anshan" - }, - "辽阳": { - "pinyin": "liaoyang" - }, - "丹东": { - "pinyin": "dandong" - }, - "本溪": { - "pinyin": "benxi" - }, - "抚顺": { - "pinyin": "fushun" - }, - "铁岭": { - "pinyin": "tieling" - } - }, - "吉林": { - "长春": { - "pinyin": "changchun" - }, - "通化": { - "pinyin": "tonghua" - }, - "白山": { - "pinyin": "baishan" - }, - "辽源": { - "pinyin": "liaoyuan" - }, - "四平": { - "pinyin": "siping" - }, - "吉林": { - "pinyin": "jilin" - }, - "延吉": { - "pinyin": "yanji" - }, - "白城": { - "pinyin": "baicheng" - }, - "松原": { - "pinyin": "songyuan" - } - }, - "黑龙江": { - "哈尔滨": { - "pinyin": "haerbin" - }, - "牡丹江": { - "pinyin": "mudanjiang" - }, - "大庆": { - "pinyin": "daqing" - }, - "齐齐哈尔": { - "pinyin": "qiqihaer" - }, - "绥化": { - "pinyin": "suihua" - }, - "伊春": { - "pinyin": "yichun" - }, - "大兴安岭": { - "pinyin": "daxinganling" - }, - "黑河": { - "pinyin": "heihe" - }, - "鸡西": { - "pinyin": "jixi" - }, - "七台河": { - "pinyin": "qitaihe" - }, - "佳木斯": { - "pinyin": "jiamusi" - }, - "鹤岗": { - "pinyin": "hegang" - }, - "双鸭山": { - "pinyin": "shuangyashan" - } - }, - "上海": { - "-": { - "pinyin": "shanghai" - } - }, - "江苏": { - "南京": { - "pinyin": "nanjing" - }, - "镇江": { - "pinyin": "zhenjiang" - }, - "苏州": { - "pinyin": "suzhou" - }, - "无锡": { - "pinyin": "wuxi" - }, - "常州": { - "pinyin": "changzhou" - }, - "南通": { - "pinyin": "nantong" - }, - "扬州": { - "pinyin": "yangzhou" - }, - "淮安": { - "pinyin": "huaian" - }, - "泰州": { - "pinyin": "taizhou" - }, - "盐城": { - "pinyin": "yancheng" - }, - "徐州": { - "pinyin": "xuzhou" - }, - "宿迁": { - "pinyin": "suqian" - }, - "连云港": { - "pinyin": "lianyungang" - } - }, - "浙江": { - "杭州": { - "pinyin": "hangzhou" - }, - "温州": { - "pinyin": "wenzhou" - }, - "衢州": { - "pinyin": "quzhou" - }, - "丽水": { - "pinyin": "lishui" - }, - "金华": { - "pinyin": "jinhua" - }, - "绍兴": { - "pinyin": "shaoxing" - }, - "湖州": { - "pinyin": "huzhou" - }, - "嘉兴": { - "pinyin": "jiaxing" - }, - "台州": { - "pinyin": "taizhou" - }, - "宁波": { - "pinyin": "ningbo" - }, - "舟山": { - "pinyin": "zhoushan" - } - }, - "安徽": { - "合肥": { - "pinyin": "hefei" - }, - "安庆": { - "pinyin": "anqing" - }, - "池州": { - "pinyin": "chizhou" - }, - "铜陵": { - "pinyin": "tongling" - }, - "六安": { - "pinyin": "luan" - }, - "阜阳": { - "pinyin": "fuyang" - }, - "淮南": { - "pinyin": "huainan" - }, - "蚌埠": { - "pinyin": "bengbu" - }, - "宿州": { - "pinyin": "suzhou" - }, - "黄山": { - "pinyin": "huangshan" - }, - "宣城": { - "pinyin": "xuancheng" - }, - "芜湖": { - "pinyin": "wuhu" - }, - "马鞍山": { - "pinyin": "maanshan" - }, - "滁州": { - "pinyin": "chuzhou" - }, - "亳州": { - "pinyin": "bozhou" - }, - "淮北": { - "pinyin": "huaibei" - } - }, - "福建": { - "福州": { - "pinyin": "fuzhou" - }, - "漳州": { - "pinyin": "zhangzhou" - }, - "厦门": { - "pinyin": "xiamen" - }, - "龙岩": { - "pinyin": "longyan" - }, - "三明": { - "pinyin": "sanming" - }, - "泉州": { - "pinyin": "quanzhou" - }, - "莆田": { - "pinyin": "putian" - }, - "南平": { - "pinyin": "nanping" - }, - "宁德": { - "pinyin": "ningde" - } - }, - "江西": { - "南昌": { - "pinyin": "nanchang" - }, - "赣州": { - "pinyin": "ganzhou" - }, - "萍乡": { - "pinyin": "pingxiang" - }, - "吉安": { - "pinyin": "jian" - }, - "宜春": { - "pinyin": "yichun" - }, - "新余": { - "pinyin": "xinyu" - }, - "抚州": { - "pinyin": "fuzhou" - }, - "鹰潭": { - "pinyin": "yingtan" - }, - "上饶": { - "pinyin": "shangrao" - }, - "景德镇": { - "pinyin": "jingdezhen" - }, - "九江": { - "pinyin": "jiujiang" - } - }, - "山东": { - "济南": { - "pinyin": "jinan" - }, - "枣庄": { - "pinyin": "zaozhuang" - }, - "菏泽": { - "pinyin": "heze" - }, - "济宁": { - "pinyin": "jining" - }, - "聊城": { - "pinyin": "liaocheng" - }, - "泰安": { - "pinyin": "taian" - }, - "莱芜": { - "pinyin": "laiwu" - }, - "德州": { - "pinyin": "dezhou" - }, - "淄博": { - "pinyin": "zibo" - }, - "滨州": { - "pinyin": "binzhou" - }, - "临沂": { - "pinyin": "linyi" - }, - "日照": { - "pinyin": "rizhao" - }, - "青岛": { - "pinyin": "qingdao" - }, - "潍坊": { - "pinyin": "weifang" - }, - "东营": { - "pinyin": "dongying" - }, - "烟台": { - "pinyin": "yantai" - }, - "威海": { - "pinyin": "weihai" - } - }, - "河南": { - "郑州": { - "pinyin": "zhengzhou" - }, - "三门峡": { - "pinyin": "sanmenxia" - }, - "洛阳": { - "pinyin": "luoyang" - }, - "信阳": { - "pinyin": "xinyang" - }, - "南阳": { - "pinyin": "nanyang" - }, - "驻马店": { - "pinyin": "zhumadian" - }, - "漯河": { - "pinyin": "luohe" - }, - "周口": { - "pinyin": "zhoukou" - }, - "平顶山": { - "pinyin": "pingdingshan" - }, - "许昌": { - "pinyin": "xuchang" - }, - "济源": { - "pinyin": "jiyuan" - }, - "开封": { - "pinyin": "kaifeng" - }, - "焦作": { - "pinyin": "jiaozuo" - }, - "新乡": { - "pinyin": "xinxiang" - }, - "鹤壁": { - "pinyin": "hebi" - }, - "濮阳": { - "pinyin": "puyang" - }, - "安阳": { - "pinyin": "anyang" - }, - "商丘": { - "pinyin": "shangqiu" - } - }, - "湖北": { - "武汉": { - "pinyin": "wuhan" - }, - "恩施": { - "pinyin": "enshi" - }, - "宜昌": { - "pinyin": "yichang" - }, - "荆州": { - "pinyin": "jingzhou" - }, - "神农架": { - "pinyin": "shennongjia" - }, - "荆门": { - "pinyin": "jingmen" - }, - "襄阳": { - "pinyin": "xiangyang" - }, - "十堰": { - "pinyin": "shiyan" - }, - "潜江": { - "pinyin": "qianjiang" - }, - "天门": { - "pinyin": "tianmen" - }, - "仙桃": { - "pinyin": "xiantao" - }, - "咸宁": { - "pinyin": "xianning" - }, - "黄石": { - "pinyin": "huangshi" - }, - "孝感": { - "pinyin": "xiaogan" - }, - "鄂州": { - "pinyin": "ezhou" - }, - "黄冈": { - "pinyin": "huanggang" - }, - "随州": { - "pinyin": "suizhou" - } - }, - "湖南": { - "长沙": { - "pinyin": "changsha" - }, - "永州": { - "pinyin": "yongzhou" - }, - "怀化": { - "pinyin": "huaihua" - }, - "邵阳": { - "pinyin": "shaoyang" - }, - "娄底": { - "pinyin": "loudi" - }, - "吉首": { - "pinyin": "jishou" - }, - "张家界": { - "pinyin": "zhangjiajie" - }, - "益阳": { - "pinyin": "yiyang" - }, - "常德": { - "pinyin": "changde" - }, - "郴州": { - "pinyin": "chenzhou" - }, - "衡阳": { - "pinyin": "hengyang" - }, - "湘潭": { - "pinyin": "xiangtan" - }, - "株洲": { - "pinyin": "zhuzhou" - }, - "岳阳": { - "pinyin": "yueyang" - } - }, - "广东": { - "广州": { - "pinyin": "guangzhou" - }, - "湛江": { - "pinyin": "zhanjiang" - }, - "茂名": { - "pinyin": "maoming" - }, - "阳江": { - "pinyin": "yangjiang" - }, - "珠海": { - "pinyin": "zhuhai" - }, - "云浮": { - "pinyin": "yunfu" - }, - "肇庆": { - "pinyin": "zhaoqing" - }, - "江门": { - "pinyin": "jiangmen" - }, - "佛山": { - "pinyin": "foshan" - }, - "中山": { - "pinyin": "zhongshan" - }, - "东莞": { - "pinyin": "dongguan" - }, - "清远": { - "pinyin": "qingyuan" - }, - "深圳": { - "pinyin": "shenzhen" - }, - "惠州": { - "pinyin": "huizhou" - }, - "河源": { - "pinyin": "heyuan" - }, - "韶关": { - "pinyin": "shaoguan" - }, - "汕尾": { - "pinyin": "shanwei" - }, - "汕头": { - "pinyin": "shantou" - }, - "揭阳": { - "pinyin": "jieyang" - }, - "潮州": { - "pinyin": "chaozhou" - }, - "梅州": { - "pinyin": "meizhou" - } - }, - "广西": { - "南宁": { - "pinyin": "nanning" - }, - "崇左": { - "pinyin": "chongzuo" - }, - "防城港": { - "pinyin": "fangchenggang" - }, - "北海": { - "pinyin": "beihai" - }, - "钦州": { - "pinyin": "qinzhou" - }, - "百色": { - "pinyin": "baise" - }, - "贵港": { - "pinyin": "guigang" - }, - "来宾": { - "pinyin": "laibin" - }, - "河池": { - "pinyin": "hechi" - }, - "柳州": { - "pinyin": "liuzhou" - }, - "玉林": { - "pinyin": "yulin" - }, - "梧州": { - "pinyin": "wuzhou" - }, - "桂林": { - "pinyin": "guilin" - }, - "贺州": { - "pinyin": "hezhou" - } - }, - "海南": { - "海口": { - "pinyin": "haikou" - }, - "西沙": { - "pinyin": "xisha" - }, - "三亚": { - "pinyin": "sanya" - }, - "乐东": { - "pinyin": "ledong" - }, - "五指山": { - "pinyin": "wuzhishan" - }, - "东方": { - "pinyin": "dongfang" - }, - "昌江": { - "pinyin": "changjiang" - }, - "白沙": { - "pinyin": "baisha" - }, - "儋州": { - "pinyin": "danzhou" - }, - "保亭": { - "pinyin": "baoting" - }, - "陵水": { - "pinyin": "lingshui" - }, - "万宁": { - "pinyin": "wanning" - }, - "琼中": { - "pinyin": "qiongzhong" - }, - "屯昌": { - "pinyin": "tunchang" - }, - "琼海": { - "pinyin": "qionghai" - }, - "文昌": { - "pinyin": "wenchang" - }, - "临高": { - "pinyin": "lingao" - }, - "澄迈": { - "pinyin": "chengmai" - }, - "定安": { - "pinyin": "dingan" - }, - "南沙": { - "pinyin": "nansha" - }, - "中沙": { - "pinyin": "wuzhishan" - } - }, - "重庆": { - "-": { - "pinyin": "chongqing" - } - }, - "四川": { - "成都": { - "pinyin": "chengdu" - }, - "甘孜": { - "pinyin": "ganzi" - }, - "攀枝花": { - "pinyin": "panzhihua" - }, - "凉山": { - "pinyin": "liangshan" - }, - "雅安": { - "pinyin": "yaan" - }, - "乐山": { - "pinyin": "leshan" - }, - "眉山": { - "pinyin": "meishan" - }, - "宜宾": { - "pinyin": "yibin" - }, - "泸州": { - "pinyin": "luzhou" - }, - "自贡": { - "pinyin": "zigong" - }, - "资阳": { - "pinyin": "ziyang" - }, - "内江": { - "pinyin": "neijiang" - }, - "遂宁": { - "pinyin": "suining" - }, - "南充": { - "pinyin": "nanchong" - }, - "广安": { - "pinyin": "guangan" - }, - "阿坝": { - "pinyin": "aba" - }, - "德阳": { - "pinyin": "deyang" - }, - "绵阳": { - "pinyin": "mianyang" - }, - "巴中": { - "pinyin": "bazhong" - }, - "广元": { - "pinyin": "guangyuan" - }, - "达州": { - "pinyin": "dazhou" - } - }, - "贵州": { - "贵阳": { - "pinyin": "guiyang" - }, - "兴义": { - "pinyin": "xingyi" - }, - "水城": { - "pinyin": "shuicheng" - }, - "安顺": { - "pinyin": "anshun" - }, - "毕节": { - "pinyin": "bijie" - }, - "都匀": { - "pinyin": "duyun" - }, - "凯里": { - "pinyin": "kaili" - }, - "遵义": { - "pinyin": "zunyi" - }, - "铜仁": { - "pinyin": "tongren" - } - }, - "云南": { - "昆明": { - "pinyin": "kunming" - }, - "景洪": { - "pinyin": "jinghong" - }, - "普洱": { - "pinyin": "puer" - }, - "临沧": { - "pinyin": "lincang" - }, - "德宏": { - "pinyin": "dehong" - }, - "保山": { - "pinyin": "baoshan" - }, - "怒江": { - "pinyin": "nujiang" - }, - "大理": { - "pinyin": "dali" - }, - "香格里拉": { - "pinyin": "xianggelila" - }, - "丽江": { - "pinyin": "lijiang" - }, - "红河": { - "pinyin": "honghe" - }, - "玉溪": { - "pinyin": "yuxi" - }, - "楚雄": { - "pinyin": "chuxiong" - }, - "文山": { - "pinyin": "wenshan" - }, - "曲靖": { - "pinyin": "qujing" - }, - "昭通": { - "pinyin": "zhaotong" - } - }, - "西藏": { - "拉萨": { - "pinyin": "lasa" - }, - "阿里": { - "pinyin": "ali" - }, - "日喀则": { - "pinyin": "rikaze" - }, - "山南": { - "pinyin": "shannan" - }, - "林芝": { - "pinyin": "linzhi" - }, - "那曲": { - "pinyin": "naqu" - }, - "昌都": { - "pinyin": "changdu" - } - }, - "陕西": { - "西安": { - "pinyin": "xian" - }, - "汉中": { - "pinyin": "hanzhong" - }, - "安康": { - "pinyin": "ankang" - }, - "宝鸡": { - "pinyin": "baoji" - }, - "杨凌": { - "pinyin": "yangling" - }, - "咸阳": { - "pinyin": "xianyang" - }, - "铜川": { - "pinyin": "tongchuan" - }, - "渭南": { - "pinyin": "weinan" - }, - "商洛": { - "pinyin": "shangluo" - }, - "延安": { - "pinyin": "yanan" - }, - "榆林": { - "pinyin": "yulin" - } - }, - "甘肃": { - "兰州": { - "pinyin": "lanzhou" - }, - "武都": { - "pinyin": "wudu" - }, - "张掖": { - "pinyin": "zhangye" - }, - "嘉峪关": { - "pinyin": "jiayuguan" - }, - "酒泉": { - "pinyin": "jiuquan" - }, - "合作": { - "pinyin": "hezuo" - }, - "临夏": { - "pinyin": "linxia" - }, - "天水": { - "pinyin": "tianshui" - }, - "定西": { - "pinyin": "dingxi" - }, - "白银": { - "pinyin": "baiyin" - }, - "平凉": { - "pinyin": "pingliang" - }, - "武威": { - "pinyin": "wuwei" - }, - "金昌": { - "pinyin": "jinchang" - }, - "庆阳": { - "pinyin": "qingyang" - } - }, - "青海": { - "西宁": { - "pinyin": "xining" - }, - "玉树": { - "pinyin": "yushu" - }, - "格尔木": { - "pinyin": "geermu" - }, - "果洛": { - "pinyin": "guoluo" - }, - "海南": { - "pinyin": "hainan" - }, - "海西": { - "pinyin": "haixi" - }, - "海北": { - "pinyin": "haibei" - }, - "黄南": { - "pinyin": "huangnan" - }, - "海东": { - "pinyin": "haidong" - } - }, - "宁夏": { - "银川": { - "pinyin": "yinchuan" - }, - "固原": { - "pinyin": "guyuan" - }, - "中卫": { - "pinyin": "zhongwei" - }, - "吴忠": { - "pinyin": "wuzhong" - }, - "石嘴山": { - "pinyin": "shizuishan" - } - }, - "新疆": { - "乌鲁木齐": { - "pinyin": "wulumuqi" - }, - "喀什": { - "pinyin": "kashi" - }, - "阿图什": { - "pinyin": "atushi" - }, - "和田": { - "pinyin": "hetian" - }, - "阿拉尔": { - "pinyin": "alaer" - }, - "阿克苏": { - "pinyin": "akesu" - }, - "伊宁": { - "pinyin": "yining" - }, - "博乐": { - "pinyin": "bole" - }, - "库尔勒": { - "pinyin": "kuerle" - }, - "石河子": { - "pinyin": "shihezi" - }, - "吐鲁番": { - "pinyin": "tulufan" - }, - "昌吉": { - "pinyin": "changji" - }, - "五家渠": { - "pinyin": "wujiaqu" - }, - "塔城": { - "pinyin": "tacheng" - }, - "克拉玛依": { - "pinyin": "kelamayi" - }, - "阿勒泰": { - "pinyin": "aletai" - }, - "哈密": { - "pinyin": "hami" - } - }, - "香港": { - "-": { - "pinyin": "hong kong" - } - }, - "澳门": { - "-": { - "pinyin": "macao" - } - }, - "台湾": { - "台北": { - "pinyin": "taipei" - }, - "高雄": { - "pinyin": "gaoxiong" - }, - "台中": { - "pinyin": "taizhong" - } - } -}; - //网络天气 export const china_city = function () { var a = this.getFieldValue("province"); diff --git a/boards/default_src/arduino/templates/json/cities.json b/boards/default_src/arduino/templates/json/cities.json new file mode 100644 index 00000000..5206fa72 --- /dev/null +++ b/boards/default_src/arduino/templates/json/cities.json @@ -0,0 +1,1185 @@ +{ + "本地": { + "-": { + "pinyin": "ip" + } + }, + "北京": { + "-": { + "pinyin": "beijing" + } + }, + "天津": { + "-": { + "pinyin": "tianjin" + } + }, + "河北": { + "石家庄": { + "pinyin": "shijiazhuang" + }, + "邯郸": { + "pinyin": "handan" + }, + "邢台": { + "pinyin": "xingtai" + }, + "衡水": { + "pinyin": "hengshui" + }, + "保定": { + "pinyin": "baoding" + }, + "沧州": { + "pinyin": "cangzhou" + }, + "张家口": { + "pinyin": "zhangjiakou" + }, + "廊坊": { + "pinyin": "langfang" + }, + "承德": { + "pinyin": "chengde" + }, + "唐山": { + "pinyin": "tangshan" + }, + "秦皇岛": { + "pinyin": "qinhuangdao" + } + }, + "山西": { + "太原": { + "pinyin": "taiyuan" + }, + "运城": { + "pinyin": "yuncheng" + }, + "临汾": { + "pinyin": "linfen" + }, + "吕梁": { + "pinyin": "lvliang" + }, + "朔州": { + "pinyin": "shuozhou" + }, + "晋城": { + "pinyin": "jincheng" + }, + "长治": { + "pinyin": "changzhi" + }, + "晋中": { + "pinyin": "jinzhong" + }, + "阳泉": { + "pinyin": "yangquan" + }, + "忻州": { + "pinyin": "xinzhou" + }, + "大同": { + "pinyin": "datong" + } + }, + "内蒙古": { + "呼和浩特": { + "pinyin": "huhehaote" + }, + "阿左旗": { + "pinyin": "azuoqi" + }, + "乌海": { + "pinyin": "wuhai" + }, + "临河": { + "pinyin": "linhe" + }, + "鄂尔多斯": { + "pinyin": "eerduosi" + }, + "包头": { + "pinyin": "baotou" + }, + "集宁": { + "pinyin": "jining" + }, + "锡林浩特": { + "pinyin": "xilinhaote" + }, + "赤峰": { + "pinyin": "chifeng" + }, + "通辽": { + "pinyin": "tongliao" + }, + "乌兰浩特": { + "pinyin": "wulanhaote" + }, + "海拉尔": { + "pinyin": "hailaer" + } + }, + "辽宁": { + "沈阳": { + "pinyin": "shenyang" + }, + "大连": { + "pinyin": "dalian" + }, + "葫芦岛": { + "pinyin": "huludao" + }, + "朝阳": { + "pinyin": "chaoyang" + }, + "营口": { + "pinyin": "yingkou" + }, + "锦州": { + "pinyin": "jinzhou" + }, + "盘锦": { + "pinyin": "panjin" + }, + "阜新": { + "pinyin": "fuxin" + }, + "鞍山": { + "pinyin": "anshan" + }, + "辽阳": { + "pinyin": "liaoyang" + }, + "丹东": { + "pinyin": "dandong" + }, + "本溪": { + "pinyin": "benxi" + }, + "抚顺": { + "pinyin": "fushun" + }, + "铁岭": { + "pinyin": "tieling" + } + }, + "吉林": { + "长春": { + "pinyin": "changchun" + }, + "通化": { + "pinyin": "tonghua" + }, + "白山": { + "pinyin": "baishan" + }, + "辽源": { + "pinyin": "liaoyuan" + }, + "四平": { + "pinyin": "siping" + }, + "吉林": { + "pinyin": "jilin" + }, + "延吉": { + "pinyin": "yanji" + }, + "白城": { + "pinyin": "baicheng" + }, + "松原": { + "pinyin": "songyuan" + } + }, + "黑龙江": { + "哈尔滨": { + "pinyin": "haerbin" + }, + "牡丹江": { + "pinyin": "mudanjiang" + }, + "大庆": { + "pinyin": "daqing" + }, + "齐齐哈尔": { + "pinyin": "qiqihaer" + }, + "绥化": { + "pinyin": "suihua" + }, + "伊春": { + "pinyin": "yichun" + }, + "大兴安岭": { + "pinyin": "daxinganling" + }, + "黑河": { + "pinyin": "heihe" + }, + "鸡西": { + "pinyin": "jixi" + }, + "七台河": { + "pinyin": "qitaihe" + }, + "佳木斯": { + "pinyin": "jiamusi" + }, + "鹤岗": { + "pinyin": "hegang" + }, + "双鸭山": { + "pinyin": "shuangyashan" + } + }, + "上海": { + "-": { + "pinyin": "shanghai" + } + }, + "江苏": { + "南京": { + "pinyin": "nanjing" + }, + "镇江": { + "pinyin": "zhenjiang" + }, + "苏州": { + "pinyin": "suzhou" + }, + "无锡": { + "pinyin": "wuxi" + }, + "常州": { + "pinyin": "changzhou" + }, + "南通": { + "pinyin": "nantong" + }, + "扬州": { + "pinyin": "yangzhou" + }, + "淮安": { + "pinyin": "huaian" + }, + "泰州": { + "pinyin": "taizhou" + }, + "盐城": { + "pinyin": "yancheng" + }, + "徐州": { + "pinyin": "xuzhou" + }, + "宿迁": { + "pinyin": "suqian" + }, + "连云港": { + "pinyin": "lianyungang" + } + }, + "浙江": { + "杭州": { + "pinyin": "hangzhou" + }, + "温州": { + "pinyin": "wenzhou" + }, + "衢州": { + "pinyin": "quzhou" + }, + "丽水": { + "pinyin": "lishui" + }, + "金华": { + "pinyin": "jinhua" + }, + "绍兴": { + "pinyin": "shaoxing" + }, + "湖州": { + "pinyin": "huzhou" + }, + "嘉兴": { + "pinyin": "jiaxing" + }, + "台州": { + "pinyin": "taizhou" + }, + "宁波": { + "pinyin": "ningbo" + }, + "舟山": { + "pinyin": "zhoushan" + } + }, + "安徽": { + "合肥": { + "pinyin": "hefei" + }, + "安庆": { + "pinyin": "anqing" + }, + "池州": { + "pinyin": "chizhou" + }, + "铜陵": { + "pinyin": "tongling" + }, + "六安": { + "pinyin": "luan" + }, + "阜阳": { + "pinyin": "fuyang" + }, + "淮南": { + "pinyin": "huainan" + }, + "蚌埠": { + "pinyin": "bengbu" + }, + "宿州": { + "pinyin": "suzhou" + }, + "黄山": { + "pinyin": "huangshan" + }, + "宣城": { + "pinyin": "xuancheng" + }, + "芜湖": { + "pinyin": "wuhu" + }, + "马鞍山": { + "pinyin": "maanshan" + }, + "滁州": { + "pinyin": "chuzhou" + }, + "亳州": { + "pinyin": "bozhou" + }, + "淮北": { + "pinyin": "huaibei" + } + }, + "福建": { + "福州": { + "pinyin": "fuzhou" + }, + "漳州": { + "pinyin": "zhangzhou" + }, + "厦门": { + "pinyin": "xiamen" + }, + "龙岩": { + "pinyin": "longyan" + }, + "三明": { + "pinyin": "sanming" + }, + "泉州": { + "pinyin": "quanzhou" + }, + "莆田": { + "pinyin": "putian" + }, + "南平": { + "pinyin": "nanping" + }, + "宁德": { + "pinyin": "ningde" + } + }, + "江西": { + "南昌": { + "pinyin": "nanchang" + }, + "赣州": { + "pinyin": "ganzhou" + }, + "萍乡": { + "pinyin": "pingxiang" + }, + "吉安": { + "pinyin": "jian" + }, + "宜春": { + "pinyin": "yichun" + }, + "新余": { + "pinyin": "xinyu" + }, + "抚州": { + "pinyin": "fuzhou" + }, + "鹰潭": { + "pinyin": "yingtan" + }, + "上饶": { + "pinyin": "shangrao" + }, + "景德镇": { + "pinyin": "jingdezhen" + }, + "九江": { + "pinyin": "jiujiang" + } + }, + "山东": { + "济南": { + "pinyin": "jinan" + }, + "枣庄": { + "pinyin": "zaozhuang" + }, + "菏泽": { + "pinyin": "heze" + }, + "济宁": { + "pinyin": "jining" + }, + "聊城": { + "pinyin": "liaocheng" + }, + "泰安": { + "pinyin": "taian" + }, + "莱芜": { + "pinyin": "laiwu" + }, + "德州": { + "pinyin": "dezhou" + }, + "淄博": { + "pinyin": "zibo" + }, + "滨州": { + "pinyin": "binzhou" + }, + "临沂": { + "pinyin": "linyi" + }, + "日照": { + "pinyin": "rizhao" + }, + "青岛": { + "pinyin": "qingdao" + }, + "潍坊": { + "pinyin": "weifang" + }, + "东营": { + "pinyin": "dongying" + }, + "烟台": { + "pinyin": "yantai" + }, + "威海": { + "pinyin": "weihai" + } + }, + "河南": { + "郑州": { + "pinyin": "zhengzhou" + }, + "三门峡": { + "pinyin": "sanmenxia" + }, + "洛阳": { + "pinyin": "luoyang" + }, + "信阳": { + "pinyin": "xinyang" + }, + "南阳": { + "pinyin": "nanyang" + }, + "驻马店": { + "pinyin": "zhumadian" + }, + "漯河": { + "pinyin": "luohe" + }, + "周口": { + "pinyin": "zhoukou" + }, + "平顶山": { + "pinyin": "pingdingshan" + }, + "许昌": { + "pinyin": "xuchang" + }, + "济源": { + "pinyin": "jiyuan" + }, + "开封": { + "pinyin": "kaifeng" + }, + "焦作": { + "pinyin": "jiaozuo" + }, + "新乡": { + "pinyin": "xinxiang" + }, + "鹤壁": { + "pinyin": "hebi" + }, + "濮阳": { + "pinyin": "puyang" + }, + "安阳": { + "pinyin": "anyang" + }, + "商丘": { + "pinyin": "shangqiu" + } + }, + "湖北": { + "武汉": { + "pinyin": "wuhan" + }, + "恩施": { + "pinyin": "enshi" + }, + "宜昌": { + "pinyin": "yichang" + }, + "荆州": { + "pinyin": "jingzhou" + }, + "神农架": { + "pinyin": "shennongjia" + }, + "荆门": { + "pinyin": "jingmen" + }, + "襄阳": { + "pinyin": "xiangyang" + }, + "十堰": { + "pinyin": "shiyan" + }, + "潜江": { + "pinyin": "qianjiang" + }, + "天门": { + "pinyin": "tianmen" + }, + "仙桃": { + "pinyin": "xiantao" + }, + "咸宁": { + "pinyin": "xianning" + }, + "黄石": { + "pinyin": "huangshi" + }, + "孝感": { + "pinyin": "xiaogan" + }, + "鄂州": { + "pinyin": "ezhou" + }, + "黄冈": { + "pinyin": "huanggang" + }, + "随州": { + "pinyin": "suizhou" + } + }, + "湖南": { + "长沙": { + "pinyin": "changsha" + }, + "永州": { + "pinyin": "yongzhou" + }, + "怀化": { + "pinyin": "huaihua" + }, + "邵阳": { + "pinyin": "shaoyang" + }, + "娄底": { + "pinyin": "loudi" + }, + "吉首": { + "pinyin": "jishou" + }, + "张家界": { + "pinyin": "zhangjiajie" + }, + "益阳": { + "pinyin": "yiyang" + }, + "常德": { + "pinyin": "changde" + }, + "郴州": { + "pinyin": "chenzhou" + }, + "衡阳": { + "pinyin": "hengyang" + }, + "湘潭": { + "pinyin": "xiangtan" + }, + "株洲": { + "pinyin": "zhuzhou" + }, + "岳阳": { + "pinyin": "yueyang" + } + }, + "广东": { + "广州": { + "pinyin": "guangzhou" + }, + "湛江": { + "pinyin": "zhanjiang" + }, + "茂名": { + "pinyin": "maoming" + }, + "阳江": { + "pinyin": "yangjiang" + }, + "珠海": { + "pinyin": "zhuhai" + }, + "云浮": { + "pinyin": "yunfu" + }, + "肇庆": { + "pinyin": "zhaoqing" + }, + "江门": { + "pinyin": "jiangmen" + }, + "佛山": { + "pinyin": "foshan" + }, + "中山": { + "pinyin": "zhongshan" + }, + "东莞": { + "pinyin": "dongguan" + }, + "清远": { + "pinyin": "qingyuan" + }, + "深圳": { + "pinyin": "shenzhen" + }, + "惠州": { + "pinyin": "huizhou" + }, + "河源": { + "pinyin": "heyuan" + }, + "韶关": { + "pinyin": "shaoguan" + }, + "汕尾": { + "pinyin": "shanwei" + }, + "汕头": { + "pinyin": "shantou" + }, + "揭阳": { + "pinyin": "jieyang" + }, + "潮州": { + "pinyin": "chaozhou" + }, + "梅州": { + "pinyin": "meizhou" + } + }, + "广西": { + "南宁": { + "pinyin": "nanning" + }, + "崇左": { + "pinyin": "chongzuo" + }, + "防城港": { + "pinyin": "fangchenggang" + }, + "北海": { + "pinyin": "beihai" + }, + "钦州": { + "pinyin": "qinzhou" + }, + "百色": { + "pinyin": "baise" + }, + "贵港": { + "pinyin": "guigang" + }, + "来宾": { + "pinyin": "laibin" + }, + "河池": { + "pinyin": "hechi" + }, + "柳州": { + "pinyin": "liuzhou" + }, + "玉林": { + "pinyin": "yulin" + }, + "梧州": { + "pinyin": "wuzhou" + }, + "桂林": { + "pinyin": "guilin" + }, + "贺州": { + "pinyin": "hezhou" + } + }, + "海南": { + "海口": { + "pinyin": "haikou" + }, + "西沙": { + "pinyin": "xisha" + }, + "三亚": { + "pinyin": "sanya" + }, + "乐东": { + "pinyin": "ledong" + }, + "五指山": { + "pinyin": "wuzhishan" + }, + "东方": { + "pinyin": "dongfang" + }, + "昌江": { + "pinyin": "changjiang" + }, + "白沙": { + "pinyin": "baisha" + }, + "儋州": { + "pinyin": "danzhou" + }, + "保亭": { + "pinyin": "baoting" + }, + "陵水": { + "pinyin": "lingshui" + }, + "万宁": { + "pinyin": "wanning" + }, + "琼中": { + "pinyin": "qiongzhong" + }, + "屯昌": { + "pinyin": "tunchang" + }, + "琼海": { + "pinyin": "qionghai" + }, + "文昌": { + "pinyin": "wenchang" + }, + "临高": { + "pinyin": "lingao" + }, + "澄迈": { + "pinyin": "chengmai" + }, + "定安": { + "pinyin": "dingan" + }, + "南沙": { + "pinyin": "nansha" + }, + "中沙": { + "pinyin": "wuzhishan" + } + }, + "重庆": { + "-": { + "pinyin": "chongqing" + } + }, + "四川": { + "成都": { + "pinyin": "chengdu" + }, + "甘孜": { + "pinyin": "ganzi" + }, + "攀枝花": { + "pinyin": "panzhihua" + }, + "凉山": { + "pinyin": "liangshan" + }, + "雅安": { + "pinyin": "yaan" + }, + "乐山": { + "pinyin": "leshan" + }, + "眉山": { + "pinyin": "meishan" + }, + "宜宾": { + "pinyin": "yibin" + }, + "泸州": { + "pinyin": "luzhou" + }, + "自贡": { + "pinyin": "zigong" + }, + "资阳": { + "pinyin": "ziyang" + }, + "内江": { + "pinyin": "neijiang" + }, + "遂宁": { + "pinyin": "suining" + }, + "南充": { + "pinyin": "nanchong" + }, + "广安": { + "pinyin": "guangan" + }, + "阿坝": { + "pinyin": "aba" + }, + "德阳": { + "pinyin": "deyang" + }, + "绵阳": { + "pinyin": "mianyang" + }, + "巴中": { + "pinyin": "bazhong" + }, + "广元": { + "pinyin": "guangyuan" + }, + "达州": { + "pinyin": "dazhou" + } + }, + "贵州": { + "贵阳": { + "pinyin": "guiyang" + }, + "兴义": { + "pinyin": "xingyi" + }, + "水城": { + "pinyin": "shuicheng" + }, + "安顺": { + "pinyin": "anshun" + }, + "毕节": { + "pinyin": "bijie" + }, + "都匀": { + "pinyin": "duyun" + }, + "凯里": { + "pinyin": "kaili" + }, + "遵义": { + "pinyin": "zunyi" + }, + "铜仁": { + "pinyin": "tongren" + } + }, + "云南": { + "昆明": { + "pinyin": "kunming" + }, + "景洪": { + "pinyin": "jinghong" + }, + "普洱": { + "pinyin": "puer" + }, + "临沧": { + "pinyin": "lincang" + }, + "德宏": { + "pinyin": "dehong" + }, + "保山": { + "pinyin": "baoshan" + }, + "怒江": { + "pinyin": "nujiang" + }, + "大理": { + "pinyin": "dali" + }, + "香格里拉": { + "pinyin": "xianggelila" + }, + "丽江": { + "pinyin": "lijiang" + }, + "红河": { + "pinyin": "honghe" + }, + "玉溪": { + "pinyin": "yuxi" + }, + "楚雄": { + "pinyin": "chuxiong" + }, + "文山": { + "pinyin": "wenshan" + }, + "曲靖": { + "pinyin": "qujing" + }, + "昭通": { + "pinyin": "zhaotong" + } + }, + "西藏": { + "拉萨": { + "pinyin": "lasa" + }, + "阿里": { + "pinyin": "ali" + }, + "日喀则": { + "pinyin": "rikaze" + }, + "山南": { + "pinyin": "shannan" + }, + "林芝": { + "pinyin": "linzhi" + }, + "那曲": { + "pinyin": "naqu" + }, + "昌都": { + "pinyin": "changdu" + } + }, + "陕西": { + "西安": { + "pinyin": "xian" + }, + "汉中": { + "pinyin": "hanzhong" + }, + "安康": { + "pinyin": "ankang" + }, + "宝鸡": { + "pinyin": "baoji" + }, + "杨凌": { + "pinyin": "yangling" + }, + "咸阳": { + "pinyin": "xianyang" + }, + "铜川": { + "pinyin": "tongchuan" + }, + "渭南": { + "pinyin": "weinan" + }, + "商洛": { + "pinyin": "shangluo" + }, + "延安": { + "pinyin": "yanan" + }, + "榆林": { + "pinyin": "yulin" + } + }, + "甘肃": { + "兰州": { + "pinyin": "lanzhou" + }, + "武都": { + "pinyin": "wudu" + }, + "张掖": { + "pinyin": "zhangye" + }, + "嘉峪关": { + "pinyin": "jiayuguan" + }, + "酒泉": { + "pinyin": "jiuquan" + }, + "合作": { + "pinyin": "hezuo" + }, + "临夏": { + "pinyin": "linxia" + }, + "天水": { + "pinyin": "tianshui" + }, + "定西": { + "pinyin": "dingxi" + }, + "白银": { + "pinyin": "baiyin" + }, + "平凉": { + "pinyin": "pingliang" + }, + "武威": { + "pinyin": "wuwei" + }, + "金昌": { + "pinyin": "jinchang" + }, + "庆阳": { + "pinyin": "qingyang" + } + }, + "青海": { + "西宁": { + "pinyin": "xining" + }, + "玉树": { + "pinyin": "yushu" + }, + "格尔木": { + "pinyin": "geermu" + }, + "果洛": { + "pinyin": "guoluo" + }, + "海南": { + "pinyin": "hainan" + }, + "海西": { + "pinyin": "haixi" + }, + "海北": { + "pinyin": "haibei" + }, + "黄南": { + "pinyin": "huangnan" + }, + "海东": { + "pinyin": "haidong" + } + }, + "宁夏": { + "银川": { + "pinyin": "yinchuan" + }, + "固原": { + "pinyin": "guyuan" + }, + "中卫": { + "pinyin": "zhongwei" + }, + "吴忠": { + "pinyin": "wuzhong" + }, + "石嘴山": { + "pinyin": "shizuishan" + } + }, + "新疆": { + "乌鲁木齐": { + "pinyin": "wulumuqi" + }, + "喀什": { + "pinyin": "kashi" + }, + "阿图什": { + "pinyin": "atushi" + }, + "和田": { + "pinyin": "hetian" + }, + "阿拉尔": { + "pinyin": "alaer" + }, + "阿克苏": { + "pinyin": "akesu" + }, + "伊宁": { + "pinyin": "yining" + }, + "博乐": { + "pinyin": "bole" + }, + "库尔勒": { + "pinyin": "kuerle" + }, + "石河子": { + "pinyin": "shihezi" + }, + "吐鲁番": { + "pinyin": "tulufan" + }, + "昌吉": { + "pinyin": "changji" + }, + "五家渠": { + "pinyin": "wujiaqu" + }, + "塔城": { + "pinyin": "tacheng" + }, + "克拉玛依": { + "pinyin": "kelamayi" + }, + "阿勒泰": { + "pinyin": "aletai" + }, + "哈密": { + "pinyin": "hami" + } + }, + "香港": { + "-": { + "pinyin": "hong kong" + } + }, + "澳门": { + "-": { + "pinyin": "macao" + } + }, + "台湾": { + "台北": { + "pinyin": "taipei" + }, + "高雄": { + "pinyin": "gaoxiong" + }, + "台中": { + "pinyin": "taizhong" + } + } +} \ No newline at end of file diff --git a/boards/default_src/arduino_avr/blocks/actuator.js b/boards/default_src/arduino_avr/blocks/actuator.js index 51ba3f00..708181fc 100644 --- a/boards/default_src/arduino_avr/blocks/actuator.js +++ b/boards/default_src/arduino_avr/blocks/actuator.js @@ -128,17 +128,53 @@ export const servo_read_degrees1 = { } }; -var TONE_NOTES = [["NOTE_C3", "131"], ["NOTE_D3", "147"], ["NOTE_E3", "165"], ["NOTE_F3", "175"], ["NOTE_G3", "196"], ["NOTE_A3", "220"], ["NOTE_B3", "247"], ["NOTE_C4", "262"], ["NOTE_D4", "294"], ["NOTE_E4", "330"], ["NOTE_F4", "349"], ["NOTE_G4", "392"], ["NOTE_A4", "440"], ["NOTE_B4", "494"], ["NOTE_C5", "523"], ["NOTE_D5", "587"], ["NOTE_E5", "659"], ["NOTE_F5", "698"], ["NOTE_G5", "784"], ["NOTE_A5", "880"], ["NOTE_B5", "988"], ["NOTE_C6", "1047"], ["NOTE_D6", "1175"], ["NOTE_E6", "1319"], ["NOTE_F6", "1397"], ["NOTE_G6", "1568"], ["NOTE_A6", "1760"], ["NOTE_B6", "1976"], ["NOTE_C7", "2093"], ["NOTE_D7", "2349"], ["NOTE_E7", "2637"], ["NOTE_F7", "2794"], ["NOTE_G7", "3136"], ["NOTE_A7", "3520"], ["NOTE_B7", "3951"]]; - export const tone_notes = { init: function () { this.setColour(ACTUATOR_HUE); this.appendDummyInput("") - .appendField(new Blockly.FieldDropdown(TONE_NOTES), 'STAT'); + .appendField(new Blockly.FieldDropdown(this.TONE_NOTES), 'STAT'); this.setOutput(true, Number); this.setTooltip(Blockly.Msg.MIXLY_TOOLTIP_TONE_NOTE); - } + }, + TONE_NOTES: [ + ["NOTE_C3", "131"], + ["NOTE_D3", "147"], + ["NOTE_E3", "165"], + ["NOTE_F3", "175"], + ["NOTE_G3", "196"], + ["NOTE_A3", "220"], + ["NOTE_B3", "247"], + ["NOTE_C4", "262"], + ["NOTE_D4", "294"], + ["NOTE_E4", "330"], + ["NOTE_F4", "349"], + ["NOTE_G4", "392"], + ["NOTE_A4", "440"], + ["NOTE_B4", "494"], + ["NOTE_C5", "523"], + ["NOTE_D5", "587"], + ["NOTE_E5", "659"], + ["NOTE_F5", "698"], + ["NOTE_G5", "784"], + ["NOTE_A5", "880"], + ["NOTE_B5", "988"], + ["NOTE_C6", "1047"], + ["NOTE_D6", "1175"], + ["NOTE_E6", "1319"], + ["NOTE_F6", "1397"], + ["NOTE_G6", "1568"], + ["NOTE_A6", "1760"], + ["NOTE_B6", "1976"], + ["NOTE_C7", "2093"], + ["NOTE_D7", "2349"], + ["NOTE_E7", "2637"], + ["NOTE_F7", "2794"], + ["NOTE_G7", "3136"], + ["NOTE_A7", "3520"], + ["NOTE_B7", "3951"] + ] }; + export const controls_tone = { init: function () { this.setColour(ACTUATOR_HUE); @@ -156,6 +192,7 @@ export const controls_tone = { this.setTooltip(Blockly.Msg.MIXLY_TOOLTIP_BLOCKGROUP_TONE); } }; + export const controls_notone = { init: function () { this.setColour(ACTUATOR_HUE); @@ -169,6 +206,7 @@ export const controls_notone = { this.setTooltip(Blockly.Msg.MIXLY_TOOLTIP_BLOCKGROUP_NOTONE); } }; + export const controls_tone_noTimer = { init: function () { this.setColour(ACTUATOR_HUE); @@ -233,7 +271,7 @@ export const group_stepper_setup = { this.setNextStatement(true, null); this.setTooltip(Blockly.Msg.MIXLY_TOOLTIP_STEPPER_STEP); } -} +}; export const group_stepper_setup2 = { init: function () { @@ -269,7 +307,7 @@ export const group_stepper_setup2 = { this.setNextStatement(true, null); this.setTooltip(Blockly.Msg.MIXLY_TOOLTIP_STEPPER_STEP2); } -} +}; export const group_stepper_move = { init: function () { @@ -286,8 +324,7 @@ export const group_stepper_move = { this.setInputsInline(true); this.setTooltip(Blockly.Msg.MIXLY_TOOLTIP_STEPPER_MOVE); } -} - +}; export const RGB_color_seclet = { init: function () { @@ -322,12 +359,6 @@ export const RGB_color_rgb = { } }; -var DISPLAY_RGB_TYPE = [ - ["NEO_GRB", "NEO_GRB"], - ["NEO_RGB", "NEO_RGB"], - ["NEO_RGBW", "NEO_RGBW"] -]; - //RGB export const display_rgb_init = { init: function () { @@ -339,7 +370,7 @@ export const display_rgb_init = { .setAlign(Blockly.inputs.Align.RIGHT); this.appendDummyInput("") .appendField(Blockly.Msg.MIXLY_MICROPYTHON_SOCKET_TYPE) - .appendField(new Blockly.FieldDropdown(DISPLAY_RGB_TYPE), "TYPE"); + .appendField(new Blockly.FieldDropdown(this.DISPLAY_RGB_TYPE), "TYPE"); this.appendValueInput("LEDCOUNT") .setCheck(Number) .setAlign(Blockly.inputs.Align.RIGHT) @@ -349,7 +380,12 @@ export const display_rgb_init = { this.setNextStatement(true, null); this.setTooltip(''); // this.setFieldValue("12", "PIN"); - } + }, + DISPLAY_RGB_TYPE: [ + ["NEO_GRB", "NEO_GRB"], + ["NEO_RGB", "NEO_RGB"], + ["NEO_RGBW", "NEO_RGBW"] + ] }; export const display_rgb_Brightness = { @@ -372,7 +408,6 @@ export const display_rgb_Brightness = { } }; - export const display_rgb = { init: function () { this.setColour(ACTUATOR_HUE); @@ -411,12 +446,6 @@ export const display_rgb_show = { } }; -var DISPLAY_RAINBOW_TYPE = [ - [Blockly.Msg.MIXLY_RGB_DISPLAY_RAINBOW_TYPE_1, "normal"], - [Blockly.Msg.MIXLY_RGB_DISPLAY_RAINBOW_TYPE_2, "change"] -]; - - export const display_rgb_rainbow1 = { init: function () { this.setColour(ACTUATOR_HUE); @@ -463,7 +492,7 @@ export const display_rgb_rainbow3 = { .appendField(new Blockly.FieldDropdown(Profile.default.digital), "PIN") .setAlign(Blockly.inputs.Align.RIGHT); this.appendDummyInput("") - .appendField(new Blockly.FieldDropdown(DISPLAY_RAINBOW_TYPE), "TYPE"); + .appendField(new Blockly.FieldDropdown(this.DISPLAY_RAINBOW_TYPE), "TYPE"); this.appendValueInput("rainbow_color") .setCheck(Number) .setAlign(Blockly.inputs.Align.RIGHT) @@ -472,7 +501,11 @@ export const display_rgb_rainbow3 = { this.setPreviousStatement(true, null); this.setNextStatement(true, null); // this.setFieldValue("12", "PIN"); - } + }, + DISPLAY_RAINBOW_TYPE: [ + [Blockly.Msg.MIXLY_RGB_DISPLAY_RAINBOW_TYPE_1, "normal"], + [Blockly.Msg.MIXLY_RGB_DISPLAY_RAINBOW_TYPE_2, "change"] + ] }; export const RGB_color_HSV = { @@ -505,18 +538,13 @@ export const RGB_color_HSV = { this.setTooltip('色调范围0-65536;饱和度范围0-255;明度范围0-255'); } }; -//电机驱动类型 -var MOTOR_TYPE = [ - ["L293", "L293"], - ["L298", "L298"], - ["TB6612FNG", "TB6612FNG"] -]; + export const Mixly_motor = { init: function () { this.setColour(ACTUATOR_HUE); this.appendDummyInput("") .appendField(Blockly.Msg.MIXLY_MOTOR) - .appendField(new Blockly.FieldDropdown(MOTOR_TYPE), "MOTOR_TYPE"); + .appendField(new Blockly.FieldDropdown(this.MOTOR_TYPE), "MOTOR_TYPE"); this.appendDummyInput("") this.appendValueInput("PIN1") .setCheck(Number) @@ -536,8 +564,14 @@ export const Mixly_motor = { this.setInputsInline(true); this.setPreviousStatement(true); this.setNextStatement(true); - } + }, + MOTOR_TYPE: [ + ["L293", "L293"], + ["L298", "L298"], + ["TB6612FNG", "TB6612FNG"] + ] }; + export const Motor_8833 = { init: function () { this.setColour(ACTUATOR_HUE); @@ -562,23 +596,6 @@ export const Motor_8833 = { } }; -//MP3播放控制 -var GD5800_MP3_CONTROL_TYPE = [ - [Blockly.Msg.MIXLY_MP3_PLAY, "play();"], - [Blockly.Msg.MIXLY_MP3_PAUSE, "pause();"], - [Blockly.Msg.MIXLY_MP3_NEXT, "next();"], - [Blockly.Msg.MIXLY_MP3_PREV, "prev();"], - [Blockly.Msg.MIXLY_MP3_VOL_UP, "volumeUp();"], - [Blockly.Msg.MIXLY_MP3_VOL_DOWN, "volumeDn();"] -]; - -//MP3 GD5800 设置设备USB/Flash -var GD5800_MP3_Device = [ - ["Flash", "MP3_DEVICE_FLASH"],//内部Flash - [Blockly.Msg.MIXLY_MP3_UDISK, "MP3_DEVICE_UDISK"]//外部U盘 -]; - - //GD5800 MP3播放设备选择 export const GD5800_MP3_Set_Device = { init: function () { @@ -594,13 +611,17 @@ export const GD5800_MP3_Set_Device = { this.appendDummyInput("") .appendField(Blockly.Msg.MIXLY_MP3_SOURCE) .appendField(Blockly.Msg.MIXLY_STAT) - .appendField(new Blockly.FieldDropdown(GD5800_MP3_Device), "DEVICEID"); + .appendField(new Blockly.FieldDropdown(this.GD5800_MP3_Device), "DEVICEID"); this.setInputsInline(true); this.setPreviousStatement(true, null); this.setNextStatement(true, null); this.setTooltip(); this.setHelpUrl(); - } + }, + GD5800_MP3_Device: [ + ["Flash", "MP3_DEVICE_FLASH"],//内部Flash + [Blockly.Msg.MIXLY_MP3_UDISK, "MP3_DEVICE_UDISK"]//外部U盘 + ] }; //GD5800 MP3模块 @@ -617,23 +638,23 @@ export const GD5800_MP3_CONTROL = { .setCheck(Number); this.appendDummyInput("") .appendField(Blockly.Msg.MIXLY_STAT) - .appendField(new Blockly.FieldDropdown(GD5800_MP3_CONTROL_TYPE), "CONTROL_TYPE"); + .appendField(new Blockly.FieldDropdown(this.GD5800_MP3_CONTROL_TYPE), "CONTROL_TYPE"); this.setInputsInline(true); this.setPreviousStatement(true, null); this.setNextStatement(true, null); this.setTooltip(); this.setHelpUrl(); - } + }, + GD5800_MP3_CONTROL_TYPE: [ + [Blockly.Msg.MIXLY_MP3_PLAY, "play();"], + [Blockly.Msg.MIXLY_MP3_PAUSE, "pause();"], + [Blockly.Msg.MIXLY_MP3_NEXT, "next();"], + [Blockly.Msg.MIXLY_MP3_PREV, "prev();"], + [Blockly.Msg.MIXLY_MP3_VOL_UP, "volumeUp();"], + [Blockly.Msg.MIXLY_MP3_VOL_DOWN, "volumeDn();"] + ] }; -//MP3循环模式 -var GD5800_MP3_LOOP_MODE_TYPE = [ - [Blockly.Msg.MIXLY_MP3_LOOP_ALL, "MP3_LOOP_ALL"], - [Blockly.Msg.MIXLY_MP3_LOOP_FOLDER, "MP3_LOOP_FOLDER"], - [Blockly.Msg.MIXLY_MP3_LOOP_ONE, "MP3_LOOP_ONE"], - [Blockly.Msg.MIXLY_MP3_LOOP_RAM, "MP3_LOOP_RAM"] -]; - //GD5800 MP3模块循环模式 export const GD5800_MP3_LOOP_MODE = { init: function () { @@ -649,25 +670,21 @@ export const GD5800_MP3_LOOP_MODE = { this.appendDummyInput("") .appendField(Blockly.Msg.MIXLY_MP3_LOOP_MODE) .appendField(Blockly.Msg.MIXLY_STAT) - .appendField(new Blockly.FieldDropdown(GD5800_MP3_LOOP_MODE_TYPE), "LOOP_MODE"); + .appendField(new Blockly.FieldDropdown(this.GD5800_MP3_LOOP_MODE_TYPE), "LOOP_MODE"); this.setInputsInline(true); this.setPreviousStatement(true, null); this.setNextStatement(true, null); this.setTooltip(); this.setHelpUrl(); - } + }, + GD5800_MP3_LOOP_MODE_TYPE: [ + [Blockly.Msg.MIXLY_MP3_LOOP_ALL, "MP3_LOOP_ALL"], + [Blockly.Msg.MIXLY_MP3_LOOP_FOLDER, "MP3_LOOP_FOLDER"], + [Blockly.Msg.MIXLY_MP3_LOOP_ONE, "MP3_LOOP_ONE"], + [Blockly.Msg.MIXLY_MP3_LOOP_RAM, "MP3_LOOP_RAM"] + ] }; -//MP3 设置EQ -var GD5800_MP3_EQ_MODE_TYPE = [ - [Blockly.Msg.MIXLY_MP3_EQ_NORMAL, "MP3_EQ_NORMAL"], - [Blockly.Msg.MIXLY_MP3_EQ_POP, "MP3_EQ_POP"], - [Blockly.Msg.MIXLY_MP3_EQ_ROCK, "MP3_EQ_ROCK"], - [Blockly.Msg.MIXLY_MP3_EQ_JAZZ, "MP3_EQ_JAZZ"], - [Blockly.Msg.MIXLY_MP3_EQ_CLASSIC, "MP3_EQ_CLASSIC"], - [Blockly.Msg.MIXLY_MP3_EQ_BASS, "MP3_EQ_BASS"] -]; - //GD5800 MP3模块EQ模式 export const GD5800_MP3_EQ_MODE = { init: function () { @@ -683,13 +700,21 @@ export const GD5800_MP3_EQ_MODE = { this.appendDummyInput("") .appendField(Blockly.Msg.MIXLY_MP3_EQ_MODE) .appendField(Blockly.Msg.MIXLY_STAT) - .appendField(new Blockly.FieldDropdown(GD5800_MP3_EQ_MODE_TYPE), "EQ_MODE"); + .appendField(new Blockly.FieldDropdown(this.GD5800_MP3_EQ_MODE_TYPE), "EQ_MODE"); this.setInputsInline(true); this.setPreviousStatement(true, null); this.setNextStatement(true, null); this.setTooltip(); this.setHelpUrl(); - } + }, + GD5800_MP3_EQ_MODE_TYPE: [ + [Blockly.Msg.MIXLY_MP3_EQ_NORMAL, "MP3_EQ_NORMAL"], + [Blockly.Msg.MIXLY_MP3_EQ_POP, "MP3_EQ_POP"], + [Blockly.Msg.MIXLY_MP3_EQ_ROCK, "MP3_EQ_ROCK"], + [Blockly.Msg.MIXLY_MP3_EQ_JAZZ, "MP3_EQ_JAZZ"], + [Blockly.Msg.MIXLY_MP3_EQ_CLASSIC, "MP3_EQ_CLASSIC"], + [Blockly.Msg.MIXLY_MP3_EQ_BASS, "MP3_EQ_BASS"] + ] }; //GD5800 MP3模块设置音量 @@ -742,8 +767,6 @@ export const GD5800_MP3_PLAY_NUM = { } }; -var VOICE_LIST = [["老师", "0x00"], ["爸爸", "0x01"], ["妈妈", "0x02"], ["爷爷", "0x03"], ["奶奶", "0x04"], ["姥姥", "0x05"], ["姥爷", "0x06"], ["哥哥", "0x07"], ["姐姐", "0x08"], ["叔叔", "0x09"], ["阿姨", "0x0A"], ["上午", "0x0B"], ["下午", "0x0C"], ["晚上", "0x0D"], ["前方", "0x0E"], ["厘米", "0x0F"], ["新年快乐", "0x10"], ["身体健康", "0x11"], ["工作顺利", "0x12"], ["学习进步", "0x13"], ["您好", "0x14"], ["谢谢", "0x15"], ["的", "0x16"], ["祝", "0x17"], ["慢走", "0x18"], ["欢迎光临", "0x19"], ["亲爱的", "0x1A"], ["同学们", "0x1B"], ["工作辛苦了", "0x1C"], ["点", "0x1D"], ["打开", "0x1E"], ["关闭", "0x1F"], ["千", "0x20"], ["百", "0x21"], ["十", "0x22"], ["1", "0x23"], ["2", "0x24"], ["3", "0x25"], ["4", "0x26"], ["5", "0x27"], ["6", "0x28"], ["7", "0x29"], ["8", "0x2A"], ["9", "0x2B"], ["0", "0x2C"], ["当前", "0x2D"], ["转", "0x2E"], ["左", "0x2F"], ["右", "0x30"], ["请", "0x31"], ["已", "0x32"], ["现在", "0x33"], ["是", "0x34"], ["红灯", "0x35"], ["绿灯", "0x36"], ["黄灯", "0x37"], ["温度", "0x38"], ["湿度", "0x39"], ["欢迎常来", "0x3A"], ["还有", "0x3B"], ["秒", "0x3C"], ["分", "0x3D"], ["变", "0x3E"], ["等", "0x3F"], ["下一次", "0x40"], ["功能", "0x41"], ["障碍物", "0x42"], ["世界那么大,我想去看看", "0x43"]]; - export const voice_module = { init: function () { this.setColour(ACTUATOR_HUE); @@ -754,12 +777,82 @@ export const voice_module = { .setCheck(Number); this.appendDummyInput("") .appendField(Blockly.Msg.MIXLY_MP3_PLAY) - .appendField(new Blockly.FieldDropdown(VOICE_LIST), "VOICE"); + .appendField(new Blockly.FieldDropdown(this.VOICE_LIST), "VOICE"); this.appendValueInput("WAIT").setCheck(Number).appendField(Blockly.Msg.MIXLY_MICROBIT_WAIT); this.setPreviousStatement(true, null); this.setNextStatement(true, null); this.setInputsInline(true); - } + }, + VOICE_LIST: [ + ["老师", "0x00"], + ["爸爸", "0x01"], + ["妈妈", "0x02"], + ["爷爷", "0x03"], + ["奶奶", "0x04"], + ["姥姥", "0x05"], + ["姥爷", "0x06"], + ["哥哥", "0x07"], + ["姐姐", "0x08"], + ["叔叔", "0x09"], + ["阿姨", "0x0A"], + ["上午", "0x0B"], + ["下午", "0x0C"], + ["晚上", "0x0D"], + ["前方", "0x0E"], + ["厘米", "0x0F"], + ["新年快乐", "0x10"], + ["身体健康", "0x11"], + ["工作顺利", "0x12"], + ["学习进步", "0x13"], + ["您好", "0x14"], + ["谢谢", "0x15"], + ["的", "0x16"], + ["祝", "0x17"], + ["慢走", "0x18"], + ["欢迎光临", "0x19"], + ["亲爱的", "0x1A"], + ["同学们", "0x1B"], + ["工作辛苦了", "0x1C"], + ["点", "0x1D"], + ["打开", "0x1E"], + ["关闭", "0x1F"], + ["千", "0x20"], + ["百", "0x21"], + ["十", "0x22"], + ["1", "0x23"], + ["2", "0x24"], + ["3", "0x25"], + ["4", "0x26"], + ["5", "0x27"], + ["6", "0x28"], + ["7", "0x29"], + ["8", "0x2A"], + ["9", "0x2B"], + ["0", "0x2C"], + ["当前", "0x2D"], + ["转", "0x2E"], + ["左", "0x2F"], + ["右", "0x30"], + ["请", "0x31"], + ["已", "0x32"], + ["现在", "0x33"], + ["是", "0x34"], + ["红灯", "0x35"], + ["绿灯", "0x36"], + ["黄灯", "0x37"], + ["温度", "0x38"], + ["湿度", "0x39"], + ["欢迎常来", "0x3A"], + ["还有", "0x3B"], + ["秒", "0x3C"], + ["分", "0x3D"], + ["变", "0x3E"], + ["等", "0x3F"], + ["下一次", "0x40"], + ["功能", "0x41"], + ["障碍物", "0x42"], + ["世界那么大,我想去看看", "0x43"] + ] }; @@ -767,21 +860,11 @@ export const voice_module = { export const AFMotorRun = { init: function () { this.setColour(ACTUATOR_HUE); - var MOTOR = [ - ["M1", "1"], - ["M2", "2"], - ["M3", "3"], - ["M4", "4"], - ]; - var DIRECTION = [ - [Blockly.Msg.MIXLY_FORWARD, "FORWARD"], - [Blockly.Msg.MIXLY_BACKWARD, "BACKWARD"], - ]; this.appendDummyInput("") .appendField("AFMotor" + Blockly.Msg.MIXLY_MOTOR) - .appendField(new Blockly.FieldDropdown(MOTOR), "motor") + .appendField(new Blockly.FieldDropdown(this.MOTOR), "motor") .appendField(Blockly.Msg.MIXLY_MICROBIT_Direction) - .appendField(new Blockly.FieldDropdown(DIRECTION), "direction") + .appendField(new Blockly.FieldDropdown(this.DIRECTION), "direction") .appendField(Blockly.Msg.MIXLY_SPEED); this.appendValueInput("speed", Number) .setCheck(Number); @@ -789,26 +872,35 @@ export const AFMotorRun = { this.setPreviousStatement(true); this.setNextStatement(true); this.setTooltip(''); - } + }, + MOTOR: [ + ["M1", "1"], + ["M2", "2"], + ["M3", "3"], + ["M4", "4"], + ], + DIRECTION: [ + [Blockly.Msg.MIXLY_FORWARD, "FORWARD"], + [Blockly.Msg.MIXLY_BACKWARD, "BACKWARD"], + ] }; //DCMotorStop export const AFMotorStop = { init: function () { this.setColour(ACTUATOR_HUE); - var MOTOR = [ - ["M1", "1"], - ["M2", "2"], - ["M3", "3"], - ["M4", "4"], - ]; this.appendDummyInput("") .appendField(Blockly.Msg.MIXLY_STOP + "AFMotor" + Blockly.Msg.MIXLY_MOTOR) - .appendField(new Blockly.FieldDropdown(MOTOR), "motor"); + .appendField(new Blockly.FieldDropdown(this.MOTOR), "motor"); this.setPreviousStatement(true); this.setNextStatement(true); - - } + }, + MOTOR: [ + ["M1", "1"], + ["M2", "2"], + ["M3", "3"], + ["M4", "4"], + ] }; //初始化DFPlayer Mini @@ -833,7 +925,13 @@ export const arduino_dfplayer_mini_begin = { export const arduino_dfplayer_mini_pin = { init: function () { this.appendDummyInput() - .appendField(new Blockly.FieldDropdown([["Serial", "Serial"], ["SoftwareSerial", "mySerial"], ["SoftwareSerial1", "mySerial1"], ["SoftwareSerial2", "mySerial2"], ["SoftwareSerial3", "mySerial3"]]), "pin_type"); + .appendField(new Blockly.FieldDropdown([ + ["Serial", "Serial"], + ["SoftwareSerial", "mySerial"], + ["SoftwareSerial1", "mySerial1"], + ["SoftwareSerial2", "mySerial2"], + ["SoftwareSerial3", "mySerial3"] + ]), "pin_type"); this.setInputsInline(true); this.setOutput(true, null); this.setColour(65); @@ -886,7 +984,10 @@ export const arduino_dfplayer_mini_volume_up_down = { this.appendDummyInput() .appendField(Blockly.Msg.YX5200_MP3) .appendField(new Blockly.FieldTextInput("myPlayer"), "dfplayer_name") - .appendField(new Blockly.FieldDropdown([[Blockly.Msg.MIXLY_MP3_VOL_UP, "volumeUp"], [Blockly.Msg.MIXLY_MP3_VOL_DOWN, "volumeDown"]]), "volume_type"); + .appendField(new Blockly.FieldDropdown([ + [Blockly.Msg.MIXLY_MP3_VOL_UP, "volumeUp"], + [Blockly.Msg.MIXLY_MP3_VOL_DOWN, "volumeDown"] + ]), "volume_type"); this.setInputsInline(true); this.setPreviousStatement(true, null); this.setNextStatement(true, null); @@ -918,7 +1019,14 @@ export const arduino_dfplayer_mini_EQ = { export const arduino_dfplayer_mini_EQ_type = { init: function () { this.appendDummyInput() - .appendField(new Blockly.FieldDropdown([[Blockly.Msg.MIXLY_MP3_EQ_NORMAL, "DFPLAYER_EQ_NORMAL"], [Blockly.Msg.MIXLY_MP3_EQ_POP, "DFPLAYER_EQ_POP"], [Blockly.Msg.MIXLY_MP3_EQ_ROCK, "DFPLAYER_EQ_ROCK"], [Blockly.Msg.MIXLY_MP3_EQ_CLASSIC, "DFPLAYER_EQ_CLASSIC"], [Blockly.Msg.MIXLY_MP3_EQ_JAZZ, "DFPLAYER_EQ_JAZZ"], [Blockly.Msg.MIXLY_MP3_EQ_BASS, "DFPLAYER_EQ_BASS"]]), "eq_type"); + .appendField(new Blockly.FieldDropdown([ + [Blockly.Msg.MIXLY_MP3_EQ_NORMAL, "DFPLAYER_EQ_NORMAL"], + [Blockly.Msg.MIXLY_MP3_EQ_POP, "DFPLAYER_EQ_POP"], + [Blockly.Msg.MIXLY_MP3_EQ_ROCK, "DFPLAYER_EQ_ROCK"], + [Blockly.Msg.MIXLY_MP3_EQ_CLASSIC, "DFPLAYER_EQ_CLASSIC"], + [Blockly.Msg.MIXLY_MP3_EQ_JAZZ, "DFPLAYER_EQ_JAZZ"], + [Blockly.Msg.MIXLY_MP3_EQ_BASS, "DFPLAYER_EQ_BASS"] + ]), "eq_type"); this.setInputsInline(true); this.setOutput(true, null); this.setColour(ACTUATOR_HUE); @@ -949,7 +1057,13 @@ export const arduino_dfplayer_mini_outputDevice = { export const arduino_dfplayer_mini_outputDevice_type = { init: function () { this.appendDummyInput() - .appendField(new Blockly.FieldDropdown([["SD卡", "DFPLAYER_DEVICE_SD"], ["U盘", "DFPLAYER_DEVICE_U_DISK"], ["AUX", "DFPLAYER_DEVICE_AUX"], ["SLEEP", "DFPLAYER_DEVICE_SLEEP"], ["FLASH", "DFPLAYER_DEVICE_FLASH"]]), "outputdevice_type"); + .appendField(new Blockly.FieldDropdown([ + ["SD卡", "DFPLAYER_DEVICE_SD"], + ["U盘", "DFPLAYER_DEVICE_U_DISK"], + ["AUX", "DFPLAYER_DEVICE_AUX"], + ["SLEEP", "DFPLAYER_DEVICE_SLEEP"], + ["FLASH", "DFPLAYER_DEVICE_FLASH"] + ]), "outputdevice_type"); this.setInputsInline(true); this.setOutput(true, null); this.setColour(ACTUATOR_HUE); @@ -961,34 +1075,34 @@ export const arduino_dfplayer_mini_outputDevice_type = { //DFPlayer Mini 设置-1 export const arduino_dfplayer_set_1 = { init: function () { - var DATA = [ - [Blockly.Msg.MIXLY_MP3_PREV, "previous"], - [Blockly.Msg.MIXLY_MP3_NEXT, "next"], - [Blockly.Msg.MIXLY_MP3_PLAY, "start"], - [Blockly.Msg.MIXLY_MP3_PAUSE, "pause"], - [Blockly.Msg.DFPLAYER_MINI_STOP_ADVERTISE, "stopAdvertise"], - [Blockly.Msg.DFPLAYER_MINI_ENABLE_LOOP, "enableLoop"], - [Blockly.Msg.DFPLAYER_MINI_DISABLE_LOOP, "disableLoop"], - [Blockly.Msg.DFPLAYER_MINI_ENABLE_LOOP_ALL, "enableLoopAll"], - [Blockly.Msg.DFPLAYER_MINI_DISABLE_LOOP_ALL, "disableLoopAll"], - [Blockly.Msg.DFPLAYER_MINI_RANDOM_ALL, "randomAll"], - [Blockly.Msg.DFPLAYER_MINI_ENABLE_DAC, "enableDAC"], - [Blockly.Msg.DFPLAYER_MINI_DISABLE_DAC, "disableDAC"], - [Blockly.Msg.DFPLAYER_MINI_SLEEP, "sleep"], - [Blockly.Msg.HTML_RESET, "reset"] - ]; this.appendDummyInput() .appendField(Blockly.Msg.YX5200_MP3) .appendField(new Blockly.FieldTextInput("myPlayer"), "dfplayer_name") .appendField(" ") - .appendField(new Blockly.FieldDropdown(DATA), "set_data"); + .appendField(new Blockly.FieldDropdown(this.DATA), "set_data"); this.setInputsInline(true); this.setPreviousStatement(true, null); this.setNextStatement(true, null); this.setColour(ACTUATOR_HUE); this.setTooltip(""); this.setHelpUrl(""); - } + }, + DATA: [ + [Blockly.Msg.MIXLY_MP3_PREV, "previous"], + [Blockly.Msg.MIXLY_MP3_NEXT, "next"], + [Blockly.Msg.MIXLY_MP3_PLAY, "start"], + [Blockly.Msg.MIXLY_MP3_PAUSE, "pause"], + [Blockly.Msg.DFPLAYER_MINI_STOP_ADVERTISE, "stopAdvertise"], + [Blockly.Msg.DFPLAYER_MINI_ENABLE_LOOP, "enableLoop"], + [Blockly.Msg.DFPLAYER_MINI_DISABLE_LOOP, "disableLoop"], + [Blockly.Msg.DFPLAYER_MINI_ENABLE_LOOP_ALL, "enableLoopAll"], + [Blockly.Msg.DFPLAYER_MINI_DISABLE_LOOP_ALL, "disableLoopAll"], + [Blockly.Msg.DFPLAYER_MINI_RANDOM_ALL, "randomAll"], + [Blockly.Msg.DFPLAYER_MINI_ENABLE_DAC, "enableDAC"], + [Blockly.Msg.DFPLAYER_MINI_DISABLE_DAC, "disableDAC"], + [Blockly.Msg.DFPLAYER_MINI_SLEEP, "sleep"], + [Blockly.Msg.HTML_RESET, "reset"] + ] }; //DFPlayer Mini 播放和循环指定曲目 @@ -1000,7 +1114,12 @@ export const arduino_dfplayer_play_loop = { this.appendValueInput("play_data") .setCheck(null) .appendField(" ") - .appendField(new Blockly.FieldDropdown([[Blockly.Msg.MIXLY_MP3_PLAY, "play"], [Blockly.Msg.MIXLY_MP3_LOOP_ONE, "loop"], [Blockly.Msg.DFPLAYER_MINI_ADVERTISE, "advertise"], [Blockly.Msg.DFPLAYER_MINI_PLAYMP3FOLDER, "playMp3Folder"]]), "play_type") + .appendField(new Blockly.FieldDropdown([ + [Blockly.Msg.MIXLY_MP3_PLAY, "play"], + [Blockly.Msg.MIXLY_MP3_LOOP_ONE, "loop"], + [Blockly.Msg.DFPLAYER_MINI_ADVERTISE, "advertise"], + [Blockly.Msg.DFPLAYER_MINI_PLAYMP3FOLDER, "playMp3Folder"] + ]), "play_type") .appendField(Blockly.Msg.DFPLAYER_MINI_SONG); this.setInputsInline(true); this.setPreviousStatement(true, null); @@ -1029,7 +1148,10 @@ export const arduino_dfplayer_playFolder = { this.appendValueInput("fold_data") .setCheck(null) .appendField(Blockly.Msg.MIXLY_MP3_PLAY) - .appendField(new Blockly.FieldDropdown([[Blockly.Msg.DFPLAYER_MINI_FOLDER, "playFolder"], [Blockly.Msg.DFPLAYER_MINI_LARGEFOLDER, "playLargeFolder"]]), "fold_type"); + .appendField(new Blockly.FieldDropdown([ + [Blockly.Msg.DFPLAYER_MINI_FOLDER, "playFolder"], + [Blockly.Msg.DFPLAYER_MINI_LARGEFOLDER, "playLargeFolder"] + ]), "fold_type"); this.appendValueInput("play_data") .setCheck(null) .appendField(Blockly.Msg.DFPLAYER_MINI_SONG); @@ -1075,7 +1197,11 @@ export const arduino_dfplayer_read_now = { .appendField(new Blockly.FieldTextInput("myPlayer"), "dfplayer_name"); this.appendDummyInput() .appendField(' ' + Blockly.Msg.MIXLY_GET) - .appendField(new Blockly.FieldDropdown([[Blockly.Msg.MIXLY_PULSEIN_STAT, "readState"], [Blockly.Msg.MIXLY_MP3_VOL, "readVolume"], [Blockly.Msg.MIXLY_MP3_EQ_MODE, "readEQ"]]), "read_type"); + .appendField(new Blockly.FieldDropdown([ + [Blockly.Msg.MIXLY_PULSEIN_STAT, "readState"], + [Blockly.Msg.MIXLY_MP3_VOL, "readVolume"], + [Blockly.Msg.MIXLY_MP3_EQ_MODE, "readEQ"] + ]), "read_type"); this.setInputsInline(true); this.setOutput(true, null); this.setColour(ACTUATOR_HUE); @@ -1094,7 +1220,10 @@ export const arduino_dfplayer_readFileCounts = { .setCheck(null) .appendField(' ' + Blockly.Msg.MIXLY_GET); this.appendDummyInput() - .appendField(new Blockly.FieldDropdown([[Blockly.Msg.DFPLAYER_MINI_READ_FILE_COUNTS, "readFileCounts"], [Blockly.Msg.DFPLAYER_MINI_READ_CURRENT_FILE_NUMBER, "readCurrentFileNumber"]]), "play_data"); + .appendField(new Blockly.FieldDropdown([ + [Blockly.Msg.DFPLAYER_MINI_READ_FILE_COUNTS, "readFileCounts"], + [Blockly.Msg.DFPLAYER_MINI_READ_CURRENT_FILE_NUMBER, "readCurrentFileNumber"] + ]), "play_data"); this.setInputsInline(true); this.setOutput(true, null); this.setColour(ACTUATOR_HUE); @@ -1129,7 +1258,10 @@ export const arduino_dfplayer_available = { .appendField(new Blockly.FieldTextInput("myPlayer"), "dfplayer_name"); this.appendDummyInput() .appendField(".") - .appendField(new Blockly.FieldDropdown([["available", "available"], ["readType", "readType"], ["read", "read"]]), "type"); + .appendField(new Blockly.FieldDropdown([ + ["available", "available"], + ["readType", "readType"], ["read", "read"] + ]), "type"); this.setInputsInline(true); this.setOutput(true, null); this.setColour(ACTUATOR_HUE); @@ -1168,37 +1300,30 @@ export const arduino_dfplayer_available = { ); } }; -var I2C_Motor_SELECT = [["M0", "0"], ["M1", "1"], ["M2", "2"], ["M3", "3"], ["M4", "4"], ["M5", "5"], ["M6", "6"], ["M7", "7"]]; export const I2Cmotor = { init: function () { this.setColour(ACTUATOR_HUE); this.appendDummyInput("") .appendField("I2C" + Blockly.Msg.MIXLY_MOTOR) - .appendField(new Blockly.FieldDropdown(I2C_Motor_SELECT), "motor"); + .appendField(new Blockly.FieldDropdown(this.I2C_Motor_SELECT), "motor"); this.appendValueInput("SPEED").setCheck(Number).appendField(Blockly.Msg.MIXLY_MOTOR_SPEED); this.setInputsInline(true); this.setPreviousStatement(true); this.setNextStatement(true); - } + }, + I2C_Motor_SELECT: [ + ["M0", "0"], + ["M1", "1"], + ["M2", "2"], + ["M3", "3"], + ["M4", "4"], + ["M5", "5"], + ["M6", "6"], + ["M7", "7"] + ] }; -//N910X MP3模块 控制 -var M9101X_S_MP3_CONTROL_TYPE = [ - [Blockly.Msg.MIXLY_MP3_PLAY, "play();"], - [Blockly.Msg.MIXLY_MP3_PAUSE, "pause();"], - [Blockly.Msg.MIXLY_STOP, "stop();"], - [Blockly.Msg.MIXLY_MP3_NEXT, "play_down();"], - [Blockly.Msg.MIXLY_MP3_PREV, "play_up();"], - [Blockly.Msg.MIXLY_MP3_LOOP_ALL, "cycle_all();"], - [Blockly.Msg.MIXLY_MP3_LOOP_ONE, "cycle_single();"], - ["切换到TF卡", "set_sd();"], - ["切换到" + Blockly.Msg.MIXLY_MP3_UDISK, "set_usb_flash();"], - ["切换到MP3模式", "set_mp3();"], - ["切换到flash模式", "set_flash();"], - ["切换音乐风格", "set_eq();"], -]; - export const M9101X_S_MP3_CONTROL = { init: function () { this.setColour(ACTUATOR_HUE); @@ -1206,14 +1331,31 @@ export const M9101X_S_MP3_CONTROL = { this.appendValueInput("PIN", Number) .appendField(Blockly.Msg.MIXLY_PIN) .setCheck(Number); - this.appendDummyInput("").appendField(Blockly.Msg.MIXLY_STAT).appendField(new Blockly.FieldDropdown(M9101X_S_MP3_CONTROL_TYPE), "CONTROL_TYPE"); + this.appendDummyInput("") + .appendField(Blockly.Msg.MIXLY_STAT) + .appendField(new Blockly.FieldDropdown(this.M9101X_S_MP3_CONTROL_TYPE), "CONTROL_TYPE"); this.setInputsInline(true); this.setPreviousStatement(true, null); this.setNextStatement(true, null); this.setTooltip(); this.setHelpUrl(); - } + }, + M9101X_S_MP3_CONTROL_TYPE: [ + [Blockly.Msg.MIXLY_MP3_PLAY, "play();"], + [Blockly.Msg.MIXLY_MP3_PAUSE, "pause();"], + [Blockly.Msg.MIXLY_STOP, "stop();"], + [Blockly.Msg.MIXLY_MP3_NEXT, "play_down();"], + [Blockly.Msg.MIXLY_MP3_PREV, "play_up();"], + [Blockly.Msg.MIXLY_MP3_LOOP_ALL, "cycle_all();"], + [Blockly.Msg.MIXLY_MP3_LOOP_ONE, "cycle_single();"], + ["切换到TF卡", "set_sd();"], + ["切换到" + Blockly.Msg.MIXLY_MP3_UDISK, "set_usb_flash();"], + ["切换到MP3模式", "set_mp3();"], + ["切换到flash模式", "set_flash();"], + ["切换音乐风格", "set_eq();"], + ] }; + //N910X MP3模块 音量设置 export const M9101X_S_MP3_VOL_CONTROL = { init: function () { diff --git a/boards/default_src/arduino_avr/blocks/blynk.js b/boards/default_src/arduino_avr/blocks/blynk.js index eee852e5..7f5b7ba5 100644 --- a/boards/default_src/arduino_avr/blocks/blynk.js +++ b/boards/default_src/arduino_avr/blocks/blynk.js @@ -66,7 +66,7 @@ export const blynk_server = { }; //虚拟管脚选择 -var BLYNK_VIRTUALPIN_SELECT = [ +const BLYNK_VIRTUALPIN_SELECT = [ ["V0", "V0"], ["V1", "V1"], ["V2", "V2"], @@ -111,7 +111,7 @@ var BLYNK_VIRTUALPIN_SELECT = [ ]; //定时器选择 -var BLYNK_TIMER_SELECT = [ +const BLYNK_TIMER_SELECT = [ ["1", "1"], ["2", "2"], ["3", "3"], @@ -152,9 +152,9 @@ export const blynk_iot_push_data = { //从app端获取数据 export const blynk_iot_get_data = { /** - * Block for defining a procedure with no return value. - * @this Blockly.Block - */ + * Block for defining a procedure with no return value. + * @this Blockly.Block + */ init: function () { this.setColour(BLYNK1_HUE); this.appendDummyInput("") @@ -173,17 +173,14 @@ export const blynk_iot_get_data = { this.setNextStatement(false, null); this.statementConnection_ = null; }, - getVars: function () { return [this.getFieldValue("VAR")]; }, - renameVar: function (oldName, newName) { if (Blockly.Names.equals(oldName, this.getFieldValue("VAR"))) { this.setTitleValue(newName, "VAR"); } }, - /** * Add or remove the statement block from this function definition. * @param {boolean} hasStatements True if a statement block is needed. @@ -277,7 +274,6 @@ export const blynk_iot_get_data = { } this.updateParams_(); // Blockly.Procedures.mutateCallers(this); - // Show or hide the statement input. this.setStatements_(xmlElement.getAttribute("statements") !== "false"); }, @@ -492,7 +488,7 @@ export const Blynk_connect_state = { } }; -var BLYNK_CONNECT_STATE_SELECT = [ +const BLYNK_CONNECT_STATE_SELECT = [ [Blockly.Msg.BLYNK_CONNECTED, 'BLYNK_CONNECTED'], [Blockly.Msg.BLYNK_DISCONNECTED, 'BLYNK_DISCONNECTED'], [Blockly.Msg.BLYNK_APP_CONNECTED, 'BLYNK_APP_CONNECTED'], @@ -588,26 +584,30 @@ export const blynk_iot_WidgetLED_VALUE = { } }; -var AC_TYPE = [ +const AC_TYPE = [ [Blockly.Msg.blynk_IOT_GREE, "Gree"], [Blockly.Msg.blynk_IOT_MIDEA, "Midea"], ]; -var AC_POWER = [ +const AC_POWER = [ [Blockly.Msg.MIXLY_ON, "true"], [Blockly.Msg.MIXLY_OFF, "false"] ]; -var AC_MODE = [ + +const AC_MODE = [ [Blockly.Msg.blynk_IOT_FAN, "FAN"], [Blockly.Msg.blynk_IOT_HEAT, "HEAT"], [Blockly.Msg.blynk_IOT_COOL, "COOL"], [Blockly.Msg.blynk_IOT_DRY, "DRY"], - [Blockly.Msg.blynk_IOT_AUTO, "AUTO"]]; -var AC_FAN = [ + [Blockly.Msg.blynk_IOT_AUTO, "AUTO"] +]; + +const AC_FAN = [ [Blockly.Msg.blynk_IOT_FAN_3, "FAN_3"], [Blockly.Msg.blynk_IOT_FAN_2, "FAN_2"], [Blockly.Msg.blynk_IOT_FAN_1, "FAN_1"], - [Blockly.Msg.blynk_IOT_FAN_0, "FAN_0"]]; + [Blockly.Msg.blynk_IOT_FAN_0, "FAN_0"] +]; //红外控制空调 export const blynk_iot_ir_send_ac = { @@ -643,7 +643,9 @@ export const blynk_iot_ir_send_ac = { export const blynk_iot_ir_recv_raw = { init: function () { this.setColour(BLYNK1_HUE); - this.appendValueInput("PIN", Number).appendField(Blockly.Msg.blynk_IOT_IR_RECEIVE_RAW).setCheck(Number); + this.appendValueInput("PIN", Number) + .appendField(Blockly.Msg.blynk_IOT_IR_RECEIVE_RAW) + .setCheck(Number); // this.appendValueInput("PIN", Number).appendField(Blockly.Msg.MIXLY_PIN).setCheck(Number); this.setPreviousStatement(true); this.setNextStatement(true); diff --git a/boards/default_src/arduino_avr/blocks/communicate.js b/boards/default_src/arduino_avr/blocks/communicate.js index f891071b..d2fd513e 100644 --- a/boards/default_src/arduino_avr/blocks/communicate.js +++ b/boards/default_src/arduino_avr/blocks/communicate.js @@ -29,26 +29,28 @@ export const ir_recv = { } } }; + +const TYPE = [ + ['RC5', 'RC5'], + ['RC6', 'RC6'], + ['NEC', 'NEC'], + ['Sony', 'Sony'], + ['Panasonic', 'Panasonic'], + ['JVC', 'JVC'], + ['SAMSUNG', 'SAMSUNG'], + ['Whynter', 'Whynter'], + ['AiwaRCT501', 'AiwaRCT501'], + ['LG', 'LG'], + ['Sanyo', 'Sanyo'], + ['Mitsubishi', 'Mitsubishi'], + ['DISH', 'DISH'], + ['SharpRaw', 'SharpRaw'], + ['Denon', 'Denon'] +]; + //红外发射模块(NEC) export const ir_send_nec = { init: function () { - var TYPE = [ - ['RC5', 'RC5'], - ['RC6', 'RC6'], - ['NEC', 'NEC'], - ['Sony', 'Sony'], - ['Panasonic', 'Panasonic'], - ['JVC', 'JVC'], - ['SAMSUNG', 'SAMSUNG'], - ['Whynter', 'Whynter'], - ['AiwaRCT501', 'AiwaRCT501'], - ['LG', 'LG'], - ['Sanyo', 'Sanyo'], - ['Mitsubishi', 'Mitsubishi'], - ['DISH', 'DISH'], - ['SharpRaw', 'SharpRaw'], - ['Denon', 'Denon'] - ]; this.setColour(COMMUNICATE_HUE); this.appendDummyInput("") .appendField(Blockly.Msg.MIXLY_IR_SEND_NEC1) @@ -117,8 +119,8 @@ export const ir_send_raw = { this.setTooltip(Blockly.Msg.MIXLY_IR_SEND_RAW_TOOLTIP); } }; -// IIC通信 +// IIC通信 // IIC初始化主机 export const i2c_master_Init = { init: function () { @@ -131,6 +133,7 @@ export const i2c_master_Init = { this.setHelpUrl(""); } }; + // IIC初始化从机 export const i2c_slave_Init = { init: function () { @@ -279,7 +282,6 @@ export const i2c_master_readerReg = { } }; - export const i2c_slave_onrequest = { init: function () { this.setColour(COMMUNICATE_HUE); @@ -383,9 +385,10 @@ export const spi_transfer = { this.setPreviousStatement(true); this.setNextStatement(true); this.setInputsInline(true); - this.setTooltip(Blockly.Msg.MIXLY_TOOLTIP_SPI_TRANSFER.replace('%1', Blockly.Arduino.valueToCode(this, 'pin', Blockly.Arduino.ORDER_ATOMIC))); + const pinValue = Blockly.Arduino.valueToCode(this, 'pin', Blockly.Arduino.ORDER_ATOMIC); + this.setTooltip(Blockly.Msg.MIXLY_TOOLTIP_SPI_TRANSFER.replace('%1', pinValue)); } -} +}; //RFID export const RFID_init = { @@ -426,7 +429,6 @@ export const RFID_on = { } }; - //读卡号 export const RFID_readcardnum = { init: function () { @@ -451,7 +453,6 @@ export const RFID_readcardnum = { } }; */ - export const RFID_in = { init: function () { this.appendValueInput("uid_") @@ -483,7 +484,6 @@ export const RFID_writecarddata = { } }; - //读数据块的内容 export const RFID_readcarddata = { init: function () { @@ -510,7 +510,7 @@ export const RFID_serialprintcarddata = { this.setPreviousStatement(true, null); this.setNextStatement(true, null); } -}; */ +};*/ //关闭RFID export const RFID_off = { @@ -652,7 +652,12 @@ export const MFRC522_ReadCard = { export const spi_begin_slave = { init: function () { this.appendDummyInput() - .appendField(Blockly.Msg.MIXLY_SETUP + "SPI" + Blockly.Msg.MIXLY_DEVICE + Blockly.Msg.MIXLY_AS + Blockly.Msg.MIXLY_SALVE); + .appendField( + Blockly.Msg.MIXLY_SETUP + + "SPI" + Blockly.Msg.MIXLY_DEVICE + + Blockly.Msg.MIXLY_AS + + Blockly.Msg.MIXLY_SALVE + ); this.setInputsInline(true); this.setPreviousStatement(true, null); this.setNextStatement(true, null); @@ -665,7 +670,12 @@ export const spi_begin_slave = { export const spi_begin_master = { init: function () { this.appendDummyInput() - .appendField(Blockly.Msg.MIXLY_SETUP + "SPI" + Blockly.Msg.MIXLY_DEVICE + Blockly.Msg.MIXLY_AS + Blockly.Msg.MIXLY_MASTER); + .appendField( + Blockly.Msg.MIXLY_SETUP + + "SPI" + Blockly.Msg.MIXLY_DEVICE + + Blockly.Msg.MIXLY_AS + + Blockly.Msg.MIXLY_MASTER + ); this.appendValueInput("spi_slave_pin") .setCheck(null) .setAlign(Blockly.inputs.Align.RIGHT) @@ -683,7 +693,11 @@ export const spi_transfer_Init = { init: function () { this.appendValueInput("slave_pin") .setCheck(null) - .appendField("SPI" + Blockly.Msg.MIXLY_SEND_DATA + Blockly.Msg.MIXLY_SALVE + Blockly.Msg.MIXLY_PIN); + .appendField( + "SPI" + Blockly.Msg.MIXLY_SEND_DATA + + Blockly.Msg.MIXLY_SALVE + + Blockly.Msg.MIXLY_PIN + ); this.appendStatementInput("transfer_data") .setCheck(null); this.setInputsInline(true); @@ -699,7 +713,6 @@ export const spi_transfer_1 = { init: function () { this.appendValueInput("transfer_data") .setCheck(null) - .appendField("SPI" + Blockly.Msg.MIXLY_MICROPYTHON_SOCKET_SEND); this.setInputsInline(true); this.setPreviousStatement(true, null); @@ -730,7 +743,10 @@ export const spi_slave_interrupt = { init: function () { this.appendValueInput("slave_interrupt_input") .setCheck(null) - .appendField("SPI " + Blockly.Msg.MIXLY_STM32_I2C_SLAVE_RECEIVE_EVENT + " " + Blockly.Msg.MIXLY_STM32_SPI_GET_REGISTER_DATA); + .appendField( + "SPI " + Blockly.Msg.MIXLY_STM32_I2C_SLAVE_RECEIVE_EVENT + + " " + Blockly.Msg.MIXLY_STM32_SPI_GET_REGISTER_DATA + ); this.appendStatementInput("slave_interrupt_data") .setCheck(null) .appendField(Blockly.Msg.MIXLY_MSTIMER2_DO); @@ -747,7 +763,10 @@ export const spi_slave_receive = { init: function () { this.appendValueInput("slave_receive_data") .setCheck(null) - .appendField("SPI " + Blockly.Msg.MIXLY_SALVE + " " + Blockly.Msg.MIXLY_STM32_SPI_GET_REGISTER_DATA); + .appendField( + "SPI " + Blockly.Msg.MIXLY_SALVE + + " " + Blockly.Msg.MIXLY_STM32_SPI_GET_REGISTER_DATA + ); this.setInputsInline(true); this.setOutput(true, null); this.setColour(COMMUNICATE_HUE); diff --git a/boards/default_src/arduino_avr/blocks/control.js b/boards/default_src/arduino_avr/blocks/control.js index ea27e942..726eee02 100644 --- a/boards/default_src/arduino_avr/blocks/control.js +++ b/boards/default_src/arduino_avr/blocks/control.js @@ -11,19 +11,15 @@ export const base_setup = { this.setHelpUrl( "https://mixly.readthedocs.io/zh_CN/latest/arduino/03.Control.html#id2" ); - }, + } }; export const controls_delay = { init: function () { - var UNIT = [ - [Blockly.Msg.MIXLY_MILLIS, "delay"], - [Blockly.Msg.MIXLY_MILLISECOND, "delayMicroseconds"], - ]; this.setColour(LOOPS_HUE); this.appendValueInput("DELAY_TIME", Number) .appendField(Blockly.Msg.MIXLY_DELAY) - .appendField(new Blockly.FieldDropdown(UNIT), "UNIT") + .appendField(new Blockly.FieldDropdown(this.UNIT), "UNIT") .setCheck(Number); this.setPreviousStatement(true, null); this.setNextStatement(true, null); @@ -33,6 +29,10 @@ export const controls_delay = { "https://mixly.readthedocs.io/zh_CN/latest/arduino/03.Control.html#id9" ); }, + UNIT: [ + [Blockly.Msg.MIXLY_MILLIS, "delay"], + [Blockly.Msg.MIXLY_MILLISECOND, "delayMicroseconds"], + ] }; export const controls_for = { @@ -75,7 +75,7 @@ export const controls_for = { if (Blockly.Names.equals(oldName, this.getFieldValue("VAR"))) { this.setTitleValue(newName, "VAR"); } - }, + } }; export const controls_whileUntil = { @@ -101,13 +101,12 @@ export const controls_whileUntil = { return TOOLTIPS[op]; }); }, + OPERATORS: [ + [Blockly.Msg.LANG_CONTROLS_WHILEUNTIL_OPERATOR_WHILE, "WHILE"], + [Blockly.Msg.LANG_CONTROLS_WHILEUNTIL_OPERATOR_UNTIL, "UNTIL"] + ] }; -controls_whileUntil.OPERATORS = [ - [Blockly.Msg.LANG_CONTROLS_WHILEUNTIL_OPERATOR_WHILE, "WHILE"], - [Blockly.Msg.LANG_CONTROLS_WHILEUNTIL_OPERATOR_UNTIL, "UNTIL"], -]; - export const controls_flow_statements = { init: function () { this.setColour(LOOPS_HUE); @@ -155,26 +154,25 @@ export const controls_flow_statements = { this.setWarningText(Blockly.Msg.LANG_CONTROLS_FLOW_STATEMENTS_WARNING); } }, + OPERATORS: [ + [Blockly.Msg.LANG_CONTROLS_FLOW_STATEMENTS_OPERATOR_BREAK, "BREAK"], + [Blockly.Msg.LANG_CONTROLS_FLOW_STATEMENTS_OPERATOR_CONTINUE, "CONTINUE"], + ] }; -controls_flow_statements.OPERATORS = [ - [Blockly.Msg.LANG_CONTROLS_FLOW_STATEMENTS_OPERATOR_BREAK, "BREAK"], - [Blockly.Msg.LANG_CONTROLS_FLOW_STATEMENTS_OPERATOR_CONTINUE, "CONTINUE"], -]; - export const controls_millis = { init: function () { - var UNIT = [ - [Blockly.Msg.MIXLY_MILLIS, "millis"], - [Blockly.Msg.MIXLY_MILLISECOND, "micros"], - ]; this.setColour(LOOPS_HUE); this.appendDummyInput() .appendField(Blockly.Msg.MIXLY_RUNTIME) - .appendField(new Blockly.FieldDropdown(UNIT), "UNIT"); + .appendField(new Blockly.FieldDropdown(this.UNIT), "UNIT"); this.setOutput(true, Number); this.setTooltip(Blockly.Msg.MIXLY_TOOLTIP_CONTROL_MILLIS); }, + UNIT: [ + [Blockly.Msg.MIXLY_MILLIS, "millis"], + [Blockly.Msg.MIXLY_MILLISECOND, "micros"], + ] }; export const controls_if = { @@ -477,7 +475,7 @@ export const controls_if = { statementConnections[i].reconnect(this, "DO" + i); } elseStatementConnection && elseStatementConnection.reconnect(this, "ELSE"); - }, + } }; export const controls_if_if = { @@ -491,7 +489,7 @@ export const controls_if_if = { this.appendStatementInput("STACK"); this.setTooltip(Blockly.Msg.CONTROLS_IF_IF_TOOLTIP); this.contextMenu = false; - }, + } }; export const controls_if_elseif = { @@ -508,7 +506,7 @@ export const controls_if_elseif = { this.setNextStatement(true); this.setTooltip(Blockly.Msg.CONTROLS_IF_ELSEIF_TOOLTIP); this.contextMenu = false; - }, + } }; export const controls_if_else = { @@ -524,7 +522,7 @@ export const controls_if_else = { this.setPreviousStatement(true); this.setTooltip(Blockly.Msg.CONTROLS_IF_ELSE_TOOLTIP); this.contextMenu = false; - }, + } }; export const controls_switch_case = { @@ -687,7 +685,7 @@ export const controls_switch_case = { clauseBlock = clauseBlock.nextConnection && clauseBlock.nextConnection.targetBlock(); } - }, + } }; export const controls_switch = { @@ -700,7 +698,7 @@ export const controls_switch = { this.appendDummyInput().appendField("switch"); this.appendStatementInput("STACK"); this.contextMenu = false; - }, + } }; export const controls_case = { @@ -714,7 +712,7 @@ export const controls_case = { this.setPreviousStatement(true); this.setNextStatement(true); this.contextMenu = false; - }, + } }; export const controls_default = { @@ -727,7 +725,7 @@ export const controls_default = { this.appendDummyInput().appendField("default"); this.setPreviousStatement(true); this.contextMenu = false; - }, + } }; export const controls_mstimer2 = { @@ -738,14 +736,15 @@ export const controls_mstimer2 = { .setAlign(Blockly.inputs.Align.RIGHT) .appendField("MsTimer2" + Blockly.Msg.MIXLY_MSTIMER2_EVERY); this.appendDummyInput().appendField("ms"); - this.appendStatementInput("DO").appendField(Blockly.Msg.MIXLY_MSTIMER2_DO); + this.appendStatementInput("DO") + .appendField(Blockly.Msg.MIXLY_MSTIMER2_DO); this.setPreviousStatement(true); this.setNextStatement(true); this.setTooltip(Blockly.Msg.MIXLY_TOOLTIP_CONTROL_MSTIMER2); this.setHelpUrl( "https://mixly.readthedocs.io/zh_CN/latest/arduino/03.Control.html#MsTimer2" ); - }, + } }; export const controls_mstimer2_start = { @@ -760,7 +759,7 @@ export const controls_mstimer2_start = { "https://mixly.readthedocs.io/zh_CN/latest/arduino/03.Control.html#id45" ); this.setTooltip(Blockly.Msg.MIXLY_TOOLTIP_CONTROL_MSTIMER2_START); - }, + } }; export const controls_mstimer2_stop = { @@ -775,52 +774,56 @@ export const controls_mstimer2_stop = { this.setHelpUrl( "https://mixly.readthedocs.io/zh_CN/latest/arduino/03.Control.html#id48" ); - }, + } }; export const controls_end_program = { init: function () { this.setColour(LOOPS_HUE); - this.appendDummyInput().appendField(Blockly.Msg.MIXLY_CONTROL_END_PROGRAM); + this.appendDummyInput() + .appendField(Blockly.Msg.MIXLY_CONTROL_END_PROGRAM); this.setPreviousStatement(true); this.setNextStatement(true); this.setTooltip(Blockly.Msg.MIXLY_TOOLTIP_CONTROL_END_PROGRAM); - }, + } }; export const controls_soft_reset = { init: function () { this.setColour(LOOPS_HUE); - this.appendDummyInput().appendField(Blockly.Msg.SOFT_RESET); + this.appendDummyInput() + .appendField(Blockly.Msg.SOFT_RESET); this.setPreviousStatement(true); this.setNextStatement(true); this.setTooltip(Blockly.Msg.MIXLY_TOOLTIP_CONTROL_END_PROGRAM); - }, + } }; export const controls_interrupts = { init: function () { this.setColour(LOOPS_HUE); - this.appendDummyInput().appendField(Blockly.Msg.MIXLY_CONTROL_INTERRUPTS); + this.appendDummyInput() + .appendField(Blockly.Msg.MIXLY_CONTROL_INTERRUPTS); this.setPreviousStatement(true); this.setNextStatement(true); this.setTooltip(Blockly.Msg.MIXLY_TOOLTIP_CONTROL_ALLOW_INTERRUPT); this.setHelpUrl( "https://mixly.readthedocs.io/zh_CN/latest/arduino/03.Control.html#id51" ); - }, + } }; export const controls_nointerrupts = { init: function () { this.setColour(LOOPS_HUE); - this.appendDummyInput().appendField(Blockly.Msg.MIXLY_CONTROL_NOINTERRUPTS); + this.appendDummyInput() + .appendField(Blockly.Msg.MIXLY_CONTROL_NOINTERRUPTS); this.setPreviousStatement(true); this.setNextStatement(true); this.setTooltip(Blockly.Msg.MIXLY_CONTROL_NOINTERRUPTS); this.setHelpUrl( "https://mixly.readthedocs.io/zh_CN/latest/arduino/03.Control.html#id55" ); - }, + } }; export const base_delay = controls_delay; @@ -829,30 +832,12 @@ export const simple_timer = { init: function () { this.appendDummyInput() .appendField(Blockly.Msg.MIXLY_SIMPLE_TIMER) - .appendField( - new Blockly.FieldDropdown([ - ["1", "1"], - ["2", "2"], - ["3", "3"], - ["4", "4"], - ["5", "5"], - ["6", "6"], - ["7", "7"], - ["8", "8"], - ["9", "9"], - ["10", "10"], - ["11", "11"], - ["12", "12"], - ["13", "13"], - ["14", "14"], - ["15", "15"], - ["16", "16"], - ]), - "NO" - ) + .appendField(new Blockly.FieldDropdown(this.NUMBER), "NO") .appendField(Blockly.Msg.MIXLY_MICROBIT_JS_MONITOR_SCROLL_INTERVAL); - this.appendValueInput("timein").setCheck(null); - this.appendDummyInput().appendField(Blockly.Msg.MIXLY_mSecond); + this.appendValueInput("timein") + .setCheck(null); + this.appendDummyInput() + .appendField(Blockly.Msg.MIXLY_mSecond); this.appendStatementInput("zxhs") .setCheck(null) .appendField(Blockly.Msg.CONTROLS_REPEAT_INPUT_DO); @@ -860,7 +845,26 @@ export const simple_timer = { this.setTooltip(); this.setHelpUrl(""); }, + NUMBER: [ + ["1", "1"], + ["2", "2"], + ["3", "3"], + ["4", "4"], + ["5", "5"], + ["6", "6"], + ["7", "7"], + ["8", "8"], + ["9", "9"], + ["10", "10"], + ["11", "11"], + ["12", "12"], + ["13", "13"], + ["14", "14"], + ["15", "15"], + ["16", "16"], + ] }; + //do-while循环 export const do_while = { init: function () { @@ -890,32 +894,31 @@ export const super_delay_function1 = { init: function () { this.appendDummyInput() .appendField(Blockly.Msg.super_delay_function) - .appendField( - new Blockly.FieldDropdown([ - ["1", "1"], - ["2", "2"], - ["3", "3"], - ["4", "4"], - ["5", "5"], - ["6", "6"], - ["7", "7"], - ["8", "8"], - ["9", "9"], - ["10", "10"], - ["11", "11"], - ["12", "12"], - ["13", "13"], - ["14", "14"], - ["15", "15"], - ["16", "16"], - ]), - "number" - ); - this.appendStatementInput("delay_function").setCheck(null); + .appendField(new Blockly.FieldDropdown(this.NUMBER), "number"); + this.appendStatementInput("delay_function") + .setCheck(null); this.setColour(120); this.setTooltip(Blockly.Msg.super_delay_function_help); this.setHelpUrl(""); }, + NUMBER: [ + ["1", "1"], + ["2", "2"], + ["3", "3"], + ["4", "4"], + ["5", "5"], + ["6", "6"], + ["7", "7"], + ["8", "8"], + ["9", "9"], + ["10", "10"], + ["11", "11"], + ["12", "12"], + ["13", "13"], + ["14", "14"], + ["15", "15"], + ["16", "16"], + ] }; //执行超级延时函数 @@ -923,27 +926,7 @@ export const execute_super_delay_function1 = { init: function () { this.appendDummyInput() .appendField(Blockly.Msg.execute_super_delay_function) - .appendField( - new Blockly.FieldDropdown([ - ["1", "1"], - ["2", "2"], - ["3", "3"], - ["4", "4"], - ["5", "5"], - ["6", "6"], - ["7", "7"], - ["8", "8"], - ["9", "9"], - ["10", "10"], - ["11", "11"], - ["12", "12"], - ["13", "13"], - ["14", "14"], - ["15", "15"], - ["16", "16"], - ]), - "number" - ); + .appendField(new Blockly.FieldDropdown(this.NUMBER), "number"); this.appendValueInput("time_interval") .setCheck(null) .appendField(Blockly.Msg.time_interval); @@ -957,4 +940,22 @@ export const execute_super_delay_function1 = { this.setTooltip(Blockly.Msg.execute_super_delay_function_help); this.setHelpUrl(""); }, -}; + NUMBER: [ + ["1", "1"], + ["2", "2"], + ["3", "3"], + ["4", "4"], + ["5", "5"], + ["6", "6"], + ["7", "7"], + ["8", "8"], + ["9", "9"], + ["10", "10"], + ["11", "11"], + ["12", "12"], + ["13", "13"], + ["14", "14"], + ["15", "15"], + ["16", "16"], + ] +}; \ No newline at end of file diff --git a/boards/default_src/arduino_avr/blocks/display.js b/boards/default_src/arduino_avr/blocks/display.js index 8ea7f936..2928a3ac 100644 --- a/boards/default_src/arduino_avr/blocks/display.js +++ b/boards/default_src/arduino_avr/blocks/display.js @@ -12,7 +12,7 @@ const { layer } = layui; const DISPLAY_HUE = 180; -var DRAWFIll = [ +const DRAWFIll = [ [Blockly.Msg.OLED_HOLLOW, "draw"], [Blockly.Msg.OLED_SOLID, "fill"] ]; @@ -133,7 +133,17 @@ export const group_lcd_power = { this.appendDummyInput() .appendField(Blockly.Msg.MIXLY_DF_LCD) .appendField(new Blockly.FieldTextInput('mylcd'), 'VAR') - .appendField(new Blockly.FieldDropdown([[Blockly.Msg.MIXLY_ON, "display"], [Blockly.Msg.MIXLY_OFF, "noDisplay"], [Blockly.Msg.MIXLY_LCD_STAT_CURSOR, "cursor"], [Blockly.Msg.MIXLY_LCD_STAT_NOCURSOR, "noCursor"], [Blockly.Msg.MIXLY_LCD_STAT_BLINK, "blink"], [Blockly.Msg.MIXLY_LCD_STAT_NOBLINK, "noBlink"], [Blockly.Msg.MIXLY_LCD_STAT_CLEAR, "clear"], [Blockly.Msg.MIXLY_LCD_NOBACKLIGHT, "noBacklight"], [Blockly.Msg.MIXLY_LCD_BACKLIGHT, "backlight"]]), "STAT"); + .appendField(new Blockly.FieldDropdown([ + [Blockly.Msg.MIXLY_ON, "display"], + [Blockly.Msg.MIXLY_OFF, "noDisplay"], + [Blockly.Msg.MIXLY_LCD_STAT_CURSOR, "cursor"], + [Blockly.Msg.MIXLY_LCD_STAT_NOCURSOR, "noCursor"], + [Blockly.Msg.MIXLY_LCD_STAT_BLINK, "blink"], + [Blockly.Msg.MIXLY_LCD_STAT_NOBLINK, "noBlink"], + [Blockly.Msg.MIXLY_LCD_STAT_CLEAR, "clear"], + [Blockly.Msg.MIXLY_LCD_NOBACKLIGHT, "noBacklight"], + [Blockly.Msg.MIXLY_LCD_BACKLIGHT, "backlight"] + ]), "STAT"); this.setInputsInline(true); this.setPreviousStatement(true, null); this.setNextStatement(true, null); @@ -147,7 +157,11 @@ export const display_4digitdisplay_power = { this.setColour(DISPLAY_HUE); this.appendDummyInput() .appendField(Blockly.Msg.MIXLY_4DIGITDISPLAY + "_TM1650") - .appendField(new Blockly.FieldDropdown([[Blockly.Msg.MIXLY_ON, "displayOn"], [Blockly.Msg.MIXLY_OFF, "displayOff"], [Blockly.Msg.MIXLY_LCD_STAT_CLEAR, "clear"]]), "STAT"); + .appendField(new Blockly.FieldDropdown([ + [Blockly.Msg.MIXLY_ON, "displayOn"], + [Blockly.Msg.MIXLY_OFF, "displayOff"], + [Blockly.Msg.MIXLY_LCD_STAT_CLEAR, "clear"] + ]), "STAT"); this.setInputsInline(true); this.setPreviousStatement(true, null); this.setNextStatement(true, null); @@ -179,7 +193,10 @@ export const display_4digitdisplay_showDot = { .appendField(new Blockly.FieldDropdown([["1", "0"], ["2", "1"], ["3", "2"], ["4", "3"]]), "NO") .appendField(Blockly.Msg.MIXLY_4DIGITDISPLAY_NOMBER2) .appendField(Blockly.Msg.MIXLY_4DIGITDISPLAY_DOT) - .appendField(new Blockly.FieldDropdown([[Blockly.Msg.MIXLY_4DIGITDISPLAY_ON, "true"], [Blockly.Msg.MIXLY_4DIGITDISPLAY_OFF, "false"]]), "STAT"); + .appendField(new Blockly.FieldDropdown([ + [Blockly.Msg.MIXLY_4DIGITDISPLAY_ON, "true"], + [Blockly.Msg.MIXLY_4DIGITDISPLAY_OFF, "false"] + ]), "STAT"); this.setInputsInline(true); this.setPreviousStatement(true, null); this.setNextStatement(true, null); @@ -243,9 +260,12 @@ export const display_TM1637_displayTime = { this.appendDummyInput("") .appendField(Blockly.Msg.MIXLY_MINUTE); // .appendField(new Blockly.FieldDropdown([[Blockly.Msg.MIXLY_ON, "displayOn"], [Blockly.Msg.MIXLY_OFF, "displayOff"], [Blockly.Msg.MIXLY_LCD_STAT_CLEAR, "clear"]]), "STAT"); - this.appendDummyInput("").appendField(Blockly.Msg.MIXLY_DISPLAY_TM1637_Time_Point).appendField(new Blockly.FieldDropdown([[Blockly.Msg.MIXLY_ON, "true"], [Blockly.Msg.MIXLY_OFF, "false"]]), "STAT"); - - + this.appendDummyInput("") + .appendField(Blockly.Msg.MIXLY_DISPLAY_TM1637_Time_Point) + .appendField(new Blockly.FieldDropdown([ + [Blockly.Msg.MIXLY_ON, "true"], + [Blockly.Msg.MIXLY_OFF, "false"] + ]), "STAT"); this.setInputsInline(true); this.setPreviousStatement(true, null); this.setNextStatement(true, null); @@ -277,7 +297,12 @@ export const display_TM1637_clearDisplay = { this.appendDummyInput() .appendField(Blockly.Msg.MIXLY_4DIGITDISPLAY + "TM1637") .appendField(new Blockly.FieldTextInput("display"), "NAME") - .appendField(new Blockly.FieldDropdown([[Blockly.Msg.MIXLY_LCD_STAT_CLEAR, "clear"], [Blockly.Msg.MIXLY_LCD_STAT_BLINK, "blink"], [Blockly.Msg.MIXLY_ON, "on"], [Blockly.Msg.MIXLY_OFF, "off"],]), "STAT"); + .appendField(new Blockly.FieldDropdown([ + [Blockly.Msg.MIXLY_LCD_STAT_CLEAR, "clear"], + [Blockly.Msg.MIXLY_LCD_STAT_BLINK, "blink"], + [Blockly.Msg.MIXLY_ON, "on"], + [Blockly.Msg.MIXLY_OFF, "off"] + ]), "STAT"); this.setPreviousStatement(true, null); this.setNextStatement(true, null); this.setTooltip(Blockly.Msg.MIXLY_4DIGITDISPLAY_TM1637_CLEARDISPLAY); @@ -349,7 +374,8 @@ export const MAX7219_init = { this.setHelpUrl(''); } }; -var MATRIX_TYPES = [['MAX7219', 'MAX7219'], ['HT16K33', 'HT16K33']]; + +const MATRIX_TYPES = [['MAX7219', 'MAX7219'], ['HT16K33', 'HT16K33']]; //点阵屏显示点 export const display_Matrix_DrawPixel = { @@ -386,7 +412,7 @@ export const display_Matrix_DrawPixel = { //点阵屏 旋转变量 -var display_Rotation_NUM = [ +const display_Rotation_NUM = [ [Blockly.Msg.MIXLY_0DEGREE, "0"], [Blockly.Msg.MIXLY_90DEGREE, "3"], [Blockly.Msg.MIXLY_180DEGREE, "2"], @@ -417,6 +443,7 @@ export const display_Max7219_Rotation = { this.setTooltip(Blockly.Msg.MIXLY_TOOPTIP_Matrix_HK16T33_ROTATION); } }; + //点阵屏旋转 export const display_Max7219_setPosition = { init: function () { @@ -445,6 +472,7 @@ export const display_Max7219_setPosition = { this.setTooltip(Blockly.Msg.MIXLY_TOOPTIP_Matrix_HK16T33_ROTATION); } }; + //点阵屏旋转 export const display_HT16K33_Rotation = { init: function () { @@ -705,7 +733,6 @@ export const display_Matrix_fillScreen = { } }; - //点阵屏预设图案 export const Matrix_img = { init: function () { @@ -772,64 +799,71 @@ export const display_Matrix_write = { } }; - //OLED -based on U8G2 //显示-OLED-变量 - -var LINESELECT = [ +const LINESELECT = [ [Blockly.Msg.OLED_HOR, "H"], [Blockly.Msg.OLED_VER, "V"] ]; -var FRAMESELECT = [ + +const FRAMESELECT = [ [Blockly.Msg.OLED_HOLLOW, "drawFrame"], [Blockly.Msg.OLED_SOLID, "drawBox"] ]; -var CIRCLESELECT = [ + +const CIRCLESELECT = [ [Blockly.Msg.OLED_HOLLOW, "drawCircle"], [Blockly.Msg.OLED_SOLID, "drawDisc"] ]; -// -var RADSELECT = [ + +const RADSELECT = [ [Blockly.Msg.OLED_HOLLOW, "drawRFrame"], [Blockly.Msg.OLED_SOLID, "drawRBox"] ]; + //圆选择 -var CIRCLEOPTELECT = [ +const CIRCLEOPTELECT = [ [Blockly.Msg.OLED_WHOLE_CICILE, "U8G2_DRAW_ALL"], [Blockly.Msg.OLED_UP_R, "U8G2_DRAW_UPPER_RIGHT"], [Blockly.Msg.OLED_UP_L, "U8G2_DRAW_UPPER_LEFT"], [Blockly.Msg.OLED_LOW_R, "U8G2_DRAW_LOWER_RIGHT"], [Blockly.Msg.OLED_LOW_L, "U8G2_DRAW_LOWER_LEFT"] ]; + //空心、实心椭圆 -var ELLIPSESELECT = [ +const ELLIPSESELECT = [ [Blockly.Msg.OLED_HOLLOW, "drawEllipse"], [Blockly.Msg.OLED_SOLID, "drawFilledEllipse"] ]; -var EN_FONT_NAME = [ + +const EN_FONT_NAME = [ ["Times New Roman", "tim"], ["Helvetica", "helv"], ["ncen", "ncen"], ["courier new", "cour"] ]; -var OLED_TYPE = [ + +const OLED_TYPE = [ ["SSD1306(128×64)", "SSD1306_128X64_NONAME"], ["SSD1306(128×32)", "SSD1306_128X32_UNIVISION"], ["SH1106(128×64)", "SH1106_128X64_NONAME"] ]; -var U8G2_TYPE_SSD1306_NOKIA5110 = [ + +const U8G2_TYPE_SSD1306_NOKIA5110 = [ ["SSD1306(128×64)", "SSD1306_128X64_NONAME"], ["LCM12864", "ST7565_NHD_C12864"], ["NOKIA5110", "PCD8544_84X48"] ]; -var ROTATION_TYPE = [ + +const ROTATION_TYPE = [ [Blockly.Msg.MIXLY_DISPLAY_MATRIX_ROTATE + " 0°", "U8G2_R0"], [Blockly.Msg.MIXLY_DISPLAY_MATRIX_ROTATE + " 90°", "U8G2_R1"], [Blockly.Msg.MIXLY_DISPLAY_MATRIX_ROTATE + " 180°", "U8G2_R2"], [Blockly.Msg.MIXLY_DISPLAY_MATRIX_ROTATE + " 270°", "U8G2_R3"], [Blockly.Msg.MIRROR, "U8G2_MIRROR"] ]; -var EN_FONT_SIZE = [ + +const EN_FONT_SIZE = [ ["08", "08"], ["10", "10"], ["12", "12"], @@ -837,11 +871,13 @@ var EN_FONT_SIZE = [ ["18", "18"], ["24", "24"], ]; -var EN_FONT_STYLE = [ + +const EN_FONT_STYLE = [ ["常规", "R"], ["加粗", "B"] ]; -var CN_FONT_NAME = [ + +const CN_FONT_NAME = [ [Blockly.Msg.OLED_FONT_chinese1, "_t_chinese1"], [Blockly.Msg.OLED_FONT_chinese2, "_t_chinese2"], [Blockly.Msg.OLED_FONT_chinese3, "_t_chinese3"], @@ -850,7 +886,7 @@ var CN_FONT_NAME = [ [Blockly.Msg.OLED_FONT_gb2312, "_t_gb2312"], ]; -var CN_FONT_SIZE = [ +const CN_FONT_SIZE = [ ["12", "wqy12"], ["13", "wqy13"], ["14", "wqy14"], @@ -858,7 +894,7 @@ var CN_FONT_SIZE = [ ["16", "wqy16"], ]; -var ICON_IMAGE = [ +const ICON_IMAGE = [ [{ 'src': require('../media/oled_icons/64.png'), 'width': 24, 'height': 24, 'alt': '64' }, '64'], [{ 'src': require('../media/oled_icons/65.png'), 'width': 24, 'height': 24, 'alt': '65' }, '65'], [{ 'src': require('../media/oled_icons/66.png'), 'width': 24, 'height': 24, 'alt': '66' }, '66'], @@ -1084,7 +1120,7 @@ var ICON_IMAGE = [ [{ 'src': require('../media/oled_icons/286.png'), 'width': 24, 'height': 24, 'alt': '286' }, '286'] ]; -var FACE_IMAGE = [ +const FACE_IMAGE = [ [{ 'src': require('../media/oled_icons/face/Eyes/Angry.png'), 'width': 35, 'height': 25, 'alt': 'Angry' }, 'Angry,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xF8,0xFF,0xFF,0x00,0x00,0x00,0xFC,0xFF,0x3F,0x00,0x00,0x00,0xFE,0xFF,0xFF,0x03,0x00,0x80,0xFF,0xFF,0xFF,0x01,0x00,0x80,0xFF,0xFF,0xFF,0x0F,0x00,0xC0,0xFF,0xFF,0xFF,0x03,0x00,0xC0,0x07,0x00,0x00,0x1F,0x00,0xE0,0x03,0x00,0xC0,0x07,0x00,0xE0,0x01,0x00,0x00,0x3C,0x00,0xF0,0x00,0x00,0x00,0x0F,0x00,0xE0,0x00,0x00,0x00,0x38,0x00,0x78,0x00,0x00,0x00,0x1E,0x00,0x70,0x00,0x00,0x00,0x70,0x00,0x38,0x00,0x00,0x00,0x1C,0x00,0x70,0x00,0x00,0x00,0x70,0x00,0x1C,0x00,0x00,0x00,0x38,0x00,0x38,0x00,0x00,0x00,0xE0,0x00,0x1C,0x00,0x00,0x00,0x38,0x00,0x38,0x00,0x00,0x00,0xE0,0x00,0x1C,0x00,0x00,0x00,0x38,0x00,0x38,0x00,0x00,0x00,0xE0,0x00,0x0C,0x00,0x00,0x00,0x30,0x00,0x38,0x00,0x00,0x00,0xE0,0x00,0x0C,0x00,0x00,0x00,0x30,0x00,0x38,0x00,0x00,0x00,0xE0,0x00,0x0C,0x00,0x00,0x00,0x30,0x00,0x38,0x00,0x00,0x00,0xE0,0x00,0x0C,0x00,0x00,0x00,0x30,0x00,0x38,0x00,0x00,0x00,0xE0,0x00,0x0C,0x00,0x00,0x00,0x30,0x00,0x38,0x00,0x00,0x00,0xE0,0x00,0x0C,0x00,0x00,0x00,0x30,0x00,0x38,0x00,0x00,0x00,0xE0,0x00,0x0C,0x00,0x00,0x00,0x30,0x00,0x38,0x00,0x00,0x00,0xE0,0x00,0x0C,0x00,0x00,0x00,0x30,0x00,0x78,0x00,0x00,0x00,0xE0,0x00,0x0C,0x00,0x00,0x00,0x30,0x00,0xF8,0x01,0x00,0x00,0xE0,0x00,0x0C,0x00,0x00,0x00,0x30,0x00,0xF8,0x07,0x00,0x00,0xE0,0x00,0x0C,0x00,0x00,0x00,0x38,0x00,0xB8,0x1F,0x00,0x00,0xE0,0x00,0x0C,0x00,0x00,0x00,0x3E,0x00,0x38,0x7F,0x00,0x00,0xE0,0x00,0x0C,0x00,0x00,0x80,0x3F,0x00,0x38,0xFC,0x01,0x00,0xE0,0x00,0x0C,0x00,0x00,0xE0,0x3F,0x00,0x38,0xF0,0x07,0x00,0xE0,0x00,0x0C,0x00,0x00,0xF8,0x31,0x00,0x38,0xC0,0x1F,0x00,0xE0,0x00,0x0C,0x00,0x00,0x7E,0x30,0x00,0x38,0x00,0x7F,0x00,0xE0,0x00,0x0C,0x00,0x80,0x1F,0x30,0x00,0x38,0x00,0xFC,0x01,0xE0,0x00,0x0C,0x00,0xE0,0x07,0x30,0x00,0x38,0x00,0xF0,0x07,0xE0,0x00,0x0C,0x00,0xF8,0x01,0x30,0x00,0x38,0x00,0xE0,0x1F,0xE0,0x00,0x0C,0x00,0xFE,0x00,0x30,0x00,0x38,0x00,0xF0,0x7F,0xE0,0x00,0x0C,0x80,0x3F,0x00,0x30,0x00,0x38,0x00,0xF8,0xFF,0xE1,0x00,0x0C,0xE0,0x6F,0x01,0x30,0x00,0x38,0x00,0xFC,0xF9,0xE7,0x00,0x0C,0xF8,0x4F,0x00,0x30,0x00,0x38,0x00,0xFD,0xDD,0xFF,0x00,0x0C,0xFE,0xF7,0x00,0x30,0x00,0x38,0x00,0xFE,0x3F,0xFF,0x00,0x8C,0xFF,0xFF,0x02,0x30,0x00,0x38,0x00,0xFE,0x3F,0xFC,0x00,0xFC,0xFF,0xFF,0x00,0x30,0x00,0x38,0x00,0xFE,0x3F,0xF0,0x00,0xFC,0xF5,0xFF,0x02,0x30,0x00,0x38,0x00,0xFC,0x1F,0xE0,0x00,0x7C,0xF0,0xFF,0x00,0x30,0x00,0x38,0x00,0xFD,0x5F,0xE0,0x00,0x1C,0xE0,0x7F,0x00,0x38,0x00,0x70,0x00,0xF8,0x0F,0x70,0x00,0x1C,0xE8,0x7F,0x01,0x38,0x00,0x70,0x00,0xF0,0x07,0x70,0x00,0x3C,0xC0,0x3F,0x00,0x3C,0x00,0xF0,0x00,0xC0,0x01,0x78,0x00,0x38,0x20,0x4F,0x00,0x1C,0x00,0xE0,0x01,0x20,0x04,0x3C,0x00,0x78,0x80,0x10,0x00,0x1E,0x00,0xC0,0x03,0x00,0x00,0x1E,0x00,0xF0,0x01,0x00,0x80,0x0F,0x00,0x80,0x1F,0x00,0xC0,0x0F,0x00,0xE0,0x07,0x00,0xE0,0x07,0x00,0x00,0xFF,0xFF,0xFF,0x07,0x00,0xC0,0xFF,0xFF,0xFF,0x03,0x00,0x00,0xFC,0xFF,0xFF,0x01,0x00,0x00,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00'], [{ 'src': require('../media/oled_icons/face/Eyes/Awake.png'), 'width': 35, 'height': 25, 'alt': 'Awake' }, 'Awake,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xF8,0xFF,0xFF,0x00,0x00,0x00,0xFC,0xFF,0x3F,0x00,0x00,0x00,0xFE,0xFF,0xFF,0x03,0x00,0x80,0xFF,0xFF,0xFF,0x01,0x00,0x80,0xFF,0xFF,0xFF,0x0F,0x00,0xC0,0xFF,0xFF,0xFF,0x03,0x00,0xC0,0x07,0x00,0x00,0x1F,0x00,0xE0,0x03,0x00,0xC0,0x07,0x00,0xE0,0x01,0x00,0x00,0x3C,0x00,0xF0,0x00,0x00,0x00,0x0F,0x00,0xE0,0x00,0x00,0x00,0x38,0x00,0x78,0x00,0x00,0x00,0x1E,0x00,0x70,0x00,0x00,0x00,0x70,0x00,0x38,0x00,0x00,0x00,0x1C,0x00,0x70,0x00,0x00,0x00,0x70,0x00,0x1C,0x00,0x00,0x00,0x38,0x00,0x38,0x00,0x00,0x00,0xE0,0x00,0x1C,0x00,0x00,0x00,0x38,0x00,0x38,0x00,0x00,0x00,0xE0,0x00,0x1C,0x00,0x00,0x00,0x38,0x00,0x38,0x00,0x00,0x00,0xE0,0x00,0x0C,0x00,0x00,0x00,0x30,0x00,0x38,0x00,0x00,0x00,0xE0,0x00,0x0C,0x00,0x00,0x00,0x30,0x00,0x38,0x00,0x00,0x00,0xE0,0x00,0x0C,0x00,0x00,0x00,0x30,0x00,0x38,0x00,0x00,0x00,0xE0,0x00,0x0C,0x00,0x00,0x00,0x30,0x00,0x38,0x00,0x00,0x00,0xE0,0x00,0x0C,0x00,0x00,0x00,0x30,0x00,0xF8,0x00,0x00,0x00,0xE0,0x00,0x0C,0x00,0x00,0x00,0x3E,0x00,0xF8,0x1F,0x00,0x00,0xE0,0x00,0x0C,0x00,0x00,0xE0,0x3F,0x00,0xF8,0xFF,0x03,0x00,0xE0,0x00,0x0C,0x00,0x80,0xFF,0x3F,0x00,0x38,0xF8,0xFF,0x00,0xE0,0x00,0x0C,0x00,0xFC,0x7F,0x30,0x00,0x38,0x00,0xFF,0x0F,0xE0,0x00,0x0C,0xE0,0xFF,0x03,0x30,0x00,0x38,0x00,0xFC,0xFF,0xE1,0x00,0x0C,0xFE,0x7F,0x00,0x30,0x00,0x38,0x80,0xFE,0xFF,0xFF,0x00,0xFC,0xFF,0xFF,0x00,0x30,0x00,0x38,0x00,0x7E,0x96,0xFF,0x00,0xFC,0x87,0xBF,0x05,0x30,0x00,0x38,0x40,0x7F,0x16,0xF0,0x00,0x3C,0xC0,0x9F,0x03,0x30,0x00,0x38,0x80,0xFF,0x0F,0xE0,0x00,0x0C,0xC0,0xFF,0x03,0x30,0x00,0x38,0x80,0xFF,0x0F,0xE0,0x00,0x0C,0xD0,0xFF,0x0B,0x30,0x00,0x38,0x80,0xFF,0x0F,0xE0,0x00,0x0C,0xC0,0xFF,0x03,0x30,0x00,0x38,0x80,0xFF,0x0F,0xE0,0x00,0x0C,0xD0,0xFF,0x0B,0x30,0x00,0x38,0x40,0xFF,0x17,0xE0,0x00,0x0C,0xC0,0xFF,0x03,0x30,0x00,0x38,0x00,0xFF,0x03,0xE0,0x00,0x0C,0xA0,0xFF,0x05,0x30,0x00,0x38,0x80,0xFE,0x0B,0xE0,0x00,0x0C,0x00,0xFF,0x00,0x30,0x00,0x38,0x00,0xF8,0x00,0xE0,0x00,0x0C,0x00,0x7E,0x00,0x30,0x00,0x38,0x00,0x02,0x02,0xE0,0x00,0x0C,0x00,0x81,0x00,0x30,0x00,0x38,0x00,0x50,0x00,0xE0,0x00,0x0C,0x00,0x14,0x00,0x30,0x00,0x38,0x00,0x00,0x00,0xE0,0x00,0x0C,0x00,0x00,0x00,0x30,0x00,0x38,0x00,0x00,0x00,0xE0,0x00,0x0C,0x00,0x00,0x00,0x30,0x00,0x38,0x00,0x00,0x00,0xE0,0x00,0x0C,0x00,0x00,0x00,0x30,0x00,0x38,0x00,0x00,0x00,0xE0,0x00,0x0C,0x00,0x00,0x00,0x30,0x00,0x38,0x00,0x00,0x00,0xE0,0x00,0x1C,0x00,0x00,0x00,0x38,0x00,0x70,0x00,0x00,0x00,0x70,0x00,0x1C,0x00,0x00,0x00,0x38,0x00,0x70,0x00,0x00,0x00,0x70,0x00,0x3C,0x00,0x00,0x00,0x3C,0x00,0xF0,0x00,0x00,0x00,0x78,0x00,0x38,0x00,0x00,0x00,0x1C,0x00,0xE0,0x01,0x00,0x00,0x3C,0x00,0x78,0x00,0x00,0x00,0x1E,0x00,0xC0,0x03,0x00,0x00,0x1E,0x00,0xF0,0x01,0x00,0x80,0x0F,0x00,0x80,0x1F,0x00,0xC0,0x0F,0x00,0xE0,0x07,0x00,0xE0,0x07,0x00,0x00,0xFF,0xFF,0xFF,0x07,0x00,0xC0,0xFF,0xFF,0xFF,0x03,0x00,0x00,0xFC,0xFF,0xFF,0x01,0x00,0x00,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00'], [{ 'src': require('../media/oled_icons/face/Eyes/Black eye.png'), 'width': 35, 'height': 25, 'alt': 'Black_eye' }, 'Black_eye,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFC,0xFF,0x3F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0xFF,0xFF,0xFF,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xC0,0xFF,0xFF,0xFF,0x03,0x00,0x00,0xF8,0xFF,0x7F,0x00,0x00,0xE0,0x03,0x00,0xC0,0x07,0x00,0x00,0xFE,0xFF,0xFF,0x03,0x00,0xF0,0x00,0x00,0x00,0x0F,0x00,0x80,0xFF,0xFF,0xFF,0x0F,0x00,0x78,0x00,0x00,0x00,0x1E,0x00,0xC0,0x5F,0x55,0xD5,0x1F,0x00,0x38,0x00,0x00,0x00,0x1C,0x00,0xE0,0x4B,0xAA,0xA4,0x3E,0x00,0x1C,0x00,0x00,0x00,0x38,0x00,0xE0,0xB5,0x55,0x5B,0x3D,0x00,0x1C,0x00,0x00,0x00,0x38,0x00,0xF0,0x4A,0xAA,0xA4,0x7A,0x00,0x1C,0x00,0x00,0x00,0x38,0x00,0xF0,0xB6,0x55,0x5B,0x75,0x00,0x0C,0x00,0x00,0x00,0x30,0x00,0x78,0x49,0xAA,0x24,0xF5,0x00,0x0C,0x00,0x00,0x00,0x30,0x00,0xB8,0xB6,0x55,0xDB,0xEA,0x00,0x0C,0x00,0x00,0x00,0x30,0x00,0x78,0x49,0xAA,0x24,0xF5,0x00,0x0C,0x00,0x00,0x00,0x30,0x00,0xB8,0xB6,0x55,0xDB,0xEA,0x00,0x0C,0x00,0x00,0x00,0x30,0x00,0x38,0x49,0xAA,0x24,0xF5,0x00,0x0C,0x00,0x00,0x00,0x30,0x00,0xF8,0xB6,0x55,0xDB,0xEA,0x00,0x0C,0x00,0x00,0x00,0x30,0x00,0x38,0x49,0xAA,0x24,0xE9,0x00,0x0C,0x00,0x00,0x00,0x30,0x00,0xF8,0xFF,0xFF,0xFF,0xFF,0x00,0x0C,0x00,0x42,0x00,0x30,0x00,0xF8,0xFF,0xFF,0xFF,0xFF,0x00,0x0C,0x80,0x1C,0x01,0x30,0x00,0xF8,0xFF,0xFF,0xFF,0xFF,0x00,0x0C,0x00,0xFE,0x00,0x30,0x00,0x38,0x00,0xFE,0x03,0xE0,0x00,0x0C,0xA0,0xBF,0x05,0x30,0x00,0x38,0x00,0x7F,0x06,0xE0,0x00,0x0C,0x80,0x3F,0x01,0x30,0x00,0x38,0x40,0x7F,0x17,0xE0,0x00,0x0C,0xC0,0xDF,0x03,0x30,0x00,0x38,0x80,0xFF,0x0F,0xE0,0x00,0x0C,0xD0,0xFF,0x0B,0x30,0x00,0x38,0x80,0xFF,0x0F,0xE0,0x00,0x0C,0xC0,0xFF,0x03,0x30,0x00,0x38,0x80,0xFF,0x0F,0xE0,0x00,0x0C,0xD0,0xFF,0x0B,0x30,0x00,0x38,0x40,0xFF,0x17,0xE0,0x00,0x0C,0xC0,0xFF,0x03,0x30,0x00,0x38,0x00,0xFF,0x07,0xE0,0x00,0x0C,0x80,0xFF,0x01,0x30,0x00,0xF8,0xFF,0xFF,0xFF,0xFF,0x00,0x0C,0xA0,0xFF,0x05,0x30,0x00,0xF8,0xFF,0xFF,0xFF,0xFF,0x00,0x0C,0x00,0xFF,0x00,0x30,0x00,0xF8,0xFF,0xFF,0xFF,0xFF,0x00,0x0C,0x80,0x3C,0x01,0x30,0x00,0xB8,0xAA,0xAA,0xAA,0xEA,0x00,0x0C,0x00,0x42,0x00,0x30,0x00,0xB8,0x2A,0x49,0xAA,0xEA,0x00,0x0C,0x00,0x00,0x00,0x30,0x00,0x78,0xD5,0xB6,0x55,0xF5,0x00,0x0C,0x00,0x00,0x00,0x30,0x00,0xB8,0x2A,0x49,0xAA,0xEA,0x00,0x0C,0x00,0x00,0x00,0x30,0x00,0xF8,0xD2,0xB6,0x55,0xF5,0x00,0x0C,0x00,0x00,0x00,0x30,0x00,0x70,0x2D,0x49,0xAA,0x75,0x00,0x0C,0x00,0x00,0x00,0x30,0x00,0xF0,0xD2,0xB6,0x55,0x7A,0x00,0x1C,0x00,0x00,0x00,0x38,0x00,0xE0,0x2D,0x49,0xAA,0x3D,0x00,0x1C,0x00,0x00,0x00,0x38,0x00,0xE0,0xD3,0xB6,0x55,0x3E,0x00,0x3C,0x00,0x00,0x00,0x3C,0x00,0xC0,0x2F,0x49,0xD2,0x1F,0x00,0x38,0x00,0x00,0x00,0x1C,0x00,0x80,0xFF,0xFF,0xFF,0x0F,0x00,0x78,0x00,0x00,0x00,0x1E,0x00,0x00,0xFE,0xFF,0xFF,0x03,0x00,0xF0,0x01,0x00,0x80,0x0F,0x00,0x00,0xF8,0xFF,0xFF,0x00,0x00,0xE0,0x07,0x00,0xE0,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xC0,0xFF,0xFF,0xFF,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00'], @@ -1128,14 +1164,16 @@ var FACE_IMAGE = [ [{ 'src': require('../media/oled_icons/face/Expressions/Wink.png'), 'width': 35, 'height': 25, 'alt': 'Wink' }, 'Wink,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xC0,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xE0,0x0F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xC0,0x07,0x00,0xE0,0x1F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xF0,0x3F,0x00,0xF0,0x1F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xF8,0x3F,0x00,0xF0,0x1F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x10,0x00,0xF0,0x1F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xE0,0x1F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xE0,0x0F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xE0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xC0,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x02,0x00,0xC0,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1F,0x00,0xF0,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x7E,0x00,0x7E,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xF8,0xFF,0x3F,0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xE0,0xFF,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x7E,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00'], [{ 'src': require('../media/oled_icons/face/Expressions/ZZZ.png'), 'width': 35, 'height': 25, 'alt': 'ZZZ' }, 'ZZZ,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xF0,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xF0,0xFF,0x0F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xF0,0xFF,0xFF,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xF0,0xFF,0xFF,0x0E,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xF0,0xFF,0xFF,0x05,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xF0,0xFF,0xFF,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xF8,0xFF,0xFF,0x05,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xF8,0xFF,0xFF,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xE0,0xFF,0xFF,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xC0,0xFF,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xC0,0xFF,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xE0,0xFF,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xF0,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xF8,0x7F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFC,0x3F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFE,0x1F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0x0F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0xFF,0x07,0x00,0x00,0x00,0x00,0x80,0x1F,0x00,0x00,0x00,0xC0,0xFF,0x03,0x00,0x00,0x00,0x00,0xFE,0x3A,0x00,0x00,0x00,0xE0,0xFF,0x01,0x00,0x00,0x00,0xE0,0xFF,0x3F,0x00,0x00,0x00,0xF0,0xFF,0x00,0x00,0x00,0x00,0xF0,0xFF,0x3F,0x00,0x00,0x00,0xF8,0x7F,0x00,0x00,0x00,0x00,0xF0,0xFF,0x3F,0x00,0x00,0x00,0xFC,0x3F,0x00,0x00,0x00,0x00,0xE0,0xFF,0x3F,0x00,0x00,0x00,0xFE,0xFF,0x0F,0x00,0x00,0x00,0xE0,0xFF,0x1F,0x00,0x00,0x00,0xFE,0xFF,0xFF,0x01,0x00,0x00,0xE0,0xEF,0x1F,0x00,0x00,0x00,0xFE,0xFF,0xBF,0x01,0x00,0x00,0x20,0xE0,0x0F,0x00,0x00,0x00,0xFE,0xFF,0x7F,0x81,0xFF,0x3F,0x00,0xF0,0x07,0x00,0x00,0x00,0xFE,0xFF,0xFF,0x81,0xFF,0x6F,0x00,0xF8,0x07,0x00,0x00,0x00,0xFE,0xFF,0x7F,0x81,0xFF,0x5F,0x00,0xF8,0x03,0x00,0x00,0x00,0xFE,0xFF,0xFF,0x81,0xFF,0x7F,0x00,0xFC,0x03,0x00,0x00,0x00,0xE0,0xFF,0xFF,0x81,0xFF,0x3F,0x00,0xFC,0x01,0x00,0x00,0x00,0x00,0xC0,0xFF,0x01,0xDF,0x3F,0x00,0xFE,0x01,0x00,0x00,0x00,0x00,0x00,0x80,0x00,0xC0,0x1F,0x00,0xFE,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xE0,0x0F,0x00,0xFF,0xBE,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xF0,0x0F,0x00,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xF8,0x07,0x80,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xF8,0x03,0x80,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFC,0x01,0x80,0xFF,0xFF,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0xFE,0x01,0x80,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFE,0x00,0x80,0xFF,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0x7F,0x80,0x1F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0xFF,0x5F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1E,0x80,0xFF,0x3F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0x87,0xFF,0x7F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0x8D,0xFF,0x7F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0x0F,0xFF,0x7F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xF8,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xE0,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xF8,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFC,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x7E,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3F,0x00,0x00,0x00,0xE0,0x01,0x00,0x00,0x00,0x00,0x00,0x80,0x1F,0x00,0x00,0x00,0xF0,0x01,0x00,0x00,0x00,0x00,0x00,0x80,0xFF,0x00,0x00,0x00,0x80,0x01,0x00,0x00,0x00,0x00,0x00,0xC0,0xFF,0x03,0x00,0x00,0xC0,0x01,0x00,0x00,0x00,0x00,0x00,0xC0,0xFF,0x02,0x00,0x00,0xC0,0x06,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0x03,0x00,0x00,0xC0,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0xC0,0x03,0x00,0x00,0xC0,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00'], ]; + //图标尺寸 -var ICON_SIZE = [ +const ICON_SIZE = [ ["8", "1"], ["16", "2"], ["32", "4"], ["48", "6"], ["64", "8"], ]; + //显示-OLED-初始化(iic) export const oled_init = { init: function () { @@ -1160,6 +1198,7 @@ export const oled_init = { this.setFieldValue(Profile.default.SDA[0][1], "SDA"); } }; + export const u8g2_spi_init = { init: function () { this.setColour(DISPLAY_HUE); @@ -1193,6 +1232,7 @@ export const u8g2_spi_init = { this.setFieldValue(Profile.default.MOSI[0][1], "MOSI"); } }; + export const u8g2_LCD12864_spi_init = { init: function () { this.setColour(DISPLAY_HUE); @@ -1218,6 +1258,7 @@ export const u8g2_LCD12864_spi_init = { this.setHelpUrl(""); } }; + export const u8g2_LCD12864_8080_init = { init: function () { this.setColour(DISPLAY_HUE); @@ -1256,6 +1297,7 @@ export const u8g2_LCD12864_8080_init = { this.setHelpUrl(""); } }; + //显示-OLED-清屏幕 export const oled_clear = { init: function () { @@ -1280,13 +1322,12 @@ export const oled_define_bitmap_data = { .appendField(Blockly.Msg.OLED_BITMAP_NAME) .appendField(new Blockly.FieldTextInput('bitmap1'), 'VAR') .appendField(Blockly.Msg.OLED_BITMAP_DATA) - // .appendField(new Blockly.FieldTextInput('0x80,0x00,0x84,0x10,0x88,0x10,0x90,0x08,0x90,0x04,0x80,0x00,0xFE,0x3F,0xC0,0x01, 0xA0,0x02,0xA0,0x02,0x90,0x04,0x88,0x08,0x84,0x10,0x83,0x60,0x80,0x00,0x80,0x00'), 'TEXT'); - .appendField(new Blockly.FieldTextInput('0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xF8,0xFF,0xFF,0x00,0x00,0x00,0xFC,0xFF,0x3F,0x00,0x00,0x00,0xFE,0xFF,0xFF,0x03,0x00,0x80,0xFF,0xFF,0xFF,0x01,0x00,0x80,0xFF,0xFF,0xFF,0x0F,0x00,0xC0,0xFF,0xFF,0xFF,0x03,0x00,0xC0,0x07,0x00,0x00,0x1F,0x00,0xE0,0x03,0x00,0xC0,0x07,0x00,0xE0,0x01,0x00,0x00,0x3C,0x00,0xF0,0x00,0x00,0x00,0x0F,0x00,0xE0,0x00,0x00,0x00,0x38,0x00,0x78,0x00,0x00,0x00,0x1E,0x00,0x70,0x00,0x00,0x00,0x70,0x00,0x38,0x00,0x00,0x00,0x1C,0x00,0x70,0x00,0x00,0x00,0x70,0x00,0x1C,0x00,0x00,0x00,0x38,0x00,0x38,0x00,0x00,0x00,0xE0,0x00,0x1C,0x00,0x00,0x00,0x38,0x00,0x38,0x00,0x00,0x00,0xE0,0x00,0x1C,0x00,0x00,0x00,0x38,0x00,0x38,0x00,0x00,0x00,0xE0,0x00,0x0C,0x00,0x00,0x00,0x30,0x00,0x38,0x00,0x00,0x00,0xE0,0x00,0x0C,0x00,0x00,0x00,0x30,0x00,0x38,0x00,0x00,0x00,0xE0,0x00,0x0C,0x00,0x00,0x00,0x30,0x00,0x38,0x00,0x00,0x00,0xE0,0x00,0x0C,0x00,0x00,0x00,0x30,0x00,0x38,0x00,0x00,0x00,0xE0,0x00,0x0C,0x00,0x00,0x00,0x30,0x00,0x38,0x00,0x00,0x00,0xE0,0x00,0x0C,0x00,0x00,0x00,0x30,0x00,0x38,0x00,0x00,0x00,0xE0,0x00,0x0C,0x00,0x00,0x00,0x30,0x00,0x38,0x00,0x00,0x00,0xE0,0x00,0x0C,0x00,0x00,0x00,0x30,0x00,0x78,0x00,0x00,0x00,0xE0,0x00,0x0C,0x00,0x00,0x00,0x30,0x00,0xF8,0x01,0x00,0x00,0xE0,0x00,0x0C,0x00,0x00,0x00,0x30,0x00,0xF8,0x07,0x00,0x00,0xE0,0x00,0x0C,0x00,0x00,0x00,0x38,0x00,0xB8,0x1F,0x00,0x00,0xE0,0x00,0x0C,0x00,0x00,0x00,0x3E,0x00,0x38,0x7F,0x00,0x00,0xE0,0x00,0x0C,0x00,0x00,0x80,0x3F,0x00,0x38,0xFC,0x01,0x00,0xE0,0x00,0x0C,0x00,0x00,0xE0,0x3F,0x00,0x38,0xF0,0x07,0x00,0xE0,0x00,0x0C,0x00,0x00,0xF8,0x31,0x00,0x38,0xC0,0x1F,0x00,0xE0,0x00,0x0C,0x00,0x00,0x7E,0x30,0x00,0x38,0x00,0x7F,0x00,0xE0,0x00,0x0C,0x00,0x80,0x1F,0x30,0x00,0x38,0x00,0xFC,0x01,0xE0,0x00,0x0C,0x00,0xE0,0x07,0x30,0x00,0x38,0x00,0xF0,0x07,0xE0,0x00,0x0C,0x00,0xF8,0x01,0x30,0x00,0x38,0x00,0xE0,0x1F,0xE0,0x00,0x0C,0x00,0xFE,0x00,0x30,0x00,0x38,0x00,0xF0,0x7F,0xE0,0x00,0x0C,0x80,0x3F,0x00,0x30,0x00,0x38,0x00,0xF8,0xFF,0xE1,0x00,0x0C,0xE0,0x6F,0x01,0x30,0x00,0x38,0x00,0xFC,0xF9,0xE7,0x00,0x0C,0xF8,0x4F,0x00,0x30,0x00,0x38,0x00,0xFD,0xDD,0xFF,0x00,0x0C,0xFE,0xF7,0x00,0x30,0x00,0x38,0x00,0xFE,0x3F,0xFF,0x00,0x8C,0xFF,0xFF,0x02,0x30,0x00,0x38,0x00,0xFE,0x3F,0xFC,0x00,0xFC,0xFF,0xFF,0x00,0x30,0x00,0x38,0x00,0xFE,0x3F,0xF0,0x00,0xFC,0xF5,0xFF,0x02,0x30,0x00,0x38,0x00,0xFC,0x1F,0xE0,0x00,0x7C,0xF0,0xFF,0x00,0x30,0x00,0x38,0x00,0xFD,0x5F,0xE0,0x00,0x1C,0xE0,0x7F,0x00,0x38,0x00,0x70,0x00,0xF8,0x0F,0x70,0x00,0x1C,0xE8,0x7F,0x01,0x38,0x00,0x70,0x00,0xF0,0x07,0x70,0x00,0x3C,0xC0,0x3F,0x00,0x3C,0x00,0xF0,0x00,0xC0,0x01,0x78,0x00,0x38,0x20,0x4F,0x00,0x1C,0x00,0xE0,0x01,0x20,0x04,0x3C,0x00,0x78,0x80,0x10,0x00,0x1E,0x00,0xC0,0x03,0x00,0x00,0x1E,0x00,0xF0,0x01,0x00,0x80,0x0F,0x00,0x80,0x1F,0x00,0xC0,0x0F,0x00,0xE0,0x07,0x00,0xE0,0x07,0x00,0x00,0xFF,0xFF,0xFF,0x07,0x00,0xC0,0xFF,0xFF,0xFF,0x03,0x00,0x00,0xFC,0xFF,0xFF,0x01,0x00,0x00,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00'), 'TEXT'); + .appendField(new Blockly.FieldTextInput(''), 'TEXT'); this.setPreviousStatement(true); this.setNextStatement(true); this.setTooltip(Blockly.Msg.OLED_DEF_BMP_DATA_TOOLTIP); } -} +}; //显示-OLED-设置图标 export const oled_icons = { @@ -1658,6 +1699,7 @@ export const oled_set_EN_Font = { this.setTooltip(Blockly.Msg.oled_setFont_tooltip); } }; + //显示-OLED-设置字体 export const oled_set_CN_Font = { init: function () { @@ -1676,6 +1718,7 @@ export const oled_set_CN_Font = { this.setTooltip(Blockly.Msg.oled_setFont_tooltip); } }; + //显示-OLED-设置字体 export const oled_set_ZH_TW_Font = { init: function () { @@ -1690,6 +1733,7 @@ export const oled_set_ZH_TW_Font = { this.setTooltip(Blockly.Msg.oled_setFont_tooltip); } }; + //显示-OLED-显示字符串 export const oled_print = { init: function () { @@ -1762,13 +1806,23 @@ export const lcd_display_pattern = { .appendField(Blockly.Msg.COLUMN_DISPLAY_IMAGE); this.appendDummyInput() .appendField(Blockly.Msg.LCD_NUMBERING) - .appendField(new Blockly.FieldDropdown([["0", "0"], ["1", "1"], ["2", "2"], ["3", "3"], ["4", "4"], ["5", "5"], ["6", "6"], ["7", "7"]]), "number"); + .appendField(new Blockly.FieldDropdown(this.NUMBER), "number"); this.setPreviousStatement(true, null); this.setNextStatement(true, null); this.setColour(DISPLAY_HUE); this.setTooltip(""); this.setHelpUrl("https://www.arduino.cc/en/Reference/LiquidCrystalCreateChar"); - } + }, + NUMBER: [ + ["0", "0"], + ["1", "1"], + ["2", "2"], + ["3", "3"], + ["4", "4"], + ["5", "5"], + ["6", "6"], + ["7", "7"] + ] }; //点阵屏显示_图案数组 @@ -1905,7 +1959,48 @@ export const TFT_st7735_show_hz = { .appendField(Blockly.Msg.TFT_DISPLAY_CHINESE_CHARACTERS); this.appendDummyInput() .appendField(Blockly.Msg.MIXLY_TURTLE_WRITE_FONT_NAME) - .appendField(new Blockly.FieldDropdown([["华文黑体", "STHeiti"], ["华文楷体", "STKaiti"], ["华文细黑", "STXihei"], ["华文宋体", "STSong"], ["华文中宋", "STZhongsong"], ["华文仿宋", "STFangsong"], ["华文彩云", "STCaiyun"], ["华文琥珀", "STHupo"], ["华文隶书", "STLiti"], ["华文行楷", "STXingkai"], ["华文新魏", "STXinwei"], ["黑体", "simHei"], ["宋体", "simSun"], ["新宋体", "NSimSun"], ["仿宋", "FangSong"], ["楷体", "KaiTi"], ["仿宋_GB2312", "FangSong_GB2312"], ["楷体_GB2312", "KaiTi_GB2312"], ["隶书", "LiSu"], ["幼圆", "YouYuan"], ["新细明体", "PMingLiU"], ["细明体", "MingLiU"], ["标楷体", "DFKai-SB"], ["微软正黑体", "Microsoft JhengHei"], ["微软雅黑体", "Microsoft YaHei"], ["AcadEref", "AcadEref"], ["Adobe Ming Std L", "Adobe Ming Std L"], ["Adobe Myungjo Std M", "Adobe Myungjo Std M"], ["Adobe Pi Std", "Adobe Pi Std"], ["AIGDT", "AIGDT"], ["AIgerian", "AIgerian"], ["AmdtSymbols", "AmdtSymbols"], ["Arial", "Arial"], ["Arial Rounded MT Bold", "Arial Rounded MT Bold"], ["Arial Unicode MS", "Arial Unicode MS"], ["BankGothic Lt BT", "BankGothic Lt BT"], ["BankGothic Md BT", "BankGothic Md BT"], ["Baskerville Old Face", "Baskerville Old Face"], ["Bauhaus 93", "Bauhaus 93"], ["Beranad MT Condensed", "Beranad MT Condensed"]]), "st7735_hz_sharp") + .appendField(new Blockly.FieldDropdown([ + ["华文黑体", "STHeiti"], + ["华文楷体", "STKaiti"], + ["华文细黑", "STXihei"], + ["华文宋体", "STSong"], + ["华文中宋", "STZhongsong"], + ["华文仿宋", "STFangsong"], + ["华文彩云", "STCaiyun"], + ["华文琥珀", "STHupo"], + ["华文隶书", "STLiti"], + ["华文行楷", "STXingkai"], + ["华文新魏", "STXinwei"], + ["黑体", "simHei"], + ["宋体", "simSun"], + ["新宋体", "NSimSun"], + ["仿宋", "FangSong"], + ["楷体", "KaiTi"], + ["仿宋_GB2312", "FangSong_GB2312"], + ["楷体_GB2312", "KaiTi_GB2312"], + ["隶书", "LiSu"], + ["幼圆", "YouYuan"], + ["新细明体", "PMingLiU"], + ["细明体", "MingLiU"], + ["标楷体", "DFKai-SB"], + ["微软正黑体", "Microsoft JhengHei"], + ["微软雅黑体", "Microsoft YaHei"], + ["AcadEref", "AcadEref"], + ["Adobe Ming Std L", "Adobe Ming Std L"], + ["Adobe Myungjo Std M", "Adobe Myungjo Std M"], + ["Adobe Pi Std", "Adobe Pi Std"], + ["AIGDT", "AIGDT"], + ["AIgerian", "AIgerian"], + ["AmdtSymbols", "AmdtSymbols"], + ["Arial", "Arial"], + ["Arial Rounded MT Bold", "Arial Rounded MT Bold"], + ["Arial Unicode MS", "Arial Unicode MS"], + ["BankGothic Lt BT", "BankGothic Lt BT"], + ["BankGothic Md BT", "BankGothic Md BT"], + ["Baskerville Old Face", "Baskerville Old Face"], + ["Bauhaus 93", "Bauhaus 93"], + ["Beranad MT Condensed", "Beranad MT Condensed"] + ]), "st7735_hz_sharp") .appendField(" " + Blockly.Msg.MIXLY_TURTLE_WRITE_FONT_NUM) .appendField(new Blockly.FieldTextInput("16"), "st7735_hz_line_height") .appendField("px") @@ -1943,6 +2038,7 @@ export const TFT_st7735_show_hz = { this.setHelpUrl(""); } }; + export const TFT_Brightness = { init: function () { this.setColour(DISPLAY_HUE); @@ -2001,7 +2097,6 @@ export const TFT_init = { } }; - export const TFT_fillScreen = { init: function () { this.setColour(DISPLAY_HUE); @@ -2018,13 +2113,6 @@ export const TFT_fillScreen = { } }; -var display_Rotation_NUM = [ - [Blockly.Msg.MIXLY_0DEGREE, "0"], - [Blockly.Msg.MIXLY_90DEGREE, "1"], - [Blockly.Msg.MIXLY_180DEGREE, "2"], - [Blockly.Msg.MIXLY_270DEGREE, "3"] -]; - export const TFT_Rotation = { init: function () { this.setColour(DISPLAY_HUE); @@ -2033,12 +2121,18 @@ export const TFT_Rotation = { this.appendDummyInput("") .setAlign(Blockly.inputs.Align.RIGHT) .appendField(Blockly.Msg.MIXLY_DISPLAY_MATRIX_ROTATE) - .appendField(new Blockly.FieldDropdown(display_Rotation_NUM), "Rotation_TYPE"); + .appendField(new Blockly.FieldDropdown(this.ROTATION_TYPE), "Rotation_TYPE"); this.setPreviousStatement(true); this.setNextStatement(true); this.setInputsInline(true); this.setTooltip(Blockly.Msg.MIXLY_TOOPTIP_Matrix_HK16T33_ROTATION); - } + }, + ROTATION_TYPE: [ + [Blockly.Msg.MIXLY_0DEGREE, "0"], + [Blockly.Msg.MIXLY_90DEGREE, "1"], + [Blockly.Msg.MIXLY_180DEGREE, "2"], + [Blockly.Msg.MIXLY_270DEGREE, "3"] + ] }; //显示-TFT-定义字模名称和数据 @@ -2050,7 +2144,7 @@ export const tft_define_bitmap_data = { .appendField(Blockly.Msg.OLED_BITMAP_NAME) .appendField(new Blockly.FieldTextInput('bitmap1'), 'VAR') .appendField(Blockly.Msg.OLED_BITMAP_DATA) - .appendField(new Blockly.FieldTextInput('0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x009f, 0x9f00, 0x989c, 0x009a, 0x9f00, 0x9c9e, 0x009d, 0xa100, 0x9da1, 0x009d, 0xa100, 0x9da1, 0x009d, 0xa100, 0x9da1, 0x009d, 0xa100, 0x9da1, 0x009d, 0xa100, 0x9da1, 0x009d, 0xa100, 0x9da1, 0x009d, 0xa100, 0x9da1, 0x009d, 0xa100, 0x9da1, 0x009d, 0xa100, 0x9da1, 0x009d, 0xa100, 0x9da1, 0x009d, 0xa100, 0x9da1, 0x009d, 0xa100, 0x9da1, 0x009d, 0xa100, 0x9da1, 0x009d, 0xa100, 0x9da1, 0x009d, 0xa100, 0x9da1, 0x009d, 0xa100, 0x9da1, 0x009d, 0xa100, 0x9da1, 0x009d, 0xa100, 0x9da1, 0x009d, 0xa100, 0x9da1, 0x009d, 0xa100, 0x9da1, 0x009d, 0xa100, 0x9da1, 0x009d, 0xa100, 0x9da1, 0x009d, 0xa100, 0x9da1, 0x009d, 0xa100, 0x9da1, 0x009d, 0xa100, 0x9da1, 0x009d, 0xa100, 0x9da1, 0x009d, 0xa100, 0x9da1, 0x009d, 0xa100, 0x9da1, 0x009d, 0xa100, 0x9da1, 0x009d, 0xa100, 0x9da1, 0x009d, 0xa100, 0x9da1, 0x009d, 0xa100, 0x9da1, 0x009d, 0xa100, 0x9da1, 0x009d, 0xa100, 0x9da1, 0x009d, 0xa100, 0x9da1, 0x009d, 0xa100, 0x9da1, 0x009d, 0xa100, 0x9da1, 0x009d, 0xa100, 0x9da1, 0x009d, 0xa100, 0x9da1, 0x009d, 0xa100, 0x9da1, 0x009d, 0xa100, 0x9da1, 0x009d, 0xa100, 0x9da1, 0x009d, 0xa100, 0x9da1, 0x009d, 0xa100, 0x9da1, 0x009d, 0xa100, 0x9da1, 0x009d, 0xa100, 0x9da1, 0x009d, 0xa100, 0x9da1, 0x009d, 0xa100, 0x9da1, 0x009d, 0xa100, 0x9da1, 0x009d, 0xa100, 0x9da1, 0x009d, 0xa100, 0x9da1, 0x009d, 0xa100, 0x9da1, 0x009d, 0xa100, 0x9da1, 0x009d, 0xa100, 0x9da1, 0x0099, 0x9e00, 0x989e, 0x009c, 0x9c00, 0x7f7f, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x00a3, 0xa300, 0x989e, 0x0096, 0x9e00, 0x989d, 0x0098, 0x9d00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x989d, 0x0099, 0x9e00, 0x979c, 0x0098, 0x9c00, 0x7faa, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x989c, 0x0099, 0x9e00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9d00, 0x999e, 0x009d, 0x9d00, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0098, 0xa000, 0x999e, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0098, 0x9e00, 0x969c, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x9aa1, 0x0096, 0x9e00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979d, 0x008d, 0x9b00, 0x0000, 0x007f, 0x7f00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0098, 0x9d00, 0x0000, 0x0095, 0x9c00, 0x989d, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0096, 0x9b00, 0x949b, 0x0099, 0x9f00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x999f, 0x0098, 0x9b00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x999d, 0x0096, 0x9b00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979b, 0x0099, 0x9f00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x999d, 0x009a, 0x9f00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x9a9d, 0x009a, 0x9f00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x9a9d, 0x009a, 0x9f00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c01, 0x979c, 0x0899, 0x9e0e, 0x9ca1, 0x0c9b, 0x9f04, 0x989d, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x9a9d, 0x009a, 0x9f00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x969b, 0x0095, 0x9a04, 0x989d, 0x119d, 0xa21e, 0xa2a6, 0x2faa, 0xae47, 0xb3b7, 0x5bbb, 0xbe6d, 0xc3c6, 0x42b1, 0xb500, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c2b, 0xa8ac, 0x7fca, 0xcdbf, 0xe4e6, 0xe6f5, 0xf6f3, 0xfafa, 0xf1f9, 0xfad6, 0xeeef, 0x93d2, 0xd525, 0xa5aa, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x9a9d, 0x009a, 0x9f00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0096, 0x9b00, 0x969b, 0x0699, 0x9e0e, 0x9ca1, 0x169f, 0xa424, 0xa5aa, 0x36ac, 0xb045, 0xb2b6, 0x52b8, 0xbb64, 0xbfc2, 0x77c6, 0xc984, 0xccce, 0x98d4, 0xd7ac, 0xdcde, 0xbbe3, 0xe5d0, 0xeced, 0xe2f3, 0xf4ed, 0xf8f8, 0xf7fc, 0xfcff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xfffe, 0xffff, 0x3cae, 0xb200, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0598, 0x9d52, 0xb7bb, 0xbfe4, 0xe6fc, 0xfefe, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xfff6, 0xfbfc, 0x6bc2, 0xc501, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x9a9d, 0x009a, 0x9f00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c03, 0x989d, 0x4ab5, 0xb859, 0xbabd, 0x5fbc, 0xc068, 0xc0c3, 0x72c5, 0xc881, 0xcbce, 0x92d1, 0xd4a1, 0xd7d9, 0xaede, 0xdfc1, 0xe5e7, 0xd3ed, 0xeedd, 0xf1f2, 0xe7f5, 0xf6f2, 0xfafa, 0xfafd, 0xfdfc, 0xfefe, 0xfeff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffdd, 0xf1f2, 0x0398, 0x9d00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0398, 0x9d4c, 0xb5b9, 0xcdeb, 0xecfe, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xfdfe, 0xfe6d, 0xc3c6, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x9a9d, 0x009a, 0x9f00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c10, 0x9ca1, 0xf9fd, 0xfdff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xff90, 0xd1d3, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c2a, 0xa7ab, 0xb9e2, 0xe3fe, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xfff7, 0xfcfc, 0x35ab, 0xb000, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x9a9d, 0x009a, 0x9f00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c0d, 0x9ba0, 0xf5fb, 0xfbff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xff47, 0xb3b7, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c07, 0x999e, 0x7ac8, 0xcaf6, 0xfbfb, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xbbe3, 0xe401, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x9a9d, 0x009a, 0x9f00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c06, 0x999e, 0xecf7, 0xf7ff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xf1f9, 0xfa0f, 0x9ca1, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x24a5, 0xa9c9, 0xe9ea, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xfeff, 0xff38, 0xadb1, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x9a9d, 0x009a, 0x9f00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x969b, 0xd8f0, 0xf0ff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xb6e0, 0xe200, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c4e, 0xb6ba, 0xebf7, 0xf7ff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xff95, 0xd3d6, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x9a9d, 0x009a, 0x9f00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0xabdc, 0xdeff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x74c5, 0xc800, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c02, 0x989c, 0x6fc3, 0xc6f9, 0xfdfd, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffde, 0xf2f2, 0x0598, 0x9d00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x969b, 0x0398, 0x9d04, 0x989d, 0x0096, 0x9b00, 0x969b, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x9a9d, 0x009a, 0x9f00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x62be, 0xc1ff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xfffe, 0xffff, 0x3bae, 0xb200, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0398, 0x9d88, 0xced1, 0xfeff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xfffc, 0xfefe, 0x26a6, 0xaa00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c0d, 0x9ba0, 0x43b2, 0xb582, 0xccce, 0xb2df, 0xe1d7, 0xefef, 0xe5f4, 0xf5e7, 0xf5f6, 0xdff2, 0xf2c4, 0xe7e8, 0x98d4, 0xd657, 0xbabd, 0x18a0, 0xa400, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x9a9d, 0x009a, 0x9f00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x089a, 0x9f77, 0xc6c9, 0x9dd5, 0xd7ac, 0xdddf, 0xc2e6, 0xe8d7, 0xeff0, 0xe5f5, 0xf5f7, 0xfcfc, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xfff0, 0xf9f9, 0x109d, 0xa100, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c02, 0x979d, 0x91d2, 0xd4ff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x5dbc, 0xbf00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c2e, 0xa9ad, 0x9bd6, 0xd7e8, 0xf6f6, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xf2fa, 0xfaa6, 0xdadc, 0x2aa7, 0xab00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x9a9d, 0x009a, 0x9f00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0096, 0x9b00, 0x969b, 0x0398, 0x9d13, 0x9ea3, 0x72c5, 0xc7f6, 0xfbfc, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffcb, 0xeaeb, 0x0197, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0297, 0x9c87, 0xcdd0, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x90d1, 0xd300, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c23, 0xa4a9, 0xa5da, 0xdbfa, 0xfdfd, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xf8fc, 0xfc8a, 0xced1, 0x0b9b, 0xa000, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x9a9d, 0x009a, 0x9f00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c65, 0xc0c3, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xff9d, 0xd7d8, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x6dc2, 0xc5fd, 0xfeff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xb2df, 0xe100, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c05, 0x999e, 0x6dc2, 0xc5f2, 0xfafa, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xc9e9, 0xea1c, 0xa2a6, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x9a9d, 0x009a, 0x9f00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c0b, 0x9b9f, 0xebf7, 0xf7ff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xff6d, 0xc3c5, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c4a, 0xb4b8, 0xf9fd, 0xfdff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xd2ec, 0xed00, 0x969b, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x169f, 0xa4b6, 0xe0e2, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffdd, 0xf1f1, 0x22a3, 0xa800, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x9a9d, 0x009a, 0x9f00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x969b, 0xc9e9, 0xeaff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xff3e, 0xb0b4, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x21a3, 0xa8ea, 0xf6f7, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xe2f3, 0xf405, 0x999e, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c2a, 0xa7ab, 0xd7ee, 0xefff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xd7ee, 0xef15, 0x9fa4, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x9a9d, 0x009a, 0x9f00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0xb8e2, 0xe3ff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xfcfe, 0xfe1d, 0xa2a6, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c07, 0x999e, 0xc1e5, 0xe6ff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xeff9, 0xf90d, 0x9ba0, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x31aa, 0xaee7, 0xf5f6, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffb4, 0xe0e1, 0x0498, 0x9d00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x9a9d, 0x009a, 0x9f00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0xb7e2, 0xe3ff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xedf8, 0xf805, 0x989d, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c76, 0xc6c9, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xf7fc, 0xfc13, 0x9da2, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c31, 0xaaae, 0xe9f6, 0xf6ff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xfffe, 0xffff, 0x64be, 0xc200, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x9a9d, 0x009a, 0x9f00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0xb6e1, 0xe3ff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xcfec, 0xed01, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x2aa7, 0xacf5, 0xfbfb, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xf9fd, 0xfd17, 0xa0a5, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x26a6, 0xaae4, 0xf4f4, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xebf7, 0xf715, 0x9fa4, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x9a9d, 0x009a, 0x9f00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0xb4e0, 0xe2ff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xb5e0, 0xe200, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c03, 0x989d, 0xb9e2, 0xe4ff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xf9fd, 0xfd1a, 0xa2a6, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c13, 0x9ea3, 0xd4ed, 0xeeff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xff82, 0xcbce, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x9a9d, 0x009a, 0x9f00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0xb1df, 0xe1ff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x9ad5, 0xd700, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c52, 0xb8bb, 0xfeff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xfafd, 0xfd1d, 0xa2a7, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0599, 0x9eb3, 0xdfe1, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffe7, 0xf5f6, 0x0a9a, 0x9f00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x9a9d, 0x009a, 0x9f00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0xa7db, 0xddff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x81cb, 0xcd00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x099a, 0x9fd7, 0xefef, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xf9fd, 0xfd18, 0xa1a5, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x80cb, 0xcdff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x57ba, 0xbd00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x9a9d, 0x009a, 0x9f00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x9dd6, 0xd8ff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x6dc3, 0xc600, 0x979c, 0x0097, 0x9c00, 0x979c, 0x60bd, 0xc1ff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xf8fc, 0xfc15, 0x9fa3, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c4c, 0xb5b9, 0xfcfe, 0xfeff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xa2d9, 0xda00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x9a9d, 0x009a, 0x9f00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x95d2, 0xd5ff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x5cbc, 0xbf00, 0x979c, 0x0097, 0x9c08, 0x999e, 0xdbf0, 0xf1ff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xf7fc, 0xfc13, 0x9da2, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x1fa3, 0xa7e8, 0xf5f6, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xddf1, 0xf205, 0x989d, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x9a9d, 0x009a, 0x9f00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x87cd, 0xd0ff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x4fb6, 0xba00, 0x979c, 0x0097, 0x9c5b, 0xbbbf, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xeff9, 0xf90d, 0x9ba0, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c06, 0x999e, 0xc0e5, 0xe7ff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xf9fd, 0xfd1b, 0xa1a6, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x9a9d, 0x009a, 0x9f00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x78c7, 0xcaff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x46b2, 0xb600, 0x979c, 0x0398, 0x9dc9, 0xe9ea, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xe4f4, 0xf506, 0x999e, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c7e, 0xcacc, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xff3b, 0xaeb2, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x9a9d, 0x009a, 0x9f00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x66c0, 0xc3ff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x41b0, 0xb400, 0x979c, 0x38ad, 0xb1fe, 0xfeff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xfeff, 0xffe8, 0xf6f6, 0xd1ec, 0xede7, 0xf5f6, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xdaf0, 0xf101, 0x979c, 0x0097, 0x9c00, 0x979c, 0x3caf, 0xb3f9, 0xfdfd, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xfff2, 0xfafa, 0xc3e6, 0xe8b8, 0xe2e3, 0xeff9, 0xf9ff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xff5b, 0xbbbe, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x9a9d, 0x009a, 0x9f00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x58b9, 0xbdff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x3caf, 0xb200, 0x979c, 0x9dd7, 0xd9ff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffd3, 0xecee, 0x4bb5, 0xb807, 0x999e, 0x0096, 0x9b07, 0x999e, 0x62be, 0xc1f3, 0xfafa, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xcbe9, 0xeb00, 0x969b, 0x0097, 0x9c0e, 0x9ca1, 0xd7ee, 0xefff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffe7, 0xf5f6, 0x6cc2, 0xc512, 0x9da2, 0x0096, 0x9b00, 0x969b, 0x19a0, 0xa5ce, 0xebec, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xff6a, 0xc1c4, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x9a9d, 0x009a, 0x9f00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x44b2, 0xb6ff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xfffe, 0xffff, 0x38ad, 0xb110, 0x9da1, 0xecf7, 0xf8ff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xb6e1, 0xe20f, 0x9da1, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c59, 0xbabd, 0xfdfe, 0xfeff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xafde, 0xe000, 0x979c, 0x0197, 0x9c90, 0xd1d4, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xbde4, 0xe519, 0xa0a5, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c43, 0xb1b5, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xff72, 0xc5c8, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x9a9d, 0x009a, 0x9f00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x2ea9, 0xadff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xfffe, 0xffff, 0x37ad, 0xb054, 0xb8bb, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffbd, 0xe4e5, 0x0a9b, 0xa000, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c02, 0x979d, 0xb6e0, 0xe2ff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x98d4, 0xd600, 0x979c, 0x3aae, 0xb2fa, 0xfdfd, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffa4, 0xd9db, 0x0899, 0x9e00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c07, 0x999e, 0xe9f6, 0xf7ff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xff70, 0xc4c7, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x9a9d, 0x009a, 0x9f00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x1fa3, 0xa7fa, 0xfdfd, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xfffe, 0xffff, 0x3dae, 0xb2ae, 0xdedf, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xe4f4, 0xf41a, 0xa1a5, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x48b4, 0xb7ff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x7bc8, 0xcb05, 0x989d, 0xc9e9, 0xeaff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xaadb, 0xdd07, 0x999e, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c01, 0x979b, 0xcbea, 0xebff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xff69, 0xc1c3, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x9a9d, 0x009a, 0x9f00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0f9c, 0xa1f1, 0xfafa, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x5ab9, 0xbcf2, 0xfafa, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xfffd, 0xfefe, 0x51b7, 0xba00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0699, 0x9de5, 0xf4f5, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x60bd, 0xc06a, 0xc2c5, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffca, 0xe9ea, 0x0c9c, 0xa100, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0xbae3, 0xe4ff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xff57, 0xb9bd, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x9a9d, 0x009a, 0x9f00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0698, 0x9de4, 0xf4f4, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xb2df, 0xe1ff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffb4, 0xe0e1, 0x0298, 0x9d00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c9f, 0xd7d9, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x4db5, 0xb8e3, 0xf4f4, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xe7f6, 0xf61e, 0xa2a7, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0xbce3, 0xe5ff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xff3b, 0xaeb2, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x9a9d, 0x009a, 0x9f00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0297, 0x9ccd, 0xeaeb, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xfefe, 0xfeff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xf9fc, 0xfd2c, 0xa8ad, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c66, 0xc0c3, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xfffd, 0xfeff, 0x9ad5, 0xd7ff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xfffd, 0xfefe, 0x4eb6, 0xba00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c01, 0x969c, 0xc9e9, 0xeaff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xfafd, 0xfd20, 0xa3a8, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x9a9d, 0x009a, 0x9f00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9cb5, 0xe0e2, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xa3d9, 0xdb00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c38, 0xadb1, 0xfeff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xfffa, 0xfdfd, 0xf0f9, 0xf9ff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xff99, 0xd5d7, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c02, 0x969b, 0xdff2, 0xf3ff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xe8f6, 0xf609, 0x9a9e, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x9a9d, 0x009a, 0x9f00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c95, 0xd3d5, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xfffc, 0xfefe, 0x32aa, 0xae00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c17, 0xa0a4, 0xf7fc, 0xfcff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xdff2, 0xf312, 0x9da2, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c0b, 0x9ba0, 0xf1f9, 0xf9ff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xbce4, 0xe500, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x9a9d, 0x009a, 0x9f00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c78, 0xc7ca, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffbc, 0xe3e5, 0x0197, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c08, 0x999e, 0xe9f6, 0xf6ff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xfffe, 0xffff, 0x52b8, 0xbb00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c26, 0xa6aa, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x81cb, 0xcd00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x9a9d, 0x009a, 0x9f00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c56, 0xb9bd, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xff50, 0xb7ba, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c01, 0x979c, 0xd4ed, 0xeeff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffb6, 0xe1e2, 0x0297, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c54, 0xb8bc, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x3bae, 0xb200, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x9a9d, 0x009a, 0x9f00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c31, 0xabaf, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xe6f5, 0xf50c, 0x9ba0, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x969b, 0xc2e6, 0xe7ff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xf8fc, 0xfc2d, 0xa9ad, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c87, 0xcdd0, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffe1, 0xf3f3, 0x0498, 0x9d00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x9a9d, 0x009a, 0x9f00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c13, 0x9ea2, 0xfafd, 0xfdff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x9bd6, 0xd800, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0xb0df, 0xe0ff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x8fd1, 0xd300, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9cbb, 0xe3e4, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xff8c, 0xd0d2, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x9a9d, 0x009a, 0x9f00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c02, 0x979c, 0xe2f3, 0xf4ff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x49b4, 0xb700, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0xa1d9, 0xdbff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffee, 0xf8f8, 0x1aa1, 0xa600, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0b9b, 0x9fe9, 0xf6f6, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xfcfe, 0xfe30, 0xaaae, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x9a9d, 0x009a, 0x9f00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x969b, 0xbee4, 0xe6ff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffed, 0xf8f8, 0x0a9a, 0x9f00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x98d4, 0xd6ff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xff83, 0xcbce, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x35ac, 0xb0fe, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xbde4, 0xe502, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x9a9d, 0x009a, 0x9f00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x99d5, 0xd7ff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffb0, 0xdee0, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x94d2, 0xd4ff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xe9f6, 0xf612, 0x9da2, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x75c6, 0xc8ff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xfffe, 0xffff, 0x48b4, 0xb700, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x9a9d, 0x009a, 0x9f00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x71c4, 0xc7ff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xff70, 0xc4c6, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x93d2, 0xd4ff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x80ca, 0xcd00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0xc0e5, 0xe7ff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffc7, 0xe8e9, 0x0498, 0x9d00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x9a9d, 0x009a, 0x9f00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x47b3, 0xb7ff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xfeff, 0xff37, 0xadb1, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x93d2, 0xd4ff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xfff2, 0xfafa, 0x169f, 0xa400, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c17, 0xa0a4, 0xf7fc, 0xfcff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xfeff, 0xff49, 0xb4b8, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x9a9d, 0x009a, 0x9f00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x21a4, 0xa8fc, 0xfefe, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xf1f9, 0xfa0d, 0x9ba0, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x96d3, 0xd5ff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xff90, 0xd1d3, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c59, 0xbbbe, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xb1df, 0xe001, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x9a9d, 0x009a, 0x9f00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0899, 0x9eea, 0xf7f7, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xccea, 0xeb00, 0x969b, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x99d5, 0xd7ff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xf9fd, 0xfd29, 0xa7ab, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9ca8, 0xdbdd, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xfff5, 0xfbfb, 0x28a7, 0xab00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x9a9d, 0x009a, 0x9f00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0096, 0x9bc3, 0xe6e8, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x99d5, 0xd700, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x9dd7, 0xd9ff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xbae2, 0xe301, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0c9b, 0xa0ed, 0xf8f8, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xff76, 0xc6c9, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x9a9d, 0x009a, 0x9f00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c90, 0xd1d3, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x6dc3, 0xc500, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0xa7db, 0xddff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x4eb6, 0xb900, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x52b8, 0xbbff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xc5e7, 0xe807, 0x999e, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x9a9d, 0x009a, 0x9f00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c5a, 0xbabe, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x46b3, 0xb700, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0xb8e2, 0xe3ff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffe1, 0xf3f3, 0x089a, 0x9f00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0xabdc, 0xdeff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffec, 0xf7f8, 0x24a4, 0xa900, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x9a9d, 0x009a, 0x9f00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c29, 0xa7ab, 0xfdfe, 0xfeff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x3eb0, 0xb400, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x969b, 0xc8e8, 0xe9ff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xff8b, 0xcfd1, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c12, 0x9ea2, 0xeff9, 0xf9ff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xfcfe, 0xfe54, 0xb8bc, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x9a9d, 0x009a, 0x9f00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c09, 0x9a9f, 0xe7f5, 0xf6ff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x53b8, 0xbc00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c01, 0x979c, 0xd2ed, 0xeeff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xfeff, 0xff33, 0xabaf, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c5a, 0xbbbe, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x81ca, 0xcd01, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x9a9d, 0x009a, 0x9f00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0xb7e1, 0xe3ff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x6ec3, 0xc600, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c06, 0x999e, 0xe4f4, 0xf5ff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xd3ed, 0xee02, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0197, 0x9cba, 0xe3e4, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffab, 0xddde, 0x0598, 0x9d00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x9a9d, 0x009a, 0x9f00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x7fca, 0xccff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x8fd0, 0xd300, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c0f, 0x9ca1, 0xf4fb, 0xfbff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x7fca, 0xcd00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x21a3, 0xa8f9, 0xfdfd, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xc1e5, 0xe70b, 0x9ba0, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x9a9d, 0x009a, 0x9f00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x3eb0, 0xb4ff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xb5e1, 0xe200, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c22, 0xa4a9, 0xfafd, 0xfdff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xfffd, 0xfefe, 0x34ac, 0xaf00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x79c7, 0xcaff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffce, 0xebec, 0x159f, 0xa400, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x9a9d, 0x009a, 0x9f00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0a9a, 0x9fee, 0xf8f9, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xe1f2, 0xf302, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c39, 0xadb1, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffe0, 0xf2f3, 0x0699, 0x9e00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c04, 0x989d, 0xd4ed, 0xeeff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xd2ed, 0xed18, 0xa0a5, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x9a9d, 0x009a, 0x9f00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9cb5, 0xe0e2, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xf8fc, 0xfc16, 0x9fa4, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c5e, 0xbcbf, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffbb, 0xe3e5, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c41, 0xb0b4, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffd1, 0xeced, 0x1aa1, 0xa500, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x9a9d, 0x009a, 0x9f00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c6f, 0xc4c6, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xfeff, 0xff3d, 0xafb3, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c83, 0xccce, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffba, 0xe2e4, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0197, 0x9caa, 0xdcde, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xcae9, 0xea18, 0xa0a4, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x9a9d, 0x009a, 0x9f00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x969b, 0x0096, 0x9b00, 0x969b, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c2a, 0xa7ac, 0xfcfe, 0xfeff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xff6c, 0xc2c6, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9caa, 0xdcdd, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffbe, 0xe4e5, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x1ea2, 0xa6f5, 0xfbfb, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffc4, 0xe7e8, 0x139e, 0xa200, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x9a9d, 0x009a, 0x9f00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0b9b, 0xa058, 0xbabd, 0xa2d8, 0xdacd, 0xeaeb, 0xd6ee, 0xefc7, 0xe8e9, 0xa0d8, 0xd96a, 0xc1c4, 0x2aa7, 0xac07, 0x999d, 0xd7ee, 0xefff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xff9e, 0xd7d9, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0197, 0x9cd9, 0xf0f0, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffc2, 0xe6e7, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x80cb, 0xcdff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xb3e0, 0xe10d, 0x9ba0, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x9a9d, 0x009a, 0x9f00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x7ac9, 0xcbff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xfcfe, 0xfed7, 0xeeef, 0xd7ef, 0xf0ff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffd0, 0xeced, 0x0197, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x169f, 0xa4fb, 0xfefe, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffc9, 0xe8ea, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c0d, 0x9ca0, 0xe7f6, 0xf6ff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xd8ef, 0xf0a6, 0xdadc, 0x73c5, 0xc840, 0xb0b4, 0x129e, 0xa200, 0x969b, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x9a9d, 0x009a, 0x9f00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x75c6, 0xc8ff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xfff6, 0xfbfc, 0x119d, 0xa200, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x46b3, 0xb7ff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffd1, 0xeced, 0x0096, 0x9b00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c68, 0xc0c4, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xf7fc, 0xfcd3, 0xedee, 0xa0d8, 0xd96f, 0xc3c6, 0x3eaf, 0xb315, 0x9ea3, 0x0197, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x9a9d, 0x009a, 0x9f00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x72c4, 0xc7ff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x43b1, 0xb500, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x7dc9, 0xccff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffd8, 0xeff0, 0x0096, 0x9b00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0698, 0x9dd8, 0xeff0, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xfeff, 0xfff6, 0xfbfc, 0xd7ef, 0xefa4, 0xd9db, 0x1da1, 0xa600, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x9a9d, 0x009a, 0x9f00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x68c0, 0xc3ff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x7cc9, 0xcb00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c01, 0x979c, 0xbee4, 0xe5ff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffe0, 0xf3f3, 0x0398, 0x9d00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x63be, 0xc2ff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x94d2, 0xd500, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x9a9d, 0x009a, 0x9f00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x5abb, 0xbeff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xb5e0, 0xe200, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c10, 0x9ca1, 0xf1fa, 0xfaff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffea, 0xf7f7, 0x0a9a, 0x9f00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c0b, 0x9ba0, 0xdaf0, 0xf1ff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xf5fb, 0xfb20, 0xa3a7, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x9a9d, 0x009a, 0x9f00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x4db6, 0xbaff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xe7f5, 0xf609, 0x9a9f, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c4a, 0xb4b8, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xfff4, 0xfbfb, 0x119d, 0xa100, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c72, 0xc5c8, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xff95, 0xd3d5, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x9a9d, 0x009a, 0x9f00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x42b1, 0xb5ff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xfdfe, 0xfe2c, 0xa8ac, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9ca3, 0xd9db, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xfffa, 0xfdfd, 0x20a4, 0xa800, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x1fa2, 0xa7ee, 0xf8f9, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xfff2, 0xfafa, 0x20a3, 0xa700, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x9a9d, 0x009a, 0x9f00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x3eaf, 0xb3ff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xfffe, 0xffff, 0xeaf7, 0xf7c7, 0xe8e9, 0xa8db, 0xdd91, 0xd2d4, 0x83cb, 0xce7f, 0xc9cc, 0x7ac7, 0xca7f, 0xc9cc, 0x83cb, 0xcd92, 0xd2d5, 0xa9db, 0xddbf, 0xe5e6, 0xddf1, 0xf2f1, 0xfafa, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xff63, 0xbfc2, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0d9c, 0xa0e9, 0xf6f7, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xfffe, 0xffff, 0x3caf, 0xb200, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x4cb5, 0xb986, 0xcdcf, 0x84cb, 0xcd81, 0xcacd, 0x79c7, 0xca71, 0xc4c7, 0x6bc2, 0xc565, 0xc0c3, 0x5fbd, 0xc15a, 0xbbbe, 0x56ba, 0xbd54, 0xb9bd, 0x52b8, 0xbc51, 0xb7bb, 0x50b7, 0xba4f, 0xb6ba, 0x4eb6, 0xb94e, 0xb5b9, 0x4db5, 0xb94d, 0xb5b9, 0x4db5, 0xb94e, 0xb5b9, 0x4fb6, 0xba51, 0xb7bb, 0x52b8, 0xbc57, 0xbabd, 0x5cbc, 0xbf65, 0xc0c3, 0x6fc3, 0xc679, 0xc8ca, 0x83cb, 0xce8d, 0xd0d3, 0x4fb6, 0xba00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x9a9d, 0x009a, 0x9f00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x3cae, 0xb2ff, 0xffff, 0xfeff, 0xffd3, 0xedee, 0x78c7, 0xca2c, 0xa8ac, 0x089a, 0x9e01, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c01, 0x979c, 0x0497, 0x9c0e, 0x9ca1, 0x2ea9, 0xad61, 0xbec1, 0x9fd7, 0xd9d8, 0xeff0, 0xfafd, 0xfdff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffa5, 0xdadb, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x4eb6, 0xbaff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x5fbd, 0xc000, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x9a9d, 0x009a, 0x9f00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x31aa, 0xaee1, 0xf3f3, 0x56b9, 0xbc05, 0x989d, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c04, 0x989d, 0x25a5, 0xaa67, 0xc0c3, 0xb8e2, 0xe3f9, 0xfdfd, 0xffff, 0xffe4, 0xf4f4, 0x0699, 0x9e00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0xb4e0, 0xe2ff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x94d3, 0xd500, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x9a9d, 0x009a, 0x9f00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x139f, 0xa31d, 0xa2a7, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c1d, 0xa2a6, 0x74c6, 0xc8d6, 0xeeef, 0x30a9, 0xad00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c29, 0xa7ab, 0xfbfe, 0xfeff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xe9f6, 0xf75b, 0xbbbe, 0x0b9b, 0xa000, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x9a9d, 0x009a, 0x9f00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c06, 0x989e, 0x0b9b, 0xa000, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c0e, 0x9ca1, 0x5dbc, 0xbfa6, 0xd9db, 0xe1f3, 0xf3fc, 0xfefe, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xe6f5, 0xf580, 0xcbcd, 0x1ea2, 0xa701, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x9a9d, 0x009a, 0x9f00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0799, 0x9e2c, 0xa8ac, 0x6ac1, 0xc4ac, 0xddde, 0xebf7, 0xf7ff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xf5fb, 0xfbae, 0xdddf, 0x48b4, 0xb705, 0x999e, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x9a9d, 0x009a, 0x9f00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0899, 0x9e37, 0xacb0, 0x76c6, 0xc9b3, 0xdfe1, 0xe8f6, 0xf6fe, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xfafd, 0xfd1f, 0xa3a7, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x9a9d, 0x009a, 0x9f00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0899, 0x9e2f, 0xa9ae, 0x71c4, 0xc7ae, 0xdddf, 0xe3f3, 0xf4fc, 0xfefe, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xb5e0, 0xe200, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x9a9d, 0x009a, 0x9f00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0799, 0x9e28, 0xa7ab, 0x5ebc, 0xbf96, 0xd3d6, 0xd2ed, 0xeefa, 0xfdfd, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x57b9, 0xbd00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x9a9d, 0x009a, 0x9f00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c1d, 0xa3a7, 0x6fc4, 0xc653, 0xb8bc, 0x3cae, 0xb21e, 0xa3a7, 0x0c9b, 0xa000, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0197, 0x9c16, 0x9fa4, 0x49b4, 0xb881, 0xcbcd, 0xb7e1, 0xe2e6, 0xf5f5, 0xfeff, 0xffec, 0xf8f8, 0x109d, 0xa200, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x9a9d, 0x009a, 0x9f00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0398, 0x9dbc, 0xe3e5, 0xffff, 0xffff, 0xffff, 0xffff, 0xfffc, 0xfefe, 0xf0f9, 0xfa3b, 0xaeb2, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c06, 0x989d, 0x27a6, 0xaa44, 0xb1b6, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x9a9d, 0x009a, 0x9f00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x59bb, 0xbeff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xff43, 0xb1b5, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c0d, 0x9ba0, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x9a9d, 0x009a, 0x9f00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c04, 0x989d, 0xcbea, 0xebff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xff6f, 0xc3c6, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c03, 0x989d, 0x26a6, 0xaa5a, 0xbbbe, 0xb1df, 0xe0c5, 0xe7e8, 0x0197, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x9a9d, 0x009a, 0x9f00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c32, 0xaaae, 0xfdfe, 0xfeff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffb0, 0xdfe0, 0x0197, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c20, 0xa3a7, 0xfdfe, 0xfeff, 0xffff, 0xffff, 0xfffd, 0xfefe, 0x2da8, 0xad00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x9a9d, 0x009a, 0x9f00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c7a, 0xc8ca, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xfff7, 0xfcfc, 0x2aa7, 0xac00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c49, 0xb4b8, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x77c7, 0xca00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x9a9d, 0x009a, 0x9f00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9cad, 0xdddf, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xd0eb, 0xed17, 0x9fa4, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c97, 0xd4d6, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xa5da, 0xdc00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x9a9d, 0x009a, 0x9f00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0096, 0x9bc9, 0xe9ea, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffd8, 0xeff0, 0x33ab, 0xaf00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x169f, 0xa4ea, 0xf7f7, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xbbe3, 0xe400, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x9a9d, 0x009a, 0x9f00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0096, 0x9bc2, 0xe6e7, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xf6fb, 0xfc8b, 0xcfd1, 0x149f, 0xa300, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c04, 0x989d, 0xa8db, 0xddff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xbce3, 0xe500, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x9a9d, 0x009a, 0x9f00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c9a, 0xd5d7, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xedf8, 0xf88c, 0xd0d2, 0x2ba7, 0xac01, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x099a, 0x9f9f, 0xd8d9, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xb1df, 0xe100, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x9a9d, 0x009a, 0x9f00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c56, 0xb9bc, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xfbfe, 0xfec4, 0xe7e8, 0x6dc2, 0xc624, 0xa5aa, 0x0398, 0x9d00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c2d, 0xa8ad, 0xc9e9, 0xeaff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xa0d8, 0xda00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x9a9d, 0x009a, 0x9f00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c0e, 0x9ca1, 0xe5f4, 0xf5ff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xfffa, 0xfdfd, 0xd2ec, 0xed8f, 0xd1d3, 0x49b4, 0xb812, 0x9ea2, 0x0197, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c15, 0x9fa3, 0x91d2, 0xd3f6, 0xfcfc, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x8bce, 0xd100, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x9a9d, 0x009a, 0x9f00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x71c4, 0xc7ff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xfff6, 0xfbfc, 0xccea, 0xeb99, 0xd5d7, 0x66c0, 0xc337, 0xacb0, 0x109d, 0xa100, 0x969b, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c21, 0xa4a8, 0x8ace, 0xd1ed, 0xf8f8, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x69c1, 0xc400, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x9a9d, 0x009a, 0x9f00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0599, 0x9dbf, 0xe4e6, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xf5fb, 0xfbd5, 0xeeef, 0xa7da, 0xdc7c, 0xc9cb, 0x57ba, 0xbd33, 0xabaf, 0x159f, 0xa306, 0x999e, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0b9b, 0x9f49, 0xb4b8, 0xa9db, 0xddf8, 0xfcfc, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x3fb0, 0xb300, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x9a9d, 0x009a, 0x9f00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c1b, 0xa1a6, 0xdef1, 0xf2ff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xfffe, 0xffff, 0xf5fb, 0xfbe1, 0xf3f4, 0xc7e8, 0xe9a4, 0xd9db, 0x85cc, 0xcf65, 0xbfc2, 0x46b3, 0xb627, 0xa6aa, 0x159f, 0xa306, 0x999e, 0x0397, 0x9c01, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0397, 0x9c1c, 0xa1a6, 0x59bb, 0xbea5, 0xd9dc, 0xe6f5, 0xf5ff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xfff5, 0xfbfb, 0x109d, 0xa100, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x9a9d, 0x009a, 0x9f00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x27a6, 0xaadf, 0xf2f3, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xf8fc, 0xfced, 0xf8f8, 0xdef1, 0xf2c7, 0xe8e9, 0xb7e0, 0xe2a5, 0xd9db, 0x90d1, 0xd482, 0xcbcd, 0x76c6, 0xc967, 0xc0c3, 0x58bb, 0xbe51, 0xb7ba, 0x4cb4, 0xb844, 0xb2b5, 0x3daf, 0xb33a, 0xaeb2, 0x37ad, 0xb136, 0xacb0, 0x3daf, 0xb247, 0xb2b6, 0x55b9, 0xbd6e, 0xc3c6, 0x8ccf, 0xd2b2, 0xdfe1, 0xddf1, 0xf2fa, 0xfdfd, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffc4, 0xe7e8, 0x0197, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x9a9d, 0x009a, 0x9f00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c20, 0xa3a7, 0xd1ec, 0xedff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xff7b, 0xc8cb, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x9a9d, 0x009a, 0x9f00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x119d, 0xa2a6, 0xdadc, 0xfeff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xfcfe, 0xfe2b, 0xa8ac, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x9a9d, 0x009a, 0x9f00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c02, 0x989d, 0x62be, 0xc1eb, 0xf7f7, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xbde4, 0xe501, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x9a9d, 0x009a, 0x9f00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c1b, 0xa1a6, 0xa5da, 0xdbfb, 0xfdfd, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xfffd, 0xfefe, 0x45b2, 0xb600, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x9a9d, 0x009a, 0x9f00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0197, 0x9c3b, 0xaeb2, 0xc1e5, 0xe7fe, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffba, 0xe3e4, 0x0398, 0x9d00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x9a9d, 0x009a, 0x9f00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0398, 0x9d47, 0xb3b7, 0xbee4, 0xe6fe, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xf2fa, 0xfa2a, 0xa7ab, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x9a9d, 0x009a, 0x9f00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0197, 0x9c40, 0xb0b4, 0xafde, 0xe0f8, 0xfcfc, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xfffe, 0xffff, 0x69c1, 0xc400, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x9a9d, 0x009a, 0x9f00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0197, 0x9c25, 0xa5a9, 0x88ce, 0xd0e7, 0xf5f6, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xff92, 0xd2d4, 0x0298, 0x9d00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x9a9d, 0x009a, 0x9f00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c0b, 0x9ba0, 0x56b9, 0xbdb0, 0xdee0, 0xf5fb, 0xfbff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x9dd6, 0xd806, 0x999e, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x9a9d, 0x009a, 0x9f00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x169f, 0xa46c, 0xc2c5, 0xbce3, 0xe5f5, 0xfbfb, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xfdfe, 0xfe8b, 0xcfd2, 0x0397, 0x9d00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x9a9d, 0x009a, 0x9f00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0197, 0x9c19, 0xa0a5, 0x5fbd, 0xc0b2, 0xdfe1, 0xeff9, 0xf9ff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffe9, 0xf6f7, 0x53b8, 0xbb01, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x9a9d, 0x009a, 0x9f00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0f9c, 0xa14a, 0xb4b8, 0x8fd0, 0xd2d0, 0xeced, 0xfbfd, 0xfdff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xfffb, 0xfefe, 0x9ed7, 0xd91a, 0xa1a5, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x9a9d, 0x009a, 0x9f00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c01, 0x979c, 0x1da2, 0xa65e, 0xbdc0, 0x9ad5, 0xd7d2, 0xeded, 0xf7fc, 0xfcff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xfff6, 0xfbfc, 0xabdc, 0xde33, 0xabaf, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x9a9d, 0x009a, 0x9f00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c03, 0x989d, 0x19a0, 0xa54a, 0xb4b8, 0x85cc, 0xcfc2, 0xe6e7, 0xedf8, 0xf8fd, 0xfefe, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xfdfe, 0xfed7, 0xeff0, 0x7cc8, 0xcb20, 0xa3a7, 0x0197, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x9a9d, 0x009a, 0x9f00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x969b, 0x0b9a, 0x9f2e, 0xa9ad, 0x5ebd, 0xbf8c, 0xcfd1, 0xb9e2, 0xe3e4, 0xf4f5, 0xfbfe, 0xfeff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xfdff, 0xffe5, 0xf4f5, 0xafde, 0xdf70, 0xc3c7, 0x2ea9, 0xad04, 0x989d, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x999d, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c02, 0x979c, 0x179f, 0xa43e, 0xafb3, 0x62be, 0xc185, 0xcccf, 0xa3d9, 0xdbbe, 0xe4e5, 0xd1ec, 0xede1, 0xf3f4, 0xebf7, 0xf7ee, 0xf8f8, 0xeef8, 0xf8ed, 0xf8f8, 0xeaf6, 0xf7e0, 0xf3f3, 0xd2ed, 0xeec4, 0xe6e7, 0xafde, 0xdf92, 0xd2d4, 0x71c4, 0xc74b, 0xb4b8, 0x1fa2, 0xa704, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x989b, 0x0097, 0x9d00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0297, 0x9c06, 0x989d, 0x0899, 0x9e09, 0x999e, 0x099a, 0x9f09, 0x999e, 0x0899, 0x9d06, 0x989d, 0x0397, 0x9d00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979d, 0x0098, 0x9d00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979d, 0x009a, 0x9d00, 0x989d, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979d, 0x007f, 0x7f00, 0x969e, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9f00, 0x0000, 0x0000, 0x0000, 0x9a9f, 0x0099, 0x9b00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x989c, 0x0094, 0x9f00, 0x0000, 0x0000, 0x0000, 0x0000, 0x009b, 0x9e00, 0x969c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0096, 0x9e00, 0x979b, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x989c, 0x0098, 0x9e00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x999e, 0x0097, 0x9d00, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0099, 0x9900, 0x9a9e, 0x0097, 0x9e00, 0x989d, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0097, 0x9c00, 0x979c, 0x0098, 0x9d00, 0x989c, 0x0099, 0x9e00, 0x9494, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000'), 'TEXT'); + .appendField(new Blockly.FieldTextInput(''), 'TEXT'); this.setPreviousStatement(true); this.setNextStatement(true); this.setTooltip(Blockly.Msg.OLED_DEF_BMP_DATA_TOOLTIP); @@ -2258,7 +2352,6 @@ export const tft_showBitmap = { } }; - export const tft_drawPixel = { init: function () { this.setColour(DISPLAY_HUE); @@ -2492,7 +2585,6 @@ export const tft_Circle = { } }; - //显示-OLED-设置字体 export const tft_set_EN_Font = { init: function () { @@ -2514,6 +2606,7 @@ export const tft_set_EN_Font = { this.setTooltip(Blockly.Msg.oled_setFont_tooltip); } }; + //显示-OLED-设置字体 export const tft_set_CN_Font = { init: function () { @@ -2533,7 +2626,6 @@ export const tft_set_CN_Font = { } }; - //显示-TFT-设置图标 export const tft_icons = { init: function () { @@ -2677,9 +2769,12 @@ export const display_TM1637_displayTime_32 = { this.appendDummyInput("") .appendField(Blockly.Msg.MIXLY_MINUTE); // .appendField(new Blockly.FieldDropdown([[Blockly.Msg.MIXLY_ON, "displayOn"], [Blockly.Msg.MIXLY_OFF, "displayOff"], [Blockly.Msg.MIXLY_LCD_STAT_CLEAR, "clear"]]), "STAT"); - this.appendDummyInput("").appendField(Blockly.Msg.MIXLY_DISPLAY_TM1637_Time_Point).appendField(new Blockly.FieldDropdown([[Blockly.Msg.MIXLY_ON, "(0x80 >> 1)"], [Blockly.Msg.MIXLY_OFF, "(0x80 >> 2)"]]), "STAT"); - - + this.appendDummyInput("") + .appendField(Blockly.Msg.MIXLY_DISPLAY_TM1637_Time_Point) + .appendField(new Blockly.FieldDropdown([ + [Blockly.Msg.MIXLY_ON, "(0x80 >> 1)"], + [Blockly.Msg.MIXLY_OFF, "(0x80 >> 2)"] + ]), "STAT"); this.setInputsInline(true); this.setPreviousStatement(true, null); this.setNextStatement(true, null); diff --git a/boards/default_src/arduino_avr/blocks/ethernet.js b/boards/default_src/arduino_avr/blocks/ethernet.js index 5900014a..f55834a1 100644 --- a/boards/default_src/arduino_avr/blocks/ethernet.js +++ b/boards/default_src/arduino_avr/blocks/ethernet.js @@ -7,7 +7,10 @@ export const ethernet_init_begin = { this.setColour(ETHERNET_HUE); this.appendDummyInput() .appendField(Blockly.Msg.MIXLY_ETHERNET_BEGIN) - .appendField(new Blockly.FieldDropdown([[Blockly.Msg.MIXLY_ETHERNET, 'Ethernet'], [Blockly.Msg.MIXLY_ETHERNET2, 'Ethernet2']]), "Ethernet"); + .appendField(new Blockly.FieldDropdown([ + [Blockly.Msg.MIXLY_ETHERNET, 'Ethernet'], + [Blockly.Msg.MIXLY_ETHERNET2, 'Ethernet2'] + ]), "Ethernet"); this.appendValueInput('MAC') .setCheck(Array) .setAlign(Blockly.inputs.Align.RIGHT) @@ -35,7 +38,7 @@ export const ethernet_mac_address = { this.setOutput(true, Array); this.setTooltip(Blockly.Msg.MIXLY_TOOLTIP_ETHERNET_MACADDRESS); } -} +}; export const ethernet_init_local_ip = { init: function () { @@ -167,8 +170,7 @@ export const ethernet_client_get_request = { } return new Blockly.FieldImage(file, 12, 12, '"'); } -} - +}; export const NTP_server = { init: function () { @@ -190,16 +192,7 @@ export const NTP_server = { this.setHelpUrl(); } }; -//传感器-实时时钟块_时间变量 -var NTP_TIME_TYPE = [ - [Blockly.Msg.MIXLY_YEAR, "NTP.getDateYear()"], - [Blockly.Msg.MIXLY_MONTH, "NTP.getDateMonth()"], - [Blockly.Msg.MIXLY_DAY, "NTP.getDateDay()"], - [Blockly.Msg.MIXLY_HOUR, "NTP.getTimeHour24()"], - [Blockly.Msg.MIXLY_MINUTE, "NTP.getTimeMinute()"], - [Blockly.Msg.MIXLY_SECOND, "NTP.getTimeSecond()"], - [Blockly.Msg.MIXLY_WEEK, "NTP.getDateWeekday()"] -]; + //传感器-实时时钟块_获取时间 export const NTP_server_get_time = { init: function () { @@ -209,10 +202,19 @@ export const NTP_server_get_time = { .appendField(Blockly.Msg.NTP_server_get_time); this.appendDummyInput("") .setAlign(Blockly.inputs.Align.RIGHT) - .appendField(new Blockly.FieldDropdown(NTP_TIME_TYPE), "TIME_TYPE"); + .appendField(new Blockly.FieldDropdown(this.NTP_TIME_TYPE), "TIME_TYPE"); this.setInputsInline(true); this.setOutput(true, Number); - } + }, + NTP_TIME_TYPE: [ + [Blockly.Msg.MIXLY_YEAR, "NTP.getDateYear()"], + [Blockly.Msg.MIXLY_MONTH, "NTP.getDateMonth()"], + [Blockly.Msg.MIXLY_DAY, "NTP.getDateDay()"], + [Blockly.Msg.MIXLY_HOUR, "NTP.getTimeHour24()"], + [Blockly.Msg.MIXLY_MINUTE, "NTP.getTimeMinute()"], + [Blockly.Msg.MIXLY_SECOND, "NTP.getTimeSecond()"], + [Blockly.Msg.MIXLY_WEEK, "NTP.getDateWeekday()"] + ] }; export const MQTT_server = { @@ -315,7 +317,8 @@ export const MQTT_connect = { this.setTooltip(); } }; -var Topic_validator = function (newValue) { + +const Topic_validator = function (newValue) { return newValue.replace(/\//g, ''); }; @@ -352,6 +355,7 @@ export const MQTT_subscribe_value = { this.setOutput(true, String); } }; + export const MQTT_add_subscribe_topic = { /** * Mutator bolck for else-if condition. @@ -487,7 +491,6 @@ export const MQTT_subscribe = { clauseBlock = clauseBlock.nextConnection && clauseBlock.nextConnection.targetBlock(); } - this.updateShape_(); // Reconnect any child blocks. this.reconnectChildBlocks_(statementConnections); @@ -612,7 +615,10 @@ export const WIFI_smartConfig = { this.setColour(ETHERNET_HUE); this.appendDummyInput() .appendField(Blockly.Msg.blynk_smartconfig) - .appendField(new Blockly.FieldDropdown([["SmartConfig", 'SmartConfig'], ["AP", 'AP']]), "MODE"); + .appendField(new Blockly.FieldDropdown([ + ["SmartConfig", 'SmartConfig'], + ["AP", 'AP'] + ]), "MODE"); this.setInputsInline(true); this.setPreviousStatement(true, null);//可上下连接 this.setNextStatement(true, null); @@ -695,7 +701,10 @@ export const WIFI_incomingPacket = { init: function () { this.appendDummyInput() .appendField(new Blockly.FieldImage(require('../media/blynk/wifi_udp.png'), 25, 25, "*")) - .appendField(Blockly.Msg.CONTROLS_IF_MSG_IF + " WIFI UDP " + Blockly.Msg.MIXLY_STM32_SPI_DATA_RECEIVED + "?") + .appendField( + Blockly.Msg.CONTROLS_IF_MSG_IF + " WIFI UDP " + + Blockly.Msg.MIXLY_STM32_SPI_DATA_RECEIVED + "?" + ) this.appendValueInput("input_data") .setCheck(null) .appendField(Blockly.Msg.PROCEDURES_CALL_BEFORE_PARAMS); diff --git a/boards/default_src/arduino_avr/blocks/factory.js b/boards/default_src/arduino_avr/blocks/factory.js index 4b4cfe67..39de28c9 100644 --- a/boards/default_src/arduino_avr/blocks/factory.js +++ b/boards/default_src/arduino_avr/blocks/factory.js @@ -175,7 +175,8 @@ export const factory_declare = { this.setPreviousStatement(true); this.setNextStatement(true); } -} +}; + export const factory_declare2 = { init: function () { this.setColour(FACTORY_HUE); @@ -185,6 +186,7 @@ export const factory_declare2 = { this.setNextStatement(true); } }; + export const factory_define = { init: function () { this.setColour(FACTORY_HUE); @@ -195,7 +197,8 @@ export const factory_define = { this.setPreviousStatement(true); this.setNextStatement(true); } -} +}; + export const factory_static_method_noreturn = { init: function () { this.setColour(FACTORY_HUE); @@ -216,7 +219,7 @@ export const factory_static_method_noreturn = { compose: factory_function_noreturn.compose, saveConnections: factory_function_noreturn.saveConnections, updateShape_: factory_function_noreturn.updateShape_ -} +}; export const factory_static_method_return = { init: function () { @@ -237,7 +240,7 @@ export const factory_static_method_return = { compose: factory_function_noreturn.compose, saveConnections: factory_function_noreturn.saveConnections, updateShape_: factory_function_noreturn.updateShape_ -} +}; export const factory_callMethod_noreturn = { init: function () { @@ -318,4 +321,4 @@ export const factory_block_return_with_textarea = { .appendField(new Blockly.FieldMultilineInput('Hello\nMixly'), 'VALUE'); this.setOutput(true); } -}; +}; \ No newline at end of file diff --git a/boards/default_src/arduino_avr/blocks/inout.js b/boards/default_src/arduino_avr/blocks/inout.js index 8afedf80..f9841c1f 100644 --- a/boards/default_src/arduino_avr/blocks/inout.js +++ b/boards/default_src/arduino_avr/blocks/inout.js @@ -7,7 +7,10 @@ export const inout_highlow = { init: function () { this.setColour(BASE_HUE); this.appendDummyInput("") - .appendField(new Blockly.FieldDropdown([[Blockly.Msg.MIXLY_HIGH, "HIGH"], [Blockly.Msg.MIXLY_LOW, "LOW"]]), 'BOOL') + .appendField(new Blockly.FieldDropdown([ + [Blockly.Msg.MIXLY_HIGH, "HIGH"], + [Blockly.Msg.MIXLY_LOW, "LOW"] + ]), 'BOOL') this.setOutput(true, Boolean); this.setTooltip(Blockly.Msg.MIXLY_TOOLTIP_INOUT_HIGHLOW); } @@ -21,7 +24,11 @@ export const inout_pinMode = { .setCheck(Number); this.appendDummyInput("") .appendField(Blockly.Msg.MIXLY_STAT) - .appendField(new Blockly.FieldDropdown([[Blockly.Msg.MIXLY_PINMODEIN, "INPUT"], [Blockly.Msg.MIXLY_PINMODEOUT, "OUTPUT"], [Blockly.Msg.MIXLY_PINMODEPULLUP, "INPUT_PULLUP"]]), "MODE") + .appendField(new Blockly.FieldDropdown([ + [Blockly.Msg.MIXLY_PINMODEIN, "INPUT"], + [Blockly.Msg.MIXLY_PINMODEOUT, "OUTPUT"], + [Blockly.Msg.MIXLY_PINMODEPULLUP, "INPUT_PULLUP"] + ]), "MODE") this.setPreviousStatement(true, null); this.setNextStatement(true, null); this.setInputsInline(true); @@ -29,7 +36,6 @@ export const inout_pinMode = { } }; - export const inout_digital_write2 = { init: function () { this.setColour(BASE_HUE); @@ -108,7 +114,10 @@ export const inout_buildin_led = { this.appendDummyInput("") .appendField(Blockly.Msg.MIXLY_BUILDIN_LED) .appendField(Blockly.Msg.MIXLY_STAT) - .appendField(new Blockly.FieldDropdown([[Blockly.Msg.MIXLY_ON, "HIGH"], [Blockly.Msg.MIXLY_OFF, "LOW"]]), "STAT"); + .appendField(new Blockly.FieldDropdown([ + [Blockly.Msg.MIXLY_ON, "HIGH"], + [Blockly.Msg.MIXLY_OFF, "LOW"] + ]), "STAT"); this.setPreviousStatement(true, null); this.setNextStatement(true, null); this.setTooltip('light or off the build-in LED'); @@ -122,7 +131,13 @@ export const OneButton_interrupt = { .appendField(Blockly.Msg.ONEBUTTON + " " + Blockly.Msg.MIXLY_PIN) .setCheck(Number); this.appendDummyInput("") - .appendField(new Blockly.FieldDropdown([[Blockly.Msg.MIXLY_CLICK, "attachClick"], [Blockly.Msg.MIXLY_DOUBLE_CLICK, "attachDoubleClick"], [Blockly.Msg.MIXLY_LONG_PRESS_START, "attachLongPressStart"], [Blockly.Msg.MIXLY_DURING_LONG_PRESS, "attachDuringLongPress"], [Blockly.Msg.MIXLY_LONG_PRESS_END, "attachLongPressStop"]]), "mode"); + .appendField(new Blockly.FieldDropdown([ + [Blockly.Msg.MIXLY_CLICK, "attachClick"], + [Blockly.Msg.MIXLY_DOUBLE_CLICK, "attachDoubleClick"], + [Blockly.Msg.MIXLY_LONG_PRESS_START, "attachLongPressStart"], + [Blockly.Msg.MIXLY_DURING_LONG_PRESS, "attachDuringLongPress"], + [Blockly.Msg.MIXLY_LONG_PRESS_END, "attachLongPressStop"] + ]), "mode"); this.appendValueInput("STAT") .appendField(Blockly.Msg.MIXLY_ELECLEVEL); this.appendStatementInput('DO') @@ -141,7 +156,11 @@ export const controls_attachInterrupt = { .setCheck(Number); this.appendDummyInput("") .appendField(Blockly.Msg.MIXLY_MODE) - .appendField(new Blockly.FieldDropdown([[Blockly.Msg.MIXLY_RISING, "RISING"], [Blockly.Msg.MIXLY_FALLING, "FALLING"], [Blockly.Msg.MIXLY_CHANGE, "CHANGE"]]), "mode"); + .appendField(new Blockly.FieldDropdown([ + [Blockly.Msg.MIXLY_RISING, "RISING"], + [Blockly.Msg.MIXLY_FALLING, "FALLING"], + [Blockly.Msg.MIXLY_CHANGE, "CHANGE"] + ]), "mode"); this.appendStatementInput('DO') .appendField(Blockly.Msg.MIXLY_DO); this.setPreviousStatement(true); @@ -173,7 +192,11 @@ export const controls_attachPinInterrupt = { .setCheck(Number); this.appendDummyInput("") .appendField(Blockly.Msg.MIXLY_MODE) - .appendField(new Blockly.FieldDropdown([[Blockly.Msg.MIXLY_RISING, "RISING"], [Blockly.Msg.MIXLY_FALLING, "FALLING"], [Blockly.Msg.MIXLY_CHANGE, "CHANGE"]]), "mode"); + .appendField(new Blockly.FieldDropdown([ + [Blockly.Msg.MIXLY_RISING, "RISING"], + [Blockly.Msg.MIXLY_FALLING, "FALLING"], + [Blockly.Msg.MIXLY_CHANGE, "CHANGE"] + ]), "mode"); this.appendStatementInput('DO') .appendField(Blockly.Msg.MIXLY_DO); this.setPreviousStatement(true); @@ -202,7 +225,10 @@ export const inout_pulseIn = { .setCheck(Number); this.appendDummyInput("") .appendField(Blockly.Msg.MIXLY_PULSEIN_STAT) - .appendField(new Blockly.FieldDropdown([[Blockly.Msg.MIXLY_HIGH, "HIGH"], [Blockly.Msg.MIXLY_LOW, "LOW"]]), "STAT"); + .appendField(new Blockly.FieldDropdown([ + [Blockly.Msg.MIXLY_HIGH, "HIGH"], + [Blockly.Msg.MIXLY_LOW, "LOW"] + ]), "STAT"); this.setOutput(true, Number); this.setTooltip(Blockly.Msg.MIXLY_TOOLTIP_INOUT_pulseIn); this.setHelpUrl("https://mixly.readthedocs.io/zh_CN/latest/arduino/02.Input-Output.html#id33"); @@ -217,7 +243,10 @@ export const inout_pulseIn2 = { .setCheck(Number); this.appendDummyInput("") .appendField(Blockly.Msg.MIXLY_PULSEIN_STAT) - .appendField(new Blockly.FieldDropdown([[Blockly.Msg.MIXLY_HIGH, "HIGH"], [Blockly.Msg.MIXLY_LOW, "LOW"]]), "STAT"); + .appendField(new Blockly.FieldDropdown([ + [Blockly.Msg.MIXLY_HIGH, "HIGH"], + [Blockly.Msg.MIXLY_LOW, "LOW"] + ]), "STAT"); this.appendValueInput("TIMEOUT", Number) .appendField(Blockly.Msg.MIXLY_PULSEIN_TIMEOUT) .setCheck(Number); @@ -241,7 +270,10 @@ export const inout_shiftout = { .setCheck(Number); this.appendDummyInput("") .appendField(Blockly.Msg.MIXLY_BITORDER) - .appendField(new Blockly.FieldDropdown([[Blockly.Msg.MIXLY_MSBFIRST, "MSBFIRST"], [Blockly.Msg.MIXLY_LSBFIRST, "LSBFIRST"]]), "ORDER"); + .appendField(new Blockly.FieldDropdown([ + [Blockly.Msg.MIXLY_MSBFIRST, "MSBFIRST"], + [Blockly.Msg.MIXLY_LSBFIRST, "LSBFIRST"] + ]), "ORDER"); this.appendValueInput("DATA", Number) .appendField(Blockly.Msg.MIXLY_DATA) .setCheck(Number); @@ -253,7 +285,6 @@ export const inout_shiftout = { } }; - export const ESP32touchButton = { init: function () { this.setColour(BASE_HUE); @@ -262,7 +293,13 @@ export const ESP32touchButton = { .setCheck(Number); this.appendDummyInput("") .appendField(Blockly.Msg.MIXLY_MODE) - .appendField(new Blockly.FieldDropdown([[Blockly.Msg.MIXLY_CLICK, "attachClick"], [Blockly.Msg.MIXLY_DOUBLE_CLICK, "attachDoubleClick"], [Blockly.Msg.MIXLY_LONG_PRESS_START, "attachLongPressStart"], [Blockly.Msg.MIXLY_DURING_LONG_PRESS, "attachDuringLongPress"], [Blockly.Msg.MIXLY_LONG_PRESS_END, "attachLongPressStop"]]), "mode"); + .appendField(new Blockly.FieldDropdown([ + [Blockly.Msg.MIXLY_CLICK, "attachClick"], + [Blockly.Msg.MIXLY_DOUBLE_CLICK, "attachDoubleClick"], + [Blockly.Msg.MIXLY_LONG_PRESS_START, "attachLongPressStart"], + [Blockly.Msg.MIXLY_DURING_LONG_PRESS, "attachDuringLongPress"], + [Blockly.Msg.MIXLY_LONG_PRESS_END, "attachLongPressStop"] + ]), "mode"); this.appendStatementInput('DO') .appendField(Blockly.Msg.MIXLY_DO); this.setTooltip(); @@ -301,45 +338,62 @@ export const inout_cancel_soft_analog_write = { } }; -//ADS1015模拟数字转换模块-获取数据 -var ADS1015_setGain_type = [ - ["±6.144V 3mv/bit", "GAIN_TWOTHIRDS"], - ["±4.096V 2mv/bit", "GAIN_ONE"], - ["±2.048V 1mv/bit", "GAIN_TWO"], - ["±1.024V 0.5mv/bit", "GAIN_FOUR"], - ["±0.512V 0.25mv/bit", "GAIN_EIGHT"], - ["±0.256V 0.125mv/bit", "GAIN_SIXTEEN"], -]; - //ADS1015模拟数字转换模块-增益设置 export const ADS1015_setGain = { init: function () { this.setColour(BASE_HUE); - this.appendDummyInput("").appendField(Blockly.Msg.MIXLY_SETTING).appendField(Blockly.Msg.ADS1015_setGain); - this.appendDummyInput("").setAlign(Blockly.inputs.Align.RIGHT).appendField(new Blockly.FieldDropdown(ADS1015_setGain_type), "ADS1015_setGain"); + this.appendDummyInput("") + .appendField(Blockly.Msg.MIXLY_SETTING) + .appendField(Blockly.Msg.ADS1015_setGain); + this.appendDummyInput("") + .setAlign(Blockly.inputs.Align.RIGHT) + .appendField(new Blockly.FieldDropdown(this.GAIN_TYPE), "ADS1015_setGain"); this.setInputsInline(true); this.setPreviousStatement(true, null); this.setNextStatement(true, null); this.setTooltip(); - } + }, + GAIN_TYPE: [ + ["±6.144V 3mv/bit", "GAIN_TWOTHIRDS"], + ["±4.096V 2mv/bit", "GAIN_ONE"], + ["±2.048V 1mv/bit", "GAIN_TWO"], + ["±1.024V 0.5mv/bit", "GAIN_FOUR"], + ["±0.512V 0.25mv/bit", "GAIN_EIGHT"], + ["±0.256V 0.125mv/bit", "GAIN_SIXTEEN"], + ] }; //ADS1015模拟数字转换模块 数值获取 export const ADS1015_Get_Value = { init: function () { this.setColour(BASE_HUE); - this.appendDummyInput("").appendField("ADS1015" + Blockly.Msg.ADS1015_Get_Value); - this.appendDummyInput("").appendField(new Blockly.FieldDropdown([["AIN0", "ads.readADC_SingleEnded(0)"], ["AIN1", "ads.readADC_SingleEnded(1)"], ["AIN2", "ads.readADC_SingleEnded(2)"], ["AIN3", "ads.readADC_SingleEnded(3)"]]), "ADS1015_AIN"); + this.appendDummyInput("") + .appendField("ADS1015" + Blockly.Msg.ADS1015_Get_Value); + this.appendDummyInput("") + .appendField(new Blockly.FieldDropdown([ + ["AIN0", "ads.readADC_SingleEnded(0)"], + ["AIN1", "ads.readADC_SingleEnded(1)"], + ["AIN2", "ads.readADC_SingleEnded(2)"], + ["AIN3", "ads.readADC_SingleEnded(3)"] + ]), "ADS1015_AIN"); this.setInputsInline(true); this.setOutput(true); } }; + //PCF8591T模拟数字转换模块 数值获取 export const PCF8591T = { init: function () { this.setColour(BASE_HUE); - this.appendDummyInput("").appendField("PCF8591T" + Blockly.Msg.ADS1015_Get_Value); - this.appendDummyInput("").appendField(new Blockly.FieldDropdown([["AIN0", "pcf8591.analogRead(AIN0)"], ["AIN1", "pcf8591.analogRead(AIN1)"], ["AIN2", "pcf8591.analogRead(AIN2)"], ["AIN3", "pcf8591.analogRead(AIN3)"]]), "PCF8591T_AIN"); + this.appendDummyInput("") + .appendField("PCF8591T" + Blockly.Msg.ADS1015_Get_Value); + this.appendDummyInput("") + .appendField(new Blockly.FieldDropdown([ + ["AIN0", "pcf8591.analogRead(AIN0)"], + ["AIN1", "pcf8591.analogRead(AIN1)"], + ["AIN2", "pcf8591.analogRead(AIN2)"], + ["AIN3", "pcf8591.analogRead(AIN3)"] + ]), "PCF8591T_AIN"); this.setInputsInline(true); this.setOutput(true); } diff --git a/boards/default_src/arduino_avr/blocks/lists.js b/boards/default_src/arduino_avr/blocks/lists.js index 15320741..39f48709 100644 --- a/boards/default_src/arduino_avr/blocks/lists.js +++ b/boards/default_src/arduino_avr/blocks/lists.js @@ -175,7 +175,7 @@ export const lists_create_with_text = { } return new Blockly.FieldImage(file, 12, 12, '"'); } -} +}; export const lists_create_with2 = { /** @@ -577,6 +577,7 @@ export const lists_array2_setup = { this.setHelpUrl(""); } }; + export const lists_array2_setup_get_data = { /** * Block for creating a list with any number of elements of any type. @@ -720,10 +721,14 @@ export const loop_array = { init: function () { this.appendValueInput("name") .setCheck(null) - .appendField(Blockly.Msg.MIXLY_MICROBIT_PY_CONTORL_GET_TYPE).appendField(new Blockly.FieldDropdown(DATATYPES), "TYPE") + .appendField(Blockly.Msg.MIXLY_MICROBIT_PY_CONTORL_GET_TYPE) + .appendField(new Blockly.FieldDropdown(DATATYPES), "TYPE") .appendField(Blockly.Msg.MIXLY_LIST_NAME); this.appendDummyInput() - .appendField(new Blockly.FieldDropdown([[Blockly.Msg.LEFT_CYCLE, "0"], [Blockly.Msg.RIGHT_CYCLE, "1"]]), "mode"); + .appendField(new Blockly.FieldDropdown([ + [Blockly.Msg.LEFT_CYCLE, "0"], + [Blockly.Msg.RIGHT_CYCLE, "1"] + ]), "mode"); this.setPreviousStatement(true, null); this.setNextStatement(true, null); this.setColour(LISTS_HUE); @@ -739,7 +744,10 @@ export const lists_array2_get_length = { .appendField(Blockly.Msg.MIXLY_ARRAY2) .appendField(new Blockly.FieldTextInput("mylist"), "list_name") .appendField(" " + Blockly.Msg.MIXLY_GET) - .appendField(new Blockly.FieldDropdown([[Blockly.Msg.array2_rows, "row"], [Blockly.Msg.array2_cols, "col"]]), "type"); + .appendField(new Blockly.FieldDropdown([ + [Blockly.Msg.array2_rows, "row"], + [Blockly.Msg.array2_cols, "col"] + ]), "type"); this.setInputsInline(true); this.setOutput(true, null); this.setColour(LISTS_HUE); diff --git a/boards/default_src/arduino_avr/blocks/logic.js b/boards/default_src/arduino_avr/blocks/logic.js index 9239b686..0c7f4c70 100644 --- a/boards/default_src/arduino_avr/blocks/logic.js +++ b/boards/default_src/arduino_avr/blocks/logic.js @@ -133,7 +133,6 @@ export const logic_null = { } }; - export const logic_true_or_false = { init: function () { this.setColour(LOGIC_HUE); @@ -146,4 +145,4 @@ export const logic_true_or_false = { this.setInputsInline(true); this.setTooltip(Blockly.Msg.MIXLY_TOOLTIP_LOGIT_TRUEORFALSE); } -}; +}; \ No newline at end of file diff --git a/boards/default_src/arduino_avr/blocks/math.js b/boards/default_src/arduino_avr/blocks/math.js index 4cc346d1..9473570c 100644 --- a/boards/default_src/arduino_avr/blocks/math.js +++ b/boards/default_src/arduino_avr/blocks/math.js @@ -29,14 +29,6 @@ export const math_arithmetic = { * @this Blockly.Block */ init: function () { - var OPERATORS = [ - [Blockly.Msg.MATH_ADDITION_SYMBOL, 'ADD'], - [Blockly.Msg.MATH_SUBTRACTION_SYMBOL, 'MINUS'], - [Blockly.Msg.MATH_MULTIPLICATION_SYMBOL, 'MULTIPLY'], - [Blockly.Msg.MATH_DIVISION_SYMBOL, 'DIVIDE'], - [Blockly.Msg.MATH_QUYU_SYMBOL, 'QUYU'], - [Blockly.Msg.MATH_POWER_SYMBOL, 'POWER'] - ]; //this.setHelpUrl(Blockly.Msg.MATH_ARITHMETIC_HELPURL); this.setColour(MATH_HUE); this.setOutput(true, Number); @@ -45,7 +37,7 @@ export const math_arithmetic = { this.setHelpUrl("https://mixly.readthedocs.io/zh_CN/latest/arduino/04.Mathematics.html#id4"); this.appendValueInput('B') .setCheck(null) - .appendField(new Blockly.FieldDropdown(OPERATORS), 'OP'); + .appendField(new Blockly.FieldDropdown(this.OPERATORS), 'OP'); this.setInputsInline(true); // Assign 'this' to a variable for use in the tooltip closure below. var thisBlock = this; @@ -61,29 +53,37 @@ export const math_arithmetic = { }; return TOOLTIPS[mode]; }); - } + }, + OPERATORS: [ + [Blockly.Msg.MATH_ADDITION_SYMBOL, 'ADD'], + [Blockly.Msg.MATH_SUBTRACTION_SYMBOL, 'MINUS'], + [Blockly.Msg.MATH_MULTIPLICATION_SYMBOL, 'MULTIPLY'], + [Blockly.Msg.MATH_DIVISION_SYMBOL, 'DIVIDE'], + [Blockly.Msg.MATH_QUYU_SYMBOL, 'QUYU'], + [Blockly.Msg.MATH_POWER_SYMBOL, 'POWER'] + ] }; export const math_bit = { init: function () { - var OPERATORS = [ - ['&', '&'], - ['|', '|'], - ['xor', '^'], - ['>>', '>>'], - ['<<', '<<'] - ]; this.setColour(MATH_HUE); this.setOutput(true, Number); this.appendValueInput('A') .setCheck(Number); this.appendValueInput('B') .setCheck(Number) - .appendField(new Blockly.FieldDropdown(OPERATORS), 'OP'); + .appendField(new Blockly.FieldDropdown(this.OPERATORS), 'OP'); this.setInputsInline(true); this.setTooltip(""); this.setHelpUrl("https://mixly.readthedocs.io/zh_CN/latest/arduino/04.Mathematics.html#id8"); - } + }, + OPERATORS: [ + ['&', '&'], + ['|', '|'], + ['xor', '^'], + ['>>', '>>'], + ['<<', '<<'] + ] }; export const math_trig = { @@ -92,27 +92,12 @@ export const math_trig = { * @this Blockly.Block */ init: function () { - var OPERATORS = [ - ['sin', 'SIN'], - ['cos', 'COS'], - ['tan', 'TAN'], - ['asin', 'ASIN'], - ['acos', 'ACOS'], - ['atan', 'ATAN'], - ['ln', 'LN'], - ['log10', 'LOG10'], - ['e^', 'EXP'], - ['10^', 'POW10'], - ['++', '++'], - ['--', '--'], - ['~', '~'], - ]; //this.setHelpUrl(Blockly.Msg.MATH_TRIG_HELPURL); this.setColour(MATH_HUE); this.setOutput(true, Number); this.appendValueInput('NUM') .setCheck(Number) - .appendField(new Blockly.FieldDropdown(OPERATORS), 'OP'); + .appendField(new Blockly.FieldDropdown(this.OPERATORS), 'OP'); // Assign 'this' to a variable for use in the tooltip closure below. var thisBlock = this; this.setHelpUrl("https://mixly.readthedocs.io/zh_CN/latest/arduino/04.Mathematics.html#id17"); @@ -128,24 +113,31 @@ export const math_trig = { }; return TOOLTIPS[mode]; }); - } + }, + OPERATORS: [ + ['sin', 'SIN'], + ['cos', 'COS'], + ['tan', 'TAN'], + ['asin', 'ASIN'], + ['acos', 'ACOS'], + ['atan', 'ATAN'], + ['ln', 'LN'], + ['log10', 'LOG10'], + ['e^', 'EXP'], + ['10^', 'POW10'], + ['++', '++'], + ['--', '--'], + ['~', '~'], + ] }; //取整等 export const math_to_int = { init: function () { - var OPERATORS = [ - [Blockly.Msg.LANG_MATH_TO_ROUND, 'round'], - [Blockly.Msg.LANG_MATH_TO_CEIL, 'ceil'], - [Blockly.Msg.LANG_MATH_TO_FLOOR, 'floor'], - [Blockly.Msg.MATH_ABS, 'abs'], - [Blockly.Msg.MATH_SQ, 'sq'], - [Blockly.Msg.MATH_SQRT, 'sqrt'] - ]; this.setColour(MATH_HUE); this.appendValueInput('A') .setCheck(Number) - .appendField(new Blockly.FieldDropdown(OPERATORS), 'OP'); + .appendField(new Blockly.FieldDropdown(this.OPERATORS), 'OP'); this.setOutput(true, Number); this.setHelpUrl("https://mixly.readthedocs.io/zh_CN/latest/arduino/04.Mathematics.html#id18"); var thisBlock = this; @@ -162,37 +154,47 @@ export const math_to_int = { }; return TOOLTIPS[mode]; }); - } + }, + OPERATORS: [ + [Blockly.Msg.LANG_MATH_TO_ROUND, 'round'], + [Blockly.Msg.LANG_MATH_TO_CEIL, 'ceil'], + [Blockly.Msg.LANG_MATH_TO_FLOOR, 'floor'], + [Blockly.Msg.MATH_ABS, 'abs'], + [Blockly.Msg.MATH_SQ, 'sq'], + [Blockly.Msg.MATH_SQRT, 'sqrt'] + ] }; + //变量定义 export const arduino_variate_type = { init: function () { - var DATATYPES = [ - [Blockly.Msg.LANG_MATH_INT, 'int'], - [Blockly.Msg.LANG_MATH_UNSIGNED_INT, 'unsigned int'], - [Blockly.Msg.LANG_MATH_WORD, 'word'], - [Blockly.Msg.LANG_MATH_LONG, 'long'], - [Blockly.Msg.LANG_MATH_UNSIGNED_LONG, 'unsigned long'], - [Blockly.Msg.LANG_MATH_FLOAT, 'float'], - [Blockly.Msg.LANG_MATH_DOUBLE, 'double'], - [Blockly.Msg.LANG_MATH_BOOLEAN, 'boolean'], - [Blockly.Msg.LANG_MATH_BYTE, 'byte'], - [Blockly.Msg.LANG_MATH_CHAR, 'char'], - [Blockly.Msg.LANG_MATH_UNSIGNED_CHAR, 'unsigned char'], - [Blockly.Msg.LANG_MATH_STRING, 'String'], - ["uint8_t", "uint8_t"], - ["uint16_t", "uint16_t"], - ["uint32_t", "uint32_t"], - ["uint64_t", "uint64_t"] - ]; this.appendDummyInput() - .appendField(new Blockly.FieldDropdown(DATATYPES), "variate_type"); + .appendField(new Blockly.FieldDropdown(this.DATATYPES), "variate_type"); this.setOutput(true, null); this.setColour(MATH_HUE); this.setTooltip(""); this.setHelpUrl(""); - } + }, + DATATYPES: [ + [Blockly.Msg.LANG_MATH_INT, 'int'], + [Blockly.Msg.LANG_MATH_UNSIGNED_INT, 'unsigned int'], + [Blockly.Msg.LANG_MATH_WORD, 'word'], + [Blockly.Msg.LANG_MATH_LONG, 'long'], + [Blockly.Msg.LANG_MATH_UNSIGNED_LONG, 'unsigned long'], + [Blockly.Msg.LANG_MATH_FLOAT, 'float'], + [Blockly.Msg.LANG_MATH_DOUBLE, 'double'], + [Blockly.Msg.LANG_MATH_BOOLEAN, 'boolean'], + [Blockly.Msg.LANG_MATH_BYTE, 'byte'], + [Blockly.Msg.LANG_MATH_CHAR, 'char'], + [Blockly.Msg.LANG_MATH_UNSIGNED_CHAR, 'unsigned char'], + [Blockly.Msg.LANG_MATH_STRING, 'String'], + ["uint8_t", "uint8_t"], + ["uint16_t", "uint16_t"], + ["uint32_t", "uint32_t"], + ["uint64_t", "uint64_t"] + ] }; + //获取某个变量在内存中所占用的字节数 export const math_SizeOf = { init: function () { @@ -206,18 +208,15 @@ export const math_SizeOf = { this.setHelpUrl(""); } }; + //最大最小值 export const math_max_min = { init: function () { - var OPERATORS = [ - [Blockly.Msg.MIXLY_MAX, 'max'], - [Blockly.Msg.MIXLY_MIN, 'min'], - ]; this.setColour(MATH_HUE); this.appendValueInput('A') .setCheck(Number) .setAlign(Blockly.inputs.Align.RIGHT) - .appendField(new Blockly.FieldDropdown(OPERATORS), 'OP') + .appendField(new Blockly.FieldDropdown(this.OPERATORS), 'OP') .appendField('('); this.appendValueInput('B') .setCheck(Number) @@ -238,7 +237,11 @@ export const math_max_min = { }; return TOOLTIPS[mode]; }); - } + }, + OPERATORS: [ + [Blockly.Msg.MIXLY_MAX, 'max'], + [Blockly.Msg.MIXLY_MIN, 'min'], + ] }; export const math_random_seed = { @@ -305,7 +308,10 @@ export const base_map = { this.setColour(MATH_HUE); this.appendValueInput("NUM", Number) .appendField(Blockly.Msg.MIXLY_MAP) - .appendField(new Blockly.FieldDropdown([[Blockly.Msg.LANG_MATH_INT, "map_int"], [Blockly.Msg.LANG_MATH_FLOAT, "map_float"]]), "maptype") + .appendField(new Blockly.FieldDropdown([ + [Blockly.Msg.LANG_MATH_INT, "map_int"], + [Blockly.Msg.LANG_MATH_FLOAT, "map_float"] + ]), "maptype") .setCheck(Number); this.appendValueInput("fromLow", Number) .appendField(Blockly.Msg.MIXLY_MAP_FROM) @@ -335,7 +341,12 @@ export const variables_operation = { .setCheck(null); this.appendValueInput("data") .setCheck(null) - .appendField(new Blockly.FieldDropdown([["+=", "+"], ["-=", "-"], ["*=", "*"], ["/=", "/"]]), "type"); + .appendField(new Blockly.FieldDropdown([ + ["+=", "+"], + ["-=", "-"], + ["*=", "*"], + ["/=", "/"] + ]), "type"); this.appendDummyInput(); this.setPreviousStatement(true, null); this.setNextStatement(true, null); @@ -349,7 +360,10 @@ export const math_auto_add_or_minus = { this.appendValueInput("math_auto_add_minus_output") .setCheck(null); this.appendDummyInput() - .appendField(new Blockly.FieldDropdown([["++", "++"], ["--", "--"]]), "math_auto_add_minus_type"); + .appendField(new Blockly.FieldDropdown([ + ["++", "++"], + ["--", "--"] + ]), "math_auto_add_minus_type"); this.setInputsInline(true); this.setPreviousStatement(true, null); this.setNextStatement(true, null); diff --git a/boards/default_src/arduino_avr/blocks/pins.js b/boards/default_src/arduino_avr/blocks/pins.js index f6ad109f..7ad5d81e 100644 --- a/boards/default_src/arduino_avr/blocks/pins.js +++ b/boards/default_src/arduino_avr/blocks/pins.js @@ -38,6 +38,7 @@ export const pins_interrupt = { this.setOutput(true, Number); } }; + export const pins_MOSI = { init: function () { this.setColour(PINS_HUE); @@ -46,6 +47,7 @@ export const pins_MOSI = { this.setOutput(true, Number); } }; + export const pins_MISO = { init: function () { this.setColour(PINS_HUE); @@ -54,6 +56,7 @@ export const pins_MISO = { this.setOutput(true, Number); } }; + export const pins_SCK = { init: function () { this.setColour(PINS_HUE); @@ -62,6 +65,7 @@ export const pins_SCK = { this.setOutput(true, Number); } }; + export const pins_SCL = { init: function () { this.setColour(PINS_HUE); @@ -70,6 +74,7 @@ export const pins_SCL = { this.setOutput(true, Number); } }; + export const pins_SDA = { init: function () { this.setColour(PINS_HUE); diff --git a/boards/default_src/arduino_avr/blocks/scoop.js b/boards/default_src/arduino_avr/blocks/scoop.js index 99c3e7f0..20a74bdf 100644 --- a/boards/default_src/arduino_avr/blocks/scoop.js +++ b/boards/default_src/arduino_avr/blocks/scoop.js @@ -4,10 +4,9 @@ const SCOOP_HUE = 120; export const SCoopTask = { init: function () { - var _tasknum = [["1", "1"], ["2", "2"], ["3", "3"], ["4", "4"], ["5", "5"], ["6", "6"], ["7", "7"], ["8", "8"]]; this.appendDummyInput() .appendField("Scoop Task") - .appendField(new Blockly.FieldDropdown(_tasknum), "_tasknum"); + .appendField(new Blockly.FieldDropdown(this.NUMBER), "_tasknum"); this.appendStatementInput("setup") .appendField(Blockly.Msg.MIXLY_SETUP) .setCheck(null); @@ -17,7 +16,17 @@ export const SCoopTask = { this.setColour(SCOOP_HUE); this.setTooltip(Blockly.Msg.MIXLY_TOOLTIP_SCOOP); this.setHelpUrl("https://mixly.readthedocs.io/zh_CN/latest/arduino/03.Control.html#scoop-task"); - } + }, + NUMBER: [ + ["1", "1"], + ["2", "2"], + ["3", "3"], + ["4", "4"], + ["5", "5"], + ["6", "6"], + ["7", "7"], + ["8", "8"] + ] }; export const SCoop_yield = { @@ -31,6 +40,7 @@ export const SCoop_yield = { this.setHelpUrl("https://mixly.readthedocs.io/zh_CN/latest/arduino/03.Control.html#scoop-task"); } }; + export const SCoop_sleep = { init: function () { this.setColour(SCOOP_HUE); diff --git a/boards/default_src/arduino_avr/blocks/sensor.js b/boards/default_src/arduino_avr/blocks/sensor.js index 3a8022b1..ef01d104 100644 --- a/boards/default_src/arduino_avr/blocks/sensor.js +++ b/boards/default_src/arduino_avr/blocks/sensor.js @@ -139,16 +139,19 @@ export const LM35 = { //DS18B20温度传感器 export const ds18b20 = { init: function () { - var UNIT = [[Blockly.Msg.MIXLY_DS18B20_C, '0'], [Blockly.Msg.MIXLY_DS18B20_F, '1']]; this.setColour(SENSOR_HUE); this.appendDummyInput("") .appendField(Blockly.Msg.MIXLY_DS18B20) .appendField(new Blockly.FieldDropdown(Profile.default.digital), "PIN") .appendField(Blockly.Msg.MIXLY_GETTEMPERATUE) - .appendField(new Blockly.FieldDropdown(UNIT), "UNIT"); + .appendField(new Blockly.FieldDropdown(this.UNIT), "UNIT"); this.setOutput(true, Number); this.setTooltip(Blockly.Msg.MIXLY_TOOLTIP_DS18); - } + }, + UNIT: [ + [Blockly.Msg.MIXLY_DS18B20_C, '0'], + [Blockly.Msg.MIXLY_DS18B20_F, '1'] + ] }; //初始化MLX90614红外测温传感器 @@ -170,21 +173,22 @@ export const mlx90614_init = { //MLX90614获取数据 export const mlx90614_get_data = { init: function () { - var type = [ - [Blockly.Msg.MLX90614_TARGET_OBJECT_TEMP + "(℃)", "readObjectTempC"], - [Blockly.Msg.MLX90614_TARGET_OBJECT_TEMP + "(℉)", "readObjectTempF"], - [Blockly.Msg.MLX90614_AMBIENT_TEMP + "(℃)", "readAmbientTempC"], - [Blockly.Msg.MLX90614_AMBIENT_TEMP + "(℉)", "readAmbientTempF"]]; this.appendDummyInput() .appendField("MLX90614" + Blockly.Msg.MLX90614_TYPE) .appendField(Blockly.Msg.MIXLY_GET) - .appendField(new Blockly.FieldDropdown(type), "mlx90614_data"); + .appendField(new Blockly.FieldDropdown(this.DATA_TYPE), "mlx90614_data"); this.setInputsInline(true); this.setOutput(true, null); this.setColour(40); this.setTooltip(Blockly.Msg.MIXLY_TOOLTIP_MLX90614_GET_DATA); this.setHelpUrl(""); - } + }, + DATA_TYPE: [ + [Blockly.Msg.MLX90614_TARGET_OBJECT_TEMP + "(℃)", "readObjectTempC"], + [Blockly.Msg.MLX90614_TARGET_OBJECT_TEMP + "(℉)", "readObjectTempF"], + [Blockly.Msg.MLX90614_AMBIENT_TEMP + "(℃)", "readAmbientTempC"], + [Blockly.Msg.MLX90614_AMBIENT_TEMP + "(℉)", "readAmbientTempF"] + ] }; //DF称重模块 @@ -232,16 +236,17 @@ export const DS1302_init = { this.setInputsInline(true); this.setTooltip(Blockly.Msg.MIXLY_TOOLTIP_DS1302_INIT); } -} +}; -var RTCTypeList = [['DS1307', 'RtcDS1307'], ['DS3231', 'RtcDS3231']]; //DS1307 RTC export const DS1307_init = { init: function () { this.setColour(SENSOR_HUE); this.appendDummyInput("") .appendField(Blockly.Msg.MIXLY_RTCINIT); - this.appendDummyInput("").setAlign(Blockly.inputs.Align.RIGHT).appendField(new Blockly.FieldDropdown(RTCTypeList), 'RTCType'); + this.appendDummyInput("") + .setAlign(Blockly.inputs.Align.RIGHT) + .appendField(new Blockly.FieldDropdown(this.RTC_TYPE), 'RTCType'); this.appendDummyInput("") .setAlign(Blockly.inputs.Align.RIGHT) .appendField(Blockly.Msg.MIXLY_PIN); @@ -256,21 +261,10 @@ export const DS1307_init = { this.setNextStatement(true, null); this.setInputsInline(true); this.setTooltip(Blockly.Msg.MIXLY_TOOLTIP_DS1307_INIT); - } + }, + RTC_TYPE: [['DS1307', 'RtcDS1307'], ['DS3231', 'RtcDS3231']] }; -//传感器-实时时钟块_时间变量 -var RTC_TIME_TYPE = [ - [Blockly.Msg.MIXLY_YEAR, "Year"], - [Blockly.Msg.MIXLY_MONTH, "Month"], - [Blockly.Msg.MIXLY_DAY, "Day"], - [Blockly.Msg.MIXLY_HOUR, "Hour"], - [Blockly.Msg.MIXLY_MINUTE, "Minute"], - [Blockly.Msg.MIXLY_SECOND, "Second"], - [Blockly.Msg.MIXLY_WEEK, "DayOfWeek"], - -]; - //传感器-实时时钟块_获取时间 export const RTC_get_time = { init: function () { @@ -283,11 +277,20 @@ export const RTC_get_time = { //.appendField(new Blockly.FieldTextInput('myRTC'), 'RTCName'); this.appendDummyInput("") .setAlign(Blockly.inputs.Align.RIGHT) - .appendField(new Blockly.FieldDropdown(RTC_TIME_TYPE), "TIME_TYPE"); + .appendField(new Blockly.FieldDropdown(this.RTC_TIME_TYPE), "TIME_TYPE"); this.setInputsInline(true); this.setOutput(true, Number); this.setTooltip(Blockly.Msg.MIXLY_TOOLTIP_RTC_GETTIME.replace('%1', this.getFieldValue("TIME_TYPE"))); - } + }, + RTC_TIME_TYPE: [ + [Blockly.Msg.MIXLY_YEAR, "Year"], + [Blockly.Msg.MIXLY_MONTH, "Month"], + [Blockly.Msg.MIXLY_DAY, "Day"], + [Blockly.Msg.MIXLY_HOUR, "Hour"], + [Blockly.Msg.MIXLY_MINUTE, "Minute"], + [Blockly.Msg.MIXLY_SECOND, "Second"], + [Blockly.Msg.MIXLY_WEEK, "DayOfWeek"] + ] }; // //传感器-实时时钟块_设置时间 @@ -356,7 +359,10 @@ export const get_system_date_time = { init: function () { this.appendDummyInput() .appendField(Blockly.Msg.MIXLY_GET + " " + Blockly.Msg.MIXLY_SYSTEM) - .appendField(new Blockly.FieldDropdown([[Blockly.Msg.MIXLY_GPS_DATE, "DATE"], [Blockly.Msg.MIXLY_GPS_TIME, "TIME"]]), "type"); + .appendField(new Blockly.FieldDropdown([ + [Blockly.Msg.MIXLY_GPS_DATE, "DATE"], + [Blockly.Msg.MIXLY_GPS_TIME, "TIME"] + ]), "type"); this.setInputsInline(false); this.setOutput(true, null); this.setColour(40); @@ -373,18 +379,12 @@ export const RTC_set_date = { .setAlign(Blockly.inputs.Align.RIGHT) .appendField(Blockly.Msg.MIXLY_RTCSETDATE); // .appendField(new Blockly.FieldTextInput('myRTC'), 'RTCName'); - this.setPreviousStatement(true, null); this.setNextStatement(true, null); this.setTooltip(Blockly.Msg.MIXLY_TOOLTIP_RTC_SETDATE); } }; -var SHT20_TYPE = [ - [Blockly.Msg.MIXLY_TEMPERATURE, "sht20.readTemperature()"], - [Blockly.Msg.MIXLY_Humidity, "sht20.readHumidity()"], -]; - export const SHT20 = { init: function () { this.setColour(SENSOR_HUE); @@ -392,22 +392,17 @@ export const SHT20 = { .appendField("SHT20" + Blockly.Msg.MIXLY_DHT11_T_H); this.appendDummyInput("") .setAlign(Blockly.inputs.Align.RIGHT) - .appendField(new Blockly.FieldDropdown(SHT20_TYPE), "SHT20_TYPE"); + .appendField(new Blockly.FieldDropdown(this.SHT20_TYPE), "SHT20_TYPE"); this.setInputsInline(true); this.setOutput(true); this.setTooltip(); - } + }, + SHT20_TYPE: [ + [Blockly.Msg.MIXLY_TEMPERATURE, "sht20.readTemperature()"], + [Blockly.Msg.MIXLY_Humidity, "sht20.readHumidity()"], + ] }; -var ADXL345_GETAB = [ - [Blockly.Msg.MixGo_MPU9250_AX, "accel.getAccelerationX()"], - [Blockly.Msg.MixGo_MPU9250_AY, "accel.getAccelerationY()"], - [Blockly.Msg.MixGo_MPU9250_AZ, "accel.getAccelerationZ()"], - [Blockly.Msg.MixGo_MPU9250_AX + "(g)", "accel.getAccelerationX()/256.0"], - [Blockly.Msg.MixGo_MPU9250_AY + "(g)", "accel.getAccelerationY()/256.0"], - [Blockly.Msg.MixGo_MPU9250_AZ + "(g)", "accel.getAccelerationZ()/256.0"], -]; - //传感器-重力感应块-获取数据 export const ADXL345 = { init: function () { @@ -416,11 +411,19 @@ export const ADXL345 = { .appendField(Blockly.Msg.MIXLY_ADXL345); this.appendDummyInput("") .setAlign(Blockly.inputs.Align.RIGHT) - .appendField(new Blockly.FieldDropdown(ADXL345_GETAB), "ADXL345_PIN"); + .appendField(new Blockly.FieldDropdown(this.ADXL345_GETAB), "ADXL345_PIN"); this.setInputsInline(true); this.setOutput(true); this.setTooltip(); - } + }, + ADXL345_GETAB: [ + [Blockly.Msg.MixGo_MPU9250_AX, "accel.getAccelerationX()"], + [Blockly.Msg.MixGo_MPU9250_AY, "accel.getAccelerationY()"], + [Blockly.Msg.MixGo_MPU9250_AZ, "accel.getAccelerationZ()"], + [Blockly.Msg.MixGo_MPU9250_AX + "(g)", "accel.getAccelerationX()/256.0"], + [Blockly.Msg.MixGo_MPU9250_AY + "(g)", "accel.getAccelerationY()/256.0"], + [Blockly.Msg.MixGo_MPU9250_AZ + "(g)", "accel.getAccelerationZ()/256.0"], + ] }; var LIS3DHTR_GETDATA = [ @@ -454,7 +457,11 @@ export const ADXL345_setOffset = { this.appendValueInput("OFFSET") .setCheck(Number) .setAlign(Blockly.inputs.Align.RIGHT) - .appendField(new Blockly.FieldDropdown([[Blockly.Msg.MIXLY_DISPLAY_MATRIX_X, "setOffsetX"], [Blockly.Msg.MIXLY_DISPLAY_MATRIX_Y, "setOffsetY"], [Blockly.Msg.MIXLY_Z_AXIS, "setOffsetZ"]]), "MIXEPI_ADXL345_OFFSET"); + .appendField(new Blockly.FieldDropdown([ + [Blockly.Msg.MIXLY_DISPLAY_MATRIX_X, "setOffsetX"], + [Blockly.Msg.MIXLY_DISPLAY_MATRIX_Y, "setOffsetY"], + [Blockly.Msg.MIXLY_Z_AXIS, "setOffsetZ"] + ]), "MIXEPI_ADXL345_OFFSET"); this.setInputsInline(true); this.setPreviousStatement(true, null); this.setNextStatement(true, null); @@ -495,7 +502,7 @@ export const MPU6050_update = { } }; -var Encoder_NO = [ +const Encoder_NO = [ [Blockly.Msg.MIXLY_ENCODER + 1, "1"], [Blockly.Msg.MIXLY_ENCODER + 2, "2"], [Blockly.Msg.MIXLY_ENCODER + 3, "3"], @@ -709,20 +716,6 @@ export const sensor_encoder_handle = { } }; -const BMX280_VALUE_TYPE = { - bme: [ - [Blockly.Msg.blynk_IOT_IR_TEMP, "readTemperature()"], - [Blockly.Msg.MIXLY_Humidity, "readHumidity()"], - [Blockly.Msg.MIXLY_Altitude, "readPressure()"], - [Blockly.Msg.MIXLY_HEIGHT, "readAltitude(SEALEVELPRESSURE_HPA)"] - ], - bmp: [ - [Blockly.Msg.blynk_IOT_IR_TEMP, "readTemperature()"], - [Blockly.Msg.MIXLY_Altitude, "readPressure()"], - [Blockly.Msg.MIXLY_HEIGHT, "readAltitude(SEALEVELPRESSURE_HPA)"] - ] -}; - //BME280读取 export const BME280_READ = { init: function () { @@ -734,11 +727,26 @@ export const BME280_READ = { .appendField(Blockly.Msg.MIXLY_LCD_ADDRESS); this.appendDummyInput() .appendField(Blockly.Msg.MIXLY_GET) - .appendField(new Blockly.FieldDependentDropdown("TYPE", BMX280_VALUE_TYPE, BMX280_VALUE_TYPE['bme']), 'BME_TYPE'); + .appendField(new Blockly.FieldDependentDropdown( + "TYPE", this.BMX280_VALUE_TYPE, this.BMX280_VALUE_TYPE['bme']), 'BME_TYPE' + ); this.setOutput(true, null); this.setInputsInline(true); this.setTooltip(""); this.setHelpUrl(""); + }, + BMX280_VALUE_TYPE: { + bme: [ + [Blockly.Msg.blynk_IOT_IR_TEMP, "readTemperature()"], + [Blockly.Msg.MIXLY_Humidity, "readHumidity()"], + [Blockly.Msg.MIXLY_Altitude, "readPressure()"], + [Blockly.Msg.MIXLY_HEIGHT, "readAltitude(SEALEVELPRESSURE_HPA)"] + ], + bmp: [ + [Blockly.Msg.blynk_IOT_IR_TEMP, "readTemperature()"], + [Blockly.Msg.MIXLY_Altitude, "readPressure()"], + [Blockly.Msg.MIXLY_HEIGHT, "readAltitude(SEALEVELPRESSURE_HPA)"] + ] } }; @@ -759,7 +767,10 @@ export const PS2_init = { .appendField(new Blockly.FieldDropdown(Profile.default.digital), "PS2_CLK"); this.appendDummyInput("") .appendField(Blockly.Msg.PS2_setRumble) - .appendField(new Blockly.FieldDropdown([[Blockly.Msg.MIXLY_ON, "true"], [Blockly.Msg.MIXLY_OFF, "false"]]), "rumble"); + .appendField(new Blockly.FieldDropdown([ + [Blockly.Msg.MIXLY_ON, "true"], + [Blockly.Msg.MIXLY_OFF, "false"] + ]), "rumble"); this.setInputsInline(true); this.setPreviousStatement(true); this.setNextStatement(true); @@ -782,71 +793,74 @@ export const PS2_update = { } }; -var PSBUTTON = [ - [Blockly.Msg.PS2_TRIANGLE, "PSB_GREEN"], - [Blockly.Msg.PS2_CIRCLE, "PSB_RED"], - [Blockly.Msg.PS2_CROSS, "PSB_BLUE"], - [Blockly.Msg.PS2_SQUARE, "PSB_PINK"], - [Blockly.Msg.PS2_L1, "PSB_L1"], - [Blockly.Msg.PS2_L2, "PSB_L2"], - // ["PSB_L3","PSB_L3"], - [Blockly.Msg.PS2_R1, "PSB_R1"], - [Blockly.Msg.PS2_R2, "PSB_R2"], - // ["PSB_R3","PSB_R3"], - [Blockly.Msg.PS2_UP, "PSB_PAD_UP"], - [Blockly.Msg.PS2_RIGHT, "PSB_PAD_RIGHT"], - [Blockly.Msg.PS2_DOWN, "PSB_PAD_DOWN"], - [Blockly.Msg.PS2_LEFT, "PSB_PAD_LEFT"], - [Blockly.Msg.PS2_SELECT, "PSB_SELECT"], - [Blockly.Msg.PS2_START, "PSB_START"] -]; - // export const PS2_Button = { init: function () { this.setColour(SENSOR_HUE); this.appendDummyInput("") .appendField(Blockly.Msg.PS2_BUTTON) - .appendField(new Blockly.FieldDropdown(PSBUTTON), "psbt") + .appendField(new Blockly.FieldDropdown(this.PSBUTTON), "psbt") .appendField(Blockly.Msg.MIXLY_PULSEIN_STAT) - .appendField(new Blockly.FieldDropdown([[Blockly.Msg.MIXLY_BUTTON_HOLD, "Button"], [Blockly.Msg.MIXLY_BUTTON_PRESSED, "ButtonPressed"], [Blockly.Msg.MIXLY_BUTTON_RELEASED, "ButtonReleased"], [Blockly.Msg.MIXLY_CHANGE, "NewButtonState"]]), "btstate"); + .appendField(new Blockly.FieldDropdown([ + [Blockly.Msg.MIXLY_BUTTON_HOLD, "Button"], + [Blockly.Msg.MIXLY_BUTTON_PRESSED, "ButtonPressed"], + [Blockly.Msg.MIXLY_BUTTON_RELEASED, "ButtonReleased"], + [Blockly.Msg.MIXLY_CHANGE, "NewButtonState"] + ]), "btstate"); this.setOutput(true, Boolean); this.setTooltip(''); - } + }, + PSBUTTON: [ + [Blockly.Msg.PS2_TRIANGLE, "PSB_GREEN"], + [Blockly.Msg.PS2_CIRCLE, "PSB_RED"], + [Blockly.Msg.PS2_CROSS, "PSB_BLUE"], + [Blockly.Msg.PS2_SQUARE, "PSB_PINK"], + [Blockly.Msg.PS2_L1, "PSB_L1"], + [Blockly.Msg.PS2_L2, "PSB_L2"], + // ["PSB_L3","PSB_L3"], + [Blockly.Msg.PS2_R1, "PSB_R1"], + [Blockly.Msg.PS2_R2, "PSB_R2"], + // ["PSB_R3","PSB_R3"], + [Blockly.Msg.PS2_UP, "PSB_PAD_UP"], + [Blockly.Msg.PS2_RIGHT, "PSB_PAD_RIGHT"], + [Blockly.Msg.PS2_DOWN, "PSB_PAD_DOWN"], + [Blockly.Msg.PS2_LEFT, "PSB_PAD_LEFT"], + [Blockly.Msg.PS2_SELECT, "PSB_SELECT"], + [Blockly.Msg.PS2_START, "PSB_START"] + ] }; export const PS2_stk = { init: function () { this.setColour(SENSOR_HUE); - var PSSTK = [ - [Blockly.Msg.PS2_RX, "PSS_RX"], - [Blockly.Msg.PS2_RY, "PSS_RY"], - [Blockly.Msg.PS2_LX, "PSS_LX"], - [Blockly.Msg.PS2_LY, "PSS_LY"], - ]; this.appendDummyInput("") .appendField(Blockly.Msg.PS2_stick) - .appendField(new Blockly.FieldDropdown(PSSTK), "psstk"); + .appendField(new Blockly.FieldDropdown(this.PSSTK), "psstk"); this.setOutput(true, Number); this.setTooltip(''); - } + }, + PSSTK: [ + [Blockly.Msg.PS2_RX, "PSS_RX"], + [Blockly.Msg.PS2_RY, "PSS_RY"], + [Blockly.Msg.PS2_LX, "PSS_LX"], + [Blockly.Msg.PS2_LY, "PSS_LY"], + ] }; -var DF_TCS34725_COLOR = [ - [Blockly.Msg.COLOUR_RGB_RED, "tcs34725.getRedToGamma()"], - [Blockly.Msg.COLOUR_RGB_GREEN, "tcs34725.getGreenToGamma()"], - [Blockly.Msg.COLOUR_RGB_BLUE, "tcs34725.getBlueToGamma()"], -]; - export const TCS34725_Get_RGB = { init: function () { this.setColour(SENSOR_HUE); this.appendDummyInput("") .appendField(Blockly.Msg.TCS34725_Get_RGB) - .appendField(new Blockly.FieldDropdown(DF_TCS34725_COLOR), "DF_TCS34725_COLOR"); + .appendField(new Blockly.FieldDropdown(this.DF_TCS34725_COLOR), "DF_TCS34725_COLOR"); this.setInputsInline(true); this.setOutput(true); - } + }, + DF_TCS34725_COLOR: [ + [Blockly.Msg.COLOUR_RGB_RED, "tcs34725.getRedToGamma()"], + [Blockly.Msg.COLOUR_RGB_GREEN, "tcs34725.getGreenToGamma()"], + [Blockly.Msg.COLOUR_RGB_BLUE, "tcs34725.getBlueToGamma()"], + ] }; //初始化TCS230颜色传感器 @@ -1050,18 +1064,6 @@ export const arduino_keypad_event = { } }; -var MixGo_MPU9250_GETAB = [ - [Blockly.Msg.MixGo_MPU9250_AX, "a"], - [Blockly.Msg.MixGo_MPU9250_AY, "b"], - [Blockly.Msg.MixGo_MPU9250_AZ, "c"], - [Blockly.Msg.MixGo_MPU9250_GX, "d"], - [Blockly.Msg.MixGo_MPU9250_GY, "e"], - [Blockly.Msg.MixGo_MPU9250_GZ, "f"], - [Blockly.Msg.MixGo_MPU9250_MX, "g"], - [Blockly.Msg.MixGo_MPU9250_MY, "h"], - [Blockly.Msg.MixGo_MPU9250_MZ, "i"] -]; - //传感器_重力感应块_获取9轴数据 export const mixgo_MPU9250 = { init: function () { @@ -1070,12 +1072,23 @@ export const mixgo_MPU9250 = { .appendField("MPU9250" + Blockly.Msg.MixGo_MPU9250); this.appendDummyInput("") .setAlign(Blockly.inputs.Align.RIGHT) - .appendField(new Blockly.FieldDropdown(MixGo_MPU9250_GETAB), "MixGo_MPU9250_GETAB"); + .appendField(new Blockly.FieldDropdown(this.MixGo_MPU9250_GETAB), "MixGo_MPU9250_GETAB"); this.setInputsInline(true); this.setOutput(true); this.setTooltip(""); this.setHelpUrl(''); - } + }, + MixGo_MPU9250_GETAB: [ + [Blockly.Msg.MixGo_MPU9250_AX, "a"], + [Blockly.Msg.MixGo_MPU9250_AY, "b"], + [Blockly.Msg.MixGo_MPU9250_AZ, "c"], + [Blockly.Msg.MixGo_MPU9250_GX, "d"], + [Blockly.Msg.MixGo_MPU9250_GY, "e"], + [Blockly.Msg.MixGo_MPU9250_GZ, "f"], + [Blockly.Msg.MixGo_MPU9250_MX, "g"], + [Blockly.Msg.MixGo_MPU9250_MY, "h"], + [Blockly.Msg.MixGo_MPU9250_MZ, "i"] + ] }; //NTC电阻 @@ -1120,4 +1133,4 @@ export const AHT20_21 = { this.setOutput(true); this.setTooltip(); } -}; +}; \ No newline at end of file diff --git a/boards/default_src/arduino_avr/blocks/serial.js b/boards/default_src/arduino_avr/blocks/serial.js index 7efcd039..bf5fdf7e 100644 --- a/boards/default_src/arduino_avr/blocks/serial.js +++ b/boards/default_src/arduino_avr/blocks/serial.js @@ -35,7 +35,10 @@ export const serial_print = { this.appendValueInput("CONTENT", String) .appendField(new Blockly.FieldDropdown(Profile.default.serial_select), "serial_select") .appendField(Blockly.Msg.MIXLY_SERIAL_PRINT) - .appendField(new Blockly.FieldDropdown([[Blockly.Msg.MIXLY_PRINT_INLINE, "print"], [Blockly.Msg.TEXT_PRINT_Huanhang_TOOLTIP, "println"]]), "new_line"); + .appendField(new Blockly.FieldDropdown([ + [Blockly.Msg.MIXLY_PRINT_INLINE, "print"], + [Blockly.Msg.TEXT_PRINT_Huanhang_TOOLTIP, "println"] + ]), "new_line"); this.setPreviousStatement(true, null); this.setNextStatement(true, null); this.setTooltip(Blockly.Msg.TEXT_PRINT_TOOLTIP); @@ -48,24 +51,34 @@ export const serial_println = { this.appendValueInput("CONTENT", String) .appendField(new Blockly.FieldDropdown(Profile.default.serial_select), "serial_select") .appendField(Blockly.Msg.MIXLY_SERIAL_PRINT) - .appendField(new Blockly.FieldDropdown([[Blockly.Msg.TEXT_PRINT_Huanhang_TOOLTIP, "println"], [Blockly.Msg.MIXLY_PRINT_INLINE, "print"]]), "new_line"); + .appendField(new Blockly.FieldDropdown([ + [Blockly.Msg.TEXT_PRINT_Huanhang_TOOLTIP, "println"], + [Blockly.Msg.MIXLY_PRINT_INLINE, "print"] + ]), "new_line"); this.setPreviousStatement(true, null); this.setNextStatement(true, null); this.setTooltip(Blockly.Msg.TEXT_PRINT_TOOLTIP); } }; - export const serial_print_num = { init: function () { this.setColour(SERIAL_HUE); this.appendDummyInput() .appendField(new Blockly.FieldDropdown(Profile.default.serial_select), "serial_select") .appendField(Blockly.Msg.MIXLY_SERIAL_PRINT) - .appendField(new Blockly.FieldDropdown([[Blockly.Msg.MIXLY_PRINT_INLINE, "print"], [Blockly.Msg.TEXT_PRINT_Huanhang_TOOLTIP, "println"]]), "new_line") + .appendField(new Blockly.FieldDropdown([ + [Blockly.Msg.MIXLY_PRINT_INLINE, "print"], + [Blockly.Msg.TEXT_PRINT_Huanhang_TOOLTIP, "println"] + ]), "new_line") .appendField(Blockly.Msg.MIXLY_NUMBER); this.appendValueInput("CONTENT", Number) - .appendField(new Blockly.FieldDropdown([[Blockly.Msg.MATH_HEX, "HEX"], [Blockly.Msg.MATH_BIN, "BIN"], [Blockly.Msg.MATH_OCT, "OCT"], [Blockly.Msg.MATH_DEC, "DEC"]]), "STAT") + .appendField(new Blockly.FieldDropdown([ + [Blockly.Msg.MATH_HEX, "HEX"], + [Blockly.Msg.MATH_BIN, "BIN"], + [Blockly.Msg.MATH_OCT, "OCT"], + [Blockly.Msg.MATH_DEC, "DEC"] + ]), "STAT") .setCheck(Number); this.setPreviousStatement(true, null); this.setNextStatement(true, null); @@ -117,7 +130,12 @@ export const serial_parseInt_Float = { this.appendDummyInput() .appendField(new Blockly.FieldDropdown(Profile.default.serial_select), "serial_select") //.appendField(Blockly.Msg.MIXLY_SERIAL_READ) - .appendField(new Blockly.FieldDropdown([["read", "read"], ["peek", "peek"], ["parseInt", "parseInt"], ["parseFloat", "parseFloat"]]), "STAT"); + .appendField(new Blockly.FieldDropdown([ + ["read", "read"], + ["peek", "peek"], + ["parseInt", "parseInt"], + ["parseFloat", "parseFloat"] + ]), "STAT"); this.setOutput(true, Number); var thisBlock = this; this.setTooltip(function () { @@ -142,6 +160,7 @@ export const serial_flush = { this.setTooltip(Blockly.Msg.MIXLY_TOOLTIP_SERIAL_FLUSH); } }; + export const serial_softserial = { init: function () { this.setColour(SERIAL_HUE); diff --git a/boards/default_src/arduino_avr/blocks/storage.js b/boards/default_src/arduino_avr/blocks/storage.js index 4dfe48ea..843b6ac6 100644 --- a/boards/default_src/arduino_avr/blocks/storage.js +++ b/boards/default_src/arduino_avr/blocks/storage.js @@ -94,25 +94,24 @@ export const sd_card_root_files = { } }; -var volume_TYPE = [ - [Blockly.Msg.MIXLY_SD_clusterCount, 'volume.clusterCount()'], - [Blockly.Msg.MIXLY_SD_blocksPerCluster, 'volume.blocksPerCluster()'], - [Blockly.Msg.MIXLY_SD_TOTAL_blocks, 'volume.blocksPerCluster() * volume.clusterCount()'], - ["FAT" + Blockly.Msg.MIXLY_TYPE, 'volume.fatType()'], - [Blockly.Msg.MIXLY_volume + "(KB)", 'volume.blocksPerCluster()*volume.clusterCount()/2'], - [Blockly.Msg.MIXLY_volume + "(MB)", 'volume.blocksPerCluster()*volume.clusterCount()/2/1024'], - [Blockly.Msg.MIXLY_volume + "(GB)", 'volume.blocksPerCluster()*volume.clusterCount()/2/1024/1024.0'], -]; - export const sd_volume = { init: function () { this.setColour(STORAGE_HUE); this.appendDummyInput() .appendField("SD") - .appendField(new Blockly.FieldDropdown(volume_TYPE), 'volume_TYPE'); + .appendField(new Blockly.FieldDropdown(this.VOLUME_TYPE), 'volume_TYPE'); this.setOutput(true, Number); this.setTooltip(); - } + }, + VOLUME_TYPE: [ + [Blockly.Msg.MIXLY_SD_clusterCount, 'volume.clusterCount()'], + [Blockly.Msg.MIXLY_SD_blocksPerCluster, 'volume.blocksPerCluster()'], + [Blockly.Msg.MIXLY_SD_TOTAL_blocks, 'volume.blocksPerCluster() * volume.clusterCount()'], + ["FAT" + Blockly.Msg.MIXLY_TYPE, 'volume.fatType()'], + [Blockly.Msg.MIXLY_volume + "(KB)", 'volume.blocksPerCluster()*volume.clusterCount()/2'], + [Blockly.Msg.MIXLY_volume + "(MB)", 'volume.blocksPerCluster()*volume.clusterCount()/2/1024'], + [Blockly.Msg.MIXLY_volume + "(GB)", 'volume.blocksPerCluster()*volume.clusterCount()/2/1024/1024.0'], + ] }; export const sd_exist = { @@ -230,7 +229,6 @@ export const store_eeprom_put = { this.appendValueInput("ADDRESS") .setCheck(null) .appendField(Blockly.Msg.MIXLY_ESP32_WRITE) - //.appendField(new Blockly.FieldDropdown([[Blockly.Msg.LANG_MATH_INT,"int"],[Blockly.Msg.LANG_MATH_LONG,"long"],[Blockly.Msg.LANG_MATH_FLOAT,"float"],[Blockly.Msg.LANG_MATH_BYTE,"byte"],["字节数组","byte_array"],["字符数组","char_array"]]), "type") .appendField("EEPROM") .appendField(Blockly.Msg.MQTT_SERVER_ADD); this.appendValueInput("DATA") @@ -249,7 +247,6 @@ export const store_eeprom_get = { this.appendValueInput("ADDRESS") .setCheck(null) .appendField(Blockly.Msg.MIXLY_SERIAL_READ) - //.appendField(new Blockly.FieldDropdown([[Blockly.Msg.LANG_MATH_INT,"int"],[Blockly.Msg.LANG_MATH_LONG,"long"],[Blockly.Msg.LANG_MATH_FLOAT,"float"],[Blockly.Msg.LANG_MATH_BYTE,"byte"],["字节数组","byte_array"],["字符数组","char_array"]]), "type") .appendField("EEPROM") .appendField(Blockly.Msg.MQTT_SERVER_ADD); this.appendValueInput("DATA") @@ -262,11 +259,6 @@ export const store_eeprom_get = { } }; -//ESP32简化SPIFFS -var OPEN_MODE1 = [ - [Blockly.Msg.TEXT_WRITE_TEXT, '1'], - [Blockly.Msg.TEXT_APPEND_APPENDTEXT, '2']] - export const simple_spiffs_read = { init: function () { this.appendValueInput("FileName") @@ -293,11 +285,15 @@ export const simple_spiffs_store_spiffs_write = { .appendField(Blockly.Msg.MIXLY_SD_NEWLINE); this.appendDummyInput() .appendField(Blockly.Msg.MIXLY_MODE) - .appendField(new Blockly.FieldDropdown(OPEN_MODE1), 'MODE'); + .appendField(new Blockly.FieldDropdown(this.OPEN_MODE), 'MODE'); this.setPreviousStatement(true, null); this.setNextStatement(true, null); this.setTooltip(Blockly.Msg.MIXLY_TOOLTIP_STORE_SDWRITE); - } + }, + OPEN_MODE: [ + [Blockly.Msg.TEXT_WRITE_TEXT, '1'], + [Blockly.Msg.TEXT_APPEND_APPENDTEXT, '2'] + ] }; export const simple_spiffs_DelFile = { diff --git a/boards/default_src/arduino_avr/blocks/text.js b/boards/default_src/arduino_avr/blocks/text.js index 01ef0dc4..de91fd54 100644 --- a/boards/default_src/arduino_avr/blocks/text.js +++ b/boards/default_src/arduino_avr/blocks/text.js @@ -33,7 +33,7 @@ export const text = { } }; -Blockly.FieldTextInput.char_validator = function (text) { +const charValidator = function (text) { if (text.length > 1) { if (text.charAt(0) === "\\") { var charAtOne = text.charAt(1); @@ -59,7 +59,7 @@ export const text_char = { this.setColour(TEXTS_HUE); this.appendDummyInput() .appendField(this.newQuote_(true)) - .appendField(new Blockly.FieldTextInput('', Blockly.FieldTextInput.char_validator), 'TEXT') + .appendField(new Blockly.FieldTextInput('', charValidator), 'TEXT') .appendField(this.newQuote_(false)); this.setOutput(true, Number); this.setTooltip(Blockly.Msg.TEXT_CHAR_TOOLTIP); @@ -75,7 +75,6 @@ export const text_char = { } }; - export const text_join = { init: function () { this.setColour(TEXTS_HUE); @@ -90,7 +89,6 @@ export const text_join = { } }; - export const text_to_number = { init: function () { var TO_INT_FLOAT = [ @@ -131,7 +129,7 @@ export const char_to_ascii = { this.appendDummyInput() .appendField(Blockly.Msg.MIXLY_TOASCII) .appendField("'") - .appendField(new Blockly.FieldTextInput('', Blockly.FieldTextInput.char_validator), 'TEXT') + .appendField(new Blockly.FieldTextInput('', charValidator), 'TEXT') .appendField("'"); this.setOutput(true, Number); this.setTooltip(Blockly.Msg.MIXLY_TOOLTIP_TEXT_TOASCII); @@ -176,7 +174,7 @@ export const text_length = { this.setOutput(true, Number); this.setTooltip(Blockly.Msg.MIXLY_TOOLTIP_TEXT_LENGTH); } -} +}; export const text_char_at = { init: function () { @@ -195,20 +193,15 @@ export const text_char_at = { return Blockly.Msg.MIXLY_TOOLTIP_TEXT_FIND_CHAR_AT.replace('%1', Blockly.Arduino.valueToCode(self, 'VAR', Blockly.Arduino.ORDER_ATOMIC)); }); } -} +}; export const text_equals_starts_ends = { init: function () { - var TEXT_DOWHAT = [ - [Blockly.Msg.MIXLY_EQUALS, 'equals'], - [Blockly.Msg.MIXLY_STARTSWITH, 'startsWith'], - [Blockly.Msg.MIXLY_ENDSWITH, 'endsWith'] - ]; this.setColour(TEXTS_HUE); this.appendValueInput("STR1") .setCheck([String, Number]); this.appendValueInput("STR2") - .appendField(new Blockly.FieldDropdown(TEXT_DOWHAT), 'DOWHAT') + .appendField(new Blockly.FieldDropdown(this.TEXT_DOWHAT), 'DOWHAT') .setCheck([String, Number]); this.setOutput(true, [Boolean, Number]); this.setInputsInline(true); @@ -222,8 +215,13 @@ export const text_equals_starts_ends = { }; return Blockly.Msg.MIXLY_TOOLTIP_TEXT_EQUALS_STARTS_ENDS.replace('%1', TOOLTIPS[op]).replace('%2', Blockly.Arduino.valueToCode(self, 'STR2', Blockly.Arduino.ORDER_ATOMIC)); }); - } -} + }, + TEXT_DOWHAT: [ + [Blockly.Msg.MIXLY_EQUALS, 'equals'], + [Blockly.Msg.MIXLY_STARTSWITH, 'startsWith'], + [Blockly.Msg.MIXLY_ENDSWITH, 'endsWith'] + ] +}; export const text_compareTo = { init: function () { @@ -237,7 +235,8 @@ export const text_compareTo = { this.setInputsInline(true); this.setTooltip(Blockly.Msg.MIXLY_COMPARETO_HELP); } -} +}; + //小数获取有效位 export const decimal_places = { init: function () { @@ -255,6 +254,7 @@ export const decimal_places = { this.setHelpUrl(""); } }; + //截取字符串 export const substring = { init: function () { @@ -274,6 +274,7 @@ export const substring = { this.setHelpUrl(""); } }; + //字符串转化为大小写 export const letter_conversion = { init: function () { @@ -282,7 +283,10 @@ export const letter_conversion = { .appendField(Blockly.Msg.STRING_VARIABLE); this.appendDummyInput() .appendField(Blockly.Msg.LETTERS_ARE_CONVERTED_TO) - .appendField(new Blockly.FieldDropdown([[Blockly.Msg.CAPITAL, ".toUpperCase()"], [Blockly.Msg.LOWER_CASE, ".toLowerCase()"]]), "type"); + .appendField(new Blockly.FieldDropdown([ + [Blockly.Msg.CAPITAL, ".toUpperCase()"], + [Blockly.Msg.LOWER_CASE, ".toLowerCase()"] + ]), "type"); this.setPreviousStatement(true, null); this.setNextStatement(true, null); this.setColour(TEXTS_HUE); @@ -338,7 +342,10 @@ export const first_and_last = { .setCheck(null) .appendField(Blockly.Msg.AS_A_STRING); this.appendDummyInput() - .appendField(new Blockly.FieldDropdown([[Blockly.Msg.STARTSWITH, ".startsWith"], [Blockly.Msg.ENDSWITH, ".endsWith"]]), "type"); + .appendField(new Blockly.FieldDropdown([ + [Blockly.Msg.STARTSWITH, ".startsWith"], + [Blockly.Msg.ENDSWITH, ".endsWith"] + ]), "type"); this.setOutput(true, null); this.setColour(TEXTS_HUE); this.setTooltip(Blockly.Msg.FIRST_AND_LAST_HELP); @@ -352,7 +359,15 @@ export const type_conversion = { this.appendValueInput("variable") .setCheck(null) .appendField(Blockly.Msg.DATA_TYPE_CONVERSION) - .appendField(new Blockly.FieldDropdown([[Blockly.Msg.LANG_MATH_STRING, "String"], [Blockly.Msg.LANG_MATH_CHAR, "char"], [Blockly.Msg.LANG_MATH_BYTE, "byte"], [Blockly.Msg.LANG_MATH_INT, "int"], [Blockly.Msg.LANG_MATH_LONG, "long"], [Blockly.Msg.LANG_MATH_FLOAT, "float"], [Blockly.Msg.LANG_MATH_WORD, "word"]]), "type"); + .appendField(new Blockly.FieldDropdown([ + [Blockly.Msg.LANG_MATH_STRING, "String"], + [Blockly.Msg.LANG_MATH_CHAR, "char"], + [Blockly.Msg.LANG_MATH_BYTE, "byte"], + [Blockly.Msg.LANG_MATH_INT, "int"], + [Blockly.Msg.LANG_MATH_LONG, "long"], + [Blockly.Msg.LANG_MATH_FLOAT, "float"], + [Blockly.Msg.LANG_MATH_WORD, "word"] + ]), "type"); this.setOutput(true, null); this.setColour(TEXTS_HUE); this.setTooltip(Blockly.Msg.TYPE_CONVERSION_HELP); @@ -559,7 +574,13 @@ export const String_to_Long_Integer = { this.appendValueInput("data") .setCheck(null) .appendField(Blockly.Msg.MIXLY_MICROBIT_TYPE_STRING + Blockly.Msg.A_TO_B + Blockly.Msg.LANG_MATH_LONG) - .appendField(new Blockly.FieldDropdown([[Blockly.Msg.MATH_HEX, "16"], [Blockly.Msg.MATH_DEC, "10"], [Blockly.Msg.MATH_OCT, "8"], [Blockly.Msg.MATH_BIN, "2"], [Blockly.Msg.blynk_IOT_AUTO, "0"]]), "type"); + .appendField(new Blockly.FieldDropdown([ + [Blockly.Msg.MATH_HEX, "16"], + [Blockly.Msg.MATH_DEC, "10"], + [Blockly.Msg.MATH_OCT, "8"], + [Blockly.Msg.MATH_BIN, "2"], + [Blockly.Msg.blynk_IOT_AUTO, "0"] + ]), "type"); this.setOutput(true, null); this.setColour(TEXTS_HUE); this.setTooltip(""); diff --git a/boards/default_src/arduino_avr/blocks/tools.js b/boards/default_src/arduino_avr/blocks/tools.js index 996748da..54cb9f0f 100644 --- a/boards/default_src/arduino_avr/blocks/tools.js +++ b/boards/default_src/arduino_avr/blocks/tools.js @@ -27,7 +27,6 @@ export const folding_block = { } }; - //IIC地址查找 export const IICSCAN = { init: function () { diff --git a/boards/default_src/arduino_avr/template.xml b/boards/default_src/arduino_avr/template.xml index 2c393a0e..ae70d5c5 100644 --- a/boards/default_src/arduino_avr/template.xml +++ b/boards/default_src/arduino_avr/template.xml @@ -3297,16 +3297,6 @@ - - - V0 - - - - V0 - - - 0 diff --git a/boards/default_src/arduino_esp32/blocks/actuator.js b/boards/default_src/arduino_esp32/blocks/actuator.js index 1a4cf0c1..33fd4b14 100644 --- a/boards/default_src/arduino_esp32/blocks/actuator.js +++ b/boards/default_src/arduino_esp32/blocks/actuator.js @@ -97,7 +97,6 @@ export const motor_id = { } }; - export const HR8833_Motor_Setup = { init: function () { this.setColour(ACTUATOR_HUE); diff --git a/boards/default_src/arduino_esp32/blocks/communicate.js b/boards/default_src/arduino_esp32/blocks/communicate.js index d6826698..da8ca718 100644 --- a/boards/default_src/arduino_esp32/blocks/communicate.js +++ b/boards/default_src/arduino_esp32/blocks/communicate.js @@ -14,6 +14,7 @@ export const serialBT_Init = { this.setTooltip(Blockly.Msg.MIXLY_TOOLTIP_SERIAL_BEGIN); } }; + export const serialBT_available = { init: function () { this.setColour(COMMUNICATE_HUE); @@ -34,6 +35,7 @@ export const serialBT_read = { } }; + export const serialBT_write = { init: function () { this.setColour(COMMUNICATE_HUE); @@ -43,5 +45,4 @@ export const serialBT_write = { this.setNextStatement(true, null); this.setTooltip(Blockly.Msg.TEXT_WRITE_TOOLTIP); } -}; - +}; \ No newline at end of file diff --git a/boards/default_src/arduino_esp32/blocks/control.js b/boards/default_src/arduino_esp32/blocks/control.js index 4ee59b4d..528f290c 100644 --- a/boards/default_src/arduino_esp32/blocks/control.js +++ b/boards/default_src/arduino_esp32/blocks/control.js @@ -7,14 +7,22 @@ export const controls_hw_timer = { this.setColour(LOOPS_HUE); this.appendDummyInput("") .appendField(Blockly.Msg.MIXLY_ESP32_HW_TIMER) - .appendField(new Blockly.FieldDropdown([["0", "0"], ["1", "1"], ["2", "2"], ["3", "3"]]), "TIMER_NUM"); + .appendField(new Blockly.FieldDropdown([ + ["0", "0"], + ["1", "1"], + ["2", "2"], + ["3", "3"] + ]), "TIMER_NUM"); this.appendValueInput('TIME') .setCheck(Number) .appendField(Blockly.Msg.MIXLY_MSTIMER2_EVERY); this.appendDummyInput() .appendField(Blockly.Msg.MIXLY_MILLIS) .appendField(Blockly.Msg.MIXLY_MODE) - .appendField(new Blockly.FieldDropdown([[Blockly.Msg.MIXLY_PYTHON_ONE_SHOT, "false"], [Blockly.Msg.MIXLY_PYTHON_PERIODIC, "true"]]), "mode"); + .appendField(new Blockly.FieldDropdown([ + [Blockly.Msg.MIXLY_PYTHON_ONE_SHOT, "false"], + [Blockly.Msg.MIXLY_PYTHON_PERIODIC, "true"] + ]), "mode"); this.appendStatementInput('DO') .appendField(Blockly.Msg.MIXLY_MSTIMER2_DO); this.setPreviousStatement(false); @@ -28,9 +36,21 @@ export const controls_runnig_core = { this.appendDummyInput() .appendField("ESP32") .appendField("Task") - .appendField(new Blockly.FieldDropdown([["1", "1"], ["2", "2"], ["3", "3"], ["4", "4"], ["5", "5"], ["6", "6"], ["7", "7"], ["8", "8"]]), "task") + .appendField(new Blockly.FieldDropdown([ + ["1", "1"], + ["2", "2"], + ["3", "3"], + ["4", "4"], + ["5", "5"], + ["6", "6"], + ["7", "7"], + ["8", "8"] + ]), "task") .appendField("Core") - .appendField(new Blockly.FieldDropdown([["0", "0"], ["1", "1"]]), "core"); + .appendField(new Blockly.FieldDropdown([ + ["0", "0"], + ["1", "1"] + ]), "core"); this.appendValueInput("length") .setCheck(null) .setAlign(Blockly.inputs.Align.RIGHT) @@ -61,12 +81,18 @@ export const control_core_delay = { this.setTooltip(Blockly.Msg.MIXLY_TOOLTIP_SCOOP_SLEEP); } }; + export const controls_hw_timer_start = { init: function () { this.setColour(LOOPS_HUE); this.appendDummyInput("") .appendField(Blockly.Msg.MIXLY_ESP32_HW_TIMER) - .appendField(new Blockly.FieldDropdown([["0", "0"], ["1", "1"], ["2", "2"], ["3", "3"]]), "TIMER_NUM") + .appendField(new Blockly.FieldDropdown([ + ["0", "0"], + ["1", "1"], + ["2", "2"], + ["3", "3"] + ]), "TIMER_NUM") .appendField(Blockly.Msg.MIXLY_MSTIMER2_START); this.setPreviousStatement(true); this.setNextStatement(true); @@ -79,7 +105,12 @@ export const controls_hw_timer_stop = { this.setColour(LOOPS_HUE); this.appendDummyInput("") .appendField(Blockly.Msg.MIXLY_ESP32_HW_TIMER) - .appendField(new Blockly.FieldDropdown([["0", "0"], ["1", "1"], ["2", "2"], ["3", "3"]]), "TIMER_NUM") + .appendField(new Blockly.FieldDropdown([ + ["0", "0"], + ["1", "1"], + ["2", "2"], + ["3", "3"] + ]), "TIMER_NUM") .appendField(Blockly.Msg.MIXLY_STOP); this.setPreviousStatement(true); this.setNextStatement(true); diff --git a/boards/default_src/arduino_esp32/blocks/ethernet.js b/boards/default_src/arduino_esp32/blocks/ethernet.js index 77c6d0fa..446971b8 100644 --- a/boards/default_src/arduino_esp32/blocks/ethernet.js +++ b/boards/default_src/arduino_esp32/blocks/ethernet.js @@ -44,7 +44,11 @@ export const esp32_wifi_connection_event = { init: function () { this.appendDummyInput() .appendField("WiFi连接事件") - .appendField(new Blockly.FieldDropdown([[Blockly.Msg.MIXLY_ESP32_WIFI_CONNECTION_EVENT1, "1"], [Blockly.Msg.MIXLY_ESP32_WIFI_CONNECTION_EVENT2, "2"], [Blockly.Msg.MIXLY_ESP32_WIFI_CONNECTION_EVENT3, "3"]]), "type"); + .appendField(new Blockly.FieldDropdown([ + [Blockly.Msg.MIXLY_ESP32_WIFI_CONNECTION_EVENT1, "1"], + [Blockly.Msg.MIXLY_ESP32_WIFI_CONNECTION_EVENT2, "2"], + [Blockly.Msg.MIXLY_ESP32_WIFI_CONNECTION_EVENT3, "3"] + ]), "type"); this.appendStatementInput("event") .setCheck(null); this.setColour(ETHERNET_HUE); diff --git a/boards/default_src/arduino_esp32/blocks/handbit.js b/boards/default_src/arduino_esp32/blocks/handbit.js index 0bf261c6..a1a2ebaf 100644 --- a/boards/default_src/arduino_esp32/blocks/handbit.js +++ b/boards/default_src/arduino_esp32/blocks/handbit.js @@ -73,22 +73,6 @@ export const touchAttachInterrupt = { } }; -var HANDBIT_MSA300_GETAB = [ - [Blockly.Msg.MixGo_MPU9250_AX, "msa.getX()"], - [Blockly.Msg.MixGo_MPU9250_AY, "msa.getY()"], - [Blockly.Msg.MixGo_MPU9250_AZ, "msa.getZ()"], -]; - -var HANDBIT_MSA300_ACTION = [ - [Blockly.Msg.HANDBIT_FORWARD, "msa.getX()>1500&&msa.getX()<2000&&msa.getZ()>-1000&&msa.getZ()<0"], - [Blockly.Msg.HANDBIT_BACKWARD, "msa.getX()>1500&&msa.getX()<2000&&msa.getZ()>0&&msa.getZ()<1500"], - [Blockly.Msg.HANDBIT_LEFT, "msa.getY()<1000&&msa.getY()>0"], - [Blockly.Msg.HANDBIT_RIGHT, "msa.getY()<0&&msa.getY()>-1000"], - [Blockly.Msg.HANDBIT_UP, "msa.getX()>-400&&msa.getX()<400&&msa.getY()>-400&&msa.getY()<400&&msa.getZ()>-1800&&msa.getZ()<-1400"], - [Blockly.Msg.HANDBIT_DOWN, "msa.getX()>-400&&msa.getX()<400&&msa.getY()>-400&&msa.getY()<400&&msa.getZ()>2000&&msa.getZ()<2400"], - -]; - //传感器_重力感应 export const handbit_MSA300 = { init: function () { @@ -97,12 +81,17 @@ export const handbit_MSA300 = { .appendField(Blockly.Msg.MixGo_MPU9250); this.appendDummyInput("") .setAlign(Blockly.inputs.Align.RIGHT) - .appendField(new Blockly.FieldDropdown(HANDBIT_MSA300_GETAB), "HANDBIT_MSA300_GETAB"); + .appendField(new Blockly.FieldDropdown(this.HANDBIT_MSA300_GETAB), "HANDBIT_MSA300_GETAB"); this.setInputsInline(true); this.setOutput(true); this.setTooltip(""); this.setHelpUrl(''); - } + }, + HANDBIT_MSA300_GETAB: [ + [Blockly.Msg.MixGo_MPU9250_AX, "msa.getX()"], + [Blockly.Msg.MixGo_MPU9250_AY, "msa.getY()"], + [Blockly.Msg.MixGo_MPU9250_AZ, "msa.getZ()"], + ] }; export const handbit_MSA300_action = { @@ -112,12 +101,20 @@ export const handbit_MSA300_action = { .appendField(Blockly.Msg.Handbit); this.appendDummyInput("") .setAlign(Blockly.inputs.Align.RIGHT) - .appendField(new Blockly.FieldDropdown(HANDBIT_MSA300_ACTION), "HANDBIT_MSA300_ACTION"); + .appendField(new Blockly.FieldDropdown(this.HANDBIT_MSA300_ACTION), "HANDBIT_MSA300_ACTION"); this.setInputsInline(true); this.setOutput(true); this.setTooltip(""); this.setHelpUrl(''); - } + }, + HANDBIT_MSA300_ACTION: [ + [Blockly.Msg.HANDBIT_FORWARD, "msa.getX()>1500&&msa.getX()<2000&&msa.getZ()>-1000&&msa.getZ()<0"], + [Blockly.Msg.HANDBIT_BACKWARD, "msa.getX()>1500&&msa.getX()<2000&&msa.getZ()>0&&msa.getZ()<1500"], + [Blockly.Msg.HANDBIT_LEFT, "msa.getY()<1000&&msa.getY()>0"], + [Blockly.Msg.HANDBIT_RIGHT, "msa.getY()<0&&msa.getY()>-1000"], + [Blockly.Msg.HANDBIT_UP, "msa.getX()>-400&&msa.getX()<400&&msa.getY()>-400&&msa.getY()<400&&msa.getZ()>-1800&&msa.getZ()<-1400"], + [Blockly.Msg.HANDBIT_DOWN, "msa.getX()>-400&&msa.getX()<400&&msa.getY()>-400&&msa.getY()<400&&msa.getZ()>2000&&msa.getZ()<2400"], + ] }; export const handbit_rgb_rainbow1 = { @@ -135,18 +132,13 @@ export const handbit_rgb_rainbow1 = { } }; -var DISPLAY_RAINBOW_TYPE = [ - [Blockly.Msg.MIXLY_RGB_DISPLAY_RAINBOW_TYPE_1, "normal"], - [Blockly.Msg.MIXLY_RGB_DISPLAY_RAINBOW_TYPE_2, "change"] -]; - export const handbit_rgb_rainbow3 = { init: function () { this.setColour(ACTUATOR_HUE); this.appendDummyInput("") .appendField(Blockly.Msg.MIXLY_RGB); this.appendDummyInput("") - .appendField(new Blockly.FieldDropdown(DISPLAY_RAINBOW_TYPE), "TYPE"); + .appendField(new Blockly.FieldDropdown(this.DISPLAY_RAINBOW_TYPE), "TYPE"); this.appendValueInput("rainbow_color") .setCheck(Number) .setAlign(Blockly.inputs.Align.RIGHT) @@ -154,7 +146,11 @@ export const handbit_rgb_rainbow3 = { this.setInputsInline(true); this.setPreviousStatement(true, null); this.setNextStatement(true, null); - } + }, + DISPLAY_RAINBOW_TYPE: [ + [Blockly.Msg.MIXLY_RGB_DISPLAY_RAINBOW_TYPE_1, "normal"], + [Blockly.Msg.MIXLY_RGB_DISPLAY_RAINBOW_TYPE_2, "change"] + ] }; export const handbit_rgb = { diff --git a/boards/default_src/arduino_esp32/blocks/inout.js b/boards/default_src/arduino_esp32/blocks/inout.js index 1cfcdc5c..652d69af 100644 --- a/boards/default_src/arduino_esp32/blocks/inout.js +++ b/boards/default_src/arduino_esp32/blocks/inout.js @@ -2,7 +2,7 @@ import * as Blockly from 'blockly/core'; import { Profile } from 'mixly'; import { inout_analog_write } from '@mixly/arduino-avr/blocks/inout'; -const BASE_HUE = 20//'#ae3838';//40; +const BASE_HUE = 20; export const ledcSetup = { init: function () { @@ -40,6 +40,7 @@ export const ledcAttachPin = { this.setTooltip(); } }; + export const ledcDetachPin = { init: function () { this.setColour(BASE_HUE); @@ -52,6 +53,7 @@ export const ledcDetachPin = { this.setTooltip(); } }; + export const ledcWrite = inout_analog_write; export const inout_touchRead = { @@ -85,6 +87,7 @@ export const touchAttachInterrupt = { this.setTooltip(Blockly.Msg.MIXLY_TOOLTIP_INOUT_ATTACHINTERRUPT); } }; + export const inout_esp32_dac = { init: function () { this.appendValueInput("value") @@ -110,7 +113,24 @@ export const esp32_led_pwm = { .appendField(Blockly.Msg.MIXLY_FREQUENCY) .appendField(new Blockly.FieldTextInput("5000"), "freq") .appendField(Blockly.Msg.MIXLY_CHANNEL) - .appendField(new Blockly.FieldDropdown([["0", "0"], ["1", "1"], ["2", "2"], ["3", "3"], ["4", "4"], ["5", "5"], ["6", "6"], ["7", "7"], ["8", "8"], ["9", "9"], ["10", "10"], ["11", "11"], ["12", "12"], ["13", "13"], ["14", "14"], ["15", "15"]]), "ledChannel") + .appendField(new Blockly.FieldDropdown([ + ["0", "0"], + ["1", "1"], + ["2", "2"], + ["3", "3"], + ["4", "4"], + ["5", "5"], + ["6", "6"], + ["7", "7"], + ["8", "8"], + ["9", "9"], + ["10", "10"], + ["11", "11"], + ["12", "12"], + ["13", "13"], + ["14", "14"], + ["15", "15"] + ]), "ledChannel") .appendField(Blockly.Msg.MIXLY_ANALOGWRITE_PIN); this.appendValueInput("val") .setCheck(null) diff --git a/boards/default_src/arduino_esp32/blocks/mixepi.js b/boards/default_src/arduino_esp32/blocks/mixepi.js index b7d43452..dfbeae2b 100644 --- a/boards/default_src/arduino_esp32/blocks/mixepi.js +++ b/boards/default_src/arduino_esp32/blocks/mixepi.js @@ -5,26 +5,24 @@ const DISPLAY_HUE = 180; const SENSOR_HUE = 40; const ACTUATOR_HUE = 100; -var MIXEPI_ADXL345_ACTION = [ - [Blockly.Msg.HANDBIT_FORWARD, "accel.getAcceleration().x>-4.7&&accel.getAcceleration().x<0&&accel.getAcceleration().y<1&&accel.getAcceleration().y>-1&&accel.getAcceleration().z<-8&&accel.getAcceleration().z>-9.8"], - [Blockly.Msg.HANDBIT_BACKWARD, "accel.getAcceleration().x>0&&accel.getAcceleration().x<4.7&&accel.getAcceleration().y<1&&accel.getAcceleration().y>-1&&accel.getAcceleration().z<-8&&accel.getAcceleration().z>-9.8"], - [Blockly.Msg.HANDBIT_LEFT, "accel.getAcceleration().y>0&&accel.getAcceleration().y<5.5&&accel.getAcceleration().z<-7.5&&accel.getAcceleration().z>-9.8"], - [Blockly.Msg.HANDBIT_RIGHT, "accel.getAcceleration().y<0&&accel.getAcceleration().y>-4.7&&accel.getAcceleration().z<-7.5&&accel.getAcceleration().z>-9.8"], - [Blockly.Msg.HANDBIT_UP, "accel.getAcceleration().z>-9.8&&accel.getAcceleration().z<-8"], - [Blockly.Msg.HANDBIT_DOWN, "accel.getAcceleration().z>8&&accel.getAcceleration().z<9.8"] -]; - - - -var BRIGHTNESS_SELECT = [["0", "0"], ["1", "1"], ["2", "2"], ["3", "3"], ["4", "4"], ["5", "5"], ["6", "6"], ["7", "7"], ["8", "8"]]; - export const brightness_select = { init: function () { this.setColour(DISPLAY_HUE); this.appendDummyInput("") - .appendField(new Blockly.FieldDropdown(BRIGHTNESS_SELECT), 'STAT'); + .appendField(new Blockly.FieldDropdown(this.BRIGHTNESS_SELECT), 'STAT'); this.setOutput(true, Number); - } + }, + BRIGHTNESS_SELECT: [ + ["0", "0"], + ["1", "1"], + ["2", "2"], + ["3", "3"], + ["4", "4"], + ["5", "5"], + ["6", "6"], + ["7", "7"], + ["8", "8"] + ] }; export const mixePi_button_is_pressed = { @@ -79,7 +77,6 @@ export const mixepi_inout_touchRead = { } }; - export const mixepi_ADXL345_action = { init: function () { this.setColour(SENSOR_HUE); @@ -87,12 +84,20 @@ export const mixepi_ADXL345_action = { .appendField("MIXEPI"); this.appendDummyInput("") .setAlign(Blockly.inputs.Align.RIGHT) - .appendField(new Blockly.FieldDropdown(MIXEPI_ADXL345_ACTION), "MIXEPI_ADXL345_ACTION"); + .appendField(new Blockly.FieldDropdown(this.MIXEPI_ADXL345_ACTION), "MIXEPI_ADXL345_ACTION"); this.setInputsInline(true); this.setOutput(true); this.setTooltip(""); this.setHelpUrl(''); - } + }, + MIXEPI_ADXL345_ACTION: [ + [Blockly.Msg.HANDBIT_FORWARD, "accel.getAcceleration().x>-4.7&&accel.getAcceleration().x<0&&accel.getAcceleration().y<1&&accel.getAcceleration().y>-1&&accel.getAcceleration().z<-8&&accel.getAcceleration().z>-9.8"], + [Blockly.Msg.HANDBIT_BACKWARD, "accel.getAcceleration().x>0&&accel.getAcceleration().x<4.7&&accel.getAcceleration().y<1&&accel.getAcceleration().y>-1&&accel.getAcceleration().z<-8&&accel.getAcceleration().z>-9.8"], + [Blockly.Msg.HANDBIT_LEFT, "accel.getAcceleration().y>0&&accel.getAcceleration().y<5.5&&accel.getAcceleration().z<-7.5&&accel.getAcceleration().z>-9.8"], + [Blockly.Msg.HANDBIT_RIGHT, "accel.getAcceleration().y<0&&accel.getAcceleration().y>-4.7&&accel.getAcceleration().z<-7.5&&accel.getAcceleration().z>-9.8"], + [Blockly.Msg.HANDBIT_UP, "accel.getAcceleration().z>-9.8&&accel.getAcceleration().z<-8"], + [Blockly.Msg.HANDBIT_DOWN, "accel.getAcceleration().z>8&&accel.getAcceleration().z<9.8"] + ] }; export const mixepi_rgb_rainbow1 = { @@ -110,18 +115,13 @@ export const mixepi_rgb_rainbow1 = { } }; -var DISPLAY_RAINBOW_TYPE = [ - [Blockly.Msg.MIXLY_RGB_DISPLAY_RAINBOW_TYPE_1, "normal"], - [Blockly.Msg.MIXLY_RGB_DISPLAY_RAINBOW_TYPE_2, "change"] -]; - export const mixepi_rgb_rainbow3 = { init: function () { this.setColour(ACTUATOR_HUE); this.appendDummyInput("") .appendField(Blockly.Msg.MIXLY_RGB); this.appendDummyInput("") - .appendField(new Blockly.FieldDropdown(DISPLAY_RAINBOW_TYPE), "TYPE"); + .appendField(new Blockly.FieldDropdown(this.DISPLAY_RAINBOW_TYPE), "TYPE"); this.appendValueInput("rainbow_color") .setCheck(Number) .setAlign(Blockly.inputs.Align.RIGHT) @@ -129,7 +129,11 @@ export const mixepi_rgb_rainbow3 = { this.setInputsInline(true); this.setPreviousStatement(true, null); this.setNextStatement(true, null); - } + }, + DISPLAY_RAINBOW_TYPE: [ + [Blockly.Msg.MIXLY_RGB_DISPLAY_RAINBOW_TYPE_1, "normal"], + [Blockly.Msg.MIXLY_RGB_DISPLAY_RAINBOW_TYPE_2, "change"] + ] }; export const RGB_color_seclet = { @@ -225,5 +229,4 @@ export const mixepi_rgb_Brightness = { this.setNextStatement(true, null); this.setTooltip(''); } -}; - +}; \ No newline at end of file diff --git a/boards/default_src/arduino_esp32/blocks/mixgo.js b/boards/default_src/arduino_esp32/blocks/mixgo.js index 3a04a6da..372d7148 100644 --- a/boards/default_src/arduino_esp32/blocks/mixgo.js +++ b/boards/default_src/arduino_esp32/blocks/mixgo.js @@ -23,11 +23,6 @@ export const HT16K33_TEXT = { //执行器_点阵屏显示_画点显示 export const HT16K33_POS = { init: function () { - //执行器_点阵屏显示_画点变量 - var MixGo_DrawPixel_NUM = [ - [Blockly.Msg.MIXLY_4DIGITDISPLAY_ON, "LED_ON"], - [Blockly.Msg.MIXLY_4DIGITDISPLAY_OFF, "LED_OFF"] - ]; this.setColour(DISPLAY_HUE); this.appendDummyInput("") .appendField(Blockly.Msg.MIXLY_MICROBIT_monitor); @@ -42,12 +37,16 @@ export const HT16K33_POS = { this.appendDummyInput("") .setAlign(Blockly.inputs.Align.RIGHT) .appendField(Blockly.Msg.MIXLY_DISPLAY_MATRIX_SHOWPOINT) - .appendField(new Blockly.FieldDropdown(MixGo_DrawPixel_NUM), "DrawPixel_TYPE"); + .appendField(new Blockly.FieldDropdown(this.DRAW_TYPE), "DrawPixel_TYPE"); this.setInputsInline(true); this.setPreviousStatement(true); this.setNextStatement(true); this.setTooltip(""); - } + }, + DRAW_TYPE: [ + [Blockly.Msg.MIXLY_4DIGITDISPLAY_ON, "LED_ON"], + [Blockly.Msg.MIXLY_4DIGITDISPLAY_OFF, "LED_OFF"] + ] }; //执行器_点阵屏显示_显示图案 @@ -211,7 +210,6 @@ export const HT16K33_LedArray = { .appendField(new Blockly.FieldCheckbox("FALSE"), "a116"); this.setOutput(true, Number); this.setTooltip(); - } }; @@ -328,7 +326,6 @@ export const mixgo_button_is_pressed = { } }; - export const sensor_mixgo_light = { init: function () { this.setColour(Blockly.Msg['SENSOR_HUE']); @@ -370,7 +367,10 @@ export const sensor_mixgo_pin_near = { init: function () { this.setColour(Blockly.Msg['SENSOR_HUE']); this.appendDummyInput() - .appendField(new Blockly.FieldDropdown([[Blockly.Msg.TEXT_TRIM_LEFT, "34"], [Blockly.Msg.TEXT_TRIM_RIGHT, "36"]]), "direction") + .appendField(new Blockly.FieldDropdown([ + [Blockly.Msg.TEXT_TRIM_LEFT, "34"], + [Blockly.Msg.TEXT_TRIM_RIGHT, "36"] + ]), "direction") .appendField(Blockly.Msg.MIXLY_ESP32_NEAR); this.setOutput(true, Boolean); this.setInputsInline(true); @@ -387,13 +387,17 @@ export const sensor_mixgo_pin_near = { }); } }; + export const mixGo_led = { init: function () { this.setColour(ACTUATOR_HUE); this.appendDummyInput() .appendField(Blockly.Msg.MIXLY_SETTING) .appendField(Blockly.Msg.MIXLY_BUILDIN_LED) - .appendField(new Blockly.FieldDropdown([[Blockly.Msg.MIXLY_LEFT, "0"], [Blockly.Msg.MIXLY_RIGHT, "5"]]), 'STAT'); + .appendField(new Blockly.FieldDropdown([ + [Blockly.Msg.MIXLY_LEFT, "0"], + [Blockly.Msg.MIXLY_RIGHT, "5"] + ]), 'STAT'); this.appendValueInput('bright') .appendField(Blockly.Msg.MIXLY_PULSEIN_STAT) this.setPreviousStatement(true, null); @@ -409,7 +413,10 @@ export const mixGo_led_brightness = { this.appendDummyInput() .appendField(Blockly.Msg.MIXLY_SETTING) .appendField(Blockly.Msg.MIXLY_BUILDIN_LED) - .appendField(new Blockly.FieldDropdown([[Blockly.Msg.MIXLY_LEFT, "0"], [Blockly.Msg.MIXLY_RIGHT, "5"]]), 'STAT'); + .appendField(new Blockly.FieldDropdown([ + [Blockly.Msg.MIXLY_LEFT, "0"], + [Blockly.Msg.MIXLY_RIGHT, "5"] + ]), 'STAT'); this.appendValueInput('bright') .appendField(Blockly.Msg.MIXLY_PULSEIN_STAT) this.setPreviousStatement(true, null); @@ -434,18 +441,13 @@ export const MixGo_rgb_rainbow1 = { } }; -var DISPLAY_RAINBOW_TYPE = [ - [Blockly.Msg.MIXLY_RGB_DISPLAY_RAINBOW_TYPE_1, "normal"], - [Blockly.Msg.MIXLY_RGB_DISPLAY_RAINBOW_TYPE_2, "change"] -]; - export const MixGo_rgb_rainbow3 = { init: function () { this.setColour(ACTUATOR_HUE); this.appendDummyInput("") .appendField(Blockly.Msg.MIXLY_RGB); this.appendDummyInput("") - .appendField(new Blockly.FieldDropdown(DISPLAY_RAINBOW_TYPE), "TYPE"); + .appendField(new Blockly.FieldDropdown(this.DISPLAY_RAINBOW_TYPE), "TYPE"); this.appendValueInput("rainbow_color") .setCheck(Number) .setAlign(Blockly.inputs.Align.RIGHT) @@ -453,7 +455,11 @@ export const MixGo_rgb_rainbow3 = { this.setInputsInline(true); this.setPreviousStatement(true, null); this.setNextStatement(true, null); - } + }, + DISPLAY_RAINBOW_TYPE: [ + [Blockly.Msg.MIXLY_RGB_DISPLAY_RAINBOW_TYPE_1, "normal"], + [Blockly.Msg.MIXLY_RGB_DISPLAY_RAINBOW_TYPE_2, "change"] + ] }; export const MixGo_rgb = { @@ -512,6 +518,7 @@ export const MixGo_rgb_Brightness = { this.setTooltip(''); } }; + export const MixGo_rgb_show = { init: function () { this.setColour(ACTUATOR_HUE); diff --git a/boards/default_src/arduino_esp32/blocks/pinout.js b/boards/default_src/arduino_esp32/blocks/pinout.js index 540c5dae..e634e58a 100644 --- a/boards/default_src/arduino_esp32/blocks/pinout.js +++ b/boards/default_src/arduino_esp32/blocks/pinout.js @@ -2,7 +2,6 @@ import * as Blockly from 'blockly/core'; const PINOUT_HUE = '#555555'; - export const esp32_pin = { init: function () { this.appendDummyInput() diff --git a/boards/default_src/arduino_esp32/blocks/pins.js b/boards/default_src/arduino_esp32/blocks/pins.js index ba699007..935a7c33 100644 --- a/boards/default_src/arduino_esp32/blocks/pins.js +++ b/boards/default_src/arduino_esp32/blocks/pins.js @@ -20,6 +20,7 @@ export const pins_button = { this.setOutput(true, Number); } }; + export const pins_sda = { init: function () { this.setColour(PINS_HUE); @@ -100,6 +101,7 @@ export const pins_axis = { this.setOutput(true, Number); } }; + export const pins_brightness = { init: function () { this.setColour(PINS_HUE); @@ -172,7 +174,6 @@ export const brightness = { } }; - export const CHANNEL = { init: function () { this.setColour(PINS_HUE); diff --git a/boards/default_src/arduino_esp32/blocks/pocketcard.js b/boards/default_src/arduino_esp32/blocks/pocketcard.js index e254fbef..60c7525d 100644 --- a/boards/default_src/arduino_esp32/blocks/pocketcard.js +++ b/boards/default_src/arduino_esp32/blocks/pocketcard.js @@ -81,6 +81,7 @@ export const MPU9250_update = { this.setInputsInline(true); } }; + export const Pocket_rgb = { init: function () { this.setColour(ACTUATOR_HUE); @@ -128,6 +129,7 @@ export const Pocket_rgb_Brightness = { this.setTooltip(''); } }; + export const Pocket_rgb_show = { init: function () { this.setColour(ACTUATOR_HUE); @@ -137,6 +139,7 @@ export const Pocket_rgb_show = { this.setNextStatement(true, null); } }; + export const pocket_RGB_color_HSV = { init: function () { this.setColour(ACTUATOR_HUE); diff --git a/boards/default_src/arduino_esp32/blocks/sensor.js b/boards/default_src/arduino_esp32/blocks/sensor.js index 8ca2dfe4..e6739ad3 100644 --- a/boards/default_src/arduino_esp32/blocks/sensor.js +++ b/boards/default_src/arduino_esp32/blocks/sensor.js @@ -36,7 +36,13 @@ export const OneButton = { .appendField(new Blockly.FieldDropdown(Profile.default.button), 'PIN'); this.appendDummyInput("") .appendField(Blockly.Msg.MIXLY_BUTTON) - .appendField(new Blockly.FieldDropdown([[Blockly.Msg.MIXLY_CLICK, "attachClick"], [Blockly.Msg.MIXLY_DOUBLE_CLICK, "attachDoubleClick"], [Blockly.Msg.MIXLY_LONG_PRESS_START, "attachLongPressStart"], [Blockly.Msg.MIXLY_DURING_LONG_PRESS, "attachDuringLongPress"], [Blockly.Msg.MIXLY_LONG_PRESS_END, "attachLongPressStop"]]), "mode"); + .appendField(new Blockly.FieldDropdown([ + [Blockly.Msg.MIXLY_CLICK, "attachClick"], + [Blockly.Msg.MIXLY_DOUBLE_CLICK, "attachDoubleClick"], + [Blockly.Msg.MIXLY_LONG_PRESS_START, "attachLongPressStart"], + [Blockly.Msg.MIXLY_DURING_LONG_PRESS, "attachDuringLongPress"], + [Blockly.Msg.MIXLY_LONG_PRESS_END, "attachLongPressStop"] + ]), "mode"); this.appendStatementInput('DO') .appendField(Blockly.Msg.MIXLY_DO); this.setTooltip(Blockly.Msg.MIXLY_TOOLTIP_INOUT_ATTACHINTERRUPT); @@ -47,16 +53,16 @@ export const OneButton = { export const ESP_TCS34725_Get_RGB = { init: function () { - const TCS34725_COLOR = [ - [Blockly.Msg.COLOUR_RGB_RED, "r"], - [Blockly.Msg.COLOUR_RGB_GREEN, "g"], - [Blockly.Msg.COLOUR_RGB_BLUE, "b"], - ]; this.setColour(SENSOR_HUE); this.appendDummyInput("") .appendField(Blockly.Msg.TCS34725_Get_RGB) - .appendField(new Blockly.FieldDropdown(TCS34725_COLOR), "TCS34725_COLOR"); + .appendField(new Blockly.FieldDropdown(this.TCS34725_COLOR), "TCS34725_COLOR"); this.setInputsInline(true); this.setOutput(true); - } + }, + TCS34725_COLOR: [ + [Blockly.Msg.COLOUR_RGB_RED, "r"], + [Blockly.Msg.COLOUR_RGB_GREEN, "g"], + [Blockly.Msg.COLOUR_RGB_BLUE, "b"], + ] }; \ No newline at end of file diff --git a/boards/default_src/arduino_esp32/blocks/serial.js b/boards/default_src/arduino_esp32/blocks/serial.js index ab488546..403a35d5 100644 --- a/boards/default_src/arduino_esp32/blocks/serial.js +++ b/boards/default_src/arduino_esp32/blocks/serial.js @@ -60,7 +60,10 @@ export const serial_print = { this.appendValueInput("CONTENT", String) .appendField(new Blockly.FieldDropdown(Profile.default.serial_HardwareSelect), "serial_select") .appendField(Blockly.Msg.MIXLY_SERIAL_PRINT) - .appendField(new Blockly.FieldDropdown([[Blockly.Msg.MIXLY_PRINT_INLINE, "print"], [Blockly.Msg.TEXT_PRINT_Huanhang_TOOLTIP, "println"]]), "new_line"); + .appendField(new Blockly.FieldDropdown([ + [Blockly.Msg.MIXLY_PRINT_INLINE, "print"], + [Blockly.Msg.TEXT_PRINT_Huanhang_TOOLTIP, "println"] + ]), "new_line"); this.setPreviousStatement(true, null); this.setNextStatement(true, null); this.setTooltip(Blockly.Msg.TEXT_PRINT_TOOLTIP); @@ -73,24 +76,34 @@ export const serial_println = { this.appendValueInput("CONTENT", String) .appendField(new Blockly.FieldDropdown(Profile.default.serial_HardwareSelect), "serial_select") .appendField(Blockly.Msg.MIXLY_SERIAL_PRINT) - .appendField(new Blockly.FieldDropdown([[Blockly.Msg.TEXT_PRINT_Huanhang_TOOLTIP, "println"], [Blockly.Msg.MIXLY_PRINT_INLINE, "print"]]), "new_line"); + .appendField(new Blockly.FieldDropdown([ + [Blockly.Msg.TEXT_PRINT_Huanhang_TOOLTIP, "println"], + [Blockly.Msg.MIXLY_PRINT_INLINE, "print"] + ]), "new_line"); this.setPreviousStatement(true, null); this.setNextStatement(true, null); this.setTooltip(Blockly.Msg.TEXT_PRINT_TOOLTIP); } }; - export const serial_print_num = { init: function () { this.setColour(SERIAL_HUE); this.appendDummyInput() .appendField(new Blockly.FieldDropdown(Profile.default.serial_HardwareSelect), "serial_select") .appendField(Blockly.Msg.MIXLY_SERIAL_PRINT) - .appendField(new Blockly.FieldDropdown([[Blockly.Msg.MIXLY_PRINT_INLINE, "print"], [Blockly.Msg.TEXT_PRINT_Huanhang_TOOLTIP, "println"]]), "new_line") + .appendField(new Blockly.FieldDropdown([ + [Blockly.Msg.MIXLY_PRINT_INLINE, "print"], + [Blockly.Msg.TEXT_PRINT_Huanhang_TOOLTIP, "println"] + ]), "new_line") .appendField(Blockly.Msg.MIXLY_NUMBER); this.appendValueInput("CONTENT", Number) - .appendField(new Blockly.FieldDropdown([[Blockly.Msg.MATH_HEX, "HEX"], [Blockly.Msg.MATH_BIN, "BIN"], [Blockly.Msg.MATH_OCT, "OCT"], [Blockly.Msg.MATH_DEC, "DEC"]]), "STAT") + .appendField(new Blockly.FieldDropdown([ + [Blockly.Msg.MATH_HEX, "HEX"], + [Blockly.Msg.MATH_BIN, "BIN"], + [Blockly.Msg.MATH_OCT, "OCT"], + [Blockly.Msg.MATH_DEC, "DEC"] + ]), "STAT") .setCheck(Number); this.setPreviousStatement(true, null); this.setNextStatement(true, null); @@ -142,7 +155,12 @@ export const serial_parseInt_Float = { this.appendDummyInput() .appendField(new Blockly.FieldDropdown(Profile.default.serial_HardwareSelect), "serial_select") //.appendField(Blockly.Msg.MIXLY_SERIAL_READ) - .appendField(new Blockly.FieldDropdown([["read", "read"], ["peek", "peek"], ["parseInt", "parseInt"], ["parseFloat", "parseFloat"]]), "STAT"); + .appendField(new Blockly.FieldDropdown([ + ["read", "read"], + ["peek", "peek"], + ["parseInt", "parseInt"], + ["parseFloat", "parseFloat"] + ]), "STAT"); this.setOutput(true, Number); var thisBlock = this; this.setTooltip(function () { @@ -167,6 +185,7 @@ export const serial_flush = { this.setTooltip(Blockly.Msg.MIXLY_TOOLTIP_SERIAL_FLUSH); } }; + export const serial_softserial = { init: function () { this.setColour(SERIAL_HUE); diff --git a/boards/default_src/arduino_esp32/blocks/storage.js b/boards/default_src/arduino_esp32/blocks/storage.js index fdba8ade..ef612c4c 100644 --- a/boards/default_src/arduino_esp32/blocks/storage.js +++ b/boards/default_src/arduino_esp32/blocks/storage.js @@ -14,10 +14,6 @@ export const initialize_spiffs = { this.setHelpUrl(""); } }; -var OPEN_MODE = [ - [Blockly.Msg.MIXLY_READONLY, 'FILE_READ'], - [Blockly.Msg.TEXT_WRITE_TEXT, 'FILE_WRITE'], - [Blockly.Msg.TEXT_APPEND_APPENDTEXT, 'FILE_APPEND']] //打开文件并向其中写入数据 export const spiffs_open_file = { @@ -33,14 +29,19 @@ export const spiffs_open_file = { this.appendDummyInput() .appendField(Blockly.Msg.MIXLY_MODE); this.appendDummyInput() - .appendField(new Blockly.FieldDropdown(OPEN_MODE), 'MODE'); + .appendField(new Blockly.FieldDropdown(this.OPEN_MODE), 'MODE'); this.setInputsInline(true); this.setPreviousStatement(true, null); this.setNextStatement(true, null); this.setColour(STORAGE_HUE); this.setTooltip(""); this.setHelpUrl(""); - } + }, + OPEN_MODE: [ + [Blockly.Msg.MIXLY_READONLY, 'FILE_READ'], + [Blockly.Msg.TEXT_WRITE_TEXT, 'FILE_WRITE'], + [Blockly.Msg.TEXT_APPEND_APPENDTEXT, 'FILE_APPEND'] + ] }; //打开文件并向其中写入数据 @@ -58,6 +59,7 @@ export const spiffs_close_file = { this.setHelpUrl(""); } }; + //将数据追加到文件 export const spiffs_write_data = { init: function () { @@ -77,6 +79,7 @@ export const spiffs_write_data = { this.setHelpUrl(""); } }; + //文件可读 export const spiffs_read_available = { init: function () { diff --git a/boards/default_src/arduino_esp8266/template.xml b/boards/default_src/arduino_esp8266/template.xml index 75e0bc66..ac78383b 100644 --- a/boards/default_src/arduino_esp8266/template.xml +++ b/boards/default_src/arduino_esp8266/template.xml @@ -726,21 +726,13 @@ - - - - - + - - - - - + @@ -784,27 +776,27 @@ - 3 + 4 - 4 + 5 - 5 + 12 - 6 + 13 - 7 + 14 @@ -1019,9 +1011,7 @@ - - - + @@ -1105,7 +1095,7 @@ - 6 + 12 @@ -1166,20 +1156,16 @@ - - - - - + - 1 + 2 - 2 + 4 @@ -1196,22 +1182,22 @@ - 1 + 2 - 2 + 4 - 3 + 5 - 4 + 12 @@ -1328,14 +1314,14 @@ - 8 + - 8 + @@ -1347,7 +1333,7 @@ - 8 + @@ -1370,12 +1356,12 @@ mySerial - 10 + - 11 + @@ -1516,11 +1502,6 @@ 4 - - - 20 - - @@ -1589,11 +1570,6 @@ 20 - - - 20 - - @@ -1633,11 +1609,6 @@ 2345 - - - 300 - - @@ -1650,10 +1621,6 @@ 30 - - - - @@ -1706,7 +1673,7 @@ 0 - 1 + 1 @@ -1743,9 +1710,6 @@ SSD1306_128X64_NONAME U8G2_R0 - 10 - 9 - 8 @@ -1766,7 +1730,6 @@ - 10 @@ -1778,17 +1741,13 @@ - - - - - - + + + page1 - timR08_tr @@ -1823,13 +1782,8 @@ 2 STHeiti 16 - hz_up - 0 - hz_left - 0 48 16 - TRUE 米思齐 @@ -1880,7 +1834,6 @@ 0 - @@ -1893,7 +1846,6 @@ 20 - @@ -2094,11 +2046,6 @@ - - - SDA - - SCL @@ -2221,9 +2168,6 @@ - - - 32 @@ -2688,7 +2632,6 @@ - V0 1000 @@ -3271,11 +3214,6 @@ 120 - - - Topic_0 - -