From 31cba4ee8030a74e43e6b59a1bc83612edf779bb Mon Sep 17 00:00:00 2001 From: Alessandro Fort Date: Thu, 10 Jun 2021 18:43:59 +0200 Subject: [PATCH] Working NVM implementation --- keyboards/massdrop/alt/keymaps/drugo/config.h | 2 +- .../massdrop/alt/keymaps/drugo/config_led.h | 6 ++ keyboards/massdrop/alt/keymaps/drugo/keymap.c | 54 +++++++++++++++++- util/applet-mdflash.bin | Bin 1504 -> 0 bytes util/mdloader | Bin 0 -> 70744 bytes util/{ => old_mdloder}/mdloader_linux | Bin util/old_mdloder/mdloader_mac | Bin 0 -> 70640 bytes 7 files changed, 60 insertions(+), 2 deletions(-) delete mode 100644 util/applet-mdflash.bin create mode 100755 util/mdloader rename util/{ => old_mdloder}/mdloader_linux (100%) create mode 100755 util/old_mdloder/mdloader_mac diff --git a/keyboards/massdrop/alt/keymaps/drugo/config.h b/keyboards/massdrop/alt/keymaps/drugo/config.h index 4cf242313a4b..b67ffa4b8fb3 100644 --- a/keyboards/massdrop/alt/keymaps/drugo/config.h +++ b/keyboards/massdrop/alt/keymaps/drugo/config.h @@ -8,5 +8,5 @@ #define SERIAL_NUM "FRT001" -#define UNICODE_SELECTED_MODES UC_LNX, UC_WINC +#define UNICODE_SELECTED_MODES UC_LNX, UC_WINC, UC_MAC #define UCIS_MAX_CODE_POINTS 32 \ No newline at end of file diff --git a/keyboards/massdrop/alt/keymaps/drugo/config_led.h b/keyboards/massdrop/alt/keymaps/drugo/config_led.h index d30c4b8cee6e..9e0e4a62fa87 100644 --- a/keyboards/massdrop/alt/keymaps/drugo/config_led.h +++ b/keyboards/massdrop/alt/keymaps/drugo/config_led.h @@ -18,6 +18,12 @@ #define DISABLE_RGB_MATRIX_RAINBOW_PINWHEELS #define DISABLE_RGB_MATRIX_DUAL_BEACON #define DISABLE_RGB_MATRIX_BREATHING +#define DISABLE_RGB_MATRIX_HUE_BREATHING +#define DISABLE_RGB_MATRIX_HUE_PENDULUM +#define DISABLE_RGB_MATRIX_HUE_WAVE + +#define RGB_MATRIX_FRAMEBUFFER_EFFECTS +#define RGB_MATRIX_TYPING_HEATMAP_DECREASE_DELAY 50 // Set default RGB effect #define RGB_MATRIX_STARTUP_MODE RGB_MATRIX_ALPHAS_MODS diff --git a/keyboards/massdrop/alt/keymaps/drugo/keymap.c b/keyboards/massdrop/alt/keymaps/drugo/keymap.c index 4fb3f53ac8fe..79eeb80bece6 100644 --- a/keyboards/massdrop/alt/keymaps/drugo/keymap.c +++ b/keyboards/massdrop/alt/keymaps/drugo/keymap.c @@ -25,6 +25,22 @@ enum { TD_LOCK, //ESC/GUI+L }; +enum alt_rgb_mode { + RGB_MODE_ALL, + RGB_MODE_KEYLIGHT, + RGB_MODE_UNDERGLOW, + RGB_MODE_NONE, +}; + +typedef union { + uint32_t raw; + struct { + uint8_t rgb_mode :8; + }; +} alt_config_t; + +alt_config_t alt_config; + const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { // DEFAULT [0] = LAYOUT_65_ansi_blocker( @@ -39,7 +55,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, KC_MUTE, \ _______, RGB_SPD, RGB_VAI, RGB_SPI, RGB_HUI, RGB_SAI, _______,U_T_AUTO,U_T_AGCR, _______, KC_PSCR, KC_SLCK, KC_PAUS, _______, KC_HOME, \ _______,RGB_RMOD, RGB_VAD, RGB_MOD, RGB_HUD, RGB_SAD, _______, _______, _______, _______, _______, _______, _______, KC_BRIU, \ - _______, RGB_TOG, RGB_FRZ, _______, _______, MD_BOOT, NK_TOGG, DBG_TOG, DBG_KBD,DBG_MTRX, _______, _______, KC_VOLU, KC_BRID, \ + UC_M_MA, RGB_TOG, RGB_FRZ, _______, EEP_RST, MD_BOOT, NK_TOGG, DBG_TOG, DBG_KBD,DBG_MTRX, _______, _______, KC_VOLU, KC_BRID, \ UNI_ON , UC_M_WC, UC_M_LN, KC_MPLY, MO(2) , _______, KC_MPRV, KC_VOLD, KC_MNXT \ ), // MACRO @@ -110,6 +126,15 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) { } } return false; + case EEP_RST: + if (record->event.pressed) { + key_timer = timer_read32(); + } else { + if (timer_elapsed32(key_timer) >= 500) { + eeconfig_init(); + } + } + return false; #ifdef UCIS_ENABLE case UNI_ON: if (record->event.pressed) { @@ -196,24 +221,29 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) { case LED_FLAG_ALL: { rgb_matrix_set_flags(LED_FLAG_KEYLIGHT | LED_FLAG_MODIFIER | LED_FLAG_INDICATOR); rgb_matrix_set_color_all(0, 0, 0); + alt_config.rgb_mode = RGB_MODE_KEYLIGHT; } break; case (LED_FLAG_KEYLIGHT | LED_FLAG_MODIFIER | LED_FLAG_INDICATOR): { rgb_matrix_set_flags(LED_FLAG_UNDERGLOW); rgb_matrix_set_color_all(0, 0, 0); + alt_config.rgb_mode = RGB_MODE_UNDERGLOW; } break; case LED_FLAG_UNDERGLOW: { rgb_matrix_set_flags(LED_FLAG_NONE); rgb_matrix_disable_noeeprom(); + alt_config.rgb_mode = RGB_MODE_NONE; } break; default: { rgb_matrix_set_flags(LED_FLAG_ALL); rgb_matrix_enable_noeeprom(); + alt_config.rgb_mode = RGB_MODE_ALL; } break; } + eeconfig_update_user(alt_config.raw); } return false; case RGB_FRZ: @@ -235,6 +265,28 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) { } } +void keyboard_post_init_kb(void) { + alt_config.raw = eeconfig_read_user(); + switch (alt_config.rgb_mode) { + case RGB_MODE_ALL: + rgb_matrix_set_flags(LED_FLAG_ALL); + rgb_matrix_enable_noeeprom(); + break; + case RGB_MODE_KEYLIGHT: + rgb_matrix_set_flags(LED_FLAG_KEYLIGHT); + rgb_matrix_set_color_all(0, 0, 0); + break; + case RGB_MODE_UNDERGLOW: + rgb_matrix_set_flags(LED_FLAG_UNDERGLOW); + rgb_matrix_set_color_all(0, 0, 0); + break; + case RGB_MODE_NONE: + rgb_matrix_set_flags(LED_FLAG_NONE); + rgb_matrix_disable_noeeprom(); + break; + } +} + #ifdef TAP_DANCE_ENABLE void lock_esc(qk_tap_dance_state_t *state, void *user_data){ if (state->count == 1) { diff --git a/util/applet-mdflash.bin b/util/applet-mdflash.bin deleted file mode 100644 index 2fd3e18f4e63332522f4329b048c61bb0450e17e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1504 zcmdT@O>7%Q6rS;JVyAJ59hW9{DV}E2Vq(<^X#}l(S?{`Qk|nkHRa%7DEfU(Lf?6#| zL0q=^L69g?rCg#!oJ^rrIJAy}nuBGkHgNUYDN2#QDLg40D*9_j=VmMD?LCDj5_AQ<{`|f~8J#;Iba=1Fo97_&;U%u3o0$&5E=~Z` zYR=5G30q9+HQbp7Tvfkk+|V$ofE`{l`LklO*QcBN4!Y z)FJA)r{E(~=_}w_(Nubz`?-La`ej?FOJ6WuT2SF*GZigC=Mj^VY|J~-{^fx3tg>J_ zFGfUsEE?;Mu`x@P2YNsWDlhc%v8D7(b+Ghioxl3|<}rbdU5?)}9T!pHx-LnKvcxme z@gq-XLt<^q<9v4136~qxR7p zYHxOebHRtYj_cXpZz%>?N>_%h+Jlx`w4zF$b8@d}r3~Ogr zxBQt^FFPzG<1d?Zf-`CHz5)Mw1A1|MipgE*#p-9roRDLopZx=v3<=S7M0tu7^}f!A zqXl4yz&nooS0fwFCYZ&nHLw2a^_C QZ;Xo~(9hCv>mR;90C`Xbpa1{> diff --git a/util/mdloader b/util/mdloader new file mode 100755 index 0000000000000000000000000000000000000000..6f51f3d508e511d40ead9d6a34b05828c0e1d773 GIT binary patch literal 70744 zcmeHweRx#WwfC7M0|AMH7Sy(Wj0zQ7fk09DiYA)DK?xubMXeo%WI{%g%s3wqtkK|P zG>79LwW74QYI;j6wcLsdn0f^hr39^2v|Oc?w$ZEgjF(+{X6 zxWaS2XWkrwW`7*n)nnF(&t4$$MlQd7i-g}^g<;h#f?~yQkOBxlUwxn<9Ebpx z%Wtz^_%*Z9nnrc4HFYyS-Vwf#UPUo0bQgYJI_` zx)9g1`=j%A;YWQ=AFAi_kQTX8zplgA=c}w(P~p3L&g}WpyRE`UD@P-JTKTG3b&5Co zk{c-Ie7+?iTelvUpBuRRX%%`^)5!m$tP1X=*JLmky=)C#IeMYapK`fbdeNOeK3{|1 z7hTb~IMm<^$0En&=T`lxb!F>?v89b6M(X49)%s)TbL*3IbW)X^Wm0erx(c?02i`unOwlKi+4}oPCw2a%N_%I=HW_{!?Dm7LE`? z;$!D^4tl(ln;hJ~!_jKR6oD6_J{LA_C~#=IU?7=$8ophF9U8^@B9}uu2>1yo&&8KM zmW)eKz7$`(U#Z>xDLv7l&9Vbj8PkF0#&;OL!=EhfSgjR(oaGB#|$f|;GqK)F%`ariYKK*Hx6_!9px{6qdYU)9N9`A^;hc@N}0koQ2| z19=bRJ@EgN2dcgLyWYh9;og+*jnCJObDh;j5KZxSga3bQ21aorU8KKa zUIFpOP}USDymYUdgbbjsp)!F zs%)~fY~hyufN6=A{bO7yV&*l#r>1JZYx|^PXnKaAt^%sz*`Met&^`OpFCRU66m5UP z1_6F;LYvoU>C-)?Ia!2}kHxQU_;rodUwX@DM$2d0k%4RGu5W`%{BE_o;fqI~BvV?@ zja3J|dX?Ea8D6IR8uIR&&+?8SRqgQ{08I1Ncn)|I2Zy*4K1Oja1-YH%W+C}4NWgr@ z6Hv=rtnc#HR3Gqmzg^&U?DiVfrZG|PF|QyFsCZXCM+$m%z&!^NT@KxIApHZj*f}hR z{YYWo0QQ|^GYo>kmOaB^uO2@LlhLhW^~8%9DJ$AC{$cx};_>W%6#Wl>AHiwKaqS0r zmil6g$f3awF3A9QBs69LUJPd^8q-3h(aSLAs`#FMq61O^s zGV@~diO;C3s`_-tgf6-pCmC@w@yXFCAGUkmbG3~iS)ToRccS~KUbR1QP;;$)uD$xb zRi5`YKzT!=cm|20aWw?!G;+*X| zVnq=qAI0G9$Fc)4B@8YT20RCkV^L*>w2VOu-0&#Tk=ru5JqGq!Q#DN~nW@@!R%K?s zo(sh%fPPlW`3>AC`t z<9f`~sdwq!-tMFC*oS$h{8rzHHBNcbu-c>qihf4hLyh4^U< z%J>Iek7pmLX?XTc^Xzq{R)b-pWgpzOSD;1}L|1iAcoE)R@LWPJrPKWmfb+7g@EGT#^pH&i0%TB{yGNbEv&UktJ`(=*}#H@Qoqf04-rs(RWaG!Ud*FaT;Qgg*U8G0XDzDXu9OP* zjTm(he_uvMDFpuzz^C0{i3e8!XLa!&coMq4ENI-t--3AQV)7Sv zaVG-h84eWg;`JcnE`9)Hu=?MGiB2`6WtZ;RWX`8@V#nMYpLdYUb9mDifq&$Yd;5zEa-a@{gUK!$)^|4mog#T+dNnC;_1j%SehbJg=MV5; zR(9h$tK5o@a+;B!EpTfU=2ZB*PWOD`dMf@2l=_Zv9R;ogVH`>)zYVl!wQ{WjDT2B6 z@{D5@y~YL=|E+V`8P0==8@dI+kCRW`6csZG-K%}e_^dGa;0c6VYThHGZ7H(Dtc9crFJNjyrkdDMe!TUL z@=MC63qWf&k3pwr=hNBwCu2PUofTGQ3C-j?rC!5XQ40iv)+O4fq_5Fu;bgt)9qP1yLq?ER@p!x7y6EgA0n+(oPImhFK=u#4nS&>I#h3oFq?e*(j_YAYuyWQ=y zwDe^blD_n27?#=Zd?|l_4*y%S`KP~x|H}Oxqz#KfZj;(l59#Jdm_HGSyYyr&s)(PJ zI|$7lLYe-y;)muwbMiMp_(k!RfCxSY{a(-mX{b;gK~1O*UB+y#XEq0cVG9GKg6RfI9`SmjU|$hzsBpgdip>0BQwL&H&oe%oo6N z2J`}OnE-ypfPDZ=5WqeL>;=FrfDy=iFed@v62Kh{*bTsu3O4;o0Jc+r>zD!u7^6Fc{xK->d&?+7OC%8Dq^tOv`N#Wn+#_GZfL1h5J53YY3XA%YWm7 z2#xvj0+G!1xqbWPfjsg{M$^PEq;vkO&Te; zNwC!t2?tJR3sc%A2Mi)0J>{rjN%8W+yOh zeY_qR=;LobEPcF|eM55s%}(h%snu{!Vl^k5r+^mS*NsD1-I18$aHUi?6$UaYpxgLDqy@IQLiSp@f4gvS}I7V=O8gpR~rwAj}gTz7ivy_ zP}FSuBa8MzG<>HSTd0KLTqW#&HGf8lgge1C->RfoX{4y8v2x@J?d~d0cJWo`3 zNT|oNw6Y%L{Cctj(hve)Cz=y1OKp;qBnImL2H3#+XbKVim{eSNI!N{+D~4Zcf2{nX zlH?}@`!~SG5E9GGEBc@k?akS(4*_+;QM2IhcHkYt&Ixv2gN{HR6h^nQ*mWfK>~E38 zl8^oc5@}=mb=J@M8tS}vJq=XLglYz;Br1zlAhmsjKpG`NIzU0nrCO=)^jDs4B~E&B z4M{nKK=m42rV%t9n+?KsE+sLkZA3!TDwCv2P8E6IC8E?8=9elv1wcJ{xA^zpxrym8 zO%CIxb`sP;4SMo4(jl>pZka(~F?!3xu5Sir+K&OKm(e?dQV$9xvKKAij3%Q z3)@qO?a>pM?GM0~cW4)}OPz<;VYG$mLBVK2PNM;F_%^|BrUzGJ0N0bZN`L>BTb)%F z7d|K7!rI|TO*lLvI32{HxyX=KV=Y-?{>vzYE{&DZ(xabNaty?XMEtEMo2eTn1CqXq zbQZ9Ao^X8#Tzf!^Yk85AZQ&%Gh^kj^9Hod3Dr0SU;ittY_ zgs5Ij$nbg$*z6v9eGK*SWCT2&D!WIJUj#DTb1K1a9tQX-!1ZKU+_ObP~0v`&=P+qw00 zv|h)p-;vf4((30{H(KX$>q2S$1W$bcyB5!&^yC78z0EM^Kkg@Y_pxW$-Q?N(|C2rY z7qscgxxhC^{59LNL%<%h>VsgCzH|`uAkqH~Zbk$#J!IO= zrz5GRUQ9V3$6I0hc@b91%8=XlZu-L~#H7Z8C5c8TjqDXf|p<2p74Mi;9Sx6DMy^QUeh5 znt2qGygJu0&$Mni9V{!2icyt?TIKmY;CrXyyF&OL#LUGBuLBPvl6{1bD!W?v{wwiKm7EKWcsWxG zs8?FsxYhaUeIzBtl*U??aQ>@Cc(~r@ozm?}ok87V2xB89%_M0uB&FeO>ciDwVR(n* zd`95Fr)E95pY;_b9eUD4HL;C=cz_g@eZSyc=i{P>X=ApB)XQ(GH<4}8T0_mds zKM8Ei-a+uwFK~et)4_??TsQiM*4$B~ot_*+h)E{pGDq9RqWPX5U}z5{VyV_tWl14JXSW9rk!>@(qy>^zT z6Uz=_8KlcU#ph<>bETcnX~btCu{fJ95Kj7i?_MauUMx(B|L7_Zj5Lm;n!kG;A9{7E z7;7a0w{X+>A4)t;dG7cTI2;VE2pmS@R0I+n5lAFCWvhkf1>l(; z35vuvKBjTqquL*o_F>fiG2#t*5+RuXISyq#*(-YUO;7HnT4Ed3uu>}y%Y?&=AV}W@ z4#pNz#^60|As-4QOnS1J0G|FFCjSm%ohtd;8sM%aVfxxV;AmVuTwlAJ3TughzV;=Q z6Wgc>BXb&p+DKCKv?PICt7$zqxU4fA9sDD(w2d}AAbP_ZaK)hU>M0F3vjhtC4={8K zH5%bz`W6aJV+%>qx9~XILQ3dcXq-`J5%uHypw>Zb4M#%(*!9~>xz}DCi<-f{(UYHj z3dGfbq<_LQiVU^E7;1LPtwOoRPI-_h7ZBwVP-cc9_5g6~C{hD^1fg4Kr#nD&rxV?H z_7qt%js0Q`K5;FvgK-AN-Y<$Qd#nw`#q&J$i!JdG_B zfii&1Q_w-_Ur4vMiujLs_a#eu>cVyaF(^oj_0*szJIS!bHo9R*sC{Rx&_2bqWj-d_ z2Oz9AM*!z#_Zf#?k82?@JN+Bb#OQp|{Y@+D!lP|%2rd5*NN z#pWDBEKuiJZRwj>m~eu!ekR@UPd(l_0d#o0vvLPz z(RjiWLHgx7VNK@!D}FeVXraViO$U$QXbCF(I}p>*2CVP|DA8ODpS;sfc~WA(TW>i)2Q8X;Iica10AB4dAzU`aWz{155*v^7T%hAM zGq85C$STvTSI~1M(2`nKr(Gqq^pg;;(PGl`&{Gh>mM&>HfD{Hb3}U0`O|)Y?pV#C2 z)oX%Et1-fP!}(yKEK5HOZg|Gouljj{l&~Y+LaMjyH;>@_6JmS8wikY^5>0x&@FU(e z!Am6j^%t!Hw_^;Xq)Ki#=r(dAZk2dQ3bfuzeFjp$lPitOkn}mw#eg`hr+mMc$SET6 zcv~aeNcB7`vKylwDs$SO21w}gkGOpdZDdfFRoaY0ug$BZs~QUO|P$6DzS28PPV?->;RN{B8J^8` zcsmF07;Hu?fl2jV@A@nFUC=W(c{iww9|li# zwb{sy3R%ofb{@!fdY&TEu2o({um_ZfT-(D1=686GANfkVrnP$>Yo!;5ZOq;kX6M?Wp;Ue=9ylRLy>AuG7tH8dZu!8evo9e$1{tb5i zXIcEWdJA*-JNx+$GOrN+Pv1rAGykFi{O=b2!|eQ@MV`ofwt9=Q_`4vm`z@L~yIfnt zMUKByN%xXb=>Hb<|3SF(vF^7V-kL++l|4fc2Dl+1(Y#X*W`)JIBKJO8cC0z^3X!|l z>tsUR)7j(c1udp;ymZEV@ybC0Ngk=!i3v=9v3%7eoN`$e*Y+c>?Xlqwa~96<+db&#s!pT2SATs~(S%Idwf!LUn&2=u(__?B$$8ML-LsW9z_!kQ zO!T<@T$@uSLJ#5&2W*A)_OO0V(C6CG3q@^&uy-)M5}*7vyw%$BUnre~5@rL3;duv& zbrn_=>YfcSvCHrl7FNA8t!hIS_xpwWhe#4KJ@hklB@LQF&nCR4mfbtlHKoVsnqB4X zrI4~K^A^W0b{$^Y=}l9P2z3mI-dg>b%_GGvR5F#Dv{%4@Yt; zm4fcKi!+r%$E$kPdd!24^zB)!aPDL4!UraEC_Qtw&1<17ow0SZ;Xf+)^m1j!%a;P* zC9~(N(%fiocB8p}t&@cXebU{FQHQrtx@FYSvslerShd%Sw{iJZW=!5yyW2evxDwwI z1NQQpoh45=+NONz1+Ds{V+N){TF1> ztt~(8&u6X@&7XAJ46B1&qh*shj$YT(J?oIqtiw!=K%<^m*PqX9>d$8mz*)#(HX&r! zRq7Q*D6f}tCU+SjqP!%E*z_l8VZ4=Ne}CCc>nm{Z#T^l7UQ9$|G4X&D@0dEe;VzT% zKRmVQ!-0%B6bO7UO>RZ5;Yec@0WxF!o-j;kXvZi>6FW*vXnn_*YIuR0->E_r(JK+4neoHdp~+5+=FRk>k0#N5bv%O#)o*~MiH1+{rk9x`X$(>L6ebzD8#;qUOilc564HUY>Ob@ z2IOPBPquPDFMW7l=yo!@15)sQ1W3l@?N}`})59SAf+00>4Zt|2#hYC4YA4>J z-(-%YR{9YECLv=ozg%y`JIyfy-i_gj_l!I&$2lA1tnvAlTs^+Q{1!q1&s2Bf20i$3 zjS=7A<-@Qa0BBhQL?H4^!F z2lQQMZu=TbTPV_wPGXb}pkQL`MxUN-llY=A{1F(!w3KHb-mdNS>O0K>qNc3@TQ^(K z!j{~Ls8fGHtRBA)QrpcdMC#kP!N!e{YM{laZWo~&0k_PoX05@y1`{r&G!umVNf!H& z{p`W(4)B87H`zF-4d5HMf+=tz3$MjinY1}KO5Vb1K%;_w=r`q6-P0yNDKb25IL4p> zgky|feib2dLjP}Etn-X82F*{Ho~*~H+N;O+=+(P1w$1cTI=#bkMdL-itDF8Rf)6yG zf1BL}k2nuY(KJd9qJ$Tw6D@l%<`C*K=6W&aFkkI{dITUCcCQ1gqH_)^deNw!%2CB? z=oLW4G|g|I$Iv@2{d%VN4xoSTG|)$c9wYF$^bw}Nb^!eyM6U+o^6zC0#69ShnIJ>2 z>;abLixPxy)<7(`$f!fTsp?+&waO$R{UJyZa=q}u*MNxUhj2NDT-7G?U#UsmHVrju|Z15BpBLQA`8PY6{gTWDHnuzf}HsbMWxZWO*>s`qq+_)ao zKN1x4Oi-2RhOxanV3z<>0Z;bcaQ{|#n!AdiPxpE3r-r%IZEB|WqY zLc2^2I-`enlka#^L@B<@{EC3Firac<3Q3p@32IXO8+xeIJO#|rLyxnJvT2Y=eJqpW zZ2(%c#WkcB#*3|o9w8cxBFbl7Z8*$_iO%0QD=BP;5#I|tzJh*-9pi26qtu{yx! zN0;M9p^7fS+09Ti;q>M(Zi(jMn(IzCNQ^zD zVUeRFp4EeZ2d`t7$C(1nT6@rD&05o8NJZy7AZ5>5voNb6TxNj1Yx{)65j?q3an%b` zyyz?R$HR=|97Q^)CHOf8VLeEVECHC8;Po&IYgY9d^ImF|&FUJCwhf4tb>`0m+$qsE zM=bm8vg~N8@@ua%*$C!+3zr~fdkeidLA{LfcW8+`6nP{T>O$O#v5#LH=e0W z8X&=#0{Skjme>cknR|$kCNB>A?}{RqS&B?1SH?GC%IMVNtzLa?Gct4Y6w&B$B2ATj z4;mS0G`LaL%w}pLy*yN~x_*-A)rr+}6R)1niMZd#mED)v#BGT|6eRKw7uKUE;Dbv= zVkP>*kaj$9V>HSR3elQq*{r$lnIwF_XYoCe>t*Am58nhcR&E0oEae^$nkztKRBh&; z$ZqDLk2zKAr1<<6P770IM_{hL6XNazb^11WKywnPvhp^X5AX{a-~#g|V5%6$bU^0s z_Tmu_9XwL4dXLxfoQ^Bi3h|ReEFbC7#8`gaNr#^JmORfBjWyi8dU6p=cO{3D;s#fc zCD5?O$fpw%`Z>#h@qQaKp)OY`0-|&m{v5zrqF`!QYGGFQsT2BY%Mserc=5JC4RS4jAY^0yz)#jhTUdmw@!DjcTCp z!H~R*2l~coo;}t;-=ljrW(GRala1CupAV@Oo%5l1_CT+J$1u=u1p8wQbl*3*&$coW zFYy-xQ5KL6Shmijr#SE*Mule`4{4O*9p-BS?#fy~4n_tJ={4qmxHz1{ETil&78h_> zBSX3jK+Cm1kpZ*GHjwLx21j66KsLGBRPKK7F{HGcA(1jvq}(S`)Wq=y+AJy4NJ`3C z1twMuqkA!?H=@Jm!HEdrM}QBU3xGo=Bf4vwOfvLcER%pL|e%H%Q4rrX2dvDC9Mv#D4@WMn?XBSm(#U1=Ax zB@7Ar+6Izyv&b1Ha(;|n_2LH@Xfe25MC}HW5)AunWTz z>%6Bk9m4PgAv~v2rEg$h*ixk=O-u4a0=!Oua{thLzl4Tne*&+5PtylhIO|Gn3lg?b z@*g;kP&;JgNk4`Db^2OrD_?ct1E`g^Z&^y1sT3LI)wg;1_KLpq=~l4Pla;8Oe}XW) zCyydFq~OO`#ujSh-&|oF{2YN%(RmG;D}JpK_zF;=Wm>p@gp4He)D~7QRW|iJj*9Oy zUQ&Q1E}-)`Nls=}Ql+E;bh6EkZUbnG-&iloy;5_L9E zx+rs#czPG@mc*M#V#@hlFvKK=6_qCS6b|)js`t?m%Co?Qy?D!j3?oMYd#ojXBH_oe zKdd%&JSWwwH<(2t{9&R?l?5@47-%u7H;C+@P4<7Y^5Bi%0do>~t+0Q2sj_ZbKYP5& zp~sO+SFh8n?lT`QW?xPfAv^Kd&p;y%hm5NGX6jw=s>3GdPGaLZIGTog*-#8?SDP}V z){;bqz)2<@w;6hXXhkzUFt>j1PVeOU1@}spR`T1M-~rmss$A_E#CqnqS>@X^Amy}1U~lN zaL#ptZ#jp5fsKb9Z6MA3KG;pq8}PL91OCep>W2r;4MCdR_<&S){qlqVSzt~5PlE99 z0Y7>#p!&Om$hMMYAflgQ!Hjwc$YOY{jp3zeM6Zk#W}86_51M0ehtbb7uQK|Rzhd-# z0{9p%mA_Gx0KoDBg;tiF4_E*eb6#i#}3;Dpg9(>3qobk^A%x=@2XzI6VX(8J*h{cyJ zazhN;^akLTO`NAA|F;O0O-}l@y0evkYAm#lNDoAu(@$A4L50wOxSe$!Bn#r6)HrLTUqU=J0_$jcwFo zY$0r9)kKQday~}J=G9XjRMWd>8O&vt!2npxPf1hTNH(9|;YWffn)5r=3BYE6J$_{#D7J4;ez>l{+Yok*?x=4H15H^qD?QJ389U zSNb~&M@Nt1>o@p1hOgh`>jiur$JbK6PUPz(zFx%F$$Xv4*Xew{gsny&`=IdO(&g1I>zFx!Eg?zo9uixS8clo-AuZ#Iwi|ee^83EiX<{uqh4Zp0x zj1Sl02U17tT~yjfrE{tD8kJ~9N$;Z4TqY&m+RJxx^ zKcUjyRQeT_?x50kDm7E-B`P&hiMlCWOQrXybUl?0P-!le=xK6#29@wv-SIXrmH6)_ zOr+98g3&gzzJf|;Qi(=pdIXi~s5F#HaVlw4x`RreAjs-}M5X;ydW=eMQ;9}VnkJ$8 zSE%$dmHten9aQ=om7b>3XH=pQT|bN_oS#$aOe)d%t1qR}y;QoCO6@4Y9<3sVKg}MF zxnm*s@<=cipu*x%DAo}2*9Ic)XrLw*3^loH15Lp|?b$=M`GH8#-{77dZ(JOROm)u- z_-oyPNF)@=ZF7g}>Y{5H|0{G7&0?Y9K zMdb3I>efcrK%J&qG`bu8!3OvDhH7rN)-qI^m!ZluQ~_aesM%c;YKjG#V$rEXwaf7z z4fvaCr@BW6pw5Tp(|KIZaZZLEGE=H;PyL#?|B-QjO&2-Wxz1C4>kP-KO>4jn-MyMrYX z+;1Hny;XCUj}B_&9QUnmtyCMm5FO!m<1#cOzMp9*9B6WfLy_3o?lG5#A`t`>S1&#P z7|7_Iy5N#{B=A3=Xl#r(1zGLoLD*M|XsHPtLl^=M4b+vEy%7pt!FSKBbo*o61p{z=mVRgmQ8}t2+D_B#5Z{!NOITvqwb2!=Fgc`y}&c;I``~3?rSUN&8wKb;JTq&b=1EE-fyf` zGs_L3FwHE{8{Ol^fw|i~w%$ExqM)xrpx|KFG%n_80=UcUvinw4+m<3bt{go zNi|60Vd^Ou(U9v@p7dc{BX@jVB-Cg{Jh~|4o=zl}unKTy+;l;QWh;@*2ZJQS z6B{#}t|)|06nvt=TLNyrWOH%LB9zgGQ9^a@=~NK%N|4uvmNy;Splf;E%g~E>wgHnR z?2)cxdtzV|3mmV97EnuLs5ampV@VsYyvS>7)Lk2l`WH6@FoYEx>q$5sLjz5-kQI&9 z0(1dZ5q3w00FxzK4L8t`4+M@eN<2-(+s$)=Tg@C*msh*%0$AE2JW{}8>{u)uQMGL3 zc=EW*%k&yrWiD~wFgkc+MicN^?v_R6%lQc2biU>Av24v@g6cfW3p}U0{dF-)N#Zp% z2&KAsgFSYKYKo1f2D(PG1XXD8YBa1g9*-K02F>apP5MEjXwxWQH0oZ>aeHmf3Oc&Nbx6qLSp6&KD zPet5O6SBccrKP1AJrxy?*<+9}eDZ`T6S36Q_$7`C3`g42vub9KodBF5^A1}1ygmj zjRUR8l*_N^x2@j~$I9(&Jo`x$L&_yGiG8*#DDFpg7z<&#Y6RZ_w6s!k&caI{niWr; zepP^2UQtb)zaP7aVgT4kS_WiYQDpxrs~(_4B;F+Y^V%3}3R0I>Nn$%+SaN!QS-h?e z`iSY;w z^WE5bASocQr9ig7b1kV0^}F;MncuSfLvy~$;K_IH#vr;0nJIGOD-ggl z2c!~|(D&!$xvjSZA|ZD}plJzG?Ed{B6uGQ_vnb8Hgwwd3L zMA0iQv^6W=$-aoE3T%K?b}=As*fLI#GJTNSyVOrKiE=M5U#yAvV|junQ$powA)O=MK|yt@Ye=Aok$kH$g~%uNGTK(_d$DrDn)p$d#z z-4tlXI!yBs1sA5vdW2;lg1Ku}uqhy8Mn#C_b0)NgfuzkfNW#CA#3rj^{^c`gBHQNy ziWCmX?*ED$ryHS2tvj|N{J#^gRzOi>!v9KzEEW^Lltq=lfwr}@mBbe0OVN+zGZ~tg z>i$>M*v8f@jm8_<<}c-NxrJ?8)V??{Xkn+FCmnDhO^o4qDHM->si1F99J@G(t-4Ut zyol_Icw|n6zLbTm>kSB7fBy#ff6S%2X=xL-u9&6&`OvBgMx&&%42Ec6Nh7UB%9eqH zp9j#F4gPWUfo6@9)|@F1`7_U_ODMM(I7`f+xwgsQh$Wh~9yF>k&PGSwl)KYPox_gt z?U`)$oYp_VX3ylbNDO3VVP}pu)p>@MEm&*%v2@^NCp&=}psdw7>;NA1L+Mc6_VG0P zX@ST7C+r@NlZ5d#@p19!V#+}pCrp|+al%mT?1k!c!MQln#`#?H1vpEk(xgmjGMCiE zXU%o}8nW-*$SaUh(Ao%jH;j&At1i7txeUbv9|Tdun9)%y)#KcR8b{+4SQ3^SP|QLh zK{oo}jmO16X2U#aF$WX7ah8>0BpC!tm7!dllvSHdwH$*bC*wXDU@>h3S@f|@w^|1( zX6a*z%Qyu8fito{nE*0m)V1PNwWA`xa7RdTVq53c0}OFpj(q6=3>|sE5yc%_AR0dO z>|%w*l=2zr)p>!MWn>vURk;P^Jol9p{K9AVk2`Xqo-Q7Y0ra zme`;k(hO)je(2b?4$Ct87;K&A2VxwqO?2Mcz$a>)*qwc@mDs^4Ul72mv+Oul1Y15) zC^yg;vxoXrH_p1%Qwl5_VH{9nS!1``ap%h!6g*BgP;bd0A**?;U4}ZG!l1)v4jzeQ zhSPbYqvtW1%2_qGO~cNhA;gn74O&LHTs<7INC`-XaaZ7}6P-E*moS>!4gc8zH0{{8 zX*>(4r$|G!v0wBVs@bM1oMDZ}F_t>mATHQ;Mpai(Eb@s5oke30MsqO@0Q>V6p0R<2 zV-tD|M30y<(T8W38h$v+ANw88DmD5)@9F(%`u=GVF8ELxZ)xEFy{7+{wj?}5Ar@*c>0An$>^2l5`sdm!(Dya)0g z$a^5~fxHLu9>{wj?}5Ar@*c>0An$>^2l5`sdm!(Dya)0g$a^5~fxHLu9>{wj?}5Ar z@*c>0An$>^2l5`sdm!(Dya)0g$a^5~fxHLu9>{wj?}5Ar{@;6GhhO8r2Jo`F?^XA= z)qTIZf1>W%V!1dzDwO-Q}=!9{#SMHQ}@H_UWETA!2!3QsP3n!`#I{K+avQUswyv>aOH%_ z75y!zxwVQx+Mq?6Rs>*y)!?SWVf=?g#NYb7^Ssn8SONYYC#!7X(4GDhGx`iYPCNh2 zf3&-f(@y_`9DPnbPCLN-IsG{8_zy<-bB=1y)sg<&0Q#JFoc2m-)=H1lUai_MK2Ez| zwNF1zJN_3){#2-TRn6RDsx;#`?e7-~!kpvqr~fvcJ`0Z1o>uLGmA~dakoQ2|19=bR zJ&^Z6-UE3L~76kFdzQw_&+5j+Fsi<%YL?R&qMT?nn zW1z7nyn;9rY`6#uM}keUItzGOjs|u9U;`n$6+B{NFa|JxEEJ^nQj}}_4Gp0hs!gU^ zU88?#AmU$6fN};z1F>j05U3@Hmmm$HXn-nntx9c>)m?~sU8Z#r)#@7J(R#wIr&=f+ zXrfA(Dv^MnSvE_BIkq~evOE%uakZVQO9C^YU5izX4$CW4CtsoF_ZOPemMl0&nL;OOF*ozZRqMrs<-y;^jys%HAH zR{VXxR|lyYtI2q*wSem|-yai#c7ecD3$lhF@n}OJzzVFRs^vY3 zD2GpTYG3g+*82j@ftq+M;H!t%5pTb8)M!sQ!rD- zp-4=-uXu4N6l(~PC?AYp606sGi|Yf;zM7D>zc|F*qU| z2`z!q+Ruh)gO`UeL;Ob}%YVA4-rrE?W6+_ZIK=rPq2*e_xp)PJ!D~*o^_{^IRSyp- z)YiCJ_Pd1$i*~10&;+3$7Q)bds4&Yridg<&3Wix)_uVq2-9WA35XUFzydK3$>0ZgfJCtL2ZjO5>S2GJqXBwXz-SR_B&@J8uQf# zmIZ49+Fz+lr-Gzo8ZKSaKnI^T2Alj1K33^7XHzJGc|mIJK<@)mq19&{gK9$I6_MbQ z`k3~!LG^)#u=eO6C@`J4(WSKvEd9YI?U_NaXd`v;r37xorLPffn5nftfU;RT2*NcX zfTA_Qpf47}pla4W8Wav|-6S>)irx5A8-;jIJYa@YZRO=he z4%{}RNZWJ={!mCkNPBiLVo(_z)qY+KeQG6;_6}}ZLaPU&FRJ}}F-Q^){N0q@chR+v zue(=Mx%UTjZGC{@57Bka&*{2pBg3DdYsY4WY-LC%U!NfbqS}^X?T4&SA<%m7z+dYq z2sYJ)v^~WQ0Spe5{s`HPc1ayGZKys(SgEQvaE%x2pP+7QL$PQ1wNalt}-VsSf=&D1G*+ z_EyFJJykEQ5d4Fx-aAw3gTRF7_bd7mRo|%Ur>goURXB#eXH$fnVA!?HCX&&wahr?^X3R zn2J!;9#r++=s2oxQ1vd=U)`!ce7>~5Y2jZk_5W7&@Cd0p5I}6-$x<&-^$yh^r>T0M zqCc1F(7#vdKVG#j`nu3xs_LaDN&QMy-=x~FQ}y8pS*W7bs(R~HQV&rb{NGXh?^Nww zO22zmJv>M7A5`^H#czXE#~(x@{=ZiBK4s5Ks@{P$mfBxebxpPRs(ROH(*C|hf2!0! zraJU9m3~K6J+11PMcJRU$P)h%sy_D$sk>FZRrzCrst^B~v{$IQruQ`nsI@Pjl*z=hUCdsXv=je=(>2dQSaMIraB)>L29PKh3Eh$*DUr|JnU< zLQefFIdykVeN0ZhG^c)1PW_6U`kb8lwK?@0bLvew^;>i5Z8`PTIraN<>JR1Af1Xo+ zET{f-PW?AI_21>x_vF+sMbwq!TY>Lo_Y^Wr-b-z)LO@YQJTsKR$Pz8Id` zTzs#_cOJf&j^otxcE$@m_|v=E$M37m_0HhomUErj+|PQBt=N zXZBRm!n+|9t!)~L$J(d)BK>|aW2TImalI;))MYu$ckJQ1D+~~;2IxMn|iPQm+IvV1E0vt9) z%Q^C7f` lSc8IfN`oR4;^P_XTt*$p3^?-h`51&gScVe~%)*-Xe*o!y1KI!p literal 0 HcmV?d00001 diff --git a/util/mdloader_linux b/util/old_mdloder/mdloader_linux similarity index 100% rename from util/mdloader_linux rename to util/old_mdloder/mdloader_linux diff --git a/util/old_mdloder/mdloader_mac b/util/old_mdloder/mdloader_mac new file mode 100755 index 0000000000000000000000000000000000000000..943d16648a6484acc9752b934e4a167b599401b2 GIT binary patch literal 70640 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 a6Z61Co|Ftai}U#ygg#h}qXtZ~%KrvKCIsyO literal 0 HcmV?d00001