From c3916cf64b3f3a130581084290fa64f5db0c3de9 Mon Sep 17 00:00:00 2001
From: Xiaojiang YU <81464221+91902078@users.noreply.github.com>
Date: Mon, 21 Oct 2024 14:29:20 +0800
Subject: [PATCH 1/6] Add files via upload
---
SU8-SEL.ows | 502 ++++++++++++++++++++++++++++++++++++++++++++
SU8_12890_12940.dat | 204 ++++++++++++++++++
2 files changed, 706 insertions(+)
create mode 100644 SU8-SEL.ows
create mode 100644 SU8_12890_12940.dat
diff --git a/SU8-SEL.ows b/SU8-SEL.ows
new file mode 100644
index 0000000..5f1973b
--- /dev/null
+++ b/SU8-SEL.ows
@@ -0,0 +1,502 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SHADOW4
+
+
+
+
+ gASVogcAAAAAAAB9lCiMFGFuZ3VsYXJfZGlzdHJpYnV0aW9ulEsCjBthbmd1bGFyX2Rpc3RyaWJ1
+dGlvbl9saW1pdHOUSwCMDWNvaGVyZW50X2JlYW2USwCMG2NvbmVfZXh0ZXJuYWxfaGFsZl9hcGVy
+dHVyZZRHP2BiTdLxqfyMG2NvbmVfaW50ZXJuYWxfaGFsZl9hcGVydHVyZZRHP1BiTdLxqfyMBWRl
+cHRolEsAjA5lbGxfc2VtaWF4aXNfeJRHP7mZmZmZmZqMDmVsbF9zZW1pYXhpc196lEc/yZmZmZmZ
+mowNZ2F1c3Nfc2lnbWFfeJRHPvq9Gqgh8pmMDWdhdXNzX3NpZ21hX3qURz76vRqoIfKZjBZnYXVz
+c2lhbl9jZW50cmFsX3ZhbHVllEdAyTkAAAAAAIwQZ2F1c3NpYW5fbWF4aW11bZRHAAAAAAAAAACM
+EGdhdXNzaWFuX21pbmltdW2URwAAAAAAAAAAjA5nYXVzc2lhbl9zaWdtYZRHP+GMfigkC3iMFmhv
+cml6b250YWxfZGl2X3hfbWludXOURz6gxvegte2NjBVob3Jpem9udGFsX2Rpdl94X3BsdXOURz6g
+xvegte2NjBZob3Jpem9udGFsX2xpbV94X21pbnVzlEc+5Pi1iONo8YwVaG9yaXpvbnRhbF9saW1f
+eF9wbHVzlEc+5Pi1iONo8YwSaG9yaXpvbnRhbF9zaWdtYV94lEc+qbPj0FIbCIwQaXNfYXV0b21h
+dGljX3J1bpSIjApsaW5lX2ludF8xlEcAAAAAAAAAAIwLbGluZV9pbnRfMTCURwAAAAAAAAAAjAps
+aW5lX2ludF8ylEcAAAAAAAAAAIwKbGluZV9pbnRfM5RHAAAAAAAAAACMCmxpbmVfaW50XzSURwAA
+AAAAAAAAjApsaW5lX2ludF81lEcAAAAAAAAAAIwKbGluZV9pbnRfNpRHAAAAAAAAAACMCmxpbmVf
+aW50XzeURwAAAAAAAAAAjApsaW5lX2ludF84lEcAAAAAAAAAAIwKbGluZV9pbnRfOZRHAAAAAAAA
+AACMDGxpbmVfdmFsdWVfMZRHQI9AAAAAAACMDWxpbmVfdmFsdWVfMTCURwAAAAAAAAAAjAxsaW5l
+X3ZhbHVlXzKUR0CPkAAAAAAAjAxsaW5lX3ZhbHVlXzOURwAAAAAAAAAAjAxsaW5lX3ZhbHVlXzSU
+RwAAAAAAAAAAjAxsaW5lX3ZhbHVlXzWURwAAAAAAAAAAjAxsaW5lX3ZhbHVlXzaURwAAAAAAAAAA
+jAxsaW5lX3ZhbHVlXzeURwAAAAAAAAAAjAxsaW5lX3ZhbHVlXziURwAAAAAAAAAAjAxsaW5lX3Zh
+bHVlXzmURwAAAAAAAAAAjBttYXhfbnVtYmVyX29mX3JlamVjdGVkX3JheXOUSoCWmACMD251bWJl
+cl9vZl9saW5lc5RLAIwObnVtYmVyX29mX3JheXOUSpDQAwCMEm9wdGltaXplX2ZpbGVfbmFtZZSM
+DU5PTkVTUEVDSUZJRUSUjA9vcHRpbWl6ZV9zb3VyY2WUSwCMCnBoYXNlX2RpZmaURwAAAAAAAAAA
+jBpwaG90b25fZW5lcmd5X2Rpc3RyaWJ1dGlvbpRLBIwTcG9sYXJpemF0aW9uX2RlZ3JlZZRHP/AA
+AAAAAACMC3JlY3RfaGVpZ2h0lEc/OQjlgc94eYwKcmVjdF93aWR0aJRHAAAAAAAAAACME3NhdmVk
+V2lkZ2V0R2VvbWV0cnmUjANzaXCUjA5fdW5waWNrbGVfdHlwZZSTlIwMUHlRdDUuUXRDb3JllIwK
+UUJ5dGVBcnJheZRDQgHZ0MsAAwAAAAABWQAAAUkAAAaAAAAEBAAAAVkAAAFJAAAGgAAABAQAAAAA
+AAAAAAeAAAABWQAAAUkAAAaAAAAEBJSFlIeUUpSMBHNlZWSUShOeVgCMB3NpZ21hX3mURz9QYk3S
+8an8jBFzaW5nbGVfbGluZV92YWx1ZZRHQI9AAAAAAACMDnNvdXJjZV9kZXB0aF95lEc/YGJN0vGp
+/IwMc3BhdGlhbF90eXBllEsDjA91bmlmb3JtX21heGltdW2UR0CPkAAAAAAAjA91bmlmb3JtX21p
+bmltdW2UR0CPQAAAAAAAjAV1bml0c5RLAIwRdXNlcl9kZWZpbmVkX2ZpbGWUjBNlbmVyZ3lfc3Bl
+Y3RydW0uZGF0lIwUdXNlcl9kZWZpbmVkX21heGltdW2URwAAAAAAAAAAjBR1c2VyX2RlZmluZWRf
+bWluaW11bZRHAAAAAAAAAACMHHVzZXJfZGVmaW5lZF9yZWZpbmluZ19mYWN0b3KUSwWMHXVzZXJf
+ZGVmaW5lZF9zcGVjdHJ1bV9iaW5uaW5nlE0QJ4wUdmVydGljYWxfZGl2X3pfbWludXOURz7U+LWI
+42jxjBN2ZXJ0aWNhbF9kaXZfel9wbHVzlEc+1Pi1iONo8YwUdmVydGljYWxfbGltX3pfbWludXOU
+Rz7k+LWI42jxjBN2ZXJ0aWNhbF9saW1fel9wbHVzlEc+5Pi1iONo8YwQdmVydGljYWxfc2lnbWFf
+epRHPqmz49BSGwiMCXZpZXdfdHlwZZRLAHUu
+
+ gASV4wkAAAAAAAB9lCiMF2FuZ2xlX29mX21hamF4X2FuZF9wb2xllEc/8AAAAAAAAIwRYW5nbGVz
+X3Jlc3BlY3RfdG+USwCMDmFzeW1tZXRyaWNfY3V0lEsAjBdiZWxvd19vbnRvX2JyYWdnX3BsYW5l
+c5RK/////4wTY29uaWNfY29lZmZpY2llbnRfMJSMFW51bXB5LmNvcmUubXVsdGlhcnJheZSMBnNj
+YWxhcpSTlIwFbnVtcHmUjAVkdHlwZZSTlIwCZjiUiYiHlFKUKEsDjAE8lE5OTkr/////Sv////9L
+AHSUYkMIAAAAAAAAAACUhpRSlIwTY29uaWNfY29lZmZpY2llbnRfMZRoCGgOQwgAAAAAAAAAAJSG
+lFKUjBNjb25pY19jb2VmZmljaWVudF8ylGgIaA5DCAAAAAAAAAAAlIaUUpSME2NvbmljX2NvZWZm
+aWNpZW50XzOUaAhoDkMIAAAAAAAAAACUhpRSlIwTY29uaWNfY29lZmZpY2llbnRfNJRoCGgOQwgA
+AAAAAAAAAJSGlFKUjBNjb25pY19jb2VmZmljaWVudF81lGgIaA5DCAAAAAAAAAAAlIaUUpSME2Nv
+bmljX2NvZWZmaWNpZW50XzaUaAhoDkMIAAAAAAAAAACUhpRSlIwTY29uaWNfY29lZmZpY2llbnRf
+N5RoCGgOQwgAAAAAAAAAAJSGlFKUjBNjb25pY19jb2VmZmljaWVudF84lGgIaA5DCAAAAAAAAPC/
+lIaUUpSME2NvbmljX2NvZWZmaWNpZW50XzmUaAhoDkMIAAAAAAAAAACUhpRSlIwUY3J5c3RhbF9h
+dXRvX3NldHRpbmeUSwGMFGN5bGluZGVyX29yaWVudGF0aW9ulEsAjBdkaWZmcmFjdGlvbl9jYWxj
+dWxhdGlvbpRLAowLZGltX3hfbWludXOURz/wAAAAAAAAjApkaW1feF9wbHVzlEc/8AAAAAAAAIwL
+ZGltX3lfbWludXOURz/wAAAAAAAAjApkaW1feV9wbHVzlEc/8AAAAAAAAIwhZWxsaXBzZV9oeXBl
+cmJvbGFfc2VtaV9tYWpvcl9heGlzlEc/8AAAAAAAAIwhZWxsaXBzZV9oeXBlcmJvbGFfc2VtaV9t
+aW5vcl9heGlzlEc/8AAAAAAAAIwXZmlsZV9jcnlzdGFsX3BhcmFtZXRlcnOUjBdTaSg4MDApXzEy
+ODkwXzEyOTQwLmRhdJSMGGZpbGVfZGlmZnJhY3Rpb25fcHJvZmlsZZSMF2RpZmZyYWN0aW9uX3By
+b2ZpbGUuZGF0lIwcZm9jaWlfYW5kX2NvbnRpbnVhdGlvbl9wbGFuZZRLAIwOZm9jdXNfbG9jYXRp
+b26USwCMFGltYWdlX3BsYW5lX2Rpc3RhbmNllEc/dyvLX+VC5YwZaW1hZ2Vfc2lkZV9mb2NhbF9k
+aXN0YW5jZZRHAAAAAAAAAACME2luY2lkZW5jZV9hbmdsZV9kZWeUaAhoDkMIAd4CCYp/RkCUhpRS
+lIwUaW5jaWRlbmNlX2FuZ2xlX21yYWSUaAhoDkMI4chNHrCLiECUhpRSlIwhaW5jaWRlbmNlX2Fu
+Z2xlX3Jlc3BlY3RfdG9fbm9ybWFslEcAAAAAAAAAAIwmaW5jaWRlbmNlX2FuZ2xlX3Jlc3BlY3Rf
+dG9fbm9ybWFsX3R5cGWUSwCMEGlzX2F1dG9tYXRpY19ydW6UiIwLaXNfY3lsaW5kZXKUSwGMC2lz
+X2luZmluaXRllEsBjAhpc190aGlja5RLAYwZbWV0aG9kX2VmaWVsZHNfbWFuYWdlbWVudJRLAIwQ
+bW9kaWZpZWRfc3VyZmFjZZRLAIwTbXNfZGVmZWN0X2ZpbGVfbmFtZZSMCzxub25lPi5oZGY1lIwa
+b2JqZWN0X3NpZGVfZm9jYWxfZGlzdGFuY2WURwAAAAAAAAAAjAtvZV9tb3ZlbWVudJRLAIwUb2Vf
+bW92ZW1lbnRfb2Zmc2V0X3iURwAAAAAAAAAAjBRvZV9tb3ZlbWVudF9vZmZzZXRfeZRHAAAAAAAA
+AACMFG9lX21vdmVtZW50X29mZnNldF96lEcAAAAAAAAAAIwWb2VfbW92ZW1lbnRfcm90YXRpb25f
+eJRHAAAAAAAAAACMFm9lX21vdmVtZW50X3JvdGF0aW9uX3mURwAAAAAAAAAAjBZvZV9tb3ZlbWVu
+dF9yb3RhdGlvbl96lEcAAAAAAAAAAIwUb2Vfb3JpZW50YXRpb25fYW5nbGWUSwSMH29lX29yaWVu
+dGF0aW9uX2FuZ2xlX3VzZXJfdmFsdWWUR8BGgAAAAAAAjAhvZV9zaGFwZZRLAIwUcGFyYWJvbG9p
+ZF9wYXJhbWV0ZXKURz/wAAAAAAAAjA1waG90b25fZW5lcmd5lEdAyTkAAAAAAIwRcGhvdG9uX3dh
+dmVsZW5ndGiURz/wAAAAAAAAjAxwbGFuZXNfYW5nbGWURwAAAAAAAAAAjBRyZWZsZWN0aW9uX2Fu
+Z2xlX2RlZ5RoCGgOQwgB3gIJin9GQJSGlFKUjBVyZWZsZWN0aW9uX2FuZ2xlX21yYWSUaAhoDkMI
+4chNHrCLiECUhpRSlIwTc2F2ZWRXaWRnZXRHZW9tZXRyeZSMA3NpcJSMDl91bnBpY2tsZV90eXBl
+lJOUjAxQeVF0NS5RdENvcmWUjApRQnl0ZUFycmF5lENCAdnQywADAAAAAAHEAAABAgAABu0AAAPk
+AAABxQAAASgAAAbsAAAD4wAAAAAAAAAAB4AAAAHFAAABKAAABuwAAAPjlIWUh5RSlIwVc291cmNl
+X3BsYW5lX2Rpc3RhbmNllEcAAAAAAAAAAIwQc3BoZXJpY2FsX3JhZGl1c5RHP/AAAAAAAACMEXN1
+cmZhY2VfY3VydmF0dXJllEsAjBhzdXJmYWNlX3NoYXBlX3BhcmFtZXRlcnOUSwGMEnN1cmZhY2Vf
+c2hhcGVfdHlwZZRLAIwJdGhpY2tuZXNzlEc/UGJN0vGp/IwddG9yb2lkYWxfbWlycm9yX3BvbGVf
+bG9jYXRpb26USwCMEnRvcnVzX21ham9yX3JhZGl1c5RHP/AAAAAAAACMEnRvcnVzX21pbm9yX3Jh
+ZGl1c5RHP/AAAAAAAACMDHVuaXRzX2luX3VzZZRLAIwcdXNlcl9kZWZpbmVkX2FzeW1tZXRyeV9h
+bmdsZZRHAAAAAAAAAACMGHVzZXJfZGVmaW5lZF9icmFnZ19hbmdsZZRHQCxyLQ5WBBmMFHVzZXJf
+ZGVmaW5lZF9jcnlzdGFslEsgjA51c2VyX2RlZmluZWRfaJRLCIwOdXNlcl9kZWZpbmVkX2uUSwCM
+DnVzZXJfZGVmaW5lZF9slEsAjAl2aWV3X3R5cGWUSwB1Lg==
+
+ gASV4wkAAAAAAAB9lCiMF2FuZ2xlX29mX21hamF4X2FuZF9wb2xllEc/8AAAAAAAAIwRYW5nbGVz
+X3Jlc3BlY3RfdG+USwCMDmFzeW1tZXRyaWNfY3V0lEsAjBdiZWxvd19vbnRvX2JyYWdnX3BsYW5l
+c5RK/////4wTY29uaWNfY29lZmZpY2llbnRfMJSMFW51bXB5LmNvcmUubXVsdGlhcnJheZSMBnNj
+YWxhcpSTlIwFbnVtcHmUjAVkdHlwZZSTlIwCZjiUiYiHlFKUKEsDjAE8lE5OTkr/////Sv////9L
+AHSUYkMIAAAAAAAAAACUhpRSlIwTY29uaWNfY29lZmZpY2llbnRfMZRoCGgOQwgAAAAAAAAAAJSG
+lFKUjBNjb25pY19jb2VmZmljaWVudF8ylGgIaA5DCAAAAAAAAAAAlIaUUpSME2NvbmljX2NvZWZm
+aWNpZW50XzOUaAhoDkMIAAAAAAAAAACUhpRSlIwTY29uaWNfY29lZmZpY2llbnRfNJRoCGgOQwgA
+AAAAAAAAAJSGlFKUjBNjb25pY19jb2VmZmljaWVudF81lGgIaA5DCAAAAAAAAAAAlIaUUpSME2Nv
+bmljX2NvZWZmaWNpZW50XzaUaAhoDkMIAAAAAAAAAACUhpRSlIwTY29uaWNfY29lZmZpY2llbnRf
+N5RoCGgOQwgAAAAAAAAAAJSGlFKUjBNjb25pY19jb2VmZmljaWVudF84lGgIaA5DCAAAAAAAAPC/
+lIaUUpSME2NvbmljX2NvZWZmaWNpZW50XzmUaAhoDkMIAAAAAAAAAACUhpRSlIwUY3J5c3RhbF9h
+dXRvX3NldHRpbmeUSwGMFGN5bGluZGVyX29yaWVudGF0aW9ulEsAjBdkaWZmcmFjdGlvbl9jYWxj
+dWxhdGlvbpRLAowLZGltX3hfbWludXOURz/wAAAAAAAAjApkaW1feF9wbHVzlEc/8AAAAAAAAIwL
+ZGltX3lfbWludXOURz/wAAAAAAAAjApkaW1feV9wbHVzlEc/8AAAAAAAAIwhZWxsaXBzZV9oeXBl
+cmJvbGFfc2VtaV9tYWpvcl9heGlzlEc/8AAAAAAAAIwhZWxsaXBzZV9oeXBlcmJvbGFfc2VtaV9t
+aW5vcl9heGlzlEc/8AAAAAAAAIwXZmlsZV9jcnlzdGFsX3BhcmFtZXRlcnOUjBdTaSg4MDApXzEy
+ODkwXzEyOTQwLmRhdJSMGGZpbGVfZGlmZnJhY3Rpb25fcHJvZmlsZZSMF2RpZmZyYWN0aW9uX3By
+b2ZpbGUuZGF0lIwcZm9jaWlfYW5kX2NvbnRpbnVhdGlvbl9wbGFuZZRLAIwOZm9jdXNfbG9jYXRp
+b26USwCMFGltYWdlX3BsYW5lX2Rpc3RhbmNllEc/dyvLX+VC5YwZaW1hZ2Vfc2lkZV9mb2NhbF9k
+aXN0YW5jZZRHAAAAAAAAAACME2luY2lkZW5jZV9hbmdsZV9kZWeUaAhoDkMIAd4CCYp/RkCUhpRS
+lIwUaW5jaWRlbmNlX2FuZ2xlX21yYWSUaAhoDkMI4chNHrCLiECUhpRSlIwhaW5jaWRlbmNlX2Fu
+Z2xlX3Jlc3BlY3RfdG9fbm9ybWFslEcAAAAAAAAAAIwmaW5jaWRlbmNlX2FuZ2xlX3Jlc3BlY3Rf
+dG9fbm9ybWFsX3R5cGWUSwCMEGlzX2F1dG9tYXRpY19ydW6UiIwLaXNfY3lsaW5kZXKUSwGMC2lz
+X2luZmluaXRllEsBjAhpc190aGlja5RLAYwZbWV0aG9kX2VmaWVsZHNfbWFuYWdlbWVudJRLAIwQ
+bW9kaWZpZWRfc3VyZmFjZZRLAIwTbXNfZGVmZWN0X2ZpbGVfbmFtZZSMCzxub25lPi5oZGY1lIwa
+b2JqZWN0X3NpZGVfZm9jYWxfZGlzdGFuY2WURwAAAAAAAAAAjAtvZV9tb3ZlbWVudJRLAIwUb2Vf
+bW92ZW1lbnRfb2Zmc2V0X3iURwAAAAAAAAAAjBRvZV9tb3ZlbWVudF9vZmZzZXRfeZRHAAAAAAAA
+AACMFG9lX21vdmVtZW50X29mZnNldF96lEcAAAAAAAAAAIwWb2VfbW92ZW1lbnRfcm90YXRpb25f
+eJRHAAAAAAAAAACMFm9lX21vdmVtZW50X3JvdGF0aW9uX3mURwAAAAAAAAAAjBZvZV9tb3ZlbWVu
+dF9yb3RhdGlvbl96lEcAAAAAAAAAAIwUb2Vfb3JpZW50YXRpb25fYW5nbGWUSwKMH29lX29yaWVu
+dGF0aW9uX2FuZ2xlX3VzZXJfdmFsdWWURwAAAAAAAAAAjAhvZV9zaGFwZZRLAIwUcGFyYWJvbG9p
+ZF9wYXJhbWV0ZXKURz/wAAAAAAAAjA1waG90b25fZW5lcmd5lEdAyTkAAAAAAIwRcGhvdG9uX3dh
+dmVsZW5ndGiURz/wAAAAAAAAjAxwbGFuZXNfYW5nbGWURwAAAAAAAAAAjBRyZWZsZWN0aW9uX2Fu
+Z2xlX2RlZ5RoCGgOQwgB3gIJin9GQJSGlFKUjBVyZWZsZWN0aW9uX2FuZ2xlX21yYWSUaAhoDkMI
+4chNHrCLiECUhpRSlIwTc2F2ZWRXaWRnZXRHZW9tZXRyeZSMA3NpcJSMDl91bnBpY2tsZV90eXBl
+lJOUjAxQeVF0NS5RdENvcmWUjApRQnl0ZUFycmF5lENCAdnQywADAAAAAAHnAAAAsgAABw4AAANt
+AAAB5wAAALIAAAcOAAADbQAAAAAAAAAAB4AAAAHnAAAAsgAABw4AAANtlIWUh5RSlIwVc291cmNl
+X3BsYW5lX2Rpc3RhbmNllEcAAAAAAAAAAIwQc3BoZXJpY2FsX3JhZGl1c5RHP/AAAAAAAACMEXN1
+cmZhY2VfY3VydmF0dXJllEsAjBhzdXJmYWNlX3NoYXBlX3BhcmFtZXRlcnOUSwGMEnN1cmZhY2Vf
+c2hhcGVfdHlwZZRLAIwJdGhpY2tuZXNzlEc/UGJN0vGp/IwddG9yb2lkYWxfbWlycm9yX3BvbGVf
+bG9jYXRpb26USwCMEnRvcnVzX21ham9yX3JhZGl1c5RHP/AAAAAAAACMEnRvcnVzX21pbm9yX3Jh
+ZGl1c5RHP/AAAAAAAACMDHVuaXRzX2luX3VzZZRLAIwcdXNlcl9kZWZpbmVkX2FzeW1tZXRyeV9h
+bmdsZZRHAAAAAAAAAACMGHVzZXJfZGVmaW5lZF9icmFnZ19hbmdsZZRHQCxyLQ5WBBmMFHVzZXJf
+ZGVmaW5lZF9jcnlzdGFslEsgjA51c2VyX2RlZmluZWRfaJRLCIwOdXNlcl9kZWZpbmVkX2uUSwCM
+DnVzZXJfZGVmaW5lZF9slEsAjAl2aWV3X3R5cGWUSwB1Lg==
+
+ gASV4wkAAAAAAAB9lCiMF2FuZ2xlX29mX21hamF4X2FuZF9wb2xllEc/8AAAAAAAAIwRYW5nbGVz
+X3Jlc3BlY3RfdG+USwCMDmFzeW1tZXRyaWNfY3V0lEsAjBdiZWxvd19vbnRvX2JyYWdnX3BsYW5l
+c5RK/////4wTY29uaWNfY29lZmZpY2llbnRfMJSMFW51bXB5LmNvcmUubXVsdGlhcnJheZSMBnNj
+YWxhcpSTlIwFbnVtcHmUjAVkdHlwZZSTlIwCZjiUiYiHlFKUKEsDjAE8lE5OTkr/////Sv////9L
+AHSUYkMIAAAAAAAAAACUhpRSlIwTY29uaWNfY29lZmZpY2llbnRfMZRoCGgOQwgAAAAAAAAAAJSG
+lFKUjBNjb25pY19jb2VmZmljaWVudF8ylGgIaA5DCAAAAAAAAAAAlIaUUpSME2NvbmljX2NvZWZm
+aWNpZW50XzOUaAhoDkMIAAAAAAAAAACUhpRSlIwTY29uaWNfY29lZmZpY2llbnRfNJRoCGgOQwgA
+AAAAAAAAAJSGlFKUjBNjb25pY19jb2VmZmljaWVudF81lGgIaA5DCAAAAAAAAAAAlIaUUpSME2Nv
+bmljX2NvZWZmaWNpZW50XzaUaAhoDkMIAAAAAAAAAACUhpRSlIwTY29uaWNfY29lZmZpY2llbnRf
+N5RoCGgOQwgAAAAAAAAAAJSGlFKUjBNjb25pY19jb2VmZmljaWVudF84lGgIaA5DCAAAAAAAAPC/
+lIaUUpSME2NvbmljX2NvZWZmaWNpZW50XzmUaAhoDkMIAAAAAAAAAACUhpRSlIwUY3J5c3RhbF9h
+dXRvX3NldHRpbmeUSwGMFGN5bGluZGVyX29yaWVudGF0aW9ulEsAjBdkaWZmcmFjdGlvbl9jYWxj
+dWxhdGlvbpRLAowLZGltX3hfbWludXOURz/wAAAAAAAAjApkaW1feF9wbHVzlEc/8AAAAAAAAIwL
+ZGltX3lfbWludXOURz/wAAAAAAAAjApkaW1feV9wbHVzlEc/8AAAAAAAAIwhZWxsaXBzZV9oeXBl
+cmJvbGFfc2VtaV9tYWpvcl9heGlzlEc/8AAAAAAAAIwhZWxsaXBzZV9oeXBlcmJvbGFfc2VtaV9t
+aW5vcl9heGlzlEc/8AAAAAAAAIwXZmlsZV9jcnlzdGFsX3BhcmFtZXRlcnOUjBdTaSg4MDApXzEy
+ODkwXzEyOTQwLmRhdJSMGGZpbGVfZGlmZnJhY3Rpb25fcHJvZmlsZZSMF2RpZmZyYWN0aW9uX3By
+b2ZpbGUuZGF0lIwcZm9jaWlfYW5kX2NvbnRpbnVhdGlvbl9wbGFuZZRLAIwOZm9jdXNfbG9jYXRp
+b26USwCMFGltYWdlX3BsYW5lX2Rpc3RhbmNllEc/dyvLX+VC5YwZaW1hZ2Vfc2lkZV9mb2NhbF9k
+aXN0YW5jZZRHAAAAAAAAAACME2luY2lkZW5jZV9hbmdsZV9kZWeUaAhoDkMIAd4CCYp/RkCUhpRS
+lIwUaW5jaWRlbmNlX2FuZ2xlX21yYWSUaAhoDkMI4chNHrCLiECUhpRSlIwhaW5jaWRlbmNlX2Fu
+Z2xlX3Jlc3BlY3RfdG9fbm9ybWFslEcAAAAAAAAAAIwmaW5jaWRlbmNlX2FuZ2xlX3Jlc3BlY3Rf
+dG9fbm9ybWFsX3R5cGWUSwCMEGlzX2F1dG9tYXRpY19ydW6UiIwLaXNfY3lsaW5kZXKUSwGMC2lz
+X2luZmluaXRllEsBjAhpc190aGlja5RLAYwZbWV0aG9kX2VmaWVsZHNfbWFuYWdlbWVudJRLAIwQ
+bW9kaWZpZWRfc3VyZmFjZZRLAIwTbXNfZGVmZWN0X2ZpbGVfbmFtZZSMCzxub25lPi5oZGY1lIwa
+b2JqZWN0X3NpZGVfZm9jYWxfZGlzdGFuY2WURwAAAAAAAAAAjAtvZV9tb3ZlbWVudJRLAIwUb2Vf
+bW92ZW1lbnRfb2Zmc2V0X3iURwAAAAAAAAAAjBRvZV9tb3ZlbWVudF9vZmZzZXRfeZRHAAAAAAAA
+AACMFG9lX21vdmVtZW50X29mZnNldF96lEcAAAAAAAAAAIwWb2VfbW92ZW1lbnRfcm90YXRpb25f
+eJRHAAAAAAAAAACMFm9lX21vdmVtZW50X3JvdGF0aW9uX3mURwAAAAAAAAAAjBZvZV9tb3ZlbWVu
+dF9yb3RhdGlvbl96lEcAAAAAAAAAAIwUb2Vfb3JpZW50YXRpb25fYW5nbGWUSwKMH29lX29yaWVu
+dGF0aW9uX2FuZ2xlX3VzZXJfdmFsdWWURwAAAAAAAAAAjAhvZV9zaGFwZZRLAIwUcGFyYWJvbG9p
+ZF9wYXJhbWV0ZXKURz/wAAAAAAAAjA1waG90b25fZW5lcmd5lEdAyTkAAAAAAIwRcGhvdG9uX3dh
+dmVsZW5ndGiURz/wAAAAAAAAjAxwbGFuZXNfYW5nbGWURwAAAAAAAAAAjBRyZWZsZWN0aW9uX2Fu
+Z2xlX2RlZ5RoCGgOQwgB3gIJin9GQJSGlFKUjBVyZWZsZWN0aW9uX2FuZ2xlX21yYWSUaAhoDkMI
+4chNHrCLiECUhpRSlIwTc2F2ZWRXaWRnZXRHZW9tZXRyeZSMA3NpcJSMDl91bnBpY2tsZV90eXBl
+lJOUjAxQeVF0NS5RdENvcmWUjApRQnl0ZUFycmF5lENCAdnQywADAAAAAAHnAAAAsgAABw4AAANt
+AAAB5wAAALIAAAcOAAADbQAAAAAAAAAAB4AAAAHnAAAAsgAABw4AAANtlIWUh5RSlIwVc291cmNl
+X3BsYW5lX2Rpc3RhbmNllEcAAAAAAAAAAIwQc3BoZXJpY2FsX3JhZGl1c5RHP/AAAAAAAACMEXN1
+cmZhY2VfY3VydmF0dXJllEsAjBhzdXJmYWNlX3NoYXBlX3BhcmFtZXRlcnOUSwGMEnN1cmZhY2Vf
+c2hhcGVfdHlwZZRLAIwJdGhpY2tuZXNzlEc/UGJN0vGp/IwddG9yb2lkYWxfbWlycm9yX3BvbGVf
+bG9jYXRpb26USwCMEnRvcnVzX21ham9yX3JhZGl1c5RHP/AAAAAAAACMEnRvcnVzX21pbm9yX3Jh
+ZGl1c5RHP/AAAAAAAACMDHVuaXRzX2luX3VzZZRLAIwcdXNlcl9kZWZpbmVkX2FzeW1tZXRyeV9h
+bmdsZZRHAAAAAAAAAACMGHVzZXJfZGVmaW5lZF9icmFnZ19hbmdsZZRHQCxyLQ5WBBmMFHVzZXJf
+ZGVmaW5lZF9jcnlzdGFslEsgjA51c2VyX2RlZmluZWRfaJRLCIwOdXNlcl9kZWZpbmVkX2uUSwCM
+DnVzZXJfZGVmaW5lZF9slEsAjAl2aWV3X3R5cGWUSwB1Lg==
+
+ gASV4wkAAAAAAAB9lCiMF2FuZ2xlX29mX21hamF4X2FuZF9wb2xllEc/8AAAAAAAAIwRYW5nbGVz
+X3Jlc3BlY3RfdG+USwCMDmFzeW1tZXRyaWNfY3V0lEsAjBdiZWxvd19vbnRvX2JyYWdnX3BsYW5l
+c5RK/////4wTY29uaWNfY29lZmZpY2llbnRfMJSMFW51bXB5LmNvcmUubXVsdGlhcnJheZSMBnNj
+YWxhcpSTlIwFbnVtcHmUjAVkdHlwZZSTlIwCZjiUiYiHlFKUKEsDjAE8lE5OTkr/////Sv////9L
+AHSUYkMIAAAAAAAAAACUhpRSlIwTY29uaWNfY29lZmZpY2llbnRfMZRoCGgOQwgAAAAAAAAAAJSG
+lFKUjBNjb25pY19jb2VmZmljaWVudF8ylGgIaA5DCAAAAAAAAAAAlIaUUpSME2NvbmljX2NvZWZm
+aWNpZW50XzOUaAhoDkMIAAAAAAAAAACUhpRSlIwTY29uaWNfY29lZmZpY2llbnRfNJRoCGgOQwgA
+AAAAAAAAAJSGlFKUjBNjb25pY19jb2VmZmljaWVudF81lGgIaA5DCAAAAAAAAAAAlIaUUpSME2Nv
+bmljX2NvZWZmaWNpZW50XzaUaAhoDkMIAAAAAAAAAACUhpRSlIwTY29uaWNfY29lZmZpY2llbnRf
+N5RoCGgOQwgAAAAAAAAAAJSGlFKUjBNjb25pY19jb2VmZmljaWVudF84lGgIaA5DCAAAAAAAAPC/
+lIaUUpSME2NvbmljX2NvZWZmaWNpZW50XzmUaAhoDkMIAAAAAAAAAACUhpRSlIwUY3J5c3RhbF9h
+dXRvX3NldHRpbmeUSwGMFGN5bGluZGVyX29yaWVudGF0aW9ulEsAjBdkaWZmcmFjdGlvbl9jYWxj
+dWxhdGlvbpRLAowLZGltX3hfbWludXOURz/wAAAAAAAAjApkaW1feF9wbHVzlEc/8AAAAAAAAIwL
+ZGltX3lfbWludXOURz/wAAAAAAAAjApkaW1feV9wbHVzlEc/8AAAAAAAAIwhZWxsaXBzZV9oeXBl
+cmJvbGFfc2VtaV9tYWpvcl9heGlzlEc/8AAAAAAAAIwhZWxsaXBzZV9oeXBlcmJvbGFfc2VtaV9t
+aW5vcl9heGlzlEc/8AAAAAAAAIwXZmlsZV9jcnlzdGFsX3BhcmFtZXRlcnOUjBdTaSg4MDApXzEy
+ODkwXzEyOTQwLmRhdJSMGGZpbGVfZGlmZnJhY3Rpb25fcHJvZmlsZZSMF2RpZmZyYWN0aW9uX3By
+b2ZpbGUuZGF0lIwcZm9jaWlfYW5kX2NvbnRpbnVhdGlvbl9wbGFuZZRLAIwOZm9jdXNfbG9jYXRp
+b26USwCMFGltYWdlX3BsYW5lX2Rpc3RhbmNllEdACAAAAAAAAIwZaW1hZ2Vfc2lkZV9mb2NhbF9k
+aXN0YW5jZZRHAAAAAAAAAACME2luY2lkZW5jZV9hbmdsZV9kZWeUaAhoDkMIAd4CCYp/RkCUhpRS
+lIwUaW5jaWRlbmNlX2FuZ2xlX21yYWSUaAhoDkMI4chNHrCLiECUhpRSlIwhaW5jaWRlbmNlX2Fu
+Z2xlX3Jlc3BlY3RfdG9fbm9ybWFslEcAAAAAAAAAAIwmaW5jaWRlbmNlX2FuZ2xlX3Jlc3BlY3Rf
+dG9fbm9ybWFsX3R5cGWUSwCMEGlzX2F1dG9tYXRpY19ydW6UiIwLaXNfY3lsaW5kZXKUSwGMC2lz
+X2luZmluaXRllEsBjAhpc190aGlja5RLAYwZbWV0aG9kX2VmaWVsZHNfbWFuYWdlbWVudJRLAIwQ
+bW9kaWZpZWRfc3VyZmFjZZRLAIwTbXNfZGVmZWN0X2ZpbGVfbmFtZZSMCzxub25lPi5oZGY1lIwa
+b2JqZWN0X3NpZGVfZm9jYWxfZGlzdGFuY2WURwAAAAAAAAAAjAtvZV9tb3ZlbWVudJRLAIwUb2Vf
+bW92ZW1lbnRfb2Zmc2V0X3iURwAAAAAAAAAAjBRvZV9tb3ZlbWVudF9vZmZzZXRfeZRHAAAAAAAA
+AACMFG9lX21vdmVtZW50X29mZnNldF96lEcAAAAAAAAAAIwWb2VfbW92ZW1lbnRfcm90YXRpb25f
+eJRHAAAAAAAAAACMFm9lX21vdmVtZW50X3JvdGF0aW9uX3mURwAAAAAAAAAAjBZvZV9tb3ZlbWVu
+dF9yb3RhdGlvbl96lEcAAAAAAAAAAIwUb2Vfb3JpZW50YXRpb25fYW5nbGWUSwKMH29lX29yaWVu
+dGF0aW9uX2FuZ2xlX3VzZXJfdmFsdWWURwAAAAAAAAAAjAhvZV9zaGFwZZRLAIwUcGFyYWJvbG9p
+ZF9wYXJhbWV0ZXKURz/wAAAAAAAAjA1waG90b25fZW5lcmd5lEdAyTkAAAAAAIwRcGhvdG9uX3dh
+dmVsZW5ndGiURz/wAAAAAAAAjAxwbGFuZXNfYW5nbGWURwAAAAAAAAAAjBRyZWZsZWN0aW9uX2Fu
+Z2xlX2RlZ5RoCGgOQwgB3gIJin9GQJSGlFKUjBVyZWZsZWN0aW9uX2FuZ2xlX21yYWSUaAhoDkMI
+4chNHrCLiECUhpRSlIwTc2F2ZWRXaWRnZXRHZW9tZXRyeZSMA3NpcJSMDl91bnBpY2tsZV90eXBl
+lJOUjAxQeVF0NS5RdENvcmWUjApRQnl0ZUFycmF5lENCAdnQywADAAAAAAHnAAAAsgAABw4AAANt
+AAAB5wAAALIAAAcOAAADbQAAAAAAAAAAB4AAAAHnAAAAsgAABw4AAANtlIWUh5RSlIwVc291cmNl
+X3BsYW5lX2Rpc3RhbmNllEcAAAAAAAAAAIwQc3BoZXJpY2FsX3JhZGl1c5RHP/AAAAAAAACMEXN1
+cmZhY2VfY3VydmF0dXJllEsAjBhzdXJmYWNlX3NoYXBlX3BhcmFtZXRlcnOUSwGMEnN1cmZhY2Vf
+c2hhcGVfdHlwZZRLAIwJdGhpY2tuZXNzlEc/UGJN0vGp/IwddG9yb2lkYWxfbWlycm9yX3BvbGVf
+bG9jYXRpb26USwCMEnRvcnVzX21ham9yX3JhZGl1c5RHP/AAAAAAAACMEnRvcnVzX21pbm9yX3Jh
+ZGl1c5RHP/AAAAAAAACMDHVuaXRzX2luX3VzZZRLAIwcdXNlcl9kZWZpbmVkX2FzeW1tZXRyeV9h
+bmdsZZRHAAAAAAAAAACMGHVzZXJfZGVmaW5lZF9icmFnZ19hbmdsZZRHQCxyLQ5WBBmMFHVzZXJf
+ZGVmaW5lZF9jcnlzdGFslEsgjA51c2VyX2RlZmluZWRfaJRLCIwOdXNlcl9kZWZpbmVkX2uUSwCM
+DnVzZXJfZGVmaW5lZF9slEsAjAl2aWV3X3R5cGWUSwB1Lg==
+
+ gASV4wkAAAAAAAB9lCiMF2FuZ2xlX29mX21hamF4X2FuZF9wb2xllEc/8AAAAAAAAIwRYW5nbGVz
+X3Jlc3BlY3RfdG+USwCMDmFzeW1tZXRyaWNfY3V0lEsAjBdiZWxvd19vbnRvX2JyYWdnX3BsYW5l
+c5RK/////4wTY29uaWNfY29lZmZpY2llbnRfMJSMFW51bXB5LmNvcmUubXVsdGlhcnJheZSMBnNj
+YWxhcpSTlIwFbnVtcHmUjAVkdHlwZZSTlIwCZjiUiYiHlFKUKEsDjAE8lE5OTkr/////Sv////9L
+AHSUYkMIAAAAAAAAAACUhpRSlIwTY29uaWNfY29lZmZpY2llbnRfMZRoCGgOQwgAAAAAAAAAAJSG
+lFKUjBNjb25pY19jb2VmZmljaWVudF8ylGgIaA5DCAAAAAAAAAAAlIaUUpSME2NvbmljX2NvZWZm
+aWNpZW50XzOUaAhoDkMIAAAAAAAAAACUhpRSlIwTY29uaWNfY29lZmZpY2llbnRfNJRoCGgOQwgA
+AAAAAAAAAJSGlFKUjBNjb25pY19jb2VmZmljaWVudF81lGgIaA5DCAAAAAAAAAAAlIaUUpSME2Nv
+bmljX2NvZWZmaWNpZW50XzaUaAhoDkMIAAAAAAAAAACUhpRSlIwTY29uaWNfY29lZmZpY2llbnRf
+N5RoCGgOQwgAAAAAAAAAAJSGlFKUjBNjb25pY19jb2VmZmljaWVudF84lGgIaA5DCAAAAAAAAPC/
+lIaUUpSME2NvbmljX2NvZWZmaWNpZW50XzmUaAhoDkMIAAAAAAAAAACUhpRSlIwUY3J5c3RhbF9h
+dXRvX3NldHRpbmeUSwGMFGN5bGluZGVyX29yaWVudGF0aW9ulEsAjBdkaWZmcmFjdGlvbl9jYWxj
+dWxhdGlvbpRLAowLZGltX3hfbWludXOURz/wAAAAAAAAjApkaW1feF9wbHVzlEc/8AAAAAAAAIwL
+ZGltX3lfbWludXOURz/wAAAAAAAAjApkaW1feV9wbHVzlEc/8AAAAAAAAIwhZWxsaXBzZV9oeXBl
+cmJvbGFfc2VtaV9tYWpvcl9heGlzlEc/8AAAAAAAAIwhZWxsaXBzZV9oeXBlcmJvbGFfc2VtaV9t
+aW5vcl9heGlzlEc/8AAAAAAAAIwXZmlsZV9jcnlzdGFsX3BhcmFtZXRlcnOUjBdTaSg4MDApXzEy
+ODkwXzEyOTQwLmRhdJSMGGZpbGVfZGlmZnJhY3Rpb25fcHJvZmlsZZSMF2RpZmZyYWN0aW9uX3By
+b2ZpbGUuZGF0lIwcZm9jaWlfYW5kX2NvbnRpbnVhdGlvbl9wbGFuZZRLAIwOZm9jdXNfbG9jYXRp
+b26USwCMFGltYWdlX3BsYW5lX2Rpc3RhbmNllEc/dyvLX+VC5YwZaW1hZ2Vfc2lkZV9mb2NhbF9k
+aXN0YW5jZZRHAAAAAAAAAACME2luY2lkZW5jZV9hbmdsZV9kZWeUaAhoDkMIAd4CCYp/RkCUhpRS
+lIwUaW5jaWRlbmNlX2FuZ2xlX21yYWSUaAhoDkMI4chNHrCLiECUhpRSlIwhaW5jaWRlbmNlX2Fu
+Z2xlX3Jlc3BlY3RfdG9fbm9ybWFslEcAAAAAAAAAAIwmaW5jaWRlbmNlX2FuZ2xlX3Jlc3BlY3Rf
+dG9fbm9ybWFsX3R5cGWUSwCMEGlzX2F1dG9tYXRpY19ydW6UiIwLaXNfY3lsaW5kZXKUSwGMC2lz
+X2luZmluaXRllEsBjAhpc190aGlja5RLAYwZbWV0aG9kX2VmaWVsZHNfbWFuYWdlbWVudJRLAIwQ
+bW9kaWZpZWRfc3VyZmFjZZRLAIwTbXNfZGVmZWN0X2ZpbGVfbmFtZZSMCzxub25lPi5oZGY1lIwa
+b2JqZWN0X3NpZGVfZm9jYWxfZGlzdGFuY2WURwAAAAAAAAAAjAtvZV9tb3ZlbWVudJRLAIwUb2Vf
+bW92ZW1lbnRfb2Zmc2V0X3iURwAAAAAAAAAAjBRvZV9tb3ZlbWVudF9vZmZzZXRfeZRHAAAAAAAA
+AACMFG9lX21vdmVtZW50X29mZnNldF96lEcAAAAAAAAAAIwWb2VfbW92ZW1lbnRfcm90YXRpb25f
+eJRHAAAAAAAAAACMFm9lX21vdmVtZW50X3JvdGF0aW9uX3mURwAAAAAAAAAAjBZvZV9tb3ZlbWVu
+dF9yb3RhdGlvbl96lEcAAAAAAAAAAIwUb2Vfb3JpZW50YXRpb25fYW5nbGWUSwGMH29lX29yaWVu
+dGF0aW9uX2FuZ2xlX3VzZXJfdmFsdWWURwAAAAAAAAAAjAhvZV9zaGFwZZRLAIwUcGFyYWJvbG9p
+ZF9wYXJhbWV0ZXKURz/wAAAAAAAAjA1waG90b25fZW5lcmd5lEdAyTkAAAAAAIwRcGhvdG9uX3dh
+dmVsZW5ndGiURz/wAAAAAAAAjAxwbGFuZXNfYW5nbGWURwAAAAAAAAAAjBRyZWZsZWN0aW9uX2Fu
+Z2xlX2RlZ5RoCGgOQwgB3gIJin9GQJSGlFKUjBVyZWZsZWN0aW9uX2FuZ2xlX21yYWSUaAhoDkMI
+4chNHrCLiECUhpRSlIwTc2F2ZWRXaWRnZXRHZW9tZXRyeZSMA3NpcJSMDl91bnBpY2tsZV90eXBl
+lJOUjAxQeVF0NS5RdENvcmWUjApRQnl0ZUFycmF5lENCAdnQywADAAAAAAI+AAAA9AAAB2UAAAOv
+AAACPgAAAPQAAAdlAAADrwAAAAAAAAAAB4AAAAI+AAAA9AAAB2UAAAOvlIWUh5RSlIwVc291cmNl
+X3BsYW5lX2Rpc3RhbmNllEcAAAAAAAAAAIwQc3BoZXJpY2FsX3JhZGl1c5RHP/AAAAAAAACMEXN1
+cmZhY2VfY3VydmF0dXJllEsAjBhzdXJmYWNlX3NoYXBlX3BhcmFtZXRlcnOUSwGMEnN1cmZhY2Vf
+c2hhcGVfdHlwZZRLAIwJdGhpY2tuZXNzlEc/UGJN0vGp/IwddG9yb2lkYWxfbWlycm9yX3BvbGVf
+bG9jYXRpb26USwCMEnRvcnVzX21ham9yX3JhZGl1c5RHP/AAAAAAAACMEnRvcnVzX21pbm9yX3Jh
+ZGl1c5RHP/AAAAAAAACMDHVuaXRzX2luX3VzZZRLAIwcdXNlcl9kZWZpbmVkX2FzeW1tZXRyeV9h
+bmdsZZRHAAAAAAAAAACMGHVzZXJfZGVmaW5lZF9icmFnZ19hbmdsZZRHQCxyLQ5WBBmMFHVzZXJf
+ZGVmaW5lZF9jcnlzdGFslEsgjA51c2VyX2RlZmluZWRfaJRLCIwOdXNlcl9kZWZpbmVkX2uUSwCM
+DnVzZXJfZGVmaW5lZF9slEsAjAl2aWV3X3R5cGWUSwB1Lg==
+
+ gASV4wkAAAAAAAB9lCiMF2FuZ2xlX29mX21hamF4X2FuZF9wb2xllEc/8AAAAAAAAIwRYW5nbGVz
+X3Jlc3BlY3RfdG+USwCMDmFzeW1tZXRyaWNfY3V0lEsAjBdiZWxvd19vbnRvX2JyYWdnX3BsYW5l
+c5RK/////4wTY29uaWNfY29lZmZpY2llbnRfMJSMFW51bXB5LmNvcmUubXVsdGlhcnJheZSMBnNj
+YWxhcpSTlIwFbnVtcHmUjAVkdHlwZZSTlIwCZjiUiYiHlFKUKEsDjAE8lE5OTkr/////Sv////9L
+AHSUYkMIAAAAAAAAAACUhpRSlIwTY29uaWNfY29lZmZpY2llbnRfMZRoCGgOQwgAAAAAAAAAAJSG
+lFKUjBNjb25pY19jb2VmZmljaWVudF8ylGgIaA5DCAAAAAAAAAAAlIaUUpSME2NvbmljX2NvZWZm
+aWNpZW50XzOUaAhoDkMIAAAAAAAAAACUhpRSlIwTY29uaWNfY29lZmZpY2llbnRfNJRoCGgOQwgA
+AAAAAAAAAJSGlFKUjBNjb25pY19jb2VmZmljaWVudF81lGgIaA5DCAAAAAAAAAAAlIaUUpSME2Nv
+bmljX2NvZWZmaWNpZW50XzaUaAhoDkMIAAAAAAAAAACUhpRSlIwTY29uaWNfY29lZmZpY2llbnRf
+N5RoCGgOQwgAAAAAAAAAAJSGlFKUjBNjb25pY19jb2VmZmljaWVudF84lGgIaA5DCAAAAAAAAPC/
+lIaUUpSME2NvbmljX2NvZWZmaWNpZW50XzmUaAhoDkMIAAAAAAAAAACUhpRSlIwUY3J5c3RhbF9h
+dXRvX3NldHRpbmeUSwGMFGN5bGluZGVyX29yaWVudGF0aW9ulEsAjBdkaWZmcmFjdGlvbl9jYWxj
+dWxhdGlvbpRLAowLZGltX3hfbWludXOURz/wAAAAAAAAjApkaW1feF9wbHVzlEc/8AAAAAAAAIwL
+ZGltX3lfbWludXOURz/wAAAAAAAAjApkaW1feV9wbHVzlEc/8AAAAAAAAIwhZWxsaXBzZV9oeXBl
+cmJvbGFfc2VtaV9tYWpvcl9heGlzlEc/8AAAAAAAAIwhZWxsaXBzZV9oeXBlcmJvbGFfc2VtaV9t
+aW5vcl9heGlzlEc/8AAAAAAAAIwXZmlsZV9jcnlzdGFsX3BhcmFtZXRlcnOUjBdTaSg4MDApXzEy
+ODkwXzEyOTQwLmRhdJSMGGZpbGVfZGlmZnJhY3Rpb25fcHJvZmlsZZSMF2RpZmZyYWN0aW9uX3By
+b2ZpbGUuZGF0lIwcZm9jaWlfYW5kX2NvbnRpbnVhdGlvbl9wbGFuZZRLAIwOZm9jdXNfbG9jYXRp
+b26USwCMFGltYWdlX3BsYW5lX2Rpc3RhbmNllEc/dyvLX+VC5YwZaW1hZ2Vfc2lkZV9mb2NhbF9k
+aXN0YW5jZZRHAAAAAAAAAACME2luY2lkZW5jZV9hbmdsZV9kZWeUaAhoDkMIAd4CCYp/RkCUhpRS
+lIwUaW5jaWRlbmNlX2FuZ2xlX21yYWSUaAhoDkMI4chNHrCLiECUhpRSlIwhaW5jaWRlbmNlX2Fu
+Z2xlX3Jlc3BlY3RfdG9fbm9ybWFslEcAAAAAAAAAAIwmaW5jaWRlbmNlX2FuZ2xlX3Jlc3BlY3Rf
+dG9fbm9ybWFsX3R5cGWUSwCMEGlzX2F1dG9tYXRpY19ydW6UiIwLaXNfY3lsaW5kZXKUSwGMC2lz
+X2luZmluaXRllEsBjAhpc190aGlja5RLAYwZbWV0aG9kX2VmaWVsZHNfbWFuYWdlbWVudJRLAIwQ
+bW9kaWZpZWRfc3VyZmFjZZRLAIwTbXNfZGVmZWN0X2ZpbGVfbmFtZZSMCzxub25lPi5oZGY1lIwa
+b2JqZWN0X3NpZGVfZm9jYWxfZGlzdGFuY2WURwAAAAAAAAAAjAtvZV9tb3ZlbWVudJRLAIwUb2Vf
+bW92ZW1lbnRfb2Zmc2V0X3iURwAAAAAAAAAAjBRvZV9tb3ZlbWVudF9vZmZzZXRfeZRHAAAAAAAA
+AACMFG9lX21vdmVtZW50X29mZnNldF96lEcAAAAAAAAAAIwWb2VfbW92ZW1lbnRfcm90YXRpb25f
+eJRHAAAAAAAAAACMFm9lX21vdmVtZW50X3JvdGF0aW9uX3mURwAAAAAAAAAAjBZvZV9tb3ZlbWVu
+dF9yb3RhdGlvbl96lEcAAAAAAAAAAIwUb2Vfb3JpZW50YXRpb25fYW5nbGWUSwKMH29lX29yaWVu
+dGF0aW9uX2FuZ2xlX3VzZXJfdmFsdWWURwAAAAAAAAAAjAhvZV9zaGFwZZRLAIwUcGFyYWJvbG9p
+ZF9wYXJhbWV0ZXKURz/wAAAAAAAAjA1waG90b25fZW5lcmd5lEdAyTkAAAAAAIwRcGhvdG9uX3dh
+dmVsZW5ndGiURz/wAAAAAAAAjAxwbGFuZXNfYW5nbGWURwAAAAAAAAAAjBRyZWZsZWN0aW9uX2Fu
+Z2xlX2RlZ5RoCGgOQwgB3gIJin9GQJSGlFKUjBVyZWZsZWN0aW9uX2FuZ2xlX21yYWSUaAhoDkMI
+4chNHrCLiECUhpRSlIwTc2F2ZWRXaWRnZXRHZW9tZXRyeZSMA3NpcJSMDl91bnBpY2tsZV90eXBl
+lJOUjAxQeVF0NS5RdENvcmWUjApRQnl0ZUFycmF5lENCAdnQywADAAAAAAHnAAAAsgAABw4AAANt
+AAAB5wAAALIAAAcOAAADbQAAAAAAAAAAB4AAAAHnAAAAsgAABw4AAANtlIWUh5RSlIwVc291cmNl
+X3BsYW5lX2Rpc3RhbmNllEcAAAAAAAAAAIwQc3BoZXJpY2FsX3JhZGl1c5RHP/AAAAAAAACMEXN1
+cmZhY2VfY3VydmF0dXJllEsAjBhzdXJmYWNlX3NoYXBlX3BhcmFtZXRlcnOUSwGMEnN1cmZhY2Vf
+c2hhcGVfdHlwZZRLAIwJdGhpY2tuZXNzlEc/UGJN0vGp/IwddG9yb2lkYWxfbWlycm9yX3BvbGVf
+bG9jYXRpb26USwCMEnRvcnVzX21ham9yX3JhZGl1c5RHP/AAAAAAAACMEnRvcnVzX21pbm9yX3Jh
+ZGl1c5RHP/AAAAAAAACMDHVuaXRzX2luX3VzZZRLAIwcdXNlcl9kZWZpbmVkX2FzeW1tZXRyeV9h
+bmdsZZRHAAAAAAAAAACMGHVzZXJfZGVmaW5lZF9icmFnZ19hbmdsZZRHQCxyLQ5WBBmMFHVzZXJf
+ZGVmaW5lZF9jcnlzdGFslEsgjA51c2VyX2RlZmluZWRfaJRLCIwOdXNlcl9kZWZpbmVkX2uUSwCM
+DnVzZXJfZGVmaW5lZF9slEsAjAl2aWV3X3R5cGWUSwB1Lg==
+
+ gASV4wkAAAAAAAB9lCiMF2FuZ2xlX29mX21hamF4X2FuZF9wb2xllEc/8AAAAAAAAIwRYW5nbGVz
+X3Jlc3BlY3RfdG+USwCMDmFzeW1tZXRyaWNfY3V0lEsAjBdiZWxvd19vbnRvX2JyYWdnX3BsYW5l
+c5RK/////4wTY29uaWNfY29lZmZpY2llbnRfMJSMFW51bXB5LmNvcmUubXVsdGlhcnJheZSMBnNj
+YWxhcpSTlIwFbnVtcHmUjAVkdHlwZZSTlIwCZjiUiYiHlFKUKEsDjAE8lE5OTkr/////Sv////9L
+AHSUYkMIAAAAAAAAAACUhpRSlIwTY29uaWNfY29lZmZpY2llbnRfMZRoCGgOQwgAAAAAAAAAAJSG
+lFKUjBNjb25pY19jb2VmZmljaWVudF8ylGgIaA5DCAAAAAAAAAAAlIaUUpSME2NvbmljX2NvZWZm
+aWNpZW50XzOUaAhoDkMIAAAAAAAAAACUhpRSlIwTY29uaWNfY29lZmZpY2llbnRfNJRoCGgOQwgA
+AAAAAAAAAJSGlFKUjBNjb25pY19jb2VmZmljaWVudF81lGgIaA5DCAAAAAAAAAAAlIaUUpSME2Nv
+bmljX2NvZWZmaWNpZW50XzaUaAhoDkMIAAAAAAAAAACUhpRSlIwTY29uaWNfY29lZmZpY2llbnRf
+N5RoCGgOQwgAAAAAAAAAAJSGlFKUjBNjb25pY19jb2VmZmljaWVudF84lGgIaA5DCAAAAAAAAPC/
+lIaUUpSME2NvbmljX2NvZWZmaWNpZW50XzmUaAhoDkMIAAAAAAAAAACUhpRSlIwUY3J5c3RhbF9h
+dXRvX3NldHRpbmeUSwGMFGN5bGluZGVyX29yaWVudGF0aW9ulEsAjBdkaWZmcmFjdGlvbl9jYWxj
+dWxhdGlvbpRLAowLZGltX3hfbWludXOURz/wAAAAAAAAjApkaW1feF9wbHVzlEc/8AAAAAAAAIwL
+ZGltX3lfbWludXOURz/wAAAAAAAAjApkaW1feV9wbHVzlEc/8AAAAAAAAIwhZWxsaXBzZV9oeXBl
+cmJvbGFfc2VtaV9tYWpvcl9heGlzlEc/8AAAAAAAAIwhZWxsaXBzZV9oeXBlcmJvbGFfc2VtaV9t
+aW5vcl9heGlzlEc/8AAAAAAAAIwXZmlsZV9jcnlzdGFsX3BhcmFtZXRlcnOUjBdTaSg4MDApXzEy
+ODkwXzEyOTQwLmRhdJSMGGZpbGVfZGlmZnJhY3Rpb25fcHJvZmlsZZSMF2RpZmZyYWN0aW9uX3By
+b2ZpbGUuZGF0lIwcZm9jaWlfYW5kX2NvbnRpbnVhdGlvbl9wbGFuZZRLAIwOZm9jdXNfbG9jYXRp
+b26USwCMFGltYWdlX3BsYW5lX2Rpc3RhbmNllEc/dyvLX+VC5YwZaW1hZ2Vfc2lkZV9mb2NhbF9k
+aXN0YW5jZZRHAAAAAAAAAACME2luY2lkZW5jZV9hbmdsZV9kZWeUaAhoDkMIAd4CCYp/RkCUhpRS
+lIwUaW5jaWRlbmNlX2FuZ2xlX21yYWSUaAhoDkMI4chNHrCLiECUhpRSlIwhaW5jaWRlbmNlX2Fu
+Z2xlX3Jlc3BlY3RfdG9fbm9ybWFslEcAAAAAAAAAAIwmaW5jaWRlbmNlX2FuZ2xlX3Jlc3BlY3Rf
+dG9fbm9ybWFsX3R5cGWUSwCMEGlzX2F1dG9tYXRpY19ydW6UiIwLaXNfY3lsaW5kZXKUSwGMC2lz
+X2luZmluaXRllEsBjAhpc190aGlja5RLAYwZbWV0aG9kX2VmaWVsZHNfbWFuYWdlbWVudJRLAIwQ
+bW9kaWZpZWRfc3VyZmFjZZRLAIwTbXNfZGVmZWN0X2ZpbGVfbmFtZZSMCzxub25lPi5oZGY1lIwa
+b2JqZWN0X3NpZGVfZm9jYWxfZGlzdGFuY2WURwAAAAAAAAAAjAtvZV9tb3ZlbWVudJRLAIwUb2Vf
+bW92ZW1lbnRfb2Zmc2V0X3iURwAAAAAAAAAAjBRvZV9tb3ZlbWVudF9vZmZzZXRfeZRHAAAAAAAA
+AACMFG9lX21vdmVtZW50X29mZnNldF96lEcAAAAAAAAAAIwWb2VfbW92ZW1lbnRfcm90YXRpb25f
+eJRHAAAAAAAAAACMFm9lX21vdmVtZW50X3JvdGF0aW9uX3mURwAAAAAAAAAAjBZvZV9tb3ZlbWVu
+dF9yb3RhdGlvbl96lEcAAAAAAAAAAIwUb2Vfb3JpZW50YXRpb25fYW5nbGWUSwKMH29lX29yaWVu
+dGF0aW9uX2FuZ2xlX3VzZXJfdmFsdWWURwAAAAAAAAAAjAhvZV9zaGFwZZRLAIwUcGFyYWJvbG9p
+ZF9wYXJhbWV0ZXKURz/wAAAAAAAAjA1waG90b25fZW5lcmd5lEdAyTkAAAAAAIwRcGhvdG9uX3dh
+dmVsZW5ndGiURz/wAAAAAAAAjAxwbGFuZXNfYW5nbGWURwAAAAAAAAAAjBRyZWZsZWN0aW9uX2Fu
+Z2xlX2RlZ5RoCGgOQwgB3gIJin9GQJSGlFKUjBVyZWZsZWN0aW9uX2FuZ2xlX21yYWSUaAhoDkMI
+4chNHrCLiECUhpRSlIwTc2F2ZWRXaWRnZXRHZW9tZXRyeZSMA3NpcJSMDl91bnBpY2tsZV90eXBl
+lJOUjAxQeVF0NS5RdENvcmWUjApRQnl0ZUFycmF5lENCAdnQywADAAAAAAHnAAAAsgAABw4AAANt
+AAAB5wAAALIAAAcOAAADbQAAAAAAAAAAB4AAAAHnAAAAsgAABw4AAANtlIWUh5RSlIwVc291cmNl
+X3BsYW5lX2Rpc3RhbmNllEcAAAAAAAAAAIwQc3BoZXJpY2FsX3JhZGl1c5RHP/AAAAAAAACMEXN1
+cmZhY2VfY3VydmF0dXJllEsAjBhzdXJmYWNlX3NoYXBlX3BhcmFtZXRlcnOUSwGMEnN1cmZhY2Vf
+c2hhcGVfdHlwZZRLAIwJdGhpY2tuZXNzlEc/UGJN0vGp/IwddG9yb2lkYWxfbWlycm9yX3BvbGVf
+bG9jYXRpb26USwCMEnRvcnVzX21ham9yX3JhZGl1c5RHP/AAAAAAAACMEnRvcnVzX21pbm9yX3Jh
+ZGl1c5RHP/AAAAAAAACMDHVuaXRzX2luX3VzZZRLAIwcdXNlcl9kZWZpbmVkX2FzeW1tZXRyeV9h
+bmdsZZRHAAAAAAAAAACMGHVzZXJfZGVmaW5lZF9icmFnZ19hbmdsZZRHQCxyLQ5WBBmMFHVzZXJf
+ZGVmaW5lZF9jcnlzdGFslEsgjA51c2VyX2RlZmluZWRfaJRLCIwOdXNlcl9kZWZpbmVkX2uUSwCM
+DnVzZXJfZGVmaW5lZF9slEsAjAl2aWV3X3R5cGWUSwB1Lg==
+
+ gASV4wkAAAAAAAB9lCiMF2FuZ2xlX29mX21hamF4X2FuZF9wb2xllEc/8AAAAAAAAIwRYW5nbGVz
+X3Jlc3BlY3RfdG+USwCMDmFzeW1tZXRyaWNfY3V0lEsAjBdiZWxvd19vbnRvX2JyYWdnX3BsYW5l
+c5RK/////4wTY29uaWNfY29lZmZpY2llbnRfMJSMFW51bXB5LmNvcmUubXVsdGlhcnJheZSMBnNj
+YWxhcpSTlIwFbnVtcHmUjAVkdHlwZZSTlIwCZjiUiYiHlFKUKEsDjAE8lE5OTkr/////Sv////9L
+AHSUYkMIAAAAAAAAAACUhpRSlIwTY29uaWNfY29lZmZpY2llbnRfMZRoCGgOQwgAAAAAAAAAAJSG
+lFKUjBNjb25pY19jb2VmZmljaWVudF8ylGgIaA5DCAAAAAAAAAAAlIaUUpSME2NvbmljX2NvZWZm
+aWNpZW50XzOUaAhoDkMIAAAAAAAAAACUhpRSlIwTY29uaWNfY29lZmZpY2llbnRfNJRoCGgOQwgA
+AAAAAAAAAJSGlFKUjBNjb25pY19jb2VmZmljaWVudF81lGgIaA5DCAAAAAAAAAAAlIaUUpSME2Nv
+bmljX2NvZWZmaWNpZW50XzaUaAhoDkMIAAAAAAAAAACUhpRSlIwTY29uaWNfY29lZmZpY2llbnRf
+N5RoCGgOQwgAAAAAAAAAAJSGlFKUjBNjb25pY19jb2VmZmljaWVudF84lGgIaA5DCAAAAAAAAPC/
+lIaUUpSME2NvbmljX2NvZWZmaWNpZW50XzmUaAhoDkMIAAAAAAAAAACUhpRSlIwUY3J5c3RhbF9h
+dXRvX3NldHRpbmeUSwGMFGN5bGluZGVyX29yaWVudGF0aW9ulEsAjBdkaWZmcmFjdGlvbl9jYWxj
+dWxhdGlvbpRLAowLZGltX3hfbWludXOURz/wAAAAAAAAjApkaW1feF9wbHVzlEc/8AAAAAAAAIwL
+ZGltX3lfbWludXOURz/wAAAAAAAAjApkaW1feV9wbHVzlEc/8AAAAAAAAIwhZWxsaXBzZV9oeXBl
+cmJvbGFfc2VtaV9tYWpvcl9heGlzlEc/8AAAAAAAAIwhZWxsaXBzZV9oeXBlcmJvbGFfc2VtaV9t
+aW5vcl9heGlzlEc/8AAAAAAAAIwXZmlsZV9jcnlzdGFsX3BhcmFtZXRlcnOUjBdTaSg4MDApXzEy
+ODkwXzEyOTQwLmRhdJSMGGZpbGVfZGlmZnJhY3Rpb25fcHJvZmlsZZSMF2RpZmZyYWN0aW9uX3By
+b2ZpbGUuZGF0lIwcZm9jaWlfYW5kX2NvbnRpbnVhdGlvbl9wbGFuZZRLAIwOZm9jdXNfbG9jYXRp
+b26USwCMFGltYWdlX3BsYW5lX2Rpc3RhbmNllEdACAAAAAAAAIwZaW1hZ2Vfc2lkZV9mb2NhbF9k
+aXN0YW5jZZRHAAAAAAAAAACME2luY2lkZW5jZV9hbmdsZV9kZWeUaAhoDkMIAd4CCYp/RkCUhpRS
+lIwUaW5jaWRlbmNlX2FuZ2xlX21yYWSUaAhoDkMI4chNHrCLiECUhpRSlIwhaW5jaWRlbmNlX2Fu
+Z2xlX3Jlc3BlY3RfdG9fbm9ybWFslEcAAAAAAAAAAIwmaW5jaWRlbmNlX2FuZ2xlX3Jlc3BlY3Rf
+dG9fbm9ybWFsX3R5cGWUSwCMEGlzX2F1dG9tYXRpY19ydW6UiIwLaXNfY3lsaW5kZXKUSwGMC2lz
+X2luZmluaXRllEsBjAhpc190aGlja5RLAYwZbWV0aG9kX2VmaWVsZHNfbWFuYWdlbWVudJRLAIwQ
+bW9kaWZpZWRfc3VyZmFjZZRLAIwTbXNfZGVmZWN0X2ZpbGVfbmFtZZSMCzxub25lPi5oZGY1lIwa
+b2JqZWN0X3NpZGVfZm9jYWxfZGlzdGFuY2WURwAAAAAAAAAAjAtvZV9tb3ZlbWVudJRLAIwUb2Vf
+bW92ZW1lbnRfb2Zmc2V0X3iURwAAAAAAAAAAjBRvZV9tb3ZlbWVudF9vZmZzZXRfeZRHAAAAAAAA
+AACMFG9lX21vdmVtZW50X29mZnNldF96lEcAAAAAAAAAAIwWb2VfbW92ZW1lbnRfcm90YXRpb25f
+eJRHAAAAAAAAAACMFm9lX21vdmVtZW50X3JvdGF0aW9uX3mURwAAAAAAAAAAjBZvZV9tb3ZlbWVu
+dF9yb3RhdGlvbl96lEcAAAAAAAAAAIwUb2Vfb3JpZW50YXRpb25fYW5nbGWUSwKMH29lX29yaWVu
+dGF0aW9uX2FuZ2xlX3VzZXJfdmFsdWWURwAAAAAAAAAAjAhvZV9zaGFwZZRLAIwUcGFyYWJvbG9p
+ZF9wYXJhbWV0ZXKURz/wAAAAAAAAjA1waG90b25fZW5lcmd5lEdAyTkAAAAAAIwRcGhvdG9uX3dh
+dmVsZW5ndGiURz/wAAAAAAAAjAxwbGFuZXNfYW5nbGWURwAAAAAAAAAAjBRyZWZsZWN0aW9uX2Fu
+Z2xlX2RlZ5RoCGgOQwgB3gIJin9GQJSGlFKUjBVyZWZsZWN0aW9uX2FuZ2xlX21yYWSUaAhoDkMI
+4chNHrCLiECUhpRSlIwTc2F2ZWRXaWRnZXRHZW9tZXRyeZSMA3NpcJSMDl91bnBpY2tsZV90eXBl
+lJOUjAxQeVF0NS5RdENvcmWUjApRQnl0ZUFycmF5lENCAdnQywADAAAAAAHmAAAAjAAABw8AAANu
+AAAB5wAAALIAAAcOAAADbQAAAAAAAAAAB4AAAAHnAAAAsgAABw4AAANtlIWUh5RSlIwVc291cmNl
+X3BsYW5lX2Rpc3RhbmNllEcAAAAAAAAAAIwQc3BoZXJpY2FsX3JhZGl1c5RHP/AAAAAAAACMEXN1
+cmZhY2VfY3VydmF0dXJllEsAjBhzdXJmYWNlX3NoYXBlX3BhcmFtZXRlcnOUSwGMEnN1cmZhY2Vf
+c2hhcGVfdHlwZZRLAIwJdGhpY2tuZXNzlEc/UGJN0vGp/IwddG9yb2lkYWxfbWlycm9yX3BvbGVf
+bG9jYXRpb26USwCMEnRvcnVzX21ham9yX3JhZGl1c5RHP/AAAAAAAACMEnRvcnVzX21pbm9yX3Jh
+ZGl1c5RHP/AAAAAAAACMDHVuaXRzX2luX3VzZZRLAIwcdXNlcl9kZWZpbmVkX2FzeW1tZXRyeV9h
+bmdsZZRHAAAAAAAAAACMGHVzZXJfZGVmaW5lZF9icmFnZ19hbmdsZZRHQCxyLQ5WBBmMFHVzZXJf
+ZGVmaW5lZF9jcnlzdGFslEsgjA51c2VyX2RlZmluZWRfaJRLCIwOdXNlcl9kZWZpbmVkX2uUSwCM
+DnVzZXJfZGVmaW5lZF9slEsAjAl2aWV3X3R5cGWUSwB1Lg==
+
+ gASVHQIAAAAAAAB9lCiMDGF1dG9fZXhlY3V0ZZSJjBJjdXJyZW50U2NyaXB0SW5kZXiUSwCMCWZv
+bnRfc2l6ZZRLBIwRbGlicmFyeUxpc3RTb3VyY2WUXZSMJG9hc3lzLndpZGdldHMudG9vbHMub3df
+cHl0aG9uX3NjcmlwdJSMBlNjcmlwdJSTlCmBlH2UKIwEbmFtZZSMDmdldFM0SW50ZW5zaXR5lIwG
+c2NyaXB0lIwwcHJpbnQoZid7aW5fb2JqZWN0XzEuYmVhbS5nZXRfaW50ZW5zaXR5KCk6LjZnfScp
+lIwFZmxhZ3OUSwCMCGZpbGVuYW1llE51YmGME3NhdmVkV2lkZ2V0R2VvbWV0cnmUjANzaXCUjA5f
+dW5waWNrbGVfdHlwZZSTlIwMUHlRdDUuUXRDb3JllIwKUUJ5dGVBcnJheZRDQgHZ0MsAAwAAAAAA
+0AAAAKkAAAatAAAD9gAAANAAAACpAAAGrQAAA/YAAAAAAAAAAAeAAAAA0AAAAKkAAAatAAAD9pSF
+lIeUUpSMDXNwbGl0dGVyU3RhdGWUjH9iJ1x4MDBceDAwXHgwMFx4ZmZceDAwXHgwMFx4MDBceDAx
+XHgwMFx4MDBceDAwXHgwMlx4MDBceDAwXHgwMVx4YzRceDAwXHgwMFx4MDBceGQ1XHgwMVx4ZmZc
+eGZmXHhmZlx4ZmZceDAxXHgwMFx4MDBceDAwXHgwMlx4MDAnlHUu
+
+ gASVSQMAAAAAAAB9lCiMEWFuZ2xlc19yZXNwZWN0X3RvlEsAjBdhdHRlbnVhdGlvbl9jb2VmZmlj
+aWVudJRHAAAAAAAAAACMEmNvbnZleF90b190aGVfYmVhbZRLAIwOY3lsaW5kZXJfYW5nbGWURwAA
+AAAAAAAAjAdkZW5zaXR5lEc/9752yLQ5WIwIZGlhbWV0ZXKUR0CjiAAAAAAAjBNoYXNfZmluaXRl
+X2RpYW1ldGVylEsAjBRpbWFnZV9wbGFuZV9kaXN0YW5jZZRHQI6NmZmZmZqME2luY2lkZW5jZV9h
+bmdsZV9kZWeUR0BWMzMzMzMzjBRpbmNpZGVuY2VfYW5nbGVfbXJhZJRHAAAAAAAAAACMDmludGVy
+dGhpY2tuZXNzlEdAPgAAAAAAAIwQaXNfYXV0b21hdGljX3J1bpSIjAtpc19jeWxpbmRlcpRLAIwI
+bWF0ZXJpYWyUjAJCZZSMBm5fbGVuc5RLA4wUb2Vfb3JpZW50YXRpb25fYW5nbGWUSwCMH29lX29y
+aWVudGF0aW9uX2FuZ2xlX3VzZXJfdmFsdWWURwAAAAAAAAAAjBBwaWxpbmdfdGhpY2tuZXNzlEdA
+AAAAAAAAAIwMcHJlcmVmbF9maWxllIwTU1U4XzEyODkwXzEyOTQwLmRhdJSMBnJhZGl1c5RHQJ0Q
+AAAAAACMFHJlZmxlY3Rpb25fYW5nbGVfZGVnlEdAVUAAAAAAAIwVcmVmbGVjdGlvbl9hbmdsZV9t
+cmFklEcAAAAAAAAAAIwQcmVmcmFjdGlvbl9pbmRleJRHP/AAAAAAAACME3JpX2NhbGN1bGF0aW9u
+X21vZGWUSwGME3NhdmVkV2lkZ2V0R2VvbWV0cnmUjANzaXCUjA5fdW5waWNrbGVfdHlwZZSTlIwM
+UHlRdDUuUXRDb3JllIwKUUJ5dGVBcnJheZRDQgHZ0MsAAwAAAAACNAAAAQ0AAAddAAAD7wAAAjUA
+AAEzAAAHXAAAA+4AAAAAAAAAAAeAAAACNQAAATMAAAdcAAAD7pSFlIeUUpSMFXNvdXJjZV9wbGFu
+ZV9kaXN0YW5jZZRHQGmAAAAAAACMDXN1cmZhY2Vfc2hhcGWUSwKMCXZpZXdfdHlwZZRLAHUu
+
+ gASVSQMAAAAAAAB9lCiMEWFuZ2xlc19yZXNwZWN0X3RvlEsAjBdhdHRlbnVhdGlvbl9jb2VmZmlj
+aWVudJRHAAAAAAAAAACMEmNvbnZleF90b190aGVfYmVhbZRLAIwOY3lsaW5kZXJfYW5nbGWURwAA
+AAAAAAAAjAdkZW5zaXR5lEc/9752yLQ5WIwIZGlhbWV0ZXKUR0CV4AAAAAAAjBNoYXNfZmluaXRl
+X2RpYW1ldGVylEsBjBRpbWFnZV9wbGFuZV9kaXN0YW5jZZRHQClD6lIY0YiME2luY2lkZW5jZV9h
+bmdsZV9kZWeUR0BWMzMzMzMzjBRpbmNpZGVuY2VfYW5nbGVfbXJhZJRHAAAAAAAAAACMDmludGVy
+dGhpY2tuZXNzlEdAPgAAAAAAAIwQaXNfYXV0b21hdGljX3J1bpSIjAtpc19jeWxpbmRlcpRLAIwI
+bWF0ZXJpYWyUjAJCZZSMBm5fbGVuc5RLDYwUb2Vfb3JpZW50YXRpb25fYW5nbGWUSwCMH29lX29y
+aWVudGF0aW9uX2FuZ2xlX3VzZXJfdmFsdWWURwAAAAAAAAAAjBBwaWxpbmdfdGhpY2tuZXNzlEdA
+AAAAAAAAAIwMcHJlcmVmbF9maWxllIwTU1U4XzEyODkwXzEyOTQwLmRhdJSMBnJhZGl1c5RHQH9A
+AAAAAACMFHJlZmxlY3Rpb25fYW5nbGVfZGVnlEdAVUAAAAAAAIwVcmVmbGVjdGlvbl9hbmdsZV9t
+cmFklEcAAAAAAAAAAIwQcmVmcmFjdGlvbl9pbmRleJRHP/AAAAAAAACME3JpX2NhbGN1bGF0aW9u
+X21vZGWUSwGME3NhdmVkV2lkZ2V0R2VvbWV0cnmUjANzaXCUjA5fdW5waWNrbGVfdHlwZZSTlIwM
+UHlRdDUuUXRDb3JllIwKUUJ5dGVBcnJheZRDQgHZ0MsAAwAAAAACHQAAARMAAAdEAAADzgAAAh0A
+AAETAAAHRAAAA84AAAAAAAAAAAeAAAACHQAAARMAAAdEAAADzpSFlIeUUpSMFXNvdXJjZV9wbGFu
+ZV9kaXN0YW5jZZRHAAAAAAAAAACMDXN1cmZhY2Vfc2hhcGWUSwKMCXZpZXdfdHlwZZRLAHUu
+
+ gASVSQMAAAAAAAB9lCiMEWFuZ2xlc19yZXNwZWN0X3RvlEsAjBdhdHRlbnVhdGlvbl9jb2VmZmlj
+aWVudJRHAAAAAAAAAACMEmNvbnZleF90b190aGVfYmVhbZRLAIwOY3lsaW5kZXJfYW5nbGWURwAA
+AAAAAAAAjAdkZW5zaXR5lEc/9752yLQ5WIwIZGlhbWV0ZXKUR0CV4AAAAAAAjBNoYXNfZmluaXRl
+X2RpYW1ldGVylEsBjBRpbWFnZV9wbGFuZV9kaXN0YW5jZZRHQAAAAAAAAACME2luY2lkZW5jZV9h
+bmdsZV9kZWeUR0BWMzMzMzMzjBRpbmNpZGVuY2VfYW5nbGVfbXJhZJRHAAAAAAAAAACMDmludGVy
+dGhpY2tuZXNzlEdAPgAAAAAAAIwQaXNfYXV0b21hdGljX3J1bpSIjAtpc19jeWxpbmRlcpRLAIwI
+bWF0ZXJpYWyUjAJCZZSMBm5fbGVuc5RLDYwUb2Vfb3JpZW50YXRpb25fYW5nbGWUSwCMH29lX29y
+aWVudGF0aW9uX2FuZ2xlX3VzZXJfdmFsdWWURwAAAAAAAAAAjBBwaWxpbmdfdGhpY2tuZXNzlEdA
+AAAAAAAAAIwMcHJlcmVmbF9maWxllIwTU1U4XzEyODkwXzEyOTQwLmRhdJSMBnJhZGl1c5RHQH9A
+AAAAAACMFHJlZmxlY3Rpb25fYW5nbGVfZGVnlEdAVUAAAAAAAIwVcmVmbGVjdGlvbl9hbmdsZV9t
+cmFklEcAAAAAAAAAAIwQcmVmcmFjdGlvbl9pbmRleJRHP/AAAAAAAACME3JpX2NhbGN1bGF0aW9u
+X21vZGWUSwGME3NhdmVkV2lkZ2V0R2VvbWV0cnmUjANzaXCUjA5fdW5waWNrbGVfdHlwZZSTlIwM
+UHlRdDUuUXRDb3JllIwKUUJ5dGVBcnJheZRDQgHZ0MsAAwAAAAACHQAAARMAAAdEAAADzgAAAh0A
+AAETAAAHRAAAA84AAAAAAAAAAAeAAAACHQAAARMAAAdEAAADzpSFlIeUUpSMFXNvdXJjZV9wbGFu
+ZV9kaXN0YW5jZZRHQClD6lIY0YiMDXN1cmZhY2Vfc2hhcGWUSwKMCXZpZXdfdHlwZZRLAHUu
+
+
+
diff --git a/SU8_12890_12940.dat b/SU8_12890_12940.dat
new file mode 100644
index 0000000..b1dee64
--- /dev/null
+++ b/SU8_12890_12940.dat
@@ -0,0 +1,204 @@
+ 6.53230489313e+08 6.55764354671e+08 2.53386535808e+04 6.18000000000e-01
+101
+3.053665e-06
+3.053428e-06
+3.053191e-06
+3.052953e-06
+3.052716e-06
+3.052479e-06
+3.052241e-06
+3.052004e-06
+3.051767e-06
+3.051530e-06
+3.051292e-06
+3.051055e-06
+3.050818e-06
+3.050581e-06
+3.050344e-06
+3.050107e-06
+3.049870e-06
+3.049633e-06
+3.049396e-06
+3.049159e-06
+3.048922e-06
+3.048685e-06
+3.048449e-06
+3.048212e-06
+3.047975e-06
+3.047738e-06
+3.047501e-06
+3.047265e-06
+3.047028e-06
+3.046791e-06
+3.046555e-06
+3.046318e-06
+3.046082e-06
+3.045845e-06
+3.045609e-06
+3.045372e-06
+3.045136e-06
+3.044899e-06
+3.044663e-06
+3.044426e-06
+3.044190e-06
+3.043954e-06
+3.043718e-06
+3.043481e-06
+3.043245e-06
+3.043009e-06
+3.042773e-06
+3.042536e-06
+3.042300e-06
+3.042064e-06
+3.041828e-06
+3.041592e-06
+3.041356e-06
+3.041120e-06
+3.040884e-06
+3.040648e-06
+3.040412e-06
+3.040176e-06
+3.039941e-06
+3.039705e-06
+3.039469e-06
+3.039233e-06
+3.038997e-06
+3.038762e-06
+3.038526e-06
+3.038290e-06
+3.038055e-06
+3.037819e-06
+3.037584e-06
+3.037348e-06
+3.037113e-06
+3.036877e-06
+3.036642e-06
+3.036406e-06
+3.036171e-06
+3.035935e-06
+3.035700e-06
+3.035465e-06
+3.035229e-06
+3.034994e-06
+3.034759e-06
+3.034524e-06
+3.034288e-06
+3.034053e-06
+3.033818e-06
+3.033583e-06
+3.033348e-06
+3.033113e-06
+3.032878e-06
+3.032643e-06
+3.032408e-06
+3.032173e-06
+3.031938e-06
+3.031703e-06
+3.031468e-06
+3.031233e-06
+3.030999e-06
+3.030764e-06
+3.030529e-06
+3.030294e-06
+3.030060e-06
+4.972172e-09
+4.971432e-09
+4.970693e-09
+4.969953e-09
+4.969214e-09
+4.968475e-09
+4.967736e-09
+4.966997e-09
+4.966258e-09
+4.965520e-09
+4.964781e-09
+4.964043e-09
+4.963305e-09
+4.962567e-09
+4.961829e-09
+4.961091e-09
+4.960354e-09
+4.959616e-09
+4.958879e-09
+4.958142e-09
+4.957405e-09
+4.956668e-09
+4.955931e-09
+4.955195e-09
+4.954458e-09
+4.953722e-09
+4.952986e-09
+4.952250e-09
+4.951514e-09
+4.950779e-09
+4.950043e-09
+4.949308e-09
+4.948572e-09
+4.947837e-09
+4.947102e-09
+4.946367e-09
+4.945633e-09
+4.944898e-09
+4.944164e-09
+4.943429e-09
+4.942695e-09
+4.941961e-09
+4.941227e-09
+4.940494e-09
+4.939760e-09
+4.939027e-09
+4.938293e-09
+4.937560e-09
+4.936827e-09
+4.936094e-09
+4.935361e-09
+4.934629e-09
+4.933896e-09
+4.933164e-09
+4.932432e-09
+4.931700e-09
+4.930968e-09
+4.930236e-09
+4.929505e-09
+4.928773e-09
+4.928042e-09
+4.927311e-09
+4.926580e-09
+4.925849e-09
+4.925118e-09
+4.924387e-09
+4.923657e-09
+4.922927e-09
+4.922196e-09
+4.921466e-09
+4.920736e-09
+4.920007e-09
+4.919277e-09
+4.918548e-09
+4.917818e-09
+4.917089e-09
+4.916360e-09
+4.915631e-09
+4.914902e-09
+4.914174e-09
+4.913445e-09
+4.912717e-09
+4.911989e-09
+4.911260e-09
+4.910533e-09
+4.909805e-09
+4.909077e-09
+4.908350e-09
+4.907622e-09
+4.906895e-09
+4.906168e-09
+4.905441e-09
+4.904714e-09
+4.903987e-09
+4.903261e-09
+4.902534e-09
+4.901808e-09
+4.901082e-09
+4.900356e-09
+4.899630e-09
+4.898905e-09
From 3c40c1821198abf09a7977341357594f2024340b Mon Sep 17 00:00:00 2001
From: Xiaojiang YU <81464221+91902078@users.noreply.github.com>
Date: Mon, 21 Oct 2024 16:41:38 +0800
Subject: [PATCH 2/6] Add files via upload
---
Si(800)_12890_12940.dat | 211 ++++++++++++++++++++++++++++++++++++++++
1 file changed, 211 insertions(+)
create mode 100644 Si(800)_12890_12940.dat
diff --git a/Si(800)_12890_12940.dat b/Si(800)_12890_12940.dat
new file mode 100644
index 0000000..a8d625e
--- /dev/null
+++ b/Si(800)_12890_12940.dat
@@ -0,0 +1,211 @@
+0 1.759399e+09 6.788375e-09
+14 14 1.000000e+00
+( 4.00000000000e+00, -1.95943487864e-15 )
+( 4.00000000000e+00, 1.95943487864e-15 )
+( 4.00000000000e+00, -3.91886975727e-15 )
+( 4.00000000000e+00, 3.91886975727e-15 )
+1.309004e+01 -1.683182e+01 6.433024e+00
+1.309004e+01 -1.683182e+01 6.433024e+00
+101
+ 1.28900000000e+04 1.36676072387e-01 1.33673242769e-01
+ 1.36676072387e-01 1.33673242769e-01
+ 1.28905000000e+04 1.36668041677e-01 1.33662824915e-01
+ 1.36668041677e-01 1.33662824915e-01
+ 1.28910000000e+04 1.36660011619e-01 1.33652408348e-01
+ 1.36660011619e-01 1.33652408348e-01
+ 1.28915000000e+04 1.36651982214e-01 1.33641993069e-01
+ 1.36651982214e-01 1.33641993069e-01
+ 1.28920000000e+04 1.36643953460e-01 1.33631579076e-01
+ 1.36643953460e-01 1.33631579076e-01
+ 1.28925000000e+04 1.36635925358e-01 1.33621166370e-01
+ 1.36635925358e-01 1.33621166370e-01
+ 1.28930000000e+04 1.36627897909e-01 1.33610754950e-01
+ 1.36627897909e-01 1.33610754950e-01
+ 1.28935000000e+04 1.36619871111e-01 1.33600344817e-01
+ 1.36619871111e-01 1.33600344817e-01
+ 1.28940000000e+04 1.36611844965e-01 1.33589935969e-01
+ 1.36611844965e-01 1.33589935969e-01
+ 1.28945000000e+04 1.36603819470e-01 1.33579528408e-01
+ 1.36603819470e-01 1.33579528408e-01
+ 1.28950000000e+04 1.36595794628e-01 1.33569122132e-01
+ 1.36595794628e-01 1.33569122132e-01
+ 1.28955000000e+04 1.36587770437e-01 1.33558717143e-01
+ 1.36587770437e-01 1.33558717143e-01
+ 1.28960000000e+04 1.36579746897e-01 1.33548313438e-01
+ 1.36579746897e-01 1.33548313438e-01
+ 1.28965000000e+04 1.36571724009e-01 1.33537911019e-01
+ 1.36571724009e-01 1.33537911019e-01
+ 1.28970000000e+04 1.36563701772e-01 1.33527509885e-01
+ 1.36563701772e-01 1.33527509885e-01
+ 1.28975000000e+04 1.36555680187e-01 1.33517110035e-01
+ 1.36555680187e-01 1.33517110035e-01
+ 1.28980000000e+04 1.36547659253e-01 1.33506711471e-01
+ 1.36547659253e-01 1.33506711471e-01
+ 1.28985000000e+04 1.36539638970e-01 1.33496314191e-01
+ 1.36539638970e-01 1.33496314191e-01
+ 1.28990000000e+04 1.36531619339e-01 1.33485918195e-01
+ 1.36531619339e-01 1.33485918195e-01
+ 1.28995000000e+04 1.36523600359e-01 1.33475523484e-01
+ 1.36523600359e-01 1.33475523484e-01
+ 1.29000000000e+04 1.36515582029e-01 1.33465130056e-01
+ 1.36515582029e-01 1.33465130056e-01
+ 1.29005000000e+04 1.36507564351e-01 1.33454737912e-01
+ 1.36507564351e-01 1.33454737912e-01
+ 1.29010000000e+04 1.36499547324e-01 1.33444347052e-01
+ 1.36499547324e-01 1.33444347052e-01
+ 1.29015000000e+04 1.36491530947e-01 1.33433957476e-01
+ 1.36491530947e-01 1.33433957476e-01
+ 1.29020000000e+04 1.36483515221e-01 1.33423569183e-01
+ 1.36483515221e-01 1.33423569183e-01
+ 1.29025000000e+04 1.36475500147e-01 1.33413182173e-01
+ 1.36475500147e-01 1.33413182173e-01
+ 1.29030000000e+04 1.36467485722e-01 1.33402796445e-01
+ 1.36467485722e-01 1.33402796445e-01
+ 1.29035000000e+04 1.36459471949e-01 1.33392412001e-01
+ 1.36459471949e-01 1.33392412001e-01
+ 1.29040000000e+04 1.36451458826e-01 1.33382028839e-01
+ 1.36451458826e-01 1.33382028839e-01
+ 1.29045000000e+04 1.36443446353e-01 1.33371646960e-01
+ 1.36443446353e-01 1.33371646960e-01
+ 1.29050000000e+04 1.36435434531e-01 1.33361266363e-01
+ 1.36435434531e-01 1.33361266363e-01
+ 1.29055000000e+04 1.36427423360e-01 1.33350887047e-01
+ 1.36427423360e-01 1.33350887047e-01
+ 1.29060000000e+04 1.36419412838e-01 1.33340509014e-01
+ 1.36419412838e-01 1.33340509014e-01
+ 1.29065000000e+04 1.36411402967e-01 1.33330132263e-01
+ 1.36411402967e-01 1.33330132263e-01
+ 1.29070000000e+04 1.36403393747e-01 1.33319756793e-01
+ 1.36403393747e-01 1.33319756793e-01
+ 1.29075000000e+04 1.36395385176e-01 1.33309382604e-01
+ 1.36395385176e-01 1.33309382604e-01
+ 1.29080000000e+04 1.36387377256e-01 1.33299009696e-01
+ 1.36387377256e-01 1.33299009696e-01
+ 1.29085000000e+04 1.36379369985e-01 1.33288638070e-01
+ 1.36379369985e-01 1.33288638070e-01
+ 1.29090000000e+04 1.36371363365e-01 1.33278267724e-01
+ 1.36371363365e-01 1.33278267724e-01
+ 1.29095000000e+04 1.36363357394e-01 1.33267898659e-01
+ 1.36363357394e-01 1.33267898659e-01
+ 1.29100000000e+04 1.36355352073e-01 1.33257530874e-01
+ 1.36355352073e-01 1.33257530874e-01
+ 1.29105000000e+04 1.36347347402e-01 1.33247164370e-01
+ 1.36347347402e-01 1.33247164370e-01
+ 1.29110000000e+04 1.36339343381e-01 1.33236799146e-01
+ 1.36339343381e-01 1.33236799146e-01
+ 1.29115000000e+04 1.36331340009e-01 1.33226435201e-01
+ 1.36331340009e-01 1.33226435201e-01
+ 1.29120000000e+04 1.36323337287e-01 1.33216072537e-01
+ 1.36323337287e-01 1.33216072537e-01
+ 1.29125000000e+04 1.36315335215e-01 1.33205711152e-01
+ 1.36315335215e-01 1.33205711152e-01
+ 1.29130000000e+04 1.36307333792e-01 1.33195351046e-01
+ 1.36307333792e-01 1.33195351046e-01
+ 1.29135000000e+04 1.36299333019e-01 1.33184992220e-01
+ 1.36299333019e-01 1.33184992220e-01
+ 1.29140000000e+04 1.36291332895e-01 1.33174634672e-01
+ 1.36291332895e-01 1.33174634672e-01
+ 1.29145000000e+04 1.36283333420e-01 1.33164278404e-01
+ 1.36283333420e-01 1.33164278404e-01
+ 1.29150000000e+04 1.36275334594e-01 1.33153923414e-01
+ 1.36275334594e-01 1.33153923414e-01
+ 1.29155000000e+04 1.36267336418e-01 1.33143569702e-01
+ 1.36267336418e-01 1.33143569702e-01
+ 1.29160000000e+04 1.36259338891e-01 1.33133217269e-01
+ 1.36259338891e-01 1.33133217269e-01
+ 1.29165000000e+04 1.36251342012e-01 1.33122866114e-01
+ 1.36251342012e-01 1.33122866114e-01
+ 1.29170000000e+04 1.36243345783e-01 1.33112516237e-01
+ 1.36243345783e-01 1.33112516237e-01
+ 1.29175000000e+04 1.36235350203e-01 1.33102167638e-01
+ 1.36235350203e-01 1.33102167638e-01
+ 1.29180000000e+04 1.36227355272e-01 1.33091820317e-01
+ 1.36227355272e-01 1.33091820317e-01
+ 1.29185000000e+04 1.36219360989e-01 1.33081474273e-01
+ 1.36219360989e-01 1.33081474273e-01
+ 1.29190000000e+04 1.36211367355e-01 1.33071129506e-01
+ 1.36211367355e-01 1.33071129506e-01
+ 1.29195000000e+04 1.36203374370e-01 1.33060786016e-01
+ 1.36203374370e-01 1.33060786016e-01
+ 1.29200000000e+04 1.36195382034e-01 1.33050443803e-01
+ 1.36195382034e-01 1.33050443803e-01
+ 1.29205000000e+04 1.36187390346e-01 1.33040102867e-01
+ 1.36187390346e-01 1.33040102867e-01
+ 1.29210000000e+04 1.36179399307e-01 1.33029763208e-01
+ 1.36179399307e-01 1.33029763208e-01
+ 1.29215000000e+04 1.36171408916e-01 1.33019424824e-01
+ 1.36171408916e-01 1.33019424824e-01
+ 1.29220000000e+04 1.36163419173e-01 1.33009087717e-01
+ 1.36163419173e-01 1.33009087717e-01
+ 1.29225000000e+04 1.36155430079e-01 1.32998751886e-01
+ 1.36155430079e-01 1.32998751886e-01
+ 1.29230000000e+04 1.36147441633e-01 1.32988417331e-01
+ 1.36147441633e-01 1.32988417331e-01
+ 1.29235000000e+04 1.36139453836e-01 1.32978084052e-01
+ 1.36139453836e-01 1.32978084052e-01
+ 1.29240000000e+04 1.36131466686e-01 1.32967752048e-01
+ 1.36131466686e-01 1.32967752048e-01
+ 1.29245000000e+04 1.36123480185e-01 1.32957421319e-01
+ 1.36123480185e-01 1.32957421319e-01
+ 1.29250000000e+04 1.36115494331e-01 1.32947091865e-01
+ 1.36115494331e-01 1.32947091865e-01
+ 1.29255000000e+04 1.36107509126e-01 1.32936763687e-01
+ 1.36107509126e-01 1.32936763687e-01
+ 1.29260000000e+04 1.36099524568e-01 1.32926436783e-01
+ 1.36099524568e-01 1.32926436783e-01
+ 1.29265000000e+04 1.36091540659e-01 1.32916111154e-01
+ 1.36091540659e-01 1.32916111154e-01
+ 1.29270000000e+04 1.36083557397e-01 1.32905786799e-01
+ 1.36083557397e-01 1.32905786799e-01
+ 1.29275000000e+04 1.36075574783e-01 1.32895463718e-01
+ 1.36075574783e-01 1.32895463718e-01
+ 1.29280000000e+04 1.36067592816e-01 1.32885141912e-01
+ 1.36067592816e-01 1.32885141912e-01
+ 1.29285000000e+04 1.36059611498e-01 1.32874821379e-01
+ 1.36059611498e-01 1.32874821379e-01
+ 1.29290000000e+04 1.36051630826e-01 1.32864502120e-01
+ 1.36051630826e-01 1.32864502120e-01
+ 1.29295000000e+04 1.36043650802e-01 1.32854184135e-01
+ 1.36043650802e-01 1.32854184135e-01
+ 1.29300000000e+04 1.36035671426e-01 1.32843867423e-01
+ 1.36035671426e-01 1.32843867423e-01
+ 1.29305000000e+04 1.36027692697e-01 1.32833551984e-01
+ 1.36027692697e-01 1.32833551984e-01
+ 1.29310000000e+04 1.36019714615e-01 1.32823237818e-01
+ 1.36019714615e-01 1.32823237818e-01
+ 1.29315000000e+04 1.36011737181e-01 1.32812924925e-01
+ 1.36011737181e-01 1.32812924925e-01
+ 1.29320000000e+04 1.36003760394e-01 1.32802613304e-01
+ 1.36003760394e-01 1.32802613304e-01
+ 1.29325000000e+04 1.35995784254e-01 1.32792302956e-01
+ 1.35995784254e-01 1.32792302956e-01
+ 1.29330000000e+04 1.35987808760e-01 1.32781993881e-01
+ 1.35987808760e-01 1.32781993881e-01
+ 1.29335000000e+04 1.35979833914e-01 1.32771686077e-01
+ 1.35979833914e-01 1.32771686077e-01
+ 1.29340000000e+04 1.35971859715e-01 1.32761379546e-01
+ 1.35971859715e-01 1.32761379546e-01
+ 1.29345000000e+04 1.35963886163e-01 1.32751074286e-01
+ 1.35963886163e-01 1.32751074286e-01
+ 1.29350000000e+04 1.35955913258e-01 1.32740770297e-01
+ 1.35955913258e-01 1.32740770297e-01
+ 1.29355000000e+04 1.35947940999e-01 1.32730467580e-01
+ 1.35947940999e-01 1.32730467580e-01
+ 1.29360000000e+04 1.35939969387e-01 1.32720166135e-01
+ 1.35939969387e-01 1.32720166135e-01
+ 1.29365000000e+04 1.35931998422e-01 1.32709865960e-01
+ 1.35931998422e-01 1.32709865960e-01
+ 1.29370000000e+04 1.35924028103e-01 1.32699567056e-01
+ 1.35924028103e-01 1.32699567056e-01
+ 1.29375000000e+04 1.35916058431e-01 1.32689269423e-01
+ 1.35916058431e-01 1.32689269423e-01
+ 1.29380000000e+04 1.35908089405e-01 1.32678973061e-01
+ 1.35908089405e-01 1.32678973061e-01
+ 1.29385000000e+04 1.35900121025e-01 1.32668677968e-01
+ 1.35900121025e-01 1.32668677968e-01
+ 1.29390000000e+04 1.35892153292e-01 1.32658384146e-01
+ 1.35892153292e-01 1.32658384146e-01
+ 1.29395000000e+04 1.35884186206e-01 1.32648091594e-01
+ 1.35884186206e-01 1.32648091594e-01
+ 1.29400000000e+04 1.35876219765e-01 1.32637800312e-01
+ 1.35876219765e-01 1.32637800312e-01
From e321c4f2b91631946888285753a8626228b3434f Mon Sep 17 00:00:00 2001
From: 91902078
Date: Wed, 25 Feb 2026 13:05:05 +0800
Subject: [PATCH 3/6] Update for phase shifter calculation
---
.../optical_elements/crystals/s4_crystal.py | 1126 +++++++++++++++++
1 file changed, 1126 insertions(+)
create mode 100644 beamline/optical_elements/crystals/s4_crystal.py
diff --git a/beamline/optical_elements/crystals/s4_crystal.py b/beamline/optical_elements/crystals/s4_crystal.py
new file mode 100644
index 0000000..0a6e3b4
--- /dev/null
+++ b/beamline/optical_elements/crystals/s4_crystal.py
@@ -0,0 +1,1126 @@
+import numpy
+
+from syned.beamline.element_coordinates import ElementCoordinates
+from syned.beamline.optical_elements.crystals.crystal import Crystal, DiffractionGeometry
+from syned.beamline.shape import Rectangle, Ellipse
+
+from shadow4.beam.s4_beam import S4Beam
+from shadow4.beamline.s4_beamline_element import S4BeamlineElement
+from shadow4.beamline.s4_beamline_element_movements import S4BeamlineElementMovements
+from shadow4.tools.arrayofvectors import vector_modulus, vector_dot, vector_cross, vector_norm
+from shadow4.tools.arrayofvectors import vector_multiply_scalar, vector_diff
+
+from crystalpy.diffraction.DiffractionSetupXraylib import DiffractionSetupXraylib
+from crystalpy.diffraction.DiffractionSetupDabax import DiffractionSetupDabax
+from crystalpy.diffraction.DiffractionSetupShadowPreprocessorV1 import DiffractionSetupShadowPreprocessorV1
+from crystalpy.diffraction.DiffractionSetupShadowPreprocessorV2 import DiffractionSetupShadowPreprocessorV2
+
+from crystalpy.diffraction.GeometryType import BraggDiffraction, BraggTransmission, LaueDiffraction, LaueTransmission
+from crystalpy.util.Vector import Vector
+from crystalpy.util.ComplexAmplitudePhoton import ComplexAmplitudePhoton
+from crystalpy.diffraction.PerfectCrystalDiffraction import PerfectCrystalDiffraction
+
+from dabax.dabax_xraylib import DabaxXraylib
+
+from shadow4.optical_surfaces.s4_mesh import S4Mesh
+from shadow4.optical_surfaces.s4_toroid import S4Toroid
+
+from shadow4.tools.logger import is_verbose, is_debug
+from shadow4.tools.arrayofvectors import vector_modulus_square, vector_modulus, vector_norm, vector_rotate_around_axis
+from shadow4.tools.logger import is_verbose, is_debug
+
+import scipy.constants as codata
+
+class S4Crystal(Crystal):
+ dynamic_theory = 1 # 0 Zachariasen 1 Guigay
+ """
+ Shadow4 Crystal Class
+ This is a base class for perfect crystal in reflection geometry (Bragg), using the diffracted beam.
+
+ Use derived classes for plane or other curved crystal surfaces.
+
+ Use other classes for (to be developed):
+ * S4TransmissionCrystal : Perfect crystal in transmission (Bragg-transmitted beam, Laue-diffracted and Laue-transmited)
+ * S4JohanssonCrystal : Johanssong curved perfect crystals (in Bragg reflection).
+ * S4MosaicCrystal : Mosaic crystals (in Bragg reflection).
+
+ Constructor.
+
+ Parameters
+ ----------
+ name : str, optional
+ A name for the crystal
+ boundary_shape : instance of BoundaryShape, optional
+ The information on the crystal boundaries.
+ surface_shape : instance of SurfaceShape, optional
+ The information on crystal surface.
+ material : str, optional
+ The crystal material name (a name accepted by crystalpy).
+ miller_index_h : int, optional
+ The Miller index H.
+ miller_index_k : int, optional
+ The Miller index K.
+ miller_index_l : int, optional
+ The Miller index L.
+ f_bragg_a : int, optional
+ Asymmetric crystal 0:No, 1:Yes.
+ asymmetry_angle : float, optional
+ For f_bragg_a=1, the asymmetry angle (angle between crystal planes and surface) in rads.
+ is_thick : int, optional
+ Use thick crystal approximation.
+ thickness : float, optional
+ For is_thick=0, the crystal thickness in m.
+ f_central : int, optional
+ Flag for autosetting the crystal to the corrected Bragg angle.
+ f_phot_cent : int, optional
+ 0: setting photon energy in eV, 1:setting photon wavelength in A.
+ phot_cent : float, optional
+ for f_central=1, the value of the photon energy (f_phot_cent=0) or photon wavelength (f_phot_cent=1).
+ f_ext : inf, optional
+ Flag for autosetting the crystal surface parameters.
+ 0: internal/calculated parameters, 1:external/user defined parameters. TODO: delete?
+ material_constants_library_flag : int, optional
+ Flag for indicating the origin of the crystal data:
+ 0: xraylib, 1: dabax, 2: preprocessor file v1, 3: preprocessor file v2.
+ file_refl : str, optional
+ for material_constants_library_flag=2,3, the name of the file containing the crystal parameters.
+ dabax : None or instance of DabaxXraylib,
+ The pointer to the dabax library (used for material_constants_library_flag=1).
+
+ Returns
+ -------
+ instance of S4Crystal.
+ """
+ def __init__(self,
+ name="Undefined",
+ boundary_shape=None,
+ surface_shape=None,
+ material=None,
+ diffraction_geometry=DiffractionGeometry.BRAGG,
+ miller_index_h=1,
+ miller_index_k=1,
+ miller_index_l=1,
+ f_bragg_a=False,
+ asymmetry_angle=0.0,
+ is_thick=0, # 1=Use thick crystal approximation
+ thickness=0.010,
+ f_central=0,
+ f_phot_cent=0,
+ phot_cent=8000.0,
+ # f_johansson=False,
+ # r_johansson=1.0,
+ # f_mosaic=False,
+ # spread_mos=0.4*numpy.pi/180,
+ f_ext=0,
+ material_constants_library_flag=0, # 0=xraylib, 1=dabax
+ # 2=shadow preprocessor file v1
+ # 3=shadow preprocessor file v2
+ file_refl="",
+ method_efields_management=0, # 0=S4, 1=S3
+ dabax=None,
+ ):
+
+
+ Crystal.__init__(self,
+ name=name,
+ surface_shape=surface_shape,
+ boundary_shape=boundary_shape,
+ material=material,
+ diffraction_geometry=diffraction_geometry,
+ miller_index_h=miller_index_h,
+ miller_index_k=miller_index_k,
+ miller_index_l=miller_index_l,
+ asymmetry_angle=asymmetry_angle,
+ thickness=thickness,
+ )
+
+
+ self._f_central = f_central
+ self._f_phot_cent = f_phot_cent
+ self._phot_cent = phot_cent
+ self._f_bragg_a = f_bragg_a
+ self._is_thick = is_thick
+ self._f_ext = f_ext
+ self._material_constants_library_flag = material_constants_library_flag
+ self._file_refl = file_refl
+
+ self._dabax = dabax
+ self._method_efields_management = method_efields_management
+
+ # self._f_mosaic = f_mosaic
+ # self._r_johansson = r_johansson
+ # self._f_johansson = f_johansson
+ # self._spread_mos = spread_mos
+
+ # support text containg name of variable, help text and unit. Will be stored in self._support_dictionary
+ self._add_support_text([
+ ("f_central", "S4: autotuning", ""),
+ ("f_phot_cent", "S4: for f_central=1: tune to eV(0) or A (1)", ""),
+ ("phot_cent", "S4: for f_central=1: value in eV or A", ""),
+ ("f_bragg_a", "S4: use asymmetruc cut", ""),
+ ("is_thick", "S4: use thick crystal approximation", ""),
+ ("f_ext", "S4: autosetting curved surface parms.", ""),
+ ("material_constants_library_flag", "S4: crystal data from: 0=xraylib, 1=dabax, 2=file v1, 3=file v1", ""),
+ ("file_refl", "S4: preprocessor file name", ""),
+ ("method_efields_management", "flag 0:new in S4; 1=like S3", ""),
+ ] )
+
+
+ def get_info(self):
+ """
+ Returns the specific information of the S4 crystal optical element.
+
+ Returns
+ -------
+ str
+ """
+ txt = "\n\n"
+ txt += "CRYSTAL\n"
+ if self._material_constants_library_flag == 0:
+ txt += "Crystal data using xraylib for %s %d%d%d\n" % (self._material,
+ self._miller_index_h,
+ self._miller_index_k,
+ self._miller_index_l)
+ elif self._material_constants_library_flag == 1:
+ txt += "Crystal data using dabax for %s %d%d%d\n" % (self._material,
+ self._miller_index_h,
+ self._miller_index_k,
+ self._miller_index_l)
+ elif self._material_constants_library_flag == 2:
+ txt += "Crystal data using preprocessor (bragg V1) file: %s \n" % self._file_refl
+ elif self._material_constants_library_flag == 3:
+ txt += "Crystal data using preprocessor (bragg V2) file: %s \n" % self._file_refl
+
+ if self._f_central == 0:
+ txt += "Using EXTERNAL incidence and reflection angles.\n"
+ else:
+ txt += "Using INTERNAL or calculated incidence and reflection angles for "
+ if self._f_phot_cent == 0:
+ txt += "photon energy %.6f eV\n" % self._phot_cent
+ else:
+ txt += "photon wavelength %f A\n" % (self._phot_cent)
+
+
+ txt += "\n"
+ ss = self.get_surface_shape()
+ if ss is None:
+ txt += "Surface shape is: Plane (** UNDEFINED?? **)\n"
+ else:
+ txt += "Surface shape is: %s\n" % ss.__class__.__name__
+
+ #
+ if ss is not None: txt += "\nParameters:\n %s\n" % ss.info()
+
+ txt += self.get_optical_surface_instance().info() + "\n"
+
+ boundary = self.get_boundary_shape()
+ if boundary is None:
+ txt += "Surface boundaries not considered (infinite)"
+ else:
+ txt += "Surface boundaries are: %s\n" % boundary.__class__.__name__
+ txt += " Limits: " + repr( boundary.get_boundaries()) + "\n"
+ txt += boundary.info()
+
+ return txt
+
+ def to_python_code_boundary_shape(self):
+ """
+ Creates a code block with information of boundary shape.
+
+ Returns
+ -------
+ str
+ The text with the code.
+ """
+ txt = "" # "\nfrom shadow4.beamline.optical_elements.mirrors.s4_plane_mirror import S4PlaneMirror"
+ bs = self._boundary_shape
+ if bs is None:
+ txt += "\nboundary_shape = None"
+ elif isinstance(bs, Rectangle):
+ txt += "\nfrom syned.beamline.shape import Rectangle"
+ txt += "\nboundary_shape = Rectangle(x_left=%g, x_right=%g, y_bottom=%g, y_top=%g)" % bs.get_boundaries()
+ elif isinstance(bs, Ellipse):
+ txt += "\nfrom syned.beamline.shape import Ellipse"
+ txt += "\nboundary_shape = Ellipse(a_axis_min=%g, a_axis_max=%g, b_axis_min=%g, b_axis_max=%g)" % bs.get_boundaries()
+ return txt
+
+ def _get_dabax_txt(self):
+ if self._material_constants_library_flag == 1:
+ if isinstance(self._dabax, DabaxXraylib):
+ dabax_txt = 'DabaxXraylib(file_f0="%s", file_f1f2="%s")' % (self._dabax.get_file_f0(), self._dabax.get_file_f1f2())
+ else:
+ dabax_txt = "DabaxXraylib()"
+ else:
+ dabax_txt = "None"
+
+ return dabax_txt
+
+class S4CrystalElement(S4BeamlineElement):
+ """
+ The base class for Shadow4 crystal element.
+ It is made of a S4Crystal and an ElementCoordinates instance. It also includes the input beam.
+
+ Use derived classes for plane or other curved crystal surfaces.
+
+ Constructor.
+
+ Parameters
+ ----------
+ optical_element : instance of OpticalElement, optional
+ The syned optical element.
+ coordinates : instance of ElementCoordinates, optional
+ The syned element coordinates.
+ movements : instance of S4BeamlineElementMovements, optional
+ The S4 element movements.
+ input_beam : instance of S4Beam, optional
+ The S4 incident beam.
+
+
+ Returns
+ -------
+ instance of S4CrystalElement.
+ """
+
+ def __init__(self,
+ optical_element : S4Crystal = None,
+ coordinates : ElementCoordinates = None,
+ movements: S4BeamlineElementMovements = None,
+ input_beam : S4Beam = None):
+ super().__init__(optical_element=optical_element if optical_element is not None else S4Crystal(),
+ coordinates=coordinates if coordinates is not None else ElementCoordinates(),
+ movements=movements,
+ input_beam=input_beam)
+
+ self._crystalpy_diffraction_setup = None
+
+
+ def set_crystalpy_diffraction_setup(self):
+ """
+ Returns the crystalpy DiffractionSetup.
+
+ Returns
+ -------
+ instance of crystalpy DiffractionSetupAbstract
+ """
+ oe = self.get_optical_element()
+ coor = self.get_coordinates()
+ geo = oe.get_diffraction_geometry()
+ if geo == DiffractionGeometry.BRAGG:
+ geo_type = BraggDiffraction()
+ elif geo == DiffractionGeometry.LAUE:
+ geo_type = LaueDiffraction()
+ elif geo == DiffractionGeometry.BRAGG_T:
+ geo_type = BraggTransmission()
+ else:
+ geo_type = LaueTransmission()
+
+ if oe._material_constants_library_flag == 0:
+ if is_verbose(): print("\nCreating a diffraction setup (XRAYLIB) for material:", oe._material)
+ diffraction_setup = DiffractionSetupXraylib(geometry_type=geo_type,
+ crystal_name=oe._material, # string
+ thickness=oe._thickness, # meters
+ miller_h=oe._miller_index_h, # int
+ miller_k=oe._miller_index_k, # int
+ miller_l=oe._miller_index_l, # int
+ asymmetry_angle=oe._asymmetry_angle, # radians
+ azimuthal_angle=0.0)
+ elif oe._material_constants_library_flag == 1:
+ if is_verbose(): print("\nCreating a diffraction setup (DABAX) for material:", oe._material)
+ diffraction_setup = DiffractionSetupDabax(geometry_type=geo_type,
+ crystal_name=oe._material, # string
+ thickness=oe._thickness, # meters
+ miller_h=oe._miller_index_h, # int
+ miller_k=oe._miller_index_k, # int
+ miller_l=oe._miller_index_l, # int
+ asymmetry_angle=oe._asymmetry_angle, # radians
+ azimuthal_angle=0.0,
+ dabax=oe._dabax)
+ elif oe._material_constants_library_flag == 2:
+ if is_verbose(): print("\nCreating a diffraction setup (shadow preprocessor file V1)...")
+ diffraction_setup = DiffractionSetupShadowPreprocessorV1(geometry_type=geo_type,
+ crystal_name=oe._material, # string
+ thickness=oe._thickness, # meters
+ miller_h=oe._miller_index_h, # int
+ miller_k=oe._miller_index_k, # int
+ miller_l=oe._miller_index_l, # int
+ asymmetry_angle=oe._asymmetry_angle, # radians
+ azimuthal_angle=0.0,
+ preprocessor_file=oe._file_refl)
+ elif oe._material_constants_library_flag == 3:
+ if is_verbose(): print("\nCreating a diffraction setup (shadow preprocessor file V2)...")
+ diffraction_setup = DiffractionSetupShadowPreprocessorV2(geometry_type=geo_type,
+ crystal_name=oe._material, # string
+ thickness=oe._thickness, # meters
+ miller_h=oe._miller_index_h, # int
+ miller_k=oe._miller_index_k, # int
+ miller_l=oe._miller_index_l, # int
+ asymmetry_angle=oe._asymmetry_angle, # radians
+ azimuthal_angle=0.0,
+ preprocessor_file=oe._file_refl)
+ else:
+ raise NotImplementedError
+
+ self._crystalpy_diffraction_setup = diffraction_setup
+
+ def align_crystal(self):
+ """
+ Sets the adequate incident and reflection angles to match the tuning energy.
+ """
+ oe = self.get_optical_element()
+ coor = self.get_coordinates()
+
+ if oe is None:
+ raise Exception("Undefined optical element")
+
+ if oe._f_central:
+ if oe._f_phot_cent == 0:
+ energy = oe._phot_cent
+ else:
+ energy = codata.h * codata.c / codata.e * 1e2 / (oe._phot_cent * 1e-8)
+
+ setting_angle = self._crystalpy_diffraction_setup.angleBraggCorrected(energy)
+ if isinstance(setting_angle, (list, tuple, numpy.ndarray)): setting_angle = setting_angle[0]
+
+ theta_in_grazing = setting_angle + oe._asymmetry_angle
+
+ if is_verbose():
+ print(" align_crystal: dSpacingSI [m]: " , (self._crystalpy_diffraction_setup.dSpacingSI()))
+ print(" align_crystal: Bragg angle (uncorrected) for E=%f eV is %f deg" % (energy, numpy.degrees(self._crystalpy_diffraction_setup.angleBragg(energy))))
+ print(" align_crystal: Bragg angle (corrected) for E=%f eV is %f deg" % (energy, numpy.degrees(setting_angle)))
+ print(" align_crystal: (normal) Incident angle [deg]", numpy.degrees(numpy.pi/2 - (theta_in_grazing ) ))
+ print(" align_crystal: grazing incident angle [deg]: ", numpy.degrees(theta_in_grazing ))
+
+ theta_out_grazing = setting_angle - oe._asymmetry_angle # wrong because this just applies the Laue equation
+ print(" align_crystal: (normal) Reflection angle [LAUE EQUATION] [deg]", numpy.degrees(numpy.pi/2 - (theta_out_grazing) ))
+ print(" align_crystal: grazing output angle [LAUE EQUATION] [deg]: ", numpy.degrees(theta_out_grazing))
+
+ KIN = self._crystalpy_diffraction_setup.vectorKscattered(energy=energy)
+ theta_out = KIN.angle(self._crystalpy_diffraction_setup.vectorNormalSurface())
+ if isinstance(theta_out, (list, tuple, numpy.ndarray)): theta_out = theta_out[0]
+
+ if is_verbose(): print(" align_crystal: (normal) Reflection angle [SCATTERING EQUATION] [deg]: ", numpy.degrees(theta_out))
+ _, _, angle_azimuthal = coor.get_angles()
+
+ coor.set_angles(angle_radial = numpy.pi/2 - theta_in_grazing,
+ angle_radial_out = theta_out,
+ angle_azimuthal = angle_azimuthal)
+ else:
+ if is_verbose(): print("align_crystal: nothing to align: f_central=0")
+
+ if is_verbose(): print(coor.info())
+
+ def trace_beam(self, **params):
+ """
+ Runs (ray tracing) the input beam through the element.
+
+ Parameters
+ ----------
+ **params : accepted parameters, in particular:
+
+ flag_lost_value: float
+ numeric value to set in the flag column when ray is lost.
+
+ Returns
+ -------
+ tuple
+ (output_beam, footprint) instances of S4Beam.
+ """
+
+ if not isinstance(self.get_optical_element(), Crystal): raise Exception("Undefined Crystal")
+ flag_lost_value = params.get("flag_lost_value", -1)
+ change_reference_system_in = params.get("change_reference_system_in", True)
+ change_reference_system_out = params.get("change_reference_system_out", True)
+ print(">>>>>> change_reference_system: ", change_reference_system_in, change_reference_system_out)
+
+ if is_verbose():
+ if not change_reference_system_in:
+ print("change_reference_system_in = False: skipping reference change to o.e.")
+ if not change_reference_system_out:
+ print("change_reference_system_out = False: skipping reference change from o.e. to image")
+
+ if self._crystalpy_diffraction_setup is None: # todo: supress if?
+ self.set_crystalpy_diffraction_setup()
+ self.align_crystal()
+
+ p = self.get_coordinates().p()
+ q = self.get_coordinates().q()
+ theta_grazing1 = numpy.pi / 2 - self.get_coordinates().angle_radial()
+ theta_grazing2 = numpy.pi / 2 - self.get_coordinates().angle_radial_out()
+ alpha1 = self.get_coordinates().angle_azimuthal()
+
+ #
+ input_beam = self.get_input_beam().duplicate()
+
+ soe = self.get_optical_element()
+
+ if is_verbose():
+ b_S, b_P = input_beam.get_efield_directions()
+ print("\n\n")
+ print(">>> input beam e_S, mod e_s", b_S[0], vector_modulus(b_S)[0])
+ print(">>> input beam e_P, mod e_P, e_S.e_P: ", b_P[0], vector_modulus(b_P)[0], vector_dot(b_S, b_P)[0])
+
+ #
+ # put input_beam in crystal reference system
+ #
+ if change_reference_system_in:
+ input_beam.rotate(alpha1, axis=2)
+ input_beam.rotate(theta_grazing1, axis=1)
+
+ if is_verbose():
+ b_S, b_P = input_beam.get_efield_directions()
+ print("")
+ print(">>> local beam e_S, mod e_s", b_S[0], vector_modulus(b_S)[0])
+ print(">>> local beam e_P, mod e_P, e_S.e_P: ", b_P[0], vector_modulus(b_P)[0], vector_dot(b_S, b_P)[0])
+
+ input_beam.translation([0.0, -p * numpy.cos(theta_grazing1), p * numpy.sin(theta_grazing1)])
+
+ # crystal movement (forward):
+ movements = self.get_movements()
+ if movements is not None:
+ if movements.f_move:
+ input_beam.rot_for(OFFX=movements.offset_x,
+ OFFY=movements.offset_y,
+ OFFZ=movements.offset_z,
+ X_ROT=movements.rotation_x,
+ Y_ROT=movements.rotation_y,
+ Z_ROT=movements.rotation_z)
+
+ #
+ # crystal diffraction
+ #
+ footprint, normal = self._apply_crystal_diffraction(input_beam)
+
+ #
+ # apply crystal movements (backwards) and boundaries
+ #
+ if movements is not None:
+ if movements.f_move:
+ footprint.rot_back(OFFX=movements.offset_x,
+ OFFY=movements.offset_y,
+ OFFZ=movements.offset_z,
+ X_ROT=movements.rotation_x,
+ Y_ROT=movements.rotation_y,
+ Z_ROT=movements.rotation_z)
+
+ footprint.apply_boundaries_syned(soe.get_boundary_shape(), flag_lost_value=flag_lost_value)
+
+ #
+ # from element reference system to image plane
+ #
+ output_beam = footprint.duplicate()
+ if change_reference_system_out:
+ output_beam.change_to_image_reference_system(theta_grazing2, q)
+
+ if is_verbose():
+ b_S, b_P = output_beam.get_efield_directions()
+ print("")
+ print(">>> image e_S, mod e_s", b_S[0], vector_modulus(b_S)[0])
+ print(">>> image e_P, mod e_P, e_S.e_P: ", b_P[0], vector_modulus(b_P)[0], vector_dot(b_S, b_P)[0])
+
+ return output_beam, footprint
+
+ def _apply_crystal_diffraction(self, input_beam):
+ #
+ # geometric and physics for the scattering process:
+ # reflect beam in the crystal and apply crystal reflectivity
+ #
+
+ if self.get_optical_element()._method_efields_management == 0: # S4
+ footprint, normal = self.get_optical_element().get_optical_surface_instance().calculate_intercept_on_beam(input_beam)
+
+ if is_debug():
+ print(" >>>>>> intercept: ", footprint.get_columns([1, 2, 3])[:, 0])
+ print(" >>>>>> vout: ", footprint.get_columns([4, 5, 6])[:, 0])
+ print(" >>>>>> normal: ", normal.shape, normal[:, 0])
+
+ vIn, vOut, r_SS, r_PP = self._calculate_perfect_crystal_scattering(footprint, normal)
+ jv_out_0, jv_out_1, ee_S, ee_P = self._calculate_jones_and_efield_directions(footprint, normal,
+ vIn, vOut, r_SS, r_PP)
+ # update beam array with the new direction
+ footprint.set_column(4, vOut[:, 0])
+ footprint.set_column(5, vOut[:, 1])
+ footprint.set_column(6, vOut[:, 2])
+ # update beam array with the new electric fields
+ footprint.set_jones_components(jv_out_0, jv_out_1, e_S=ee_S, e_P=ee_P)
+
+ if is_verbose():
+ print(">>> Orthogonal footprint: ", footprint.efields_orthogonal(),
+ vector_dot(ee_S, ee_P)[0],
+ vector_dot(ee_S, vOut)[0],
+ vector_dot(ee_P, vOut)[0])
+
+ b_S, b_P = footprint.get_efield_directions()
+ print("")
+ print(">>> reflected beam e_S, mod e_s", b_S[0], vector_modulus(b_S)[0])
+ print(">>> reflected beam e_P, mod e_P, e_S.e_P: ", b_P[0], vector_modulus(b_P)[0], vector_dot(b_S, b_P)[0])
+
+
+ print(">>> Intensity foot s, beam in s, foot p, beam in p:",
+ footprint.get_column(24)[0], input_beam.get_column(24)[0],
+ footprint.get_column(25)[0], input_beam.get_column(25)[0],)
+
+ else: # S3
+ footprint, normal = self._apply_crystal_diffraction_and_reflectivities_S3(input_beam)
+
+ return footprint, normal
+
+ def _calculate_perfect_crystal_scattering(self, footprint1, normal):
+ """
+ Compute the scattering by the crystal beamline element.
+
+ It calls crystalpy to compute the crystal parameters:
+
+ - output direction vOut
+
+ - reflectivities (complex amplitudes) r__S and r_P
+
+ Parameters
+ ----------
+ footprint : S4Beam instance
+ The beam in the local reference of the beamline element with only the intercepts calculated (directions
+ and electric fields will be later updated with the results of this method).
+
+ normal : numpy array
+ The array with the normal to the surface for all rays.
+
+ Returns
+ -------
+ tuple
+ (vIn, vOut, r_S, r_P) : input and output direction with shape (npoints, 3) and complex amplitude
+ reflectivity for sigma and pi.
+
+ """
+
+ footprint = footprint1.duplicate()
+ v1 = footprint.get_columns([4, 5, 6]) # numpy.array(a3.getshcol([4,5,6]))
+
+ #
+ # direction and reflectivity calculation using crystalpy
+ #
+ energies = footprint.get_photon_energy_eV()
+
+ # incident crystalpy photon stack
+ photons_in = ComplexAmplitudePhoton(
+ energies,
+ Vector(v1[0], v1[1], v1[2]),
+ Esigma=numpy.ones(energies.size, dtype=complex),
+ Epi =numpy.ones(energies.size, dtype=complex),
+ )
+
+ # create crystalpy PerfectCrystalDiffraction instance
+ # Warning:
+ # S4Conic, S4Toroid give normal_z < 0 for concave surfaces (and >0 for convex)
+ # S4mesh give always normal_z > 0
+ # We need for crystalpy the upwards normal
+ soe = self.get_optical_element()
+ ccc = soe.get_optical_surface_instance()
+
+ if isinstance(ccc, S4Mesh):
+ surface_normal = Vector(normal[0], normal[1], normal[2]) # normal is outwards!
+ elif isinstance(ccc, S4Toroid):
+ if ccc.f_torus == 0 or ccc.f_torus == 2:
+ surface_normal = Vector(normal[0], normal[1], normal[2]).scalarMultiplication(-1.0) # normal is inwards!
+ else:
+ surface_normal = Vector(normal[0], normal[1], normal[2]) # normal is outwards!
+ else: # todo: check with convex surfaces
+ surface_normal = Vector(normal[0], normal[1], normal[2]).scalarMultiplication(-1.0) # normal is inwards!
+
+ # calculate vector H
+ # Geometrical convention from M.Sanchez del Rio et al., J.Appl.Cryst.(2015). 48, 477-491.
+ bragg_normal = surface_normal.getVectorH(
+ surface_normal,
+ self._crystalpy_diffraction_setup.dSpacingSI(),
+ asymmetry_angle=self._crystalpy_diffraction_setup.asymmetryAngle(),
+ azimuthal_angle=self._crystalpy_diffraction_setup.azimuthalAngle())
+
+ # g_modulus = 2.0 * numpy.pi / (self._crystalpy_diffraction_setup.dSpacingSI())
+ # # Let's start from a vector parallel to the surface normal (z axis).
+ # temp_normal_bragg = surface_normal.scalarMultiplication(g_modulus)
+ #
+ # # Let's now rotate this vector of an angle alphaX around the y axis (according to the right-hand-rule).
+ # alpha_x = self._crystalpy_diffraction_setup.asymmetryAngle()
+ # axis = self._crystalpy_diffraction_setup.vectorParallelSurface().crossProduct(
+ # surface_normal) # should be ~(1, 0, 0)
+ # temp_normal_bragg = temp_normal_bragg.rotateAroundAxis(axis, -alpha_x)
+ #
+ # # Let's now rotate this vector of an angle phi around the z axis (following the ISO standard 80000-2:2009).
+ # phi = self._crystalpy_diffraction_setup.azimuthalAngle()
+ # bragg_normal = temp_normal_bragg.rotateAroundAxis(temp_normal_bragg, phi)
+
+ perfect_crystal = PerfectCrystalDiffraction.initializeFromDiffractionSetupAndEnergy(
+ self._crystalpy_diffraction_setup,
+ energies,
+ geometry_type=None,
+ bragg_normal=bragg_normal,
+ surface_normal=surface_normal,
+ thickness=None,
+ d_spacing=None,
+ photon_in=photons_in,
+ )
+
+ # Calculate outgoing Photon.
+
+ # NEW USING Jones matrix JR
+ outgoing_complex_amplitude_photon = perfect_crystal.calculatePhotonOut(photons_in,
+ apply_reflectivity=True,
+ calculation_method=soe.dynamic_theory,
+ is_thick=soe._is_thick,
+ use_transfer_matrix=0
+ )
+ r_S = outgoing_complex_amplitude_photon.getComplexAmplitudeS()
+ r_P = outgoing_complex_amplitude_photon.getComplexAmplitudeP()
+
+ if is_verbose():
+ print(">> r_S: ", r_S[0], numpy.abs(r_S[0]) ** 2)
+ print(">> r_P: ", r_P[0], numpy.abs(r_P[0]) ** 2)
+ vv = outgoing_complex_amplitude_photon.unitDirectionVector().components() # (3, npoints)
+ vOut = vv.T # shape (npoints, 3)
+ vIn = v1.T
+ return vIn, vOut, r_S, r_P
+
+ def _calculate_jones_and_efield_directions(self, footprint, normal, vIn, vOut, r_SS, r_PP):
+ """
+ Calculates the Jones vector after crystal diffraction. It also returns the directions of the
+ S and P polarized components of the electric field.
+
+
+ Parameters
+ ----------
+ footprint : instance of S4Beam
+ The input beam
+ normal : numpy array shape (nrays, 3)
+ The normal to the surface at the intercept points.
+ vIn : numpy array shape (nrays, 3)
+ The incident directions
+ vOut : numpy array shape (nrays, 3)
+ The incident directions
+ r_SS : numpy array complex shape (nrays)
+ The crystal reflectivity for the S polarization
+ r_PP : numpy array complex shape (nrays)
+ The crystal reflectivity for the P polarization
+
+ Returns
+ -------
+ tuple
+ (jv_out_0, jv_out_1, ee_S, ee_P) the two components of the Jones vector and the two vectors of
+ shape(nrays, 3) with the electric vectors for the S and P polarizations.
+
+ """
+ #
+ # get versors with the sigma and pi directions for:
+ # e_S, e_P: the incident beam (as it is)
+ # es_S, es_P: the scattering plane spanned by vIn (incident)
+ # ee_S, ee_P: the scattering plane spanned by vOut (incident)
+ #
+ # Note that vector_norm() is not needed (for the vectors that should be unitary),
+ # but renormalizing them improves accuracy in the calculation of c, s
+ #
+ e_S, e_P = footprint.get_efield_directions() # these are \hat{u}_{\sigma,\pi} in Eq. 3
+
+ soe = self.get_optical_element()
+ if soe.get_diffraction_geometry() > 1: # 2:bragg_t, 3:laue_t
+ vOut = vIn
+ es_S = e_S
+ es_P = e_P
+ ee_S = e_S
+ ee_P = e_P
+ axis = e_S # Dummy assignment, not used
+ else:
+ axis = vector_norm(vector_cross(vIn, vOut))
+
+ es_S = axis # \hat{u}_{\sigma,i} in Eq. 12
+ es_P = vector_norm(vector_cross(es_S, vIn)) # \hat{u}_{\pi,i} in Eq. 12
+
+ ee_S = axis # \hat{u}_{\sigma,f} in Eq. 13
+ ee_P = vector_norm(vector_cross(ee_S, vOut)) # \hat{u}_{\pi,f} in Eq. 13
+
+ if is_verbose():
+ print(">>>>> e_S, perp vIn: ", e_S[0], vector_dot(e_S, vIn)[0])
+ print(">>>>> e_P, perp vIn: ", e_P[0], vector_dot(e_P, vIn)[0])
+
+ print(">>>>> axis, mod, perp vIn: ", axis[0], vector_modulus(axis)[0], vector_dot(axis, vIn)[0])
+ print(">>>>> final ee_S, perp vOut: ", ee_S[0], vector_dot(ee_S, vOut)[0])
+ print(">>>>> final ee_P, perp vOut: ", ee_P[0], vector_dot(ee_P, vOut)[0])
+
+ #
+ # Jones calculus of refletivity
+ #
+
+ # Jones matrix (local)
+ J00 = r_SS
+ J01 = 0
+ J10 = 0
+ J11 = r_PP
+
+ # rotation matrix R
+ if True: # todo delete, only for test
+ # c = e_S[:, 0] # cos of angle between e_S and the x axis
+ c = vector_dot(e_S, ee_S)
+ s = numpy.sqrt(1 - c ** 2) # sin
+ if is_verbose(): print(">>> s, c, angle: ", s[0], c[0], numpy.degrees(numpy.arctan2(s[0], c[0])))
+ R00 = c
+ R01 = -s
+ R10 = s
+ R11 = c
+ if is_verbose(): print(">>> R angles: ", R00[0], R01[0], R10[0], R11[0])
+
+ R00 = vector_dot(e_S, es_S)
+ R01 = vector_dot(e_S, es_P)
+ R10 = vector_dot(e_P, es_S)
+ R11 = vector_dot(e_P, es_P)
+
+ # J x R(alpha), the Jones matrix to apply to the Jones vector of the incident rays
+ Jrotated_00 = J00 * R00 + J01 * R10 # r_SS * c
+ Jrotated_01 = J00 * R01 + J01 * R11 # -r_SS * s
+ Jrotated_10 = J10 * R00 + J11 * R10 # r_PP * s
+ Jrotated_11 = J10 * R01 + J11 * R11 # r_PP * c
+
+ if is_verbose():
+ print(">>> R dotprd: ", R00[0], R01[0], R10[0], R11[0])
+ print(">>> J: ", Jrotated_00[0], Jrotated_01[0], Jrotated_10[0], Jrotated_11[0])
+ print(">>> |J|: ", numpy.abs(Jrotated_00[0]), numpy.abs(Jrotated_01[0]), numpy.abs(Jrotated_10[0]),
+ numpy.abs(Jrotated_11[0]))
+
+ # Jones vector of incident rays
+ jv_in_0, jv_in_1 = footprint.get_jones_components()
+ # Jones vector or reflected rays
+ jv_out_0 = Jrotated_00 * jv_in_0 + Jrotated_01 * jv_in_1
+ jv_out_1 = Jrotated_10 * jv_in_0 + Jrotated_11 * jv_in_1
+
+ return jv_out_0, jv_out_1, ee_S, ee_P
+
+ def _apply_crystal_diffraction_and_reflectivities_S3(self, beam): #TODO delete
+ """
+ Applies the changes in direction and in reflectivity in a beam due to crystal diffraction.
+ It mimics the procedure in SHADOW3.
+ Note that it is a new way in SHADOW4 using Jones algebra.
+
+ Parameters
+ ----------
+ beam : instance of S4Beam
+ the beam (already transformed to the local crystal reference system).
+
+ Returns
+ -------
+ tuple
+ (footprint, normal), with footprint an instance of S4Beam and the vector normal as numpy arrat (3,:)
+
+ """
+ #
+ soe = self.get_optical_element()
+ ccc = soe.get_optical_surface_instance()
+ v1 = beam.get_columns([4, 5, 6])
+
+ # intercept calculation
+ footprint, normal = ccc.calculate_intercept_on_beam(beam)
+
+
+ #
+ # direction and reflectivity calculation using crystalpy
+ #
+ energies = footprint.get_photon_energy_eV()
+
+ # incident crystalpy photon stack
+ photons_in = ComplexAmplitudePhoton(
+ energies,
+ Vector(v1[0], v1[1], v1[2]),
+ Esigma=numpy.ones(energies.size, dtype=complex), #numpy.sqrt(footprint.get_column(24)) * numpy.exp(1j * footprint.get_column(14)),
+ Epi =numpy.ones(energies.size, dtype=complex), #numpy.sqrt(footprint.get_column(25)) * numpy.exp(1j * footprint.get_column(15)),
+ )
+
+ # create crystalpy PerfectCrystalDiffraction instance
+ # Warning:
+ # S4Conic, S4Toroid give normal_z < 0 for concave surfaces (and >0 for convex)
+ # S4mesh give always normal_z > 0
+ # We need for crystalpy the upwards normal
+ if isinstance(ccc, S4Mesh):
+ surface_normal = Vector(normal[0], normal[1], normal[2]) # normal is outwards!
+ elif isinstance(ccc, S4Toroid):
+ if ccc.f_torus == 0 or ccc.f_torus == 2:
+ surface_normal = Vector(normal[0], normal[1], normal[2]).scalarMultiplication(-1.0) # normal is inwards!
+ else:
+ surface_normal = Vector(normal[0], normal[1], normal[2]) # normal is outwards!
+ else: # todo: check with convex surfaces
+ surface_normal = Vector(normal[0], normal[1], normal[2]).scalarMultiplication(-1.0) # normal is inwards!
+
+ # calculate vector H
+ # Geometrical convention from M.Sanchez del Rio et al., J.Appl.Cryst.(2015). 48, 477-491.
+ bragg_normal = surface_normal.getVectorH(
+ surface_normal,
+ self._crystalpy_diffraction_setup.dSpacingSI(),
+ asymmetry_angle=self._crystalpy_diffraction_setup.asymmetryAngle(),
+ azimuthal_angle=self._crystalpy_diffraction_setup.azimuthalAngle())
+
+ # g_modulus = 2.0 * numpy.pi / (self._crystalpy_diffraction_setup.dSpacingSI())
+ # # Let's start from a vector parallel to the surface normal (z axis).
+ # temp_normal_bragg = surface_normal.scalarMultiplication(g_modulus)
+ #
+ # # Let's now rotate this vector of an angle alphaX around the y axis (according to the right-hand-rule).
+ # alpha_x = self._crystalpy_diffraction_setup.asymmetryAngle()
+ # axis = self._crystalpy_diffraction_setup.vectorParallelSurface().crossProduct(
+ # surface_normal) # should be ~(1, 0, 0)
+ # temp_normal_bragg = temp_normal_bragg.rotateAroundAxis(axis, -alpha_x)
+ #
+ # # Let's now rotate this vector of an angle phi around the z axis (following the ISO standard 80000-2:2009).
+ # phi = self._crystalpy_diffraction_setup.azimuthalAngle()
+ # bragg_normal = temp_normal_bragg.rotateAroundAxis(temp_normal_bragg, phi)
+
+ perfect_crystal = PerfectCrystalDiffraction.initializeFromDiffractionSetupAndEnergy(
+ self._crystalpy_diffraction_setup,
+ energies,
+ geometry_type=None,
+ bragg_normal=bragg_normal,
+ surface_normal=surface_normal,
+ # bragg_angle=None,
+ # psi_0=None,
+ # psi_H=None,
+ # psi_H_bar=None,
+ thickness=None,
+ d_spacing=None,
+ )
+
+ # Calculate outgoing Photon.
+
+ if is_verbose(): print(">> method_efields_management=1: traditional S3")
+ outgoing_complex_amplitude_photon = perfect_crystal.calculatePhotonOut(photons_in,
+ apply_reflectivity=True,
+ calculation_method=1,
+ is_thick=soe._is_thick,
+ use_transfer_matrix=0
+ )
+
+
+ # copy data to vectors
+ E_S = footprint.get_columns([7,8,9]).T
+ E_P = footprint.get_columns([16, 17, 18]).T
+ PhiS = footprint.get_column(14)
+ PhiP = footprint.get_column(15)
+ vNormal = normal.T
+ vIn = v1.T
+ vH = vNormal # todo: set for asymmetry!!!
+
+ if is_verbose():
+ print(">>>>> incident E_S, norm: ", E_S[0], vector_modulus(E_S)[0])
+ print(">>>>> incident E_P, norm: ", E_P[0], vector_modulus(E_P)[0])
+
+ #
+ # STEP 1: get local sigma and pi directions v_S and v_P (uS and uP unitary vectors)
+ #
+
+ uS, uP = footprint.get_local_directions_sigma_pi(vH, vIn=vIn)
+
+ #
+ # calculate the electric field in the local coordinate system
+ #
+
+ # CALL DOT (AS_VEC,AS_TEMP,A11) ! matrix element of rotation
+ # CALL DOT (AP_VEC,AS_TEMP,A12) ! matrix element of rotation
+ # CALL DOT (AS_VEC,AP_TEMP,A21) ! matrix element of rotation
+ # CALL DOT (AP_VEC,AP_TEMP,A22) ! matrix element of rotation
+ # ! ** Now recompute the ampltitude and phase of the local S- and P- component.
+ # AS_NEW = SQRT(ABS(A11**2 + A12**2 + &
+ # 2.0D0*A11*A12*COS(PHS-PHP)))
+ # AP_NEW = SQRT(ABS(A21**2 + A22**2 + &
+ # 2.0D0*A21*A22*COS(PHS-PHP)))
+ # CALL SCALAR (AS_TEMP,AS_NEW,AS_VEC) ! Local As vector
+ # CALL SCALAR (AP_TEMP,AP_NEW,AP_VEC) ! Local Ap vector
+ # PHTS = A11*SIN(PHS) + A12*SIN(PHP)
+ # PHBS = A11*COS(PHS) + A12*COS(PHP)
+ # PHTP = A21*SIN(PHS) + A22*SIN(PHP)
+ # PHBP = A21*COS(PHS) + A22*COS(PHP)
+ # CALL ATAN_2 (PHTS,PHBS,PHS) ! Phase of local As vector
+ # CALL ATAN_2 (PHTP,PHBP,PHP) ! Phase of local Ap vector
+ # ! C
+ # ! C
+ # CALL DOT (VVIN,VNOR,SIN_VAL) ! sin(graz. ang)
+ # CALL DOT (Q_OUT,VNOR,SIN_REF) ! sin(graz.ref.ang)
+
+ a11 = vector_dot(E_S, uS)
+ a12 = vector_dot(E_P, uS)
+ a21 = vector_dot(E_S, uP)
+ a22 = vector_dot(E_P, uP)
+
+ if is_verbose():
+ print(">>>> Matrix a11: ", a11[0])
+ print(">>>> Matrix a12: ", a12[0])
+ print(">>>> Matrix a21: ", a21[0])
+ print(">>>> Matrix a22: ", a22[0])
+
+ M2_S = a11 ** 2 + a12 ** 2 + 2 * a11 * a12 * numpy.cos(PhiS - PhiP)
+ M2_P = a21 ** 2 + a22 ** 2 + 2 * a21 * a22 * numpy.cos(PhiS - PhiP)
+
+ E_local_S = vector_multiply_scalar(uS, numpy.sqrt(M2_S))
+ E_local_P = vector_multiply_scalar(uP, numpy.sqrt(M2_P))
+
+
+ if is_verbose():
+ print(">>>>> E_local_S, norm: ", E_local_S[0], vector_modulus(E_local_S)[0])
+ print(">>>>> E_local_P, norm: ", E_local_P[0], vector_modulus(E_local_P)[0])
+
+ local_PhiS = numpy.arctan2((a11 * numpy.sin(PhiS) + a12 * numpy.sin(PhiP)) , (a11 * numpy.cos(PhiS) + a12 * numpy.cos(PhiP)))
+ local_PhiP = numpy.arctan2((a21 * numpy.sin(PhiS) + a22 * numpy.sin(PhiP)) , (a21 * numpy.cos(PhiS) + a22 * numpy.cos(PhiP)))
+ # END OF STEP 1
+
+ #
+ # STEP 2: now apply crystal reflectivity
+ #
+ crystal_reflectivity_S = numpy.sqrt(outgoing_complex_amplitude_photon.getIntensityS())
+ crystal_reflectivity_P = numpy.sqrt(outgoing_complex_amplitude_photon.getIntensityP())
+ crystal_phase_S = outgoing_complex_amplitude_photon.getPhaseS()
+ crystal_phase_P = outgoing_complex_amplitude_photon.getPhaseP()
+
+ if is_verbose():
+ print(">>>> crystal_reflectivity_S: ", crystal_reflectivity_S[0])
+ print(">>>> crystal_reflectivity_P: ", crystal_reflectivity_P[0])
+
+
+ E_diffracted_S = numpy.zeros_like(E_local_S)
+ E_diffracted_P = numpy.zeros_like(E_local_S)
+
+ E_diffracted_S[:, 0] = E_local_S[:, 0] * crystal_reflectivity_S
+ E_diffracted_S[:, 1] = E_local_S[:, 1] * crystal_reflectivity_S
+ E_diffracted_S[:, 2] = E_local_S[:, 2] * crystal_reflectivity_S
+
+ E_diffracted_P[:, 0] = E_local_P[:, 0] * crystal_reflectivity_P
+ E_diffracted_P[:, 1] = E_local_P[:, 1] * crystal_reflectivity_P
+ E_diffracted_P[:, 2] = E_local_P[:, 2] * crystal_reflectivity_P
+
+ Phi_diffracted_S = local_PhiS + crystal_phase_S
+ Phi_diffracted_P = local_PhiP + crystal_phase_P
+
+ #
+ # update footprint with the new values (direction and phases)
+ # (electric vector are not updated as they will change in STEP 3)
+ #
+
+ footprint.set_column(14, Phi_diffracted_S)
+ footprint.set_column(15, Phi_diffracted_P)
+
+ # print("orthogonal INCIDENT: ", footprint.efields_orthogonal(verbose=1))
+
+ vv = outgoing_complex_amplitude_photon.unitDirectionVector().components() # (3, npoints)
+ footprint.set_column(4, vv[0])
+ footprint.set_column(5, vv[1])
+ footprint.set_column(6, vv[2])
+
+ # print("orthogonal BEFORE: ", footprint.efields_orthogonal(verbose=1))
+
+ vOut = vv.T # (npoints, 3)
+
+ #
+ # STEP 3
+ #
+
+ # ! Electric vectors are changed to assure orthogonality with the new direction VVOUT
+ # ! To conserve intensity, the moduli of Es and Ep must not change
+ # ! AS_VEC and VVOUT are not orthogonal so a projection of S and P coordinates into the
+ # ! new ones do not work as it may be a component of the electric field along VVOUT
+ #
+ # CALL CROSS_M_FLAG (VVOUT,VNOR,AS_TEMP,M_FLAG) ! vector pp. to inc.pl.
+ # CALL DOT (AS_VEC,AS_VEC,AS2)
+ # CALL DOT (AP_VEC,AP_VEC,AP2)
+ #
+ # IF (M_FLAG.EQ.1) THEN
+ # IF (AS2.NE.0) THEN
+ # DO I=1,3
+ # AS_TEMP(I) = AS_VEC(I)
+ # END DO
+ # ELSE
+ # DO I=1,3
+ # AS_TEMP(I) = AP_VEC(I)
+ # END DO
+ # END IF
+ # END IF
+ #
+ # CALL NORM (AS_TEMP,AS_TEMP) ! Local unit As vector perp to vvout
+ # CALL CROSS (AS_TEMP,VVOUT,AP_TEMP)
+ # CALL NORM (AP_TEMP,AP_TEMP) ! Local unit Ap vector perp to vvout
+ #
+ # do i=1,3
+ # as_vec(i) = as_temp(i) * sqrt(as2)
+ # ap_vec(i) = ap_temp(i) * sqrt(ap2)
+ # end do
+
+ aS = vector_modulus(E_diffracted_S)
+ aP = vector_modulus(E_diffracted_P)
+
+ if is_verbose():
+ print(">>> Modulus of initial E vectors s, p", vector_modulus(E_S)[0], vector_modulus(E_P)[0])
+ print(">>> Modulus of diffracted E vectors s, p", aS[0], aP[0])
+
+ v_S = vector_cross(vOut, vH) # AS_TEMP
+ v_Smod = vector_modulus(v_S)
+ mask = (v_Smod == 0.0)
+ if mask.any():
+ print(">>>>>> FOUND A ZERO!!!!!")
+ if v_Smod.sum() > 0:
+ v_S[mask, 0] = E_diffracted_S[mask, 0]
+ v_S[mask, 1] = E_diffracted_S[mask, 1]
+ v_S[mask, 2] = E_diffracted_S[mask, 2]
+ else:
+ v_S[mask, 0] = E_diffracted_P[mask, 0]
+ v_S[mask, 1] = E_diffracted_P[mask, 1]
+ v_S[mask, 2] = E_diffracted_P[mask, 2]
+
+ v_P = vector_cross(v_S, vOut) # AP_TEMP
+
+ uS = vector_norm(v_S)
+ uP = vector_norm(v_P)
+
+ E_diffracted_S[:, 0] = uS[:, 0] * aS
+ E_diffracted_S[:, 1] = uS[:, 1] * aS
+ E_diffracted_S[:, 2] = uS[:, 2] * aS
+
+ E_diffracted_P[:, 0] = uP[:, 0] * aP
+ E_diffracted_P[:, 1] = uP[:, 1] * aP
+ E_diffracted_P[:, 2] = uP[:, 2] * aP
+
+ # END STEP 3
+
+ #
+ # replace electric fields and phases in footprint.
+ # Note that reflectivity_S affects the X components, and reflectivity_P the Z ones.
+ #
+ footprint.set_column(7, E_diffracted_S[:, 0])
+ footprint.set_column(8, E_diffracted_S[:, 1])
+ footprint.set_column(9, E_diffracted_S[:, 2])
+ footprint.set_column(16, E_diffracted_P[:, 0])
+ footprint.set_column(17, E_diffracted_P[:, 1])
+ footprint.set_column(18, E_diffracted_P[:, 2])
+
+ return footprint, normal
+
+if __name__ == "__main__":
+ c = S4Crystal(
+ name="Undefined",
+ boundary_shape=None,
+ surface_shape=None,
+ material="Si",
+ # diffraction_geometry=DiffractionGeometry.BRAGG, #?? not supposed to be in syned...
+ miller_index_h=1,
+ miller_index_k=1,
+ miller_index_l=1,
+ asymmetry_angle=0.0,
+ is_thick=0,
+ thickness=0.010,
+ f_central=0,
+ f_phot_cent=0,
+ phot_cent=8000.0,
+ file_refl="",
+ f_bragg_a=False,
+ # f_johansson=False,
+ # r_johansson=1.0,
+ # f_mosaic=False,
+ # spread_mos=0.4*numpy.pi/180,
+ f_ext=0,)
+
+ print(c.info())
+
+
+ ce = S4CrystalElement(optical_element=c)
+ print(ce.info())
+
+ ce = S4CrystalElement()
+ ce.set_optical_element(c)
+
+ print(ce.info())
From 7dac6a08e07b4b987b5687575c8cd916fe950520 Mon Sep 17 00:00:00 2001
From: Xiaojiang YU
Date: Wed, 25 Feb 2026 16:35:29 +0800
Subject: [PATCH 4/6] Update for phase shifter calculation
---
SU8-SEL.ows | 502 ----------------------------------------
SU8_12890_12940.dat | 204 ----------------
Si(800)_12890_12940.dat | 211 -----------------
3 files changed, 917 deletions(-)
delete mode 100644 SU8-SEL.ows
delete mode 100644 SU8_12890_12940.dat
delete mode 100644 Si(800)_12890_12940.dat
diff --git a/SU8-SEL.ows b/SU8-SEL.ows
deleted file mode 100644
index 5f1973b..0000000
--- a/SU8-SEL.ows
+++ /dev/null
@@ -1,502 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- SHADOW4
-
-
-
-
- gASVogcAAAAAAAB9lCiMFGFuZ3VsYXJfZGlzdHJpYnV0aW9ulEsCjBthbmd1bGFyX2Rpc3RyaWJ1
-dGlvbl9saW1pdHOUSwCMDWNvaGVyZW50X2JlYW2USwCMG2NvbmVfZXh0ZXJuYWxfaGFsZl9hcGVy
-dHVyZZRHP2BiTdLxqfyMG2NvbmVfaW50ZXJuYWxfaGFsZl9hcGVydHVyZZRHP1BiTdLxqfyMBWRl
-cHRolEsAjA5lbGxfc2VtaWF4aXNfeJRHP7mZmZmZmZqMDmVsbF9zZW1pYXhpc196lEc/yZmZmZmZ
-mowNZ2F1c3Nfc2lnbWFfeJRHPvq9Gqgh8pmMDWdhdXNzX3NpZ21hX3qURz76vRqoIfKZjBZnYXVz
-c2lhbl9jZW50cmFsX3ZhbHVllEdAyTkAAAAAAIwQZ2F1c3NpYW5fbWF4aW11bZRHAAAAAAAAAACM
-EGdhdXNzaWFuX21pbmltdW2URwAAAAAAAAAAjA5nYXVzc2lhbl9zaWdtYZRHP+GMfigkC3iMFmhv
-cml6b250YWxfZGl2X3hfbWludXOURz6gxvegte2NjBVob3Jpem9udGFsX2Rpdl94X3BsdXOURz6g
-xvegte2NjBZob3Jpem9udGFsX2xpbV94X21pbnVzlEc+5Pi1iONo8YwVaG9yaXpvbnRhbF9saW1f
-eF9wbHVzlEc+5Pi1iONo8YwSaG9yaXpvbnRhbF9zaWdtYV94lEc+qbPj0FIbCIwQaXNfYXV0b21h
-dGljX3J1bpSIjApsaW5lX2ludF8xlEcAAAAAAAAAAIwLbGluZV9pbnRfMTCURwAAAAAAAAAAjAps
-aW5lX2ludF8ylEcAAAAAAAAAAIwKbGluZV9pbnRfM5RHAAAAAAAAAACMCmxpbmVfaW50XzSURwAA
-AAAAAAAAjApsaW5lX2ludF81lEcAAAAAAAAAAIwKbGluZV9pbnRfNpRHAAAAAAAAAACMCmxpbmVf
-aW50XzeURwAAAAAAAAAAjApsaW5lX2ludF84lEcAAAAAAAAAAIwKbGluZV9pbnRfOZRHAAAAAAAA
-AACMDGxpbmVfdmFsdWVfMZRHQI9AAAAAAACMDWxpbmVfdmFsdWVfMTCURwAAAAAAAAAAjAxsaW5l
-X3ZhbHVlXzKUR0CPkAAAAAAAjAxsaW5lX3ZhbHVlXzOURwAAAAAAAAAAjAxsaW5lX3ZhbHVlXzSU
-RwAAAAAAAAAAjAxsaW5lX3ZhbHVlXzWURwAAAAAAAAAAjAxsaW5lX3ZhbHVlXzaURwAAAAAAAAAA
-jAxsaW5lX3ZhbHVlXzeURwAAAAAAAAAAjAxsaW5lX3ZhbHVlXziURwAAAAAAAAAAjAxsaW5lX3Zh
-bHVlXzmURwAAAAAAAAAAjBttYXhfbnVtYmVyX29mX3JlamVjdGVkX3JheXOUSoCWmACMD251bWJl
-cl9vZl9saW5lc5RLAIwObnVtYmVyX29mX3JheXOUSpDQAwCMEm9wdGltaXplX2ZpbGVfbmFtZZSM
-DU5PTkVTUEVDSUZJRUSUjA9vcHRpbWl6ZV9zb3VyY2WUSwCMCnBoYXNlX2RpZmaURwAAAAAAAAAA
-jBpwaG90b25fZW5lcmd5X2Rpc3RyaWJ1dGlvbpRLBIwTcG9sYXJpemF0aW9uX2RlZ3JlZZRHP/AA
-AAAAAACMC3JlY3RfaGVpZ2h0lEc/OQjlgc94eYwKcmVjdF93aWR0aJRHAAAAAAAAAACME3NhdmVk
-V2lkZ2V0R2VvbWV0cnmUjANzaXCUjA5fdW5waWNrbGVfdHlwZZSTlIwMUHlRdDUuUXRDb3JllIwK
-UUJ5dGVBcnJheZRDQgHZ0MsAAwAAAAABWQAAAUkAAAaAAAAEBAAAAVkAAAFJAAAGgAAABAQAAAAA
-AAAAAAeAAAABWQAAAUkAAAaAAAAEBJSFlIeUUpSMBHNlZWSUShOeVgCMB3NpZ21hX3mURz9QYk3S
-8an8jBFzaW5nbGVfbGluZV92YWx1ZZRHQI9AAAAAAACMDnNvdXJjZV9kZXB0aF95lEc/YGJN0vGp
-/IwMc3BhdGlhbF90eXBllEsDjA91bmlmb3JtX21heGltdW2UR0CPkAAAAAAAjA91bmlmb3JtX21p
-bmltdW2UR0CPQAAAAAAAjAV1bml0c5RLAIwRdXNlcl9kZWZpbmVkX2ZpbGWUjBNlbmVyZ3lfc3Bl
-Y3RydW0uZGF0lIwUdXNlcl9kZWZpbmVkX21heGltdW2URwAAAAAAAAAAjBR1c2VyX2RlZmluZWRf
-bWluaW11bZRHAAAAAAAAAACMHHVzZXJfZGVmaW5lZF9yZWZpbmluZ19mYWN0b3KUSwWMHXVzZXJf
-ZGVmaW5lZF9zcGVjdHJ1bV9iaW5uaW5nlE0QJ4wUdmVydGljYWxfZGl2X3pfbWludXOURz7U+LWI
-42jxjBN2ZXJ0aWNhbF9kaXZfel9wbHVzlEc+1Pi1iONo8YwUdmVydGljYWxfbGltX3pfbWludXOU
-Rz7k+LWI42jxjBN2ZXJ0aWNhbF9saW1fel9wbHVzlEc+5Pi1iONo8YwQdmVydGljYWxfc2lnbWFf
-epRHPqmz49BSGwiMCXZpZXdfdHlwZZRLAHUu
-
- gASV4wkAAAAAAAB9lCiMF2FuZ2xlX29mX21hamF4X2FuZF9wb2xllEc/8AAAAAAAAIwRYW5nbGVz
-X3Jlc3BlY3RfdG+USwCMDmFzeW1tZXRyaWNfY3V0lEsAjBdiZWxvd19vbnRvX2JyYWdnX3BsYW5l
-c5RK/////4wTY29uaWNfY29lZmZpY2llbnRfMJSMFW51bXB5LmNvcmUubXVsdGlhcnJheZSMBnNj
-YWxhcpSTlIwFbnVtcHmUjAVkdHlwZZSTlIwCZjiUiYiHlFKUKEsDjAE8lE5OTkr/////Sv////9L
-AHSUYkMIAAAAAAAAAACUhpRSlIwTY29uaWNfY29lZmZpY2llbnRfMZRoCGgOQwgAAAAAAAAAAJSG
-lFKUjBNjb25pY19jb2VmZmljaWVudF8ylGgIaA5DCAAAAAAAAAAAlIaUUpSME2NvbmljX2NvZWZm
-aWNpZW50XzOUaAhoDkMIAAAAAAAAAACUhpRSlIwTY29uaWNfY29lZmZpY2llbnRfNJRoCGgOQwgA
-AAAAAAAAAJSGlFKUjBNjb25pY19jb2VmZmljaWVudF81lGgIaA5DCAAAAAAAAAAAlIaUUpSME2Nv
-bmljX2NvZWZmaWNpZW50XzaUaAhoDkMIAAAAAAAAAACUhpRSlIwTY29uaWNfY29lZmZpY2llbnRf
-N5RoCGgOQwgAAAAAAAAAAJSGlFKUjBNjb25pY19jb2VmZmljaWVudF84lGgIaA5DCAAAAAAAAPC/
-lIaUUpSME2NvbmljX2NvZWZmaWNpZW50XzmUaAhoDkMIAAAAAAAAAACUhpRSlIwUY3J5c3RhbF9h
-dXRvX3NldHRpbmeUSwGMFGN5bGluZGVyX29yaWVudGF0aW9ulEsAjBdkaWZmcmFjdGlvbl9jYWxj
-dWxhdGlvbpRLAowLZGltX3hfbWludXOURz/wAAAAAAAAjApkaW1feF9wbHVzlEc/8AAAAAAAAIwL
-ZGltX3lfbWludXOURz/wAAAAAAAAjApkaW1feV9wbHVzlEc/8AAAAAAAAIwhZWxsaXBzZV9oeXBl
-cmJvbGFfc2VtaV9tYWpvcl9heGlzlEc/8AAAAAAAAIwhZWxsaXBzZV9oeXBlcmJvbGFfc2VtaV9t
-aW5vcl9heGlzlEc/8AAAAAAAAIwXZmlsZV9jcnlzdGFsX3BhcmFtZXRlcnOUjBdTaSg4MDApXzEy
-ODkwXzEyOTQwLmRhdJSMGGZpbGVfZGlmZnJhY3Rpb25fcHJvZmlsZZSMF2RpZmZyYWN0aW9uX3By
-b2ZpbGUuZGF0lIwcZm9jaWlfYW5kX2NvbnRpbnVhdGlvbl9wbGFuZZRLAIwOZm9jdXNfbG9jYXRp
-b26USwCMFGltYWdlX3BsYW5lX2Rpc3RhbmNllEc/dyvLX+VC5YwZaW1hZ2Vfc2lkZV9mb2NhbF9k
-aXN0YW5jZZRHAAAAAAAAAACME2luY2lkZW5jZV9hbmdsZV9kZWeUaAhoDkMIAd4CCYp/RkCUhpRS
-lIwUaW5jaWRlbmNlX2FuZ2xlX21yYWSUaAhoDkMI4chNHrCLiECUhpRSlIwhaW5jaWRlbmNlX2Fu
-Z2xlX3Jlc3BlY3RfdG9fbm9ybWFslEcAAAAAAAAAAIwmaW5jaWRlbmNlX2FuZ2xlX3Jlc3BlY3Rf
-dG9fbm9ybWFsX3R5cGWUSwCMEGlzX2F1dG9tYXRpY19ydW6UiIwLaXNfY3lsaW5kZXKUSwGMC2lz
-X2luZmluaXRllEsBjAhpc190aGlja5RLAYwZbWV0aG9kX2VmaWVsZHNfbWFuYWdlbWVudJRLAIwQ
-bW9kaWZpZWRfc3VyZmFjZZRLAIwTbXNfZGVmZWN0X2ZpbGVfbmFtZZSMCzxub25lPi5oZGY1lIwa
-b2JqZWN0X3NpZGVfZm9jYWxfZGlzdGFuY2WURwAAAAAAAAAAjAtvZV9tb3ZlbWVudJRLAIwUb2Vf
-bW92ZW1lbnRfb2Zmc2V0X3iURwAAAAAAAAAAjBRvZV9tb3ZlbWVudF9vZmZzZXRfeZRHAAAAAAAA
-AACMFG9lX21vdmVtZW50X29mZnNldF96lEcAAAAAAAAAAIwWb2VfbW92ZW1lbnRfcm90YXRpb25f
-eJRHAAAAAAAAAACMFm9lX21vdmVtZW50X3JvdGF0aW9uX3mURwAAAAAAAAAAjBZvZV9tb3ZlbWVu
-dF9yb3RhdGlvbl96lEcAAAAAAAAAAIwUb2Vfb3JpZW50YXRpb25fYW5nbGWUSwSMH29lX29yaWVu
-dGF0aW9uX2FuZ2xlX3VzZXJfdmFsdWWUR8BGgAAAAAAAjAhvZV9zaGFwZZRLAIwUcGFyYWJvbG9p
-ZF9wYXJhbWV0ZXKURz/wAAAAAAAAjA1waG90b25fZW5lcmd5lEdAyTkAAAAAAIwRcGhvdG9uX3dh
-dmVsZW5ndGiURz/wAAAAAAAAjAxwbGFuZXNfYW5nbGWURwAAAAAAAAAAjBRyZWZsZWN0aW9uX2Fu
-Z2xlX2RlZ5RoCGgOQwgB3gIJin9GQJSGlFKUjBVyZWZsZWN0aW9uX2FuZ2xlX21yYWSUaAhoDkMI
-4chNHrCLiECUhpRSlIwTc2F2ZWRXaWRnZXRHZW9tZXRyeZSMA3NpcJSMDl91bnBpY2tsZV90eXBl
-lJOUjAxQeVF0NS5RdENvcmWUjApRQnl0ZUFycmF5lENCAdnQywADAAAAAAHEAAABAgAABu0AAAPk
-AAABxQAAASgAAAbsAAAD4wAAAAAAAAAAB4AAAAHFAAABKAAABuwAAAPjlIWUh5RSlIwVc291cmNl
-X3BsYW5lX2Rpc3RhbmNllEcAAAAAAAAAAIwQc3BoZXJpY2FsX3JhZGl1c5RHP/AAAAAAAACMEXN1
-cmZhY2VfY3VydmF0dXJllEsAjBhzdXJmYWNlX3NoYXBlX3BhcmFtZXRlcnOUSwGMEnN1cmZhY2Vf
-c2hhcGVfdHlwZZRLAIwJdGhpY2tuZXNzlEc/UGJN0vGp/IwddG9yb2lkYWxfbWlycm9yX3BvbGVf
-bG9jYXRpb26USwCMEnRvcnVzX21ham9yX3JhZGl1c5RHP/AAAAAAAACMEnRvcnVzX21pbm9yX3Jh
-ZGl1c5RHP/AAAAAAAACMDHVuaXRzX2luX3VzZZRLAIwcdXNlcl9kZWZpbmVkX2FzeW1tZXRyeV9h
-bmdsZZRHAAAAAAAAAACMGHVzZXJfZGVmaW5lZF9icmFnZ19hbmdsZZRHQCxyLQ5WBBmMFHVzZXJf
-ZGVmaW5lZF9jcnlzdGFslEsgjA51c2VyX2RlZmluZWRfaJRLCIwOdXNlcl9kZWZpbmVkX2uUSwCM
-DnVzZXJfZGVmaW5lZF9slEsAjAl2aWV3X3R5cGWUSwB1Lg==
-
- gASV4wkAAAAAAAB9lCiMF2FuZ2xlX29mX21hamF4X2FuZF9wb2xllEc/8AAAAAAAAIwRYW5nbGVz
-X3Jlc3BlY3RfdG+USwCMDmFzeW1tZXRyaWNfY3V0lEsAjBdiZWxvd19vbnRvX2JyYWdnX3BsYW5l
-c5RK/////4wTY29uaWNfY29lZmZpY2llbnRfMJSMFW51bXB5LmNvcmUubXVsdGlhcnJheZSMBnNj
-YWxhcpSTlIwFbnVtcHmUjAVkdHlwZZSTlIwCZjiUiYiHlFKUKEsDjAE8lE5OTkr/////Sv////9L
-AHSUYkMIAAAAAAAAAACUhpRSlIwTY29uaWNfY29lZmZpY2llbnRfMZRoCGgOQwgAAAAAAAAAAJSG
-lFKUjBNjb25pY19jb2VmZmljaWVudF8ylGgIaA5DCAAAAAAAAAAAlIaUUpSME2NvbmljX2NvZWZm
-aWNpZW50XzOUaAhoDkMIAAAAAAAAAACUhpRSlIwTY29uaWNfY29lZmZpY2llbnRfNJRoCGgOQwgA
-AAAAAAAAAJSGlFKUjBNjb25pY19jb2VmZmljaWVudF81lGgIaA5DCAAAAAAAAAAAlIaUUpSME2Nv
-bmljX2NvZWZmaWNpZW50XzaUaAhoDkMIAAAAAAAAAACUhpRSlIwTY29uaWNfY29lZmZpY2llbnRf
-N5RoCGgOQwgAAAAAAAAAAJSGlFKUjBNjb25pY19jb2VmZmljaWVudF84lGgIaA5DCAAAAAAAAPC/
-lIaUUpSME2NvbmljX2NvZWZmaWNpZW50XzmUaAhoDkMIAAAAAAAAAACUhpRSlIwUY3J5c3RhbF9h
-dXRvX3NldHRpbmeUSwGMFGN5bGluZGVyX29yaWVudGF0aW9ulEsAjBdkaWZmcmFjdGlvbl9jYWxj
-dWxhdGlvbpRLAowLZGltX3hfbWludXOURz/wAAAAAAAAjApkaW1feF9wbHVzlEc/8AAAAAAAAIwL
-ZGltX3lfbWludXOURz/wAAAAAAAAjApkaW1feV9wbHVzlEc/8AAAAAAAAIwhZWxsaXBzZV9oeXBl
-cmJvbGFfc2VtaV9tYWpvcl9heGlzlEc/8AAAAAAAAIwhZWxsaXBzZV9oeXBlcmJvbGFfc2VtaV9t
-aW5vcl9heGlzlEc/8AAAAAAAAIwXZmlsZV9jcnlzdGFsX3BhcmFtZXRlcnOUjBdTaSg4MDApXzEy
-ODkwXzEyOTQwLmRhdJSMGGZpbGVfZGlmZnJhY3Rpb25fcHJvZmlsZZSMF2RpZmZyYWN0aW9uX3By
-b2ZpbGUuZGF0lIwcZm9jaWlfYW5kX2NvbnRpbnVhdGlvbl9wbGFuZZRLAIwOZm9jdXNfbG9jYXRp
-b26USwCMFGltYWdlX3BsYW5lX2Rpc3RhbmNllEc/dyvLX+VC5YwZaW1hZ2Vfc2lkZV9mb2NhbF9k
-aXN0YW5jZZRHAAAAAAAAAACME2luY2lkZW5jZV9hbmdsZV9kZWeUaAhoDkMIAd4CCYp/RkCUhpRS
-lIwUaW5jaWRlbmNlX2FuZ2xlX21yYWSUaAhoDkMI4chNHrCLiECUhpRSlIwhaW5jaWRlbmNlX2Fu
-Z2xlX3Jlc3BlY3RfdG9fbm9ybWFslEcAAAAAAAAAAIwmaW5jaWRlbmNlX2FuZ2xlX3Jlc3BlY3Rf
-dG9fbm9ybWFsX3R5cGWUSwCMEGlzX2F1dG9tYXRpY19ydW6UiIwLaXNfY3lsaW5kZXKUSwGMC2lz
-X2luZmluaXRllEsBjAhpc190aGlja5RLAYwZbWV0aG9kX2VmaWVsZHNfbWFuYWdlbWVudJRLAIwQ
-bW9kaWZpZWRfc3VyZmFjZZRLAIwTbXNfZGVmZWN0X2ZpbGVfbmFtZZSMCzxub25lPi5oZGY1lIwa
-b2JqZWN0X3NpZGVfZm9jYWxfZGlzdGFuY2WURwAAAAAAAAAAjAtvZV9tb3ZlbWVudJRLAIwUb2Vf
-bW92ZW1lbnRfb2Zmc2V0X3iURwAAAAAAAAAAjBRvZV9tb3ZlbWVudF9vZmZzZXRfeZRHAAAAAAAA
-AACMFG9lX21vdmVtZW50X29mZnNldF96lEcAAAAAAAAAAIwWb2VfbW92ZW1lbnRfcm90YXRpb25f
-eJRHAAAAAAAAAACMFm9lX21vdmVtZW50X3JvdGF0aW9uX3mURwAAAAAAAAAAjBZvZV9tb3ZlbWVu
-dF9yb3RhdGlvbl96lEcAAAAAAAAAAIwUb2Vfb3JpZW50YXRpb25fYW5nbGWUSwKMH29lX29yaWVu
-dGF0aW9uX2FuZ2xlX3VzZXJfdmFsdWWURwAAAAAAAAAAjAhvZV9zaGFwZZRLAIwUcGFyYWJvbG9p
-ZF9wYXJhbWV0ZXKURz/wAAAAAAAAjA1waG90b25fZW5lcmd5lEdAyTkAAAAAAIwRcGhvdG9uX3dh
-dmVsZW5ndGiURz/wAAAAAAAAjAxwbGFuZXNfYW5nbGWURwAAAAAAAAAAjBRyZWZsZWN0aW9uX2Fu
-Z2xlX2RlZ5RoCGgOQwgB3gIJin9GQJSGlFKUjBVyZWZsZWN0aW9uX2FuZ2xlX21yYWSUaAhoDkMI
-4chNHrCLiECUhpRSlIwTc2F2ZWRXaWRnZXRHZW9tZXRyeZSMA3NpcJSMDl91bnBpY2tsZV90eXBl
-lJOUjAxQeVF0NS5RdENvcmWUjApRQnl0ZUFycmF5lENCAdnQywADAAAAAAHnAAAAsgAABw4AAANt
-AAAB5wAAALIAAAcOAAADbQAAAAAAAAAAB4AAAAHnAAAAsgAABw4AAANtlIWUh5RSlIwVc291cmNl
-X3BsYW5lX2Rpc3RhbmNllEcAAAAAAAAAAIwQc3BoZXJpY2FsX3JhZGl1c5RHP/AAAAAAAACMEXN1
-cmZhY2VfY3VydmF0dXJllEsAjBhzdXJmYWNlX3NoYXBlX3BhcmFtZXRlcnOUSwGMEnN1cmZhY2Vf
-c2hhcGVfdHlwZZRLAIwJdGhpY2tuZXNzlEc/UGJN0vGp/IwddG9yb2lkYWxfbWlycm9yX3BvbGVf
-bG9jYXRpb26USwCMEnRvcnVzX21ham9yX3JhZGl1c5RHP/AAAAAAAACMEnRvcnVzX21pbm9yX3Jh
-ZGl1c5RHP/AAAAAAAACMDHVuaXRzX2luX3VzZZRLAIwcdXNlcl9kZWZpbmVkX2FzeW1tZXRyeV9h
-bmdsZZRHAAAAAAAAAACMGHVzZXJfZGVmaW5lZF9icmFnZ19hbmdsZZRHQCxyLQ5WBBmMFHVzZXJf
-ZGVmaW5lZF9jcnlzdGFslEsgjA51c2VyX2RlZmluZWRfaJRLCIwOdXNlcl9kZWZpbmVkX2uUSwCM
-DnVzZXJfZGVmaW5lZF9slEsAjAl2aWV3X3R5cGWUSwB1Lg==
-
- gASV4wkAAAAAAAB9lCiMF2FuZ2xlX29mX21hamF4X2FuZF9wb2xllEc/8AAAAAAAAIwRYW5nbGVz
-X3Jlc3BlY3RfdG+USwCMDmFzeW1tZXRyaWNfY3V0lEsAjBdiZWxvd19vbnRvX2JyYWdnX3BsYW5l
-c5RK/////4wTY29uaWNfY29lZmZpY2llbnRfMJSMFW51bXB5LmNvcmUubXVsdGlhcnJheZSMBnNj
-YWxhcpSTlIwFbnVtcHmUjAVkdHlwZZSTlIwCZjiUiYiHlFKUKEsDjAE8lE5OTkr/////Sv////9L
-AHSUYkMIAAAAAAAAAACUhpRSlIwTY29uaWNfY29lZmZpY2llbnRfMZRoCGgOQwgAAAAAAAAAAJSG
-lFKUjBNjb25pY19jb2VmZmljaWVudF8ylGgIaA5DCAAAAAAAAAAAlIaUUpSME2NvbmljX2NvZWZm
-aWNpZW50XzOUaAhoDkMIAAAAAAAAAACUhpRSlIwTY29uaWNfY29lZmZpY2llbnRfNJRoCGgOQwgA
-AAAAAAAAAJSGlFKUjBNjb25pY19jb2VmZmljaWVudF81lGgIaA5DCAAAAAAAAAAAlIaUUpSME2Nv
-bmljX2NvZWZmaWNpZW50XzaUaAhoDkMIAAAAAAAAAACUhpRSlIwTY29uaWNfY29lZmZpY2llbnRf
-N5RoCGgOQwgAAAAAAAAAAJSGlFKUjBNjb25pY19jb2VmZmljaWVudF84lGgIaA5DCAAAAAAAAPC/
-lIaUUpSME2NvbmljX2NvZWZmaWNpZW50XzmUaAhoDkMIAAAAAAAAAACUhpRSlIwUY3J5c3RhbF9h
-dXRvX3NldHRpbmeUSwGMFGN5bGluZGVyX29yaWVudGF0aW9ulEsAjBdkaWZmcmFjdGlvbl9jYWxj
-dWxhdGlvbpRLAowLZGltX3hfbWludXOURz/wAAAAAAAAjApkaW1feF9wbHVzlEc/8AAAAAAAAIwL
-ZGltX3lfbWludXOURz/wAAAAAAAAjApkaW1feV9wbHVzlEc/8AAAAAAAAIwhZWxsaXBzZV9oeXBl
-cmJvbGFfc2VtaV9tYWpvcl9heGlzlEc/8AAAAAAAAIwhZWxsaXBzZV9oeXBlcmJvbGFfc2VtaV9t
-aW5vcl9heGlzlEc/8AAAAAAAAIwXZmlsZV9jcnlzdGFsX3BhcmFtZXRlcnOUjBdTaSg4MDApXzEy
-ODkwXzEyOTQwLmRhdJSMGGZpbGVfZGlmZnJhY3Rpb25fcHJvZmlsZZSMF2RpZmZyYWN0aW9uX3By
-b2ZpbGUuZGF0lIwcZm9jaWlfYW5kX2NvbnRpbnVhdGlvbl9wbGFuZZRLAIwOZm9jdXNfbG9jYXRp
-b26USwCMFGltYWdlX3BsYW5lX2Rpc3RhbmNllEc/dyvLX+VC5YwZaW1hZ2Vfc2lkZV9mb2NhbF9k
-aXN0YW5jZZRHAAAAAAAAAACME2luY2lkZW5jZV9hbmdsZV9kZWeUaAhoDkMIAd4CCYp/RkCUhpRS
-lIwUaW5jaWRlbmNlX2FuZ2xlX21yYWSUaAhoDkMI4chNHrCLiECUhpRSlIwhaW5jaWRlbmNlX2Fu
-Z2xlX3Jlc3BlY3RfdG9fbm9ybWFslEcAAAAAAAAAAIwmaW5jaWRlbmNlX2FuZ2xlX3Jlc3BlY3Rf
-dG9fbm9ybWFsX3R5cGWUSwCMEGlzX2F1dG9tYXRpY19ydW6UiIwLaXNfY3lsaW5kZXKUSwGMC2lz
-X2luZmluaXRllEsBjAhpc190aGlja5RLAYwZbWV0aG9kX2VmaWVsZHNfbWFuYWdlbWVudJRLAIwQ
-bW9kaWZpZWRfc3VyZmFjZZRLAIwTbXNfZGVmZWN0X2ZpbGVfbmFtZZSMCzxub25lPi5oZGY1lIwa
-b2JqZWN0X3NpZGVfZm9jYWxfZGlzdGFuY2WURwAAAAAAAAAAjAtvZV9tb3ZlbWVudJRLAIwUb2Vf
-bW92ZW1lbnRfb2Zmc2V0X3iURwAAAAAAAAAAjBRvZV9tb3ZlbWVudF9vZmZzZXRfeZRHAAAAAAAA
-AACMFG9lX21vdmVtZW50X29mZnNldF96lEcAAAAAAAAAAIwWb2VfbW92ZW1lbnRfcm90YXRpb25f
-eJRHAAAAAAAAAACMFm9lX21vdmVtZW50X3JvdGF0aW9uX3mURwAAAAAAAAAAjBZvZV9tb3ZlbWVu
-dF9yb3RhdGlvbl96lEcAAAAAAAAAAIwUb2Vfb3JpZW50YXRpb25fYW5nbGWUSwKMH29lX29yaWVu
-dGF0aW9uX2FuZ2xlX3VzZXJfdmFsdWWURwAAAAAAAAAAjAhvZV9zaGFwZZRLAIwUcGFyYWJvbG9p
-ZF9wYXJhbWV0ZXKURz/wAAAAAAAAjA1waG90b25fZW5lcmd5lEdAyTkAAAAAAIwRcGhvdG9uX3dh
-dmVsZW5ndGiURz/wAAAAAAAAjAxwbGFuZXNfYW5nbGWURwAAAAAAAAAAjBRyZWZsZWN0aW9uX2Fu
-Z2xlX2RlZ5RoCGgOQwgB3gIJin9GQJSGlFKUjBVyZWZsZWN0aW9uX2FuZ2xlX21yYWSUaAhoDkMI
-4chNHrCLiECUhpRSlIwTc2F2ZWRXaWRnZXRHZW9tZXRyeZSMA3NpcJSMDl91bnBpY2tsZV90eXBl
-lJOUjAxQeVF0NS5RdENvcmWUjApRQnl0ZUFycmF5lENCAdnQywADAAAAAAHnAAAAsgAABw4AAANt
-AAAB5wAAALIAAAcOAAADbQAAAAAAAAAAB4AAAAHnAAAAsgAABw4AAANtlIWUh5RSlIwVc291cmNl
-X3BsYW5lX2Rpc3RhbmNllEcAAAAAAAAAAIwQc3BoZXJpY2FsX3JhZGl1c5RHP/AAAAAAAACMEXN1
-cmZhY2VfY3VydmF0dXJllEsAjBhzdXJmYWNlX3NoYXBlX3BhcmFtZXRlcnOUSwGMEnN1cmZhY2Vf
-c2hhcGVfdHlwZZRLAIwJdGhpY2tuZXNzlEc/UGJN0vGp/IwddG9yb2lkYWxfbWlycm9yX3BvbGVf
-bG9jYXRpb26USwCMEnRvcnVzX21ham9yX3JhZGl1c5RHP/AAAAAAAACMEnRvcnVzX21pbm9yX3Jh
-ZGl1c5RHP/AAAAAAAACMDHVuaXRzX2luX3VzZZRLAIwcdXNlcl9kZWZpbmVkX2FzeW1tZXRyeV9h
-bmdsZZRHAAAAAAAAAACMGHVzZXJfZGVmaW5lZF9icmFnZ19hbmdsZZRHQCxyLQ5WBBmMFHVzZXJf
-ZGVmaW5lZF9jcnlzdGFslEsgjA51c2VyX2RlZmluZWRfaJRLCIwOdXNlcl9kZWZpbmVkX2uUSwCM
-DnVzZXJfZGVmaW5lZF9slEsAjAl2aWV3X3R5cGWUSwB1Lg==
-
- gASV4wkAAAAAAAB9lCiMF2FuZ2xlX29mX21hamF4X2FuZF9wb2xllEc/8AAAAAAAAIwRYW5nbGVz
-X3Jlc3BlY3RfdG+USwCMDmFzeW1tZXRyaWNfY3V0lEsAjBdiZWxvd19vbnRvX2JyYWdnX3BsYW5l
-c5RK/////4wTY29uaWNfY29lZmZpY2llbnRfMJSMFW51bXB5LmNvcmUubXVsdGlhcnJheZSMBnNj
-YWxhcpSTlIwFbnVtcHmUjAVkdHlwZZSTlIwCZjiUiYiHlFKUKEsDjAE8lE5OTkr/////Sv////9L
-AHSUYkMIAAAAAAAAAACUhpRSlIwTY29uaWNfY29lZmZpY2llbnRfMZRoCGgOQwgAAAAAAAAAAJSG
-lFKUjBNjb25pY19jb2VmZmljaWVudF8ylGgIaA5DCAAAAAAAAAAAlIaUUpSME2NvbmljX2NvZWZm
-aWNpZW50XzOUaAhoDkMIAAAAAAAAAACUhpRSlIwTY29uaWNfY29lZmZpY2llbnRfNJRoCGgOQwgA
-AAAAAAAAAJSGlFKUjBNjb25pY19jb2VmZmljaWVudF81lGgIaA5DCAAAAAAAAAAAlIaUUpSME2Nv
-bmljX2NvZWZmaWNpZW50XzaUaAhoDkMIAAAAAAAAAACUhpRSlIwTY29uaWNfY29lZmZpY2llbnRf
-N5RoCGgOQwgAAAAAAAAAAJSGlFKUjBNjb25pY19jb2VmZmljaWVudF84lGgIaA5DCAAAAAAAAPC/
-lIaUUpSME2NvbmljX2NvZWZmaWNpZW50XzmUaAhoDkMIAAAAAAAAAACUhpRSlIwUY3J5c3RhbF9h
-dXRvX3NldHRpbmeUSwGMFGN5bGluZGVyX29yaWVudGF0aW9ulEsAjBdkaWZmcmFjdGlvbl9jYWxj
-dWxhdGlvbpRLAowLZGltX3hfbWludXOURz/wAAAAAAAAjApkaW1feF9wbHVzlEc/8AAAAAAAAIwL
-ZGltX3lfbWludXOURz/wAAAAAAAAjApkaW1feV9wbHVzlEc/8AAAAAAAAIwhZWxsaXBzZV9oeXBl
-cmJvbGFfc2VtaV9tYWpvcl9heGlzlEc/8AAAAAAAAIwhZWxsaXBzZV9oeXBlcmJvbGFfc2VtaV9t
-aW5vcl9heGlzlEc/8AAAAAAAAIwXZmlsZV9jcnlzdGFsX3BhcmFtZXRlcnOUjBdTaSg4MDApXzEy
-ODkwXzEyOTQwLmRhdJSMGGZpbGVfZGlmZnJhY3Rpb25fcHJvZmlsZZSMF2RpZmZyYWN0aW9uX3By
-b2ZpbGUuZGF0lIwcZm9jaWlfYW5kX2NvbnRpbnVhdGlvbl9wbGFuZZRLAIwOZm9jdXNfbG9jYXRp
-b26USwCMFGltYWdlX3BsYW5lX2Rpc3RhbmNllEdACAAAAAAAAIwZaW1hZ2Vfc2lkZV9mb2NhbF9k
-aXN0YW5jZZRHAAAAAAAAAACME2luY2lkZW5jZV9hbmdsZV9kZWeUaAhoDkMIAd4CCYp/RkCUhpRS
-lIwUaW5jaWRlbmNlX2FuZ2xlX21yYWSUaAhoDkMI4chNHrCLiECUhpRSlIwhaW5jaWRlbmNlX2Fu
-Z2xlX3Jlc3BlY3RfdG9fbm9ybWFslEcAAAAAAAAAAIwmaW5jaWRlbmNlX2FuZ2xlX3Jlc3BlY3Rf
-dG9fbm9ybWFsX3R5cGWUSwCMEGlzX2F1dG9tYXRpY19ydW6UiIwLaXNfY3lsaW5kZXKUSwGMC2lz
-X2luZmluaXRllEsBjAhpc190aGlja5RLAYwZbWV0aG9kX2VmaWVsZHNfbWFuYWdlbWVudJRLAIwQ
-bW9kaWZpZWRfc3VyZmFjZZRLAIwTbXNfZGVmZWN0X2ZpbGVfbmFtZZSMCzxub25lPi5oZGY1lIwa
-b2JqZWN0X3NpZGVfZm9jYWxfZGlzdGFuY2WURwAAAAAAAAAAjAtvZV9tb3ZlbWVudJRLAIwUb2Vf
-bW92ZW1lbnRfb2Zmc2V0X3iURwAAAAAAAAAAjBRvZV9tb3ZlbWVudF9vZmZzZXRfeZRHAAAAAAAA
-AACMFG9lX21vdmVtZW50X29mZnNldF96lEcAAAAAAAAAAIwWb2VfbW92ZW1lbnRfcm90YXRpb25f
-eJRHAAAAAAAAAACMFm9lX21vdmVtZW50X3JvdGF0aW9uX3mURwAAAAAAAAAAjBZvZV9tb3ZlbWVu
-dF9yb3RhdGlvbl96lEcAAAAAAAAAAIwUb2Vfb3JpZW50YXRpb25fYW5nbGWUSwKMH29lX29yaWVu
-dGF0aW9uX2FuZ2xlX3VzZXJfdmFsdWWURwAAAAAAAAAAjAhvZV9zaGFwZZRLAIwUcGFyYWJvbG9p
-ZF9wYXJhbWV0ZXKURz/wAAAAAAAAjA1waG90b25fZW5lcmd5lEdAyTkAAAAAAIwRcGhvdG9uX3dh
-dmVsZW5ndGiURz/wAAAAAAAAjAxwbGFuZXNfYW5nbGWURwAAAAAAAAAAjBRyZWZsZWN0aW9uX2Fu
-Z2xlX2RlZ5RoCGgOQwgB3gIJin9GQJSGlFKUjBVyZWZsZWN0aW9uX2FuZ2xlX21yYWSUaAhoDkMI
-4chNHrCLiECUhpRSlIwTc2F2ZWRXaWRnZXRHZW9tZXRyeZSMA3NpcJSMDl91bnBpY2tsZV90eXBl
-lJOUjAxQeVF0NS5RdENvcmWUjApRQnl0ZUFycmF5lENCAdnQywADAAAAAAHnAAAAsgAABw4AAANt
-AAAB5wAAALIAAAcOAAADbQAAAAAAAAAAB4AAAAHnAAAAsgAABw4AAANtlIWUh5RSlIwVc291cmNl
-X3BsYW5lX2Rpc3RhbmNllEcAAAAAAAAAAIwQc3BoZXJpY2FsX3JhZGl1c5RHP/AAAAAAAACMEXN1
-cmZhY2VfY3VydmF0dXJllEsAjBhzdXJmYWNlX3NoYXBlX3BhcmFtZXRlcnOUSwGMEnN1cmZhY2Vf
-c2hhcGVfdHlwZZRLAIwJdGhpY2tuZXNzlEc/UGJN0vGp/IwddG9yb2lkYWxfbWlycm9yX3BvbGVf
-bG9jYXRpb26USwCMEnRvcnVzX21ham9yX3JhZGl1c5RHP/AAAAAAAACMEnRvcnVzX21pbm9yX3Jh
-ZGl1c5RHP/AAAAAAAACMDHVuaXRzX2luX3VzZZRLAIwcdXNlcl9kZWZpbmVkX2FzeW1tZXRyeV9h
-bmdsZZRHAAAAAAAAAACMGHVzZXJfZGVmaW5lZF9icmFnZ19hbmdsZZRHQCxyLQ5WBBmMFHVzZXJf
-ZGVmaW5lZF9jcnlzdGFslEsgjA51c2VyX2RlZmluZWRfaJRLCIwOdXNlcl9kZWZpbmVkX2uUSwCM
-DnVzZXJfZGVmaW5lZF9slEsAjAl2aWV3X3R5cGWUSwB1Lg==
-
- gASV4wkAAAAAAAB9lCiMF2FuZ2xlX29mX21hamF4X2FuZF9wb2xllEc/8AAAAAAAAIwRYW5nbGVz
-X3Jlc3BlY3RfdG+USwCMDmFzeW1tZXRyaWNfY3V0lEsAjBdiZWxvd19vbnRvX2JyYWdnX3BsYW5l
-c5RK/////4wTY29uaWNfY29lZmZpY2llbnRfMJSMFW51bXB5LmNvcmUubXVsdGlhcnJheZSMBnNj
-YWxhcpSTlIwFbnVtcHmUjAVkdHlwZZSTlIwCZjiUiYiHlFKUKEsDjAE8lE5OTkr/////Sv////9L
-AHSUYkMIAAAAAAAAAACUhpRSlIwTY29uaWNfY29lZmZpY2llbnRfMZRoCGgOQwgAAAAAAAAAAJSG
-lFKUjBNjb25pY19jb2VmZmljaWVudF8ylGgIaA5DCAAAAAAAAAAAlIaUUpSME2NvbmljX2NvZWZm
-aWNpZW50XzOUaAhoDkMIAAAAAAAAAACUhpRSlIwTY29uaWNfY29lZmZpY2llbnRfNJRoCGgOQwgA
-AAAAAAAAAJSGlFKUjBNjb25pY19jb2VmZmljaWVudF81lGgIaA5DCAAAAAAAAAAAlIaUUpSME2Nv
-bmljX2NvZWZmaWNpZW50XzaUaAhoDkMIAAAAAAAAAACUhpRSlIwTY29uaWNfY29lZmZpY2llbnRf
-N5RoCGgOQwgAAAAAAAAAAJSGlFKUjBNjb25pY19jb2VmZmljaWVudF84lGgIaA5DCAAAAAAAAPC/
-lIaUUpSME2NvbmljX2NvZWZmaWNpZW50XzmUaAhoDkMIAAAAAAAAAACUhpRSlIwUY3J5c3RhbF9h
-dXRvX3NldHRpbmeUSwGMFGN5bGluZGVyX29yaWVudGF0aW9ulEsAjBdkaWZmcmFjdGlvbl9jYWxj
-dWxhdGlvbpRLAowLZGltX3hfbWludXOURz/wAAAAAAAAjApkaW1feF9wbHVzlEc/8AAAAAAAAIwL
-ZGltX3lfbWludXOURz/wAAAAAAAAjApkaW1feV9wbHVzlEc/8AAAAAAAAIwhZWxsaXBzZV9oeXBl
-cmJvbGFfc2VtaV9tYWpvcl9heGlzlEc/8AAAAAAAAIwhZWxsaXBzZV9oeXBlcmJvbGFfc2VtaV9t
-aW5vcl9heGlzlEc/8AAAAAAAAIwXZmlsZV9jcnlzdGFsX3BhcmFtZXRlcnOUjBdTaSg4MDApXzEy
-ODkwXzEyOTQwLmRhdJSMGGZpbGVfZGlmZnJhY3Rpb25fcHJvZmlsZZSMF2RpZmZyYWN0aW9uX3By
-b2ZpbGUuZGF0lIwcZm9jaWlfYW5kX2NvbnRpbnVhdGlvbl9wbGFuZZRLAIwOZm9jdXNfbG9jYXRp
-b26USwCMFGltYWdlX3BsYW5lX2Rpc3RhbmNllEc/dyvLX+VC5YwZaW1hZ2Vfc2lkZV9mb2NhbF9k
-aXN0YW5jZZRHAAAAAAAAAACME2luY2lkZW5jZV9hbmdsZV9kZWeUaAhoDkMIAd4CCYp/RkCUhpRS
-lIwUaW5jaWRlbmNlX2FuZ2xlX21yYWSUaAhoDkMI4chNHrCLiECUhpRSlIwhaW5jaWRlbmNlX2Fu
-Z2xlX3Jlc3BlY3RfdG9fbm9ybWFslEcAAAAAAAAAAIwmaW5jaWRlbmNlX2FuZ2xlX3Jlc3BlY3Rf
-dG9fbm9ybWFsX3R5cGWUSwCMEGlzX2F1dG9tYXRpY19ydW6UiIwLaXNfY3lsaW5kZXKUSwGMC2lz
-X2luZmluaXRllEsBjAhpc190aGlja5RLAYwZbWV0aG9kX2VmaWVsZHNfbWFuYWdlbWVudJRLAIwQ
-bW9kaWZpZWRfc3VyZmFjZZRLAIwTbXNfZGVmZWN0X2ZpbGVfbmFtZZSMCzxub25lPi5oZGY1lIwa
-b2JqZWN0X3NpZGVfZm9jYWxfZGlzdGFuY2WURwAAAAAAAAAAjAtvZV9tb3ZlbWVudJRLAIwUb2Vf
-bW92ZW1lbnRfb2Zmc2V0X3iURwAAAAAAAAAAjBRvZV9tb3ZlbWVudF9vZmZzZXRfeZRHAAAAAAAA
-AACMFG9lX21vdmVtZW50X29mZnNldF96lEcAAAAAAAAAAIwWb2VfbW92ZW1lbnRfcm90YXRpb25f
-eJRHAAAAAAAAAACMFm9lX21vdmVtZW50X3JvdGF0aW9uX3mURwAAAAAAAAAAjBZvZV9tb3ZlbWVu
-dF9yb3RhdGlvbl96lEcAAAAAAAAAAIwUb2Vfb3JpZW50YXRpb25fYW5nbGWUSwGMH29lX29yaWVu
-dGF0aW9uX2FuZ2xlX3VzZXJfdmFsdWWURwAAAAAAAAAAjAhvZV9zaGFwZZRLAIwUcGFyYWJvbG9p
-ZF9wYXJhbWV0ZXKURz/wAAAAAAAAjA1waG90b25fZW5lcmd5lEdAyTkAAAAAAIwRcGhvdG9uX3dh
-dmVsZW5ndGiURz/wAAAAAAAAjAxwbGFuZXNfYW5nbGWURwAAAAAAAAAAjBRyZWZsZWN0aW9uX2Fu
-Z2xlX2RlZ5RoCGgOQwgB3gIJin9GQJSGlFKUjBVyZWZsZWN0aW9uX2FuZ2xlX21yYWSUaAhoDkMI
-4chNHrCLiECUhpRSlIwTc2F2ZWRXaWRnZXRHZW9tZXRyeZSMA3NpcJSMDl91bnBpY2tsZV90eXBl
-lJOUjAxQeVF0NS5RdENvcmWUjApRQnl0ZUFycmF5lENCAdnQywADAAAAAAI+AAAA9AAAB2UAAAOv
-AAACPgAAAPQAAAdlAAADrwAAAAAAAAAAB4AAAAI+AAAA9AAAB2UAAAOvlIWUh5RSlIwVc291cmNl
-X3BsYW5lX2Rpc3RhbmNllEcAAAAAAAAAAIwQc3BoZXJpY2FsX3JhZGl1c5RHP/AAAAAAAACMEXN1
-cmZhY2VfY3VydmF0dXJllEsAjBhzdXJmYWNlX3NoYXBlX3BhcmFtZXRlcnOUSwGMEnN1cmZhY2Vf
-c2hhcGVfdHlwZZRLAIwJdGhpY2tuZXNzlEc/UGJN0vGp/IwddG9yb2lkYWxfbWlycm9yX3BvbGVf
-bG9jYXRpb26USwCMEnRvcnVzX21ham9yX3JhZGl1c5RHP/AAAAAAAACMEnRvcnVzX21pbm9yX3Jh
-ZGl1c5RHP/AAAAAAAACMDHVuaXRzX2luX3VzZZRLAIwcdXNlcl9kZWZpbmVkX2FzeW1tZXRyeV9h
-bmdsZZRHAAAAAAAAAACMGHVzZXJfZGVmaW5lZF9icmFnZ19hbmdsZZRHQCxyLQ5WBBmMFHVzZXJf
-ZGVmaW5lZF9jcnlzdGFslEsgjA51c2VyX2RlZmluZWRfaJRLCIwOdXNlcl9kZWZpbmVkX2uUSwCM
-DnVzZXJfZGVmaW5lZF9slEsAjAl2aWV3X3R5cGWUSwB1Lg==
-
- gASV4wkAAAAAAAB9lCiMF2FuZ2xlX29mX21hamF4X2FuZF9wb2xllEc/8AAAAAAAAIwRYW5nbGVz
-X3Jlc3BlY3RfdG+USwCMDmFzeW1tZXRyaWNfY3V0lEsAjBdiZWxvd19vbnRvX2JyYWdnX3BsYW5l
-c5RK/////4wTY29uaWNfY29lZmZpY2llbnRfMJSMFW51bXB5LmNvcmUubXVsdGlhcnJheZSMBnNj
-YWxhcpSTlIwFbnVtcHmUjAVkdHlwZZSTlIwCZjiUiYiHlFKUKEsDjAE8lE5OTkr/////Sv////9L
-AHSUYkMIAAAAAAAAAACUhpRSlIwTY29uaWNfY29lZmZpY2llbnRfMZRoCGgOQwgAAAAAAAAAAJSG
-lFKUjBNjb25pY19jb2VmZmljaWVudF8ylGgIaA5DCAAAAAAAAAAAlIaUUpSME2NvbmljX2NvZWZm
-aWNpZW50XzOUaAhoDkMIAAAAAAAAAACUhpRSlIwTY29uaWNfY29lZmZpY2llbnRfNJRoCGgOQwgA
-AAAAAAAAAJSGlFKUjBNjb25pY19jb2VmZmljaWVudF81lGgIaA5DCAAAAAAAAAAAlIaUUpSME2Nv
-bmljX2NvZWZmaWNpZW50XzaUaAhoDkMIAAAAAAAAAACUhpRSlIwTY29uaWNfY29lZmZpY2llbnRf
-N5RoCGgOQwgAAAAAAAAAAJSGlFKUjBNjb25pY19jb2VmZmljaWVudF84lGgIaA5DCAAAAAAAAPC/
-lIaUUpSME2NvbmljX2NvZWZmaWNpZW50XzmUaAhoDkMIAAAAAAAAAACUhpRSlIwUY3J5c3RhbF9h
-dXRvX3NldHRpbmeUSwGMFGN5bGluZGVyX29yaWVudGF0aW9ulEsAjBdkaWZmcmFjdGlvbl9jYWxj
-dWxhdGlvbpRLAowLZGltX3hfbWludXOURz/wAAAAAAAAjApkaW1feF9wbHVzlEc/8AAAAAAAAIwL
-ZGltX3lfbWludXOURz/wAAAAAAAAjApkaW1feV9wbHVzlEc/8AAAAAAAAIwhZWxsaXBzZV9oeXBl
-cmJvbGFfc2VtaV9tYWpvcl9heGlzlEc/8AAAAAAAAIwhZWxsaXBzZV9oeXBlcmJvbGFfc2VtaV9t
-aW5vcl9heGlzlEc/8AAAAAAAAIwXZmlsZV9jcnlzdGFsX3BhcmFtZXRlcnOUjBdTaSg4MDApXzEy
-ODkwXzEyOTQwLmRhdJSMGGZpbGVfZGlmZnJhY3Rpb25fcHJvZmlsZZSMF2RpZmZyYWN0aW9uX3By
-b2ZpbGUuZGF0lIwcZm9jaWlfYW5kX2NvbnRpbnVhdGlvbl9wbGFuZZRLAIwOZm9jdXNfbG9jYXRp
-b26USwCMFGltYWdlX3BsYW5lX2Rpc3RhbmNllEc/dyvLX+VC5YwZaW1hZ2Vfc2lkZV9mb2NhbF9k
-aXN0YW5jZZRHAAAAAAAAAACME2luY2lkZW5jZV9hbmdsZV9kZWeUaAhoDkMIAd4CCYp/RkCUhpRS
-lIwUaW5jaWRlbmNlX2FuZ2xlX21yYWSUaAhoDkMI4chNHrCLiECUhpRSlIwhaW5jaWRlbmNlX2Fu
-Z2xlX3Jlc3BlY3RfdG9fbm9ybWFslEcAAAAAAAAAAIwmaW5jaWRlbmNlX2FuZ2xlX3Jlc3BlY3Rf
-dG9fbm9ybWFsX3R5cGWUSwCMEGlzX2F1dG9tYXRpY19ydW6UiIwLaXNfY3lsaW5kZXKUSwGMC2lz
-X2luZmluaXRllEsBjAhpc190aGlja5RLAYwZbWV0aG9kX2VmaWVsZHNfbWFuYWdlbWVudJRLAIwQ
-bW9kaWZpZWRfc3VyZmFjZZRLAIwTbXNfZGVmZWN0X2ZpbGVfbmFtZZSMCzxub25lPi5oZGY1lIwa
-b2JqZWN0X3NpZGVfZm9jYWxfZGlzdGFuY2WURwAAAAAAAAAAjAtvZV9tb3ZlbWVudJRLAIwUb2Vf
-bW92ZW1lbnRfb2Zmc2V0X3iURwAAAAAAAAAAjBRvZV9tb3ZlbWVudF9vZmZzZXRfeZRHAAAAAAAA
-AACMFG9lX21vdmVtZW50X29mZnNldF96lEcAAAAAAAAAAIwWb2VfbW92ZW1lbnRfcm90YXRpb25f
-eJRHAAAAAAAAAACMFm9lX21vdmVtZW50X3JvdGF0aW9uX3mURwAAAAAAAAAAjBZvZV9tb3ZlbWVu
-dF9yb3RhdGlvbl96lEcAAAAAAAAAAIwUb2Vfb3JpZW50YXRpb25fYW5nbGWUSwKMH29lX29yaWVu
-dGF0aW9uX2FuZ2xlX3VzZXJfdmFsdWWURwAAAAAAAAAAjAhvZV9zaGFwZZRLAIwUcGFyYWJvbG9p
-ZF9wYXJhbWV0ZXKURz/wAAAAAAAAjA1waG90b25fZW5lcmd5lEdAyTkAAAAAAIwRcGhvdG9uX3dh
-dmVsZW5ndGiURz/wAAAAAAAAjAxwbGFuZXNfYW5nbGWURwAAAAAAAAAAjBRyZWZsZWN0aW9uX2Fu
-Z2xlX2RlZ5RoCGgOQwgB3gIJin9GQJSGlFKUjBVyZWZsZWN0aW9uX2FuZ2xlX21yYWSUaAhoDkMI
-4chNHrCLiECUhpRSlIwTc2F2ZWRXaWRnZXRHZW9tZXRyeZSMA3NpcJSMDl91bnBpY2tsZV90eXBl
-lJOUjAxQeVF0NS5RdENvcmWUjApRQnl0ZUFycmF5lENCAdnQywADAAAAAAHnAAAAsgAABw4AAANt
-AAAB5wAAALIAAAcOAAADbQAAAAAAAAAAB4AAAAHnAAAAsgAABw4AAANtlIWUh5RSlIwVc291cmNl
-X3BsYW5lX2Rpc3RhbmNllEcAAAAAAAAAAIwQc3BoZXJpY2FsX3JhZGl1c5RHP/AAAAAAAACMEXN1
-cmZhY2VfY3VydmF0dXJllEsAjBhzdXJmYWNlX3NoYXBlX3BhcmFtZXRlcnOUSwGMEnN1cmZhY2Vf
-c2hhcGVfdHlwZZRLAIwJdGhpY2tuZXNzlEc/UGJN0vGp/IwddG9yb2lkYWxfbWlycm9yX3BvbGVf
-bG9jYXRpb26USwCMEnRvcnVzX21ham9yX3JhZGl1c5RHP/AAAAAAAACMEnRvcnVzX21pbm9yX3Jh
-ZGl1c5RHP/AAAAAAAACMDHVuaXRzX2luX3VzZZRLAIwcdXNlcl9kZWZpbmVkX2FzeW1tZXRyeV9h
-bmdsZZRHAAAAAAAAAACMGHVzZXJfZGVmaW5lZF9icmFnZ19hbmdsZZRHQCxyLQ5WBBmMFHVzZXJf
-ZGVmaW5lZF9jcnlzdGFslEsgjA51c2VyX2RlZmluZWRfaJRLCIwOdXNlcl9kZWZpbmVkX2uUSwCM
-DnVzZXJfZGVmaW5lZF9slEsAjAl2aWV3X3R5cGWUSwB1Lg==
-
- gASV4wkAAAAAAAB9lCiMF2FuZ2xlX29mX21hamF4X2FuZF9wb2xllEc/8AAAAAAAAIwRYW5nbGVz
-X3Jlc3BlY3RfdG+USwCMDmFzeW1tZXRyaWNfY3V0lEsAjBdiZWxvd19vbnRvX2JyYWdnX3BsYW5l
-c5RK/////4wTY29uaWNfY29lZmZpY2llbnRfMJSMFW51bXB5LmNvcmUubXVsdGlhcnJheZSMBnNj
-YWxhcpSTlIwFbnVtcHmUjAVkdHlwZZSTlIwCZjiUiYiHlFKUKEsDjAE8lE5OTkr/////Sv////9L
-AHSUYkMIAAAAAAAAAACUhpRSlIwTY29uaWNfY29lZmZpY2llbnRfMZRoCGgOQwgAAAAAAAAAAJSG
-lFKUjBNjb25pY19jb2VmZmljaWVudF8ylGgIaA5DCAAAAAAAAAAAlIaUUpSME2NvbmljX2NvZWZm
-aWNpZW50XzOUaAhoDkMIAAAAAAAAAACUhpRSlIwTY29uaWNfY29lZmZpY2llbnRfNJRoCGgOQwgA
-AAAAAAAAAJSGlFKUjBNjb25pY19jb2VmZmljaWVudF81lGgIaA5DCAAAAAAAAAAAlIaUUpSME2Nv
-bmljX2NvZWZmaWNpZW50XzaUaAhoDkMIAAAAAAAAAACUhpRSlIwTY29uaWNfY29lZmZpY2llbnRf
-N5RoCGgOQwgAAAAAAAAAAJSGlFKUjBNjb25pY19jb2VmZmljaWVudF84lGgIaA5DCAAAAAAAAPC/
-lIaUUpSME2NvbmljX2NvZWZmaWNpZW50XzmUaAhoDkMIAAAAAAAAAACUhpRSlIwUY3J5c3RhbF9h
-dXRvX3NldHRpbmeUSwGMFGN5bGluZGVyX29yaWVudGF0aW9ulEsAjBdkaWZmcmFjdGlvbl9jYWxj
-dWxhdGlvbpRLAowLZGltX3hfbWludXOURz/wAAAAAAAAjApkaW1feF9wbHVzlEc/8AAAAAAAAIwL
-ZGltX3lfbWludXOURz/wAAAAAAAAjApkaW1feV9wbHVzlEc/8AAAAAAAAIwhZWxsaXBzZV9oeXBl
-cmJvbGFfc2VtaV9tYWpvcl9heGlzlEc/8AAAAAAAAIwhZWxsaXBzZV9oeXBlcmJvbGFfc2VtaV9t
-aW5vcl9heGlzlEc/8AAAAAAAAIwXZmlsZV9jcnlzdGFsX3BhcmFtZXRlcnOUjBdTaSg4MDApXzEy
-ODkwXzEyOTQwLmRhdJSMGGZpbGVfZGlmZnJhY3Rpb25fcHJvZmlsZZSMF2RpZmZyYWN0aW9uX3By
-b2ZpbGUuZGF0lIwcZm9jaWlfYW5kX2NvbnRpbnVhdGlvbl9wbGFuZZRLAIwOZm9jdXNfbG9jYXRp
-b26USwCMFGltYWdlX3BsYW5lX2Rpc3RhbmNllEc/dyvLX+VC5YwZaW1hZ2Vfc2lkZV9mb2NhbF9k
-aXN0YW5jZZRHAAAAAAAAAACME2luY2lkZW5jZV9hbmdsZV9kZWeUaAhoDkMIAd4CCYp/RkCUhpRS
-lIwUaW5jaWRlbmNlX2FuZ2xlX21yYWSUaAhoDkMI4chNHrCLiECUhpRSlIwhaW5jaWRlbmNlX2Fu
-Z2xlX3Jlc3BlY3RfdG9fbm9ybWFslEcAAAAAAAAAAIwmaW5jaWRlbmNlX2FuZ2xlX3Jlc3BlY3Rf
-dG9fbm9ybWFsX3R5cGWUSwCMEGlzX2F1dG9tYXRpY19ydW6UiIwLaXNfY3lsaW5kZXKUSwGMC2lz
-X2luZmluaXRllEsBjAhpc190aGlja5RLAYwZbWV0aG9kX2VmaWVsZHNfbWFuYWdlbWVudJRLAIwQ
-bW9kaWZpZWRfc3VyZmFjZZRLAIwTbXNfZGVmZWN0X2ZpbGVfbmFtZZSMCzxub25lPi5oZGY1lIwa
-b2JqZWN0X3NpZGVfZm9jYWxfZGlzdGFuY2WURwAAAAAAAAAAjAtvZV9tb3ZlbWVudJRLAIwUb2Vf
-bW92ZW1lbnRfb2Zmc2V0X3iURwAAAAAAAAAAjBRvZV9tb3ZlbWVudF9vZmZzZXRfeZRHAAAAAAAA
-AACMFG9lX21vdmVtZW50X29mZnNldF96lEcAAAAAAAAAAIwWb2VfbW92ZW1lbnRfcm90YXRpb25f
-eJRHAAAAAAAAAACMFm9lX21vdmVtZW50X3JvdGF0aW9uX3mURwAAAAAAAAAAjBZvZV9tb3ZlbWVu
-dF9yb3RhdGlvbl96lEcAAAAAAAAAAIwUb2Vfb3JpZW50YXRpb25fYW5nbGWUSwKMH29lX29yaWVu
-dGF0aW9uX2FuZ2xlX3VzZXJfdmFsdWWURwAAAAAAAAAAjAhvZV9zaGFwZZRLAIwUcGFyYWJvbG9p
-ZF9wYXJhbWV0ZXKURz/wAAAAAAAAjA1waG90b25fZW5lcmd5lEdAyTkAAAAAAIwRcGhvdG9uX3dh
-dmVsZW5ndGiURz/wAAAAAAAAjAxwbGFuZXNfYW5nbGWURwAAAAAAAAAAjBRyZWZsZWN0aW9uX2Fu
-Z2xlX2RlZ5RoCGgOQwgB3gIJin9GQJSGlFKUjBVyZWZsZWN0aW9uX2FuZ2xlX21yYWSUaAhoDkMI
-4chNHrCLiECUhpRSlIwTc2F2ZWRXaWRnZXRHZW9tZXRyeZSMA3NpcJSMDl91bnBpY2tsZV90eXBl
-lJOUjAxQeVF0NS5RdENvcmWUjApRQnl0ZUFycmF5lENCAdnQywADAAAAAAHnAAAAsgAABw4AAANt
-AAAB5wAAALIAAAcOAAADbQAAAAAAAAAAB4AAAAHnAAAAsgAABw4AAANtlIWUh5RSlIwVc291cmNl
-X3BsYW5lX2Rpc3RhbmNllEcAAAAAAAAAAIwQc3BoZXJpY2FsX3JhZGl1c5RHP/AAAAAAAACMEXN1
-cmZhY2VfY3VydmF0dXJllEsAjBhzdXJmYWNlX3NoYXBlX3BhcmFtZXRlcnOUSwGMEnN1cmZhY2Vf
-c2hhcGVfdHlwZZRLAIwJdGhpY2tuZXNzlEc/UGJN0vGp/IwddG9yb2lkYWxfbWlycm9yX3BvbGVf
-bG9jYXRpb26USwCMEnRvcnVzX21ham9yX3JhZGl1c5RHP/AAAAAAAACMEnRvcnVzX21pbm9yX3Jh
-ZGl1c5RHP/AAAAAAAACMDHVuaXRzX2luX3VzZZRLAIwcdXNlcl9kZWZpbmVkX2FzeW1tZXRyeV9h
-bmdsZZRHAAAAAAAAAACMGHVzZXJfZGVmaW5lZF9icmFnZ19hbmdsZZRHQCxyLQ5WBBmMFHVzZXJf
-ZGVmaW5lZF9jcnlzdGFslEsgjA51c2VyX2RlZmluZWRfaJRLCIwOdXNlcl9kZWZpbmVkX2uUSwCM
-DnVzZXJfZGVmaW5lZF9slEsAjAl2aWV3X3R5cGWUSwB1Lg==
-
- gASV4wkAAAAAAAB9lCiMF2FuZ2xlX29mX21hamF4X2FuZF9wb2xllEc/8AAAAAAAAIwRYW5nbGVz
-X3Jlc3BlY3RfdG+USwCMDmFzeW1tZXRyaWNfY3V0lEsAjBdiZWxvd19vbnRvX2JyYWdnX3BsYW5l
-c5RK/////4wTY29uaWNfY29lZmZpY2llbnRfMJSMFW51bXB5LmNvcmUubXVsdGlhcnJheZSMBnNj
-YWxhcpSTlIwFbnVtcHmUjAVkdHlwZZSTlIwCZjiUiYiHlFKUKEsDjAE8lE5OTkr/////Sv////9L
-AHSUYkMIAAAAAAAAAACUhpRSlIwTY29uaWNfY29lZmZpY2llbnRfMZRoCGgOQwgAAAAAAAAAAJSG
-lFKUjBNjb25pY19jb2VmZmljaWVudF8ylGgIaA5DCAAAAAAAAAAAlIaUUpSME2NvbmljX2NvZWZm
-aWNpZW50XzOUaAhoDkMIAAAAAAAAAACUhpRSlIwTY29uaWNfY29lZmZpY2llbnRfNJRoCGgOQwgA
-AAAAAAAAAJSGlFKUjBNjb25pY19jb2VmZmljaWVudF81lGgIaA5DCAAAAAAAAAAAlIaUUpSME2Nv
-bmljX2NvZWZmaWNpZW50XzaUaAhoDkMIAAAAAAAAAACUhpRSlIwTY29uaWNfY29lZmZpY2llbnRf
-N5RoCGgOQwgAAAAAAAAAAJSGlFKUjBNjb25pY19jb2VmZmljaWVudF84lGgIaA5DCAAAAAAAAPC/
-lIaUUpSME2NvbmljX2NvZWZmaWNpZW50XzmUaAhoDkMIAAAAAAAAAACUhpRSlIwUY3J5c3RhbF9h
-dXRvX3NldHRpbmeUSwGMFGN5bGluZGVyX29yaWVudGF0aW9ulEsAjBdkaWZmcmFjdGlvbl9jYWxj
-dWxhdGlvbpRLAowLZGltX3hfbWludXOURz/wAAAAAAAAjApkaW1feF9wbHVzlEc/8AAAAAAAAIwL
-ZGltX3lfbWludXOURz/wAAAAAAAAjApkaW1feV9wbHVzlEc/8AAAAAAAAIwhZWxsaXBzZV9oeXBl
-cmJvbGFfc2VtaV9tYWpvcl9heGlzlEc/8AAAAAAAAIwhZWxsaXBzZV9oeXBlcmJvbGFfc2VtaV9t
-aW5vcl9heGlzlEc/8AAAAAAAAIwXZmlsZV9jcnlzdGFsX3BhcmFtZXRlcnOUjBdTaSg4MDApXzEy
-ODkwXzEyOTQwLmRhdJSMGGZpbGVfZGlmZnJhY3Rpb25fcHJvZmlsZZSMF2RpZmZyYWN0aW9uX3By
-b2ZpbGUuZGF0lIwcZm9jaWlfYW5kX2NvbnRpbnVhdGlvbl9wbGFuZZRLAIwOZm9jdXNfbG9jYXRp
-b26USwCMFGltYWdlX3BsYW5lX2Rpc3RhbmNllEdACAAAAAAAAIwZaW1hZ2Vfc2lkZV9mb2NhbF9k
-aXN0YW5jZZRHAAAAAAAAAACME2luY2lkZW5jZV9hbmdsZV9kZWeUaAhoDkMIAd4CCYp/RkCUhpRS
-lIwUaW5jaWRlbmNlX2FuZ2xlX21yYWSUaAhoDkMI4chNHrCLiECUhpRSlIwhaW5jaWRlbmNlX2Fu
-Z2xlX3Jlc3BlY3RfdG9fbm9ybWFslEcAAAAAAAAAAIwmaW5jaWRlbmNlX2FuZ2xlX3Jlc3BlY3Rf
-dG9fbm9ybWFsX3R5cGWUSwCMEGlzX2F1dG9tYXRpY19ydW6UiIwLaXNfY3lsaW5kZXKUSwGMC2lz
-X2luZmluaXRllEsBjAhpc190aGlja5RLAYwZbWV0aG9kX2VmaWVsZHNfbWFuYWdlbWVudJRLAIwQ
-bW9kaWZpZWRfc3VyZmFjZZRLAIwTbXNfZGVmZWN0X2ZpbGVfbmFtZZSMCzxub25lPi5oZGY1lIwa
-b2JqZWN0X3NpZGVfZm9jYWxfZGlzdGFuY2WURwAAAAAAAAAAjAtvZV9tb3ZlbWVudJRLAIwUb2Vf
-bW92ZW1lbnRfb2Zmc2V0X3iURwAAAAAAAAAAjBRvZV9tb3ZlbWVudF9vZmZzZXRfeZRHAAAAAAAA
-AACMFG9lX21vdmVtZW50X29mZnNldF96lEcAAAAAAAAAAIwWb2VfbW92ZW1lbnRfcm90YXRpb25f
-eJRHAAAAAAAAAACMFm9lX21vdmVtZW50X3JvdGF0aW9uX3mURwAAAAAAAAAAjBZvZV9tb3ZlbWVu
-dF9yb3RhdGlvbl96lEcAAAAAAAAAAIwUb2Vfb3JpZW50YXRpb25fYW5nbGWUSwKMH29lX29yaWVu
-dGF0aW9uX2FuZ2xlX3VzZXJfdmFsdWWURwAAAAAAAAAAjAhvZV9zaGFwZZRLAIwUcGFyYWJvbG9p
-ZF9wYXJhbWV0ZXKURz/wAAAAAAAAjA1waG90b25fZW5lcmd5lEdAyTkAAAAAAIwRcGhvdG9uX3dh
-dmVsZW5ndGiURz/wAAAAAAAAjAxwbGFuZXNfYW5nbGWURwAAAAAAAAAAjBRyZWZsZWN0aW9uX2Fu
-Z2xlX2RlZ5RoCGgOQwgB3gIJin9GQJSGlFKUjBVyZWZsZWN0aW9uX2FuZ2xlX21yYWSUaAhoDkMI
-4chNHrCLiECUhpRSlIwTc2F2ZWRXaWRnZXRHZW9tZXRyeZSMA3NpcJSMDl91bnBpY2tsZV90eXBl
-lJOUjAxQeVF0NS5RdENvcmWUjApRQnl0ZUFycmF5lENCAdnQywADAAAAAAHmAAAAjAAABw8AAANu
-AAAB5wAAALIAAAcOAAADbQAAAAAAAAAAB4AAAAHnAAAAsgAABw4AAANtlIWUh5RSlIwVc291cmNl
-X3BsYW5lX2Rpc3RhbmNllEcAAAAAAAAAAIwQc3BoZXJpY2FsX3JhZGl1c5RHP/AAAAAAAACMEXN1
-cmZhY2VfY3VydmF0dXJllEsAjBhzdXJmYWNlX3NoYXBlX3BhcmFtZXRlcnOUSwGMEnN1cmZhY2Vf
-c2hhcGVfdHlwZZRLAIwJdGhpY2tuZXNzlEc/UGJN0vGp/IwddG9yb2lkYWxfbWlycm9yX3BvbGVf
-bG9jYXRpb26USwCMEnRvcnVzX21ham9yX3JhZGl1c5RHP/AAAAAAAACMEnRvcnVzX21pbm9yX3Jh
-ZGl1c5RHP/AAAAAAAACMDHVuaXRzX2luX3VzZZRLAIwcdXNlcl9kZWZpbmVkX2FzeW1tZXRyeV9h
-bmdsZZRHAAAAAAAAAACMGHVzZXJfZGVmaW5lZF9icmFnZ19hbmdsZZRHQCxyLQ5WBBmMFHVzZXJf
-ZGVmaW5lZF9jcnlzdGFslEsgjA51c2VyX2RlZmluZWRfaJRLCIwOdXNlcl9kZWZpbmVkX2uUSwCM
-DnVzZXJfZGVmaW5lZF9slEsAjAl2aWV3X3R5cGWUSwB1Lg==
-
- gASVHQIAAAAAAAB9lCiMDGF1dG9fZXhlY3V0ZZSJjBJjdXJyZW50U2NyaXB0SW5kZXiUSwCMCWZv
-bnRfc2l6ZZRLBIwRbGlicmFyeUxpc3RTb3VyY2WUXZSMJG9hc3lzLndpZGdldHMudG9vbHMub3df
-cHl0aG9uX3NjcmlwdJSMBlNjcmlwdJSTlCmBlH2UKIwEbmFtZZSMDmdldFM0SW50ZW5zaXR5lIwG
-c2NyaXB0lIwwcHJpbnQoZid7aW5fb2JqZWN0XzEuYmVhbS5nZXRfaW50ZW5zaXR5KCk6LjZnfScp
-lIwFZmxhZ3OUSwCMCGZpbGVuYW1llE51YmGME3NhdmVkV2lkZ2V0R2VvbWV0cnmUjANzaXCUjA5f
-dW5waWNrbGVfdHlwZZSTlIwMUHlRdDUuUXRDb3JllIwKUUJ5dGVBcnJheZRDQgHZ0MsAAwAAAAAA
-0AAAAKkAAAatAAAD9gAAANAAAACpAAAGrQAAA/YAAAAAAAAAAAeAAAAA0AAAAKkAAAatAAAD9pSF
-lIeUUpSMDXNwbGl0dGVyU3RhdGWUjH9iJ1x4MDBceDAwXHgwMFx4ZmZceDAwXHgwMFx4MDBceDAx
-XHgwMFx4MDBceDAwXHgwMlx4MDBceDAwXHgwMVx4YzRceDAwXHgwMFx4MDBceGQ1XHgwMVx4ZmZc
-eGZmXHhmZlx4ZmZceDAxXHgwMFx4MDBceDAwXHgwMlx4MDAnlHUu
-
- gASVSQMAAAAAAAB9lCiMEWFuZ2xlc19yZXNwZWN0X3RvlEsAjBdhdHRlbnVhdGlvbl9jb2VmZmlj
-aWVudJRHAAAAAAAAAACMEmNvbnZleF90b190aGVfYmVhbZRLAIwOY3lsaW5kZXJfYW5nbGWURwAA
-AAAAAAAAjAdkZW5zaXR5lEc/9752yLQ5WIwIZGlhbWV0ZXKUR0CjiAAAAAAAjBNoYXNfZmluaXRl
-X2RpYW1ldGVylEsAjBRpbWFnZV9wbGFuZV9kaXN0YW5jZZRHQI6NmZmZmZqME2luY2lkZW5jZV9h
-bmdsZV9kZWeUR0BWMzMzMzMzjBRpbmNpZGVuY2VfYW5nbGVfbXJhZJRHAAAAAAAAAACMDmludGVy
-dGhpY2tuZXNzlEdAPgAAAAAAAIwQaXNfYXV0b21hdGljX3J1bpSIjAtpc19jeWxpbmRlcpRLAIwI
-bWF0ZXJpYWyUjAJCZZSMBm5fbGVuc5RLA4wUb2Vfb3JpZW50YXRpb25fYW5nbGWUSwCMH29lX29y
-aWVudGF0aW9uX2FuZ2xlX3VzZXJfdmFsdWWURwAAAAAAAAAAjBBwaWxpbmdfdGhpY2tuZXNzlEdA
-AAAAAAAAAIwMcHJlcmVmbF9maWxllIwTU1U4XzEyODkwXzEyOTQwLmRhdJSMBnJhZGl1c5RHQJ0Q
-AAAAAACMFHJlZmxlY3Rpb25fYW5nbGVfZGVnlEdAVUAAAAAAAIwVcmVmbGVjdGlvbl9hbmdsZV9t
-cmFklEcAAAAAAAAAAIwQcmVmcmFjdGlvbl9pbmRleJRHP/AAAAAAAACME3JpX2NhbGN1bGF0aW9u
-X21vZGWUSwGME3NhdmVkV2lkZ2V0R2VvbWV0cnmUjANzaXCUjA5fdW5waWNrbGVfdHlwZZSTlIwM
-UHlRdDUuUXRDb3JllIwKUUJ5dGVBcnJheZRDQgHZ0MsAAwAAAAACNAAAAQ0AAAddAAAD7wAAAjUA
-AAEzAAAHXAAAA+4AAAAAAAAAAAeAAAACNQAAATMAAAdcAAAD7pSFlIeUUpSMFXNvdXJjZV9wbGFu
-ZV9kaXN0YW5jZZRHQGmAAAAAAACMDXN1cmZhY2Vfc2hhcGWUSwKMCXZpZXdfdHlwZZRLAHUu
-
- gASVSQMAAAAAAAB9lCiMEWFuZ2xlc19yZXNwZWN0X3RvlEsAjBdhdHRlbnVhdGlvbl9jb2VmZmlj
-aWVudJRHAAAAAAAAAACMEmNvbnZleF90b190aGVfYmVhbZRLAIwOY3lsaW5kZXJfYW5nbGWURwAA
-AAAAAAAAjAdkZW5zaXR5lEc/9752yLQ5WIwIZGlhbWV0ZXKUR0CV4AAAAAAAjBNoYXNfZmluaXRl
-X2RpYW1ldGVylEsBjBRpbWFnZV9wbGFuZV9kaXN0YW5jZZRHQClD6lIY0YiME2luY2lkZW5jZV9h
-bmdsZV9kZWeUR0BWMzMzMzMzjBRpbmNpZGVuY2VfYW5nbGVfbXJhZJRHAAAAAAAAAACMDmludGVy
-dGhpY2tuZXNzlEdAPgAAAAAAAIwQaXNfYXV0b21hdGljX3J1bpSIjAtpc19jeWxpbmRlcpRLAIwI
-bWF0ZXJpYWyUjAJCZZSMBm5fbGVuc5RLDYwUb2Vfb3JpZW50YXRpb25fYW5nbGWUSwCMH29lX29y
-aWVudGF0aW9uX2FuZ2xlX3VzZXJfdmFsdWWURwAAAAAAAAAAjBBwaWxpbmdfdGhpY2tuZXNzlEdA
-AAAAAAAAAIwMcHJlcmVmbF9maWxllIwTU1U4XzEyODkwXzEyOTQwLmRhdJSMBnJhZGl1c5RHQH9A
-AAAAAACMFHJlZmxlY3Rpb25fYW5nbGVfZGVnlEdAVUAAAAAAAIwVcmVmbGVjdGlvbl9hbmdsZV9t
-cmFklEcAAAAAAAAAAIwQcmVmcmFjdGlvbl9pbmRleJRHP/AAAAAAAACME3JpX2NhbGN1bGF0aW9u
-X21vZGWUSwGME3NhdmVkV2lkZ2V0R2VvbWV0cnmUjANzaXCUjA5fdW5waWNrbGVfdHlwZZSTlIwM
-UHlRdDUuUXRDb3JllIwKUUJ5dGVBcnJheZRDQgHZ0MsAAwAAAAACHQAAARMAAAdEAAADzgAAAh0A
-AAETAAAHRAAAA84AAAAAAAAAAAeAAAACHQAAARMAAAdEAAADzpSFlIeUUpSMFXNvdXJjZV9wbGFu
-ZV9kaXN0YW5jZZRHAAAAAAAAAACMDXN1cmZhY2Vfc2hhcGWUSwKMCXZpZXdfdHlwZZRLAHUu
-
- gASVSQMAAAAAAAB9lCiMEWFuZ2xlc19yZXNwZWN0X3RvlEsAjBdhdHRlbnVhdGlvbl9jb2VmZmlj
-aWVudJRHAAAAAAAAAACMEmNvbnZleF90b190aGVfYmVhbZRLAIwOY3lsaW5kZXJfYW5nbGWURwAA
-AAAAAAAAjAdkZW5zaXR5lEc/9752yLQ5WIwIZGlhbWV0ZXKUR0CV4AAAAAAAjBNoYXNfZmluaXRl
-X2RpYW1ldGVylEsBjBRpbWFnZV9wbGFuZV9kaXN0YW5jZZRHQAAAAAAAAACME2luY2lkZW5jZV9h
-bmdsZV9kZWeUR0BWMzMzMzMzjBRpbmNpZGVuY2VfYW5nbGVfbXJhZJRHAAAAAAAAAACMDmludGVy
-dGhpY2tuZXNzlEdAPgAAAAAAAIwQaXNfYXV0b21hdGljX3J1bpSIjAtpc19jeWxpbmRlcpRLAIwI
-bWF0ZXJpYWyUjAJCZZSMBm5fbGVuc5RLDYwUb2Vfb3JpZW50YXRpb25fYW5nbGWUSwCMH29lX29y
-aWVudGF0aW9uX2FuZ2xlX3VzZXJfdmFsdWWURwAAAAAAAAAAjBBwaWxpbmdfdGhpY2tuZXNzlEdA
-AAAAAAAAAIwMcHJlcmVmbF9maWxllIwTU1U4XzEyODkwXzEyOTQwLmRhdJSMBnJhZGl1c5RHQH9A
-AAAAAACMFHJlZmxlY3Rpb25fYW5nbGVfZGVnlEdAVUAAAAAAAIwVcmVmbGVjdGlvbl9hbmdsZV9t
-cmFklEcAAAAAAAAAAIwQcmVmcmFjdGlvbl9pbmRleJRHP/AAAAAAAACME3JpX2NhbGN1bGF0aW9u
-X21vZGWUSwGME3NhdmVkV2lkZ2V0R2VvbWV0cnmUjANzaXCUjA5fdW5waWNrbGVfdHlwZZSTlIwM
-UHlRdDUuUXRDb3JllIwKUUJ5dGVBcnJheZRDQgHZ0MsAAwAAAAACHQAAARMAAAdEAAADzgAAAh0A
-AAETAAAHRAAAA84AAAAAAAAAAAeAAAACHQAAARMAAAdEAAADzpSFlIeUUpSMFXNvdXJjZV9wbGFu
-ZV9kaXN0YW5jZZRHQClD6lIY0YiMDXN1cmZhY2Vfc2hhcGWUSwKMCXZpZXdfdHlwZZRLAHUu
-
-
-
diff --git a/SU8_12890_12940.dat b/SU8_12890_12940.dat
deleted file mode 100644
index b1dee64..0000000
--- a/SU8_12890_12940.dat
+++ /dev/null
@@ -1,204 +0,0 @@
- 6.53230489313e+08 6.55764354671e+08 2.53386535808e+04 6.18000000000e-01
-101
-3.053665e-06
-3.053428e-06
-3.053191e-06
-3.052953e-06
-3.052716e-06
-3.052479e-06
-3.052241e-06
-3.052004e-06
-3.051767e-06
-3.051530e-06
-3.051292e-06
-3.051055e-06
-3.050818e-06
-3.050581e-06
-3.050344e-06
-3.050107e-06
-3.049870e-06
-3.049633e-06
-3.049396e-06
-3.049159e-06
-3.048922e-06
-3.048685e-06
-3.048449e-06
-3.048212e-06
-3.047975e-06
-3.047738e-06
-3.047501e-06
-3.047265e-06
-3.047028e-06
-3.046791e-06
-3.046555e-06
-3.046318e-06
-3.046082e-06
-3.045845e-06
-3.045609e-06
-3.045372e-06
-3.045136e-06
-3.044899e-06
-3.044663e-06
-3.044426e-06
-3.044190e-06
-3.043954e-06
-3.043718e-06
-3.043481e-06
-3.043245e-06
-3.043009e-06
-3.042773e-06
-3.042536e-06
-3.042300e-06
-3.042064e-06
-3.041828e-06
-3.041592e-06
-3.041356e-06
-3.041120e-06
-3.040884e-06
-3.040648e-06
-3.040412e-06
-3.040176e-06
-3.039941e-06
-3.039705e-06
-3.039469e-06
-3.039233e-06
-3.038997e-06
-3.038762e-06
-3.038526e-06
-3.038290e-06
-3.038055e-06
-3.037819e-06
-3.037584e-06
-3.037348e-06
-3.037113e-06
-3.036877e-06
-3.036642e-06
-3.036406e-06
-3.036171e-06
-3.035935e-06
-3.035700e-06
-3.035465e-06
-3.035229e-06
-3.034994e-06
-3.034759e-06
-3.034524e-06
-3.034288e-06
-3.034053e-06
-3.033818e-06
-3.033583e-06
-3.033348e-06
-3.033113e-06
-3.032878e-06
-3.032643e-06
-3.032408e-06
-3.032173e-06
-3.031938e-06
-3.031703e-06
-3.031468e-06
-3.031233e-06
-3.030999e-06
-3.030764e-06
-3.030529e-06
-3.030294e-06
-3.030060e-06
-4.972172e-09
-4.971432e-09
-4.970693e-09
-4.969953e-09
-4.969214e-09
-4.968475e-09
-4.967736e-09
-4.966997e-09
-4.966258e-09
-4.965520e-09
-4.964781e-09
-4.964043e-09
-4.963305e-09
-4.962567e-09
-4.961829e-09
-4.961091e-09
-4.960354e-09
-4.959616e-09
-4.958879e-09
-4.958142e-09
-4.957405e-09
-4.956668e-09
-4.955931e-09
-4.955195e-09
-4.954458e-09
-4.953722e-09
-4.952986e-09
-4.952250e-09
-4.951514e-09
-4.950779e-09
-4.950043e-09
-4.949308e-09
-4.948572e-09
-4.947837e-09
-4.947102e-09
-4.946367e-09
-4.945633e-09
-4.944898e-09
-4.944164e-09
-4.943429e-09
-4.942695e-09
-4.941961e-09
-4.941227e-09
-4.940494e-09
-4.939760e-09
-4.939027e-09
-4.938293e-09
-4.937560e-09
-4.936827e-09
-4.936094e-09
-4.935361e-09
-4.934629e-09
-4.933896e-09
-4.933164e-09
-4.932432e-09
-4.931700e-09
-4.930968e-09
-4.930236e-09
-4.929505e-09
-4.928773e-09
-4.928042e-09
-4.927311e-09
-4.926580e-09
-4.925849e-09
-4.925118e-09
-4.924387e-09
-4.923657e-09
-4.922927e-09
-4.922196e-09
-4.921466e-09
-4.920736e-09
-4.920007e-09
-4.919277e-09
-4.918548e-09
-4.917818e-09
-4.917089e-09
-4.916360e-09
-4.915631e-09
-4.914902e-09
-4.914174e-09
-4.913445e-09
-4.912717e-09
-4.911989e-09
-4.911260e-09
-4.910533e-09
-4.909805e-09
-4.909077e-09
-4.908350e-09
-4.907622e-09
-4.906895e-09
-4.906168e-09
-4.905441e-09
-4.904714e-09
-4.903987e-09
-4.903261e-09
-4.902534e-09
-4.901808e-09
-4.901082e-09
-4.900356e-09
-4.899630e-09
-4.898905e-09
diff --git a/Si(800)_12890_12940.dat b/Si(800)_12890_12940.dat
deleted file mode 100644
index a8d625e..0000000
--- a/Si(800)_12890_12940.dat
+++ /dev/null
@@ -1,211 +0,0 @@
-0 1.759399e+09 6.788375e-09
-14 14 1.000000e+00
-( 4.00000000000e+00, -1.95943487864e-15 )
-( 4.00000000000e+00, 1.95943487864e-15 )
-( 4.00000000000e+00, -3.91886975727e-15 )
-( 4.00000000000e+00, 3.91886975727e-15 )
-1.309004e+01 -1.683182e+01 6.433024e+00
-1.309004e+01 -1.683182e+01 6.433024e+00
-101
- 1.28900000000e+04 1.36676072387e-01 1.33673242769e-01
- 1.36676072387e-01 1.33673242769e-01
- 1.28905000000e+04 1.36668041677e-01 1.33662824915e-01
- 1.36668041677e-01 1.33662824915e-01
- 1.28910000000e+04 1.36660011619e-01 1.33652408348e-01
- 1.36660011619e-01 1.33652408348e-01
- 1.28915000000e+04 1.36651982214e-01 1.33641993069e-01
- 1.36651982214e-01 1.33641993069e-01
- 1.28920000000e+04 1.36643953460e-01 1.33631579076e-01
- 1.36643953460e-01 1.33631579076e-01
- 1.28925000000e+04 1.36635925358e-01 1.33621166370e-01
- 1.36635925358e-01 1.33621166370e-01
- 1.28930000000e+04 1.36627897909e-01 1.33610754950e-01
- 1.36627897909e-01 1.33610754950e-01
- 1.28935000000e+04 1.36619871111e-01 1.33600344817e-01
- 1.36619871111e-01 1.33600344817e-01
- 1.28940000000e+04 1.36611844965e-01 1.33589935969e-01
- 1.36611844965e-01 1.33589935969e-01
- 1.28945000000e+04 1.36603819470e-01 1.33579528408e-01
- 1.36603819470e-01 1.33579528408e-01
- 1.28950000000e+04 1.36595794628e-01 1.33569122132e-01
- 1.36595794628e-01 1.33569122132e-01
- 1.28955000000e+04 1.36587770437e-01 1.33558717143e-01
- 1.36587770437e-01 1.33558717143e-01
- 1.28960000000e+04 1.36579746897e-01 1.33548313438e-01
- 1.36579746897e-01 1.33548313438e-01
- 1.28965000000e+04 1.36571724009e-01 1.33537911019e-01
- 1.36571724009e-01 1.33537911019e-01
- 1.28970000000e+04 1.36563701772e-01 1.33527509885e-01
- 1.36563701772e-01 1.33527509885e-01
- 1.28975000000e+04 1.36555680187e-01 1.33517110035e-01
- 1.36555680187e-01 1.33517110035e-01
- 1.28980000000e+04 1.36547659253e-01 1.33506711471e-01
- 1.36547659253e-01 1.33506711471e-01
- 1.28985000000e+04 1.36539638970e-01 1.33496314191e-01
- 1.36539638970e-01 1.33496314191e-01
- 1.28990000000e+04 1.36531619339e-01 1.33485918195e-01
- 1.36531619339e-01 1.33485918195e-01
- 1.28995000000e+04 1.36523600359e-01 1.33475523484e-01
- 1.36523600359e-01 1.33475523484e-01
- 1.29000000000e+04 1.36515582029e-01 1.33465130056e-01
- 1.36515582029e-01 1.33465130056e-01
- 1.29005000000e+04 1.36507564351e-01 1.33454737912e-01
- 1.36507564351e-01 1.33454737912e-01
- 1.29010000000e+04 1.36499547324e-01 1.33444347052e-01
- 1.36499547324e-01 1.33444347052e-01
- 1.29015000000e+04 1.36491530947e-01 1.33433957476e-01
- 1.36491530947e-01 1.33433957476e-01
- 1.29020000000e+04 1.36483515221e-01 1.33423569183e-01
- 1.36483515221e-01 1.33423569183e-01
- 1.29025000000e+04 1.36475500147e-01 1.33413182173e-01
- 1.36475500147e-01 1.33413182173e-01
- 1.29030000000e+04 1.36467485722e-01 1.33402796445e-01
- 1.36467485722e-01 1.33402796445e-01
- 1.29035000000e+04 1.36459471949e-01 1.33392412001e-01
- 1.36459471949e-01 1.33392412001e-01
- 1.29040000000e+04 1.36451458826e-01 1.33382028839e-01
- 1.36451458826e-01 1.33382028839e-01
- 1.29045000000e+04 1.36443446353e-01 1.33371646960e-01
- 1.36443446353e-01 1.33371646960e-01
- 1.29050000000e+04 1.36435434531e-01 1.33361266363e-01
- 1.36435434531e-01 1.33361266363e-01
- 1.29055000000e+04 1.36427423360e-01 1.33350887047e-01
- 1.36427423360e-01 1.33350887047e-01
- 1.29060000000e+04 1.36419412838e-01 1.33340509014e-01
- 1.36419412838e-01 1.33340509014e-01
- 1.29065000000e+04 1.36411402967e-01 1.33330132263e-01
- 1.36411402967e-01 1.33330132263e-01
- 1.29070000000e+04 1.36403393747e-01 1.33319756793e-01
- 1.36403393747e-01 1.33319756793e-01
- 1.29075000000e+04 1.36395385176e-01 1.33309382604e-01
- 1.36395385176e-01 1.33309382604e-01
- 1.29080000000e+04 1.36387377256e-01 1.33299009696e-01
- 1.36387377256e-01 1.33299009696e-01
- 1.29085000000e+04 1.36379369985e-01 1.33288638070e-01
- 1.36379369985e-01 1.33288638070e-01
- 1.29090000000e+04 1.36371363365e-01 1.33278267724e-01
- 1.36371363365e-01 1.33278267724e-01
- 1.29095000000e+04 1.36363357394e-01 1.33267898659e-01
- 1.36363357394e-01 1.33267898659e-01
- 1.29100000000e+04 1.36355352073e-01 1.33257530874e-01
- 1.36355352073e-01 1.33257530874e-01
- 1.29105000000e+04 1.36347347402e-01 1.33247164370e-01
- 1.36347347402e-01 1.33247164370e-01
- 1.29110000000e+04 1.36339343381e-01 1.33236799146e-01
- 1.36339343381e-01 1.33236799146e-01
- 1.29115000000e+04 1.36331340009e-01 1.33226435201e-01
- 1.36331340009e-01 1.33226435201e-01
- 1.29120000000e+04 1.36323337287e-01 1.33216072537e-01
- 1.36323337287e-01 1.33216072537e-01
- 1.29125000000e+04 1.36315335215e-01 1.33205711152e-01
- 1.36315335215e-01 1.33205711152e-01
- 1.29130000000e+04 1.36307333792e-01 1.33195351046e-01
- 1.36307333792e-01 1.33195351046e-01
- 1.29135000000e+04 1.36299333019e-01 1.33184992220e-01
- 1.36299333019e-01 1.33184992220e-01
- 1.29140000000e+04 1.36291332895e-01 1.33174634672e-01
- 1.36291332895e-01 1.33174634672e-01
- 1.29145000000e+04 1.36283333420e-01 1.33164278404e-01
- 1.36283333420e-01 1.33164278404e-01
- 1.29150000000e+04 1.36275334594e-01 1.33153923414e-01
- 1.36275334594e-01 1.33153923414e-01
- 1.29155000000e+04 1.36267336418e-01 1.33143569702e-01
- 1.36267336418e-01 1.33143569702e-01
- 1.29160000000e+04 1.36259338891e-01 1.33133217269e-01
- 1.36259338891e-01 1.33133217269e-01
- 1.29165000000e+04 1.36251342012e-01 1.33122866114e-01
- 1.36251342012e-01 1.33122866114e-01
- 1.29170000000e+04 1.36243345783e-01 1.33112516237e-01
- 1.36243345783e-01 1.33112516237e-01
- 1.29175000000e+04 1.36235350203e-01 1.33102167638e-01
- 1.36235350203e-01 1.33102167638e-01
- 1.29180000000e+04 1.36227355272e-01 1.33091820317e-01
- 1.36227355272e-01 1.33091820317e-01
- 1.29185000000e+04 1.36219360989e-01 1.33081474273e-01
- 1.36219360989e-01 1.33081474273e-01
- 1.29190000000e+04 1.36211367355e-01 1.33071129506e-01
- 1.36211367355e-01 1.33071129506e-01
- 1.29195000000e+04 1.36203374370e-01 1.33060786016e-01
- 1.36203374370e-01 1.33060786016e-01
- 1.29200000000e+04 1.36195382034e-01 1.33050443803e-01
- 1.36195382034e-01 1.33050443803e-01
- 1.29205000000e+04 1.36187390346e-01 1.33040102867e-01
- 1.36187390346e-01 1.33040102867e-01
- 1.29210000000e+04 1.36179399307e-01 1.33029763208e-01
- 1.36179399307e-01 1.33029763208e-01
- 1.29215000000e+04 1.36171408916e-01 1.33019424824e-01
- 1.36171408916e-01 1.33019424824e-01
- 1.29220000000e+04 1.36163419173e-01 1.33009087717e-01
- 1.36163419173e-01 1.33009087717e-01
- 1.29225000000e+04 1.36155430079e-01 1.32998751886e-01
- 1.36155430079e-01 1.32998751886e-01
- 1.29230000000e+04 1.36147441633e-01 1.32988417331e-01
- 1.36147441633e-01 1.32988417331e-01
- 1.29235000000e+04 1.36139453836e-01 1.32978084052e-01
- 1.36139453836e-01 1.32978084052e-01
- 1.29240000000e+04 1.36131466686e-01 1.32967752048e-01
- 1.36131466686e-01 1.32967752048e-01
- 1.29245000000e+04 1.36123480185e-01 1.32957421319e-01
- 1.36123480185e-01 1.32957421319e-01
- 1.29250000000e+04 1.36115494331e-01 1.32947091865e-01
- 1.36115494331e-01 1.32947091865e-01
- 1.29255000000e+04 1.36107509126e-01 1.32936763687e-01
- 1.36107509126e-01 1.32936763687e-01
- 1.29260000000e+04 1.36099524568e-01 1.32926436783e-01
- 1.36099524568e-01 1.32926436783e-01
- 1.29265000000e+04 1.36091540659e-01 1.32916111154e-01
- 1.36091540659e-01 1.32916111154e-01
- 1.29270000000e+04 1.36083557397e-01 1.32905786799e-01
- 1.36083557397e-01 1.32905786799e-01
- 1.29275000000e+04 1.36075574783e-01 1.32895463718e-01
- 1.36075574783e-01 1.32895463718e-01
- 1.29280000000e+04 1.36067592816e-01 1.32885141912e-01
- 1.36067592816e-01 1.32885141912e-01
- 1.29285000000e+04 1.36059611498e-01 1.32874821379e-01
- 1.36059611498e-01 1.32874821379e-01
- 1.29290000000e+04 1.36051630826e-01 1.32864502120e-01
- 1.36051630826e-01 1.32864502120e-01
- 1.29295000000e+04 1.36043650802e-01 1.32854184135e-01
- 1.36043650802e-01 1.32854184135e-01
- 1.29300000000e+04 1.36035671426e-01 1.32843867423e-01
- 1.36035671426e-01 1.32843867423e-01
- 1.29305000000e+04 1.36027692697e-01 1.32833551984e-01
- 1.36027692697e-01 1.32833551984e-01
- 1.29310000000e+04 1.36019714615e-01 1.32823237818e-01
- 1.36019714615e-01 1.32823237818e-01
- 1.29315000000e+04 1.36011737181e-01 1.32812924925e-01
- 1.36011737181e-01 1.32812924925e-01
- 1.29320000000e+04 1.36003760394e-01 1.32802613304e-01
- 1.36003760394e-01 1.32802613304e-01
- 1.29325000000e+04 1.35995784254e-01 1.32792302956e-01
- 1.35995784254e-01 1.32792302956e-01
- 1.29330000000e+04 1.35987808760e-01 1.32781993881e-01
- 1.35987808760e-01 1.32781993881e-01
- 1.29335000000e+04 1.35979833914e-01 1.32771686077e-01
- 1.35979833914e-01 1.32771686077e-01
- 1.29340000000e+04 1.35971859715e-01 1.32761379546e-01
- 1.35971859715e-01 1.32761379546e-01
- 1.29345000000e+04 1.35963886163e-01 1.32751074286e-01
- 1.35963886163e-01 1.32751074286e-01
- 1.29350000000e+04 1.35955913258e-01 1.32740770297e-01
- 1.35955913258e-01 1.32740770297e-01
- 1.29355000000e+04 1.35947940999e-01 1.32730467580e-01
- 1.35947940999e-01 1.32730467580e-01
- 1.29360000000e+04 1.35939969387e-01 1.32720166135e-01
- 1.35939969387e-01 1.32720166135e-01
- 1.29365000000e+04 1.35931998422e-01 1.32709865960e-01
- 1.35931998422e-01 1.32709865960e-01
- 1.29370000000e+04 1.35924028103e-01 1.32699567056e-01
- 1.35924028103e-01 1.32699567056e-01
- 1.29375000000e+04 1.35916058431e-01 1.32689269423e-01
- 1.35916058431e-01 1.32689269423e-01
- 1.29380000000e+04 1.35908089405e-01 1.32678973061e-01
- 1.35908089405e-01 1.32678973061e-01
- 1.29385000000e+04 1.35900121025e-01 1.32668677968e-01
- 1.35900121025e-01 1.32668677968e-01
- 1.29390000000e+04 1.35892153292e-01 1.32658384146e-01
- 1.35892153292e-01 1.32658384146e-01
- 1.29395000000e+04 1.35884186206e-01 1.32648091594e-01
- 1.35884186206e-01 1.32648091594e-01
- 1.29400000000e+04 1.35876219765e-01 1.32637800312e-01
- 1.35876219765e-01 1.32637800312e-01
From 8208a3ade240d1156d2099e96d165e053fa65bb7 Mon Sep 17 00:00:00 2001
From: Xiaojiang YU
Date: Wed, 25 Feb 2026 17:21:41 +0800
Subject: [PATCH 5/6] Revert "Update for phase shifter calculation"
This reverts commit 7dac6a08e07b4b987b5687575c8cd916fe950520.
---
SU8-SEL.ows | 502 ++++++++++++++++++++++++++++++++++++++++
SU8_12890_12940.dat | 204 ++++++++++++++++
Si(800)_12890_12940.dat | 211 +++++++++++++++++
3 files changed, 917 insertions(+)
create mode 100644 SU8-SEL.ows
create mode 100644 SU8_12890_12940.dat
create mode 100644 Si(800)_12890_12940.dat
diff --git a/SU8-SEL.ows b/SU8-SEL.ows
new file mode 100644
index 0000000..5f1973b
--- /dev/null
+++ b/SU8-SEL.ows
@@ -0,0 +1,502 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SHADOW4
+
+
+
+
+ gASVogcAAAAAAAB9lCiMFGFuZ3VsYXJfZGlzdHJpYnV0aW9ulEsCjBthbmd1bGFyX2Rpc3RyaWJ1
+dGlvbl9saW1pdHOUSwCMDWNvaGVyZW50X2JlYW2USwCMG2NvbmVfZXh0ZXJuYWxfaGFsZl9hcGVy
+dHVyZZRHP2BiTdLxqfyMG2NvbmVfaW50ZXJuYWxfaGFsZl9hcGVydHVyZZRHP1BiTdLxqfyMBWRl
+cHRolEsAjA5lbGxfc2VtaWF4aXNfeJRHP7mZmZmZmZqMDmVsbF9zZW1pYXhpc196lEc/yZmZmZmZ
+mowNZ2F1c3Nfc2lnbWFfeJRHPvq9Gqgh8pmMDWdhdXNzX3NpZ21hX3qURz76vRqoIfKZjBZnYXVz
+c2lhbl9jZW50cmFsX3ZhbHVllEdAyTkAAAAAAIwQZ2F1c3NpYW5fbWF4aW11bZRHAAAAAAAAAACM
+EGdhdXNzaWFuX21pbmltdW2URwAAAAAAAAAAjA5nYXVzc2lhbl9zaWdtYZRHP+GMfigkC3iMFmhv
+cml6b250YWxfZGl2X3hfbWludXOURz6gxvegte2NjBVob3Jpem9udGFsX2Rpdl94X3BsdXOURz6g
+xvegte2NjBZob3Jpem9udGFsX2xpbV94X21pbnVzlEc+5Pi1iONo8YwVaG9yaXpvbnRhbF9saW1f
+eF9wbHVzlEc+5Pi1iONo8YwSaG9yaXpvbnRhbF9zaWdtYV94lEc+qbPj0FIbCIwQaXNfYXV0b21h
+dGljX3J1bpSIjApsaW5lX2ludF8xlEcAAAAAAAAAAIwLbGluZV9pbnRfMTCURwAAAAAAAAAAjAps
+aW5lX2ludF8ylEcAAAAAAAAAAIwKbGluZV9pbnRfM5RHAAAAAAAAAACMCmxpbmVfaW50XzSURwAA
+AAAAAAAAjApsaW5lX2ludF81lEcAAAAAAAAAAIwKbGluZV9pbnRfNpRHAAAAAAAAAACMCmxpbmVf
+aW50XzeURwAAAAAAAAAAjApsaW5lX2ludF84lEcAAAAAAAAAAIwKbGluZV9pbnRfOZRHAAAAAAAA
+AACMDGxpbmVfdmFsdWVfMZRHQI9AAAAAAACMDWxpbmVfdmFsdWVfMTCURwAAAAAAAAAAjAxsaW5l
+X3ZhbHVlXzKUR0CPkAAAAAAAjAxsaW5lX3ZhbHVlXzOURwAAAAAAAAAAjAxsaW5lX3ZhbHVlXzSU
+RwAAAAAAAAAAjAxsaW5lX3ZhbHVlXzWURwAAAAAAAAAAjAxsaW5lX3ZhbHVlXzaURwAAAAAAAAAA
+jAxsaW5lX3ZhbHVlXzeURwAAAAAAAAAAjAxsaW5lX3ZhbHVlXziURwAAAAAAAAAAjAxsaW5lX3Zh
+bHVlXzmURwAAAAAAAAAAjBttYXhfbnVtYmVyX29mX3JlamVjdGVkX3JheXOUSoCWmACMD251bWJl
+cl9vZl9saW5lc5RLAIwObnVtYmVyX29mX3JheXOUSpDQAwCMEm9wdGltaXplX2ZpbGVfbmFtZZSM
+DU5PTkVTUEVDSUZJRUSUjA9vcHRpbWl6ZV9zb3VyY2WUSwCMCnBoYXNlX2RpZmaURwAAAAAAAAAA
+jBpwaG90b25fZW5lcmd5X2Rpc3RyaWJ1dGlvbpRLBIwTcG9sYXJpemF0aW9uX2RlZ3JlZZRHP/AA
+AAAAAACMC3JlY3RfaGVpZ2h0lEc/OQjlgc94eYwKcmVjdF93aWR0aJRHAAAAAAAAAACME3NhdmVk
+V2lkZ2V0R2VvbWV0cnmUjANzaXCUjA5fdW5waWNrbGVfdHlwZZSTlIwMUHlRdDUuUXRDb3JllIwK
+UUJ5dGVBcnJheZRDQgHZ0MsAAwAAAAABWQAAAUkAAAaAAAAEBAAAAVkAAAFJAAAGgAAABAQAAAAA
+AAAAAAeAAAABWQAAAUkAAAaAAAAEBJSFlIeUUpSMBHNlZWSUShOeVgCMB3NpZ21hX3mURz9QYk3S
+8an8jBFzaW5nbGVfbGluZV92YWx1ZZRHQI9AAAAAAACMDnNvdXJjZV9kZXB0aF95lEc/YGJN0vGp
+/IwMc3BhdGlhbF90eXBllEsDjA91bmlmb3JtX21heGltdW2UR0CPkAAAAAAAjA91bmlmb3JtX21p
+bmltdW2UR0CPQAAAAAAAjAV1bml0c5RLAIwRdXNlcl9kZWZpbmVkX2ZpbGWUjBNlbmVyZ3lfc3Bl
+Y3RydW0uZGF0lIwUdXNlcl9kZWZpbmVkX21heGltdW2URwAAAAAAAAAAjBR1c2VyX2RlZmluZWRf
+bWluaW11bZRHAAAAAAAAAACMHHVzZXJfZGVmaW5lZF9yZWZpbmluZ19mYWN0b3KUSwWMHXVzZXJf
+ZGVmaW5lZF9zcGVjdHJ1bV9iaW5uaW5nlE0QJ4wUdmVydGljYWxfZGl2X3pfbWludXOURz7U+LWI
+42jxjBN2ZXJ0aWNhbF9kaXZfel9wbHVzlEc+1Pi1iONo8YwUdmVydGljYWxfbGltX3pfbWludXOU
+Rz7k+LWI42jxjBN2ZXJ0aWNhbF9saW1fel9wbHVzlEc+5Pi1iONo8YwQdmVydGljYWxfc2lnbWFf
+epRHPqmz49BSGwiMCXZpZXdfdHlwZZRLAHUu
+
+ gASV4wkAAAAAAAB9lCiMF2FuZ2xlX29mX21hamF4X2FuZF9wb2xllEc/8AAAAAAAAIwRYW5nbGVz
+X3Jlc3BlY3RfdG+USwCMDmFzeW1tZXRyaWNfY3V0lEsAjBdiZWxvd19vbnRvX2JyYWdnX3BsYW5l
+c5RK/////4wTY29uaWNfY29lZmZpY2llbnRfMJSMFW51bXB5LmNvcmUubXVsdGlhcnJheZSMBnNj
+YWxhcpSTlIwFbnVtcHmUjAVkdHlwZZSTlIwCZjiUiYiHlFKUKEsDjAE8lE5OTkr/////Sv////9L
+AHSUYkMIAAAAAAAAAACUhpRSlIwTY29uaWNfY29lZmZpY2llbnRfMZRoCGgOQwgAAAAAAAAAAJSG
+lFKUjBNjb25pY19jb2VmZmljaWVudF8ylGgIaA5DCAAAAAAAAAAAlIaUUpSME2NvbmljX2NvZWZm
+aWNpZW50XzOUaAhoDkMIAAAAAAAAAACUhpRSlIwTY29uaWNfY29lZmZpY2llbnRfNJRoCGgOQwgA
+AAAAAAAAAJSGlFKUjBNjb25pY19jb2VmZmljaWVudF81lGgIaA5DCAAAAAAAAAAAlIaUUpSME2Nv
+bmljX2NvZWZmaWNpZW50XzaUaAhoDkMIAAAAAAAAAACUhpRSlIwTY29uaWNfY29lZmZpY2llbnRf
+N5RoCGgOQwgAAAAAAAAAAJSGlFKUjBNjb25pY19jb2VmZmljaWVudF84lGgIaA5DCAAAAAAAAPC/
+lIaUUpSME2NvbmljX2NvZWZmaWNpZW50XzmUaAhoDkMIAAAAAAAAAACUhpRSlIwUY3J5c3RhbF9h
+dXRvX3NldHRpbmeUSwGMFGN5bGluZGVyX29yaWVudGF0aW9ulEsAjBdkaWZmcmFjdGlvbl9jYWxj
+dWxhdGlvbpRLAowLZGltX3hfbWludXOURz/wAAAAAAAAjApkaW1feF9wbHVzlEc/8AAAAAAAAIwL
+ZGltX3lfbWludXOURz/wAAAAAAAAjApkaW1feV9wbHVzlEc/8AAAAAAAAIwhZWxsaXBzZV9oeXBl
+cmJvbGFfc2VtaV9tYWpvcl9heGlzlEc/8AAAAAAAAIwhZWxsaXBzZV9oeXBlcmJvbGFfc2VtaV9t
+aW5vcl9heGlzlEc/8AAAAAAAAIwXZmlsZV9jcnlzdGFsX3BhcmFtZXRlcnOUjBdTaSg4MDApXzEy
+ODkwXzEyOTQwLmRhdJSMGGZpbGVfZGlmZnJhY3Rpb25fcHJvZmlsZZSMF2RpZmZyYWN0aW9uX3By
+b2ZpbGUuZGF0lIwcZm9jaWlfYW5kX2NvbnRpbnVhdGlvbl9wbGFuZZRLAIwOZm9jdXNfbG9jYXRp
+b26USwCMFGltYWdlX3BsYW5lX2Rpc3RhbmNllEc/dyvLX+VC5YwZaW1hZ2Vfc2lkZV9mb2NhbF9k
+aXN0YW5jZZRHAAAAAAAAAACME2luY2lkZW5jZV9hbmdsZV9kZWeUaAhoDkMIAd4CCYp/RkCUhpRS
+lIwUaW5jaWRlbmNlX2FuZ2xlX21yYWSUaAhoDkMI4chNHrCLiECUhpRSlIwhaW5jaWRlbmNlX2Fu
+Z2xlX3Jlc3BlY3RfdG9fbm9ybWFslEcAAAAAAAAAAIwmaW5jaWRlbmNlX2FuZ2xlX3Jlc3BlY3Rf
+dG9fbm9ybWFsX3R5cGWUSwCMEGlzX2F1dG9tYXRpY19ydW6UiIwLaXNfY3lsaW5kZXKUSwGMC2lz
+X2luZmluaXRllEsBjAhpc190aGlja5RLAYwZbWV0aG9kX2VmaWVsZHNfbWFuYWdlbWVudJRLAIwQ
+bW9kaWZpZWRfc3VyZmFjZZRLAIwTbXNfZGVmZWN0X2ZpbGVfbmFtZZSMCzxub25lPi5oZGY1lIwa
+b2JqZWN0X3NpZGVfZm9jYWxfZGlzdGFuY2WURwAAAAAAAAAAjAtvZV9tb3ZlbWVudJRLAIwUb2Vf
+bW92ZW1lbnRfb2Zmc2V0X3iURwAAAAAAAAAAjBRvZV9tb3ZlbWVudF9vZmZzZXRfeZRHAAAAAAAA
+AACMFG9lX21vdmVtZW50X29mZnNldF96lEcAAAAAAAAAAIwWb2VfbW92ZW1lbnRfcm90YXRpb25f
+eJRHAAAAAAAAAACMFm9lX21vdmVtZW50X3JvdGF0aW9uX3mURwAAAAAAAAAAjBZvZV9tb3ZlbWVu
+dF9yb3RhdGlvbl96lEcAAAAAAAAAAIwUb2Vfb3JpZW50YXRpb25fYW5nbGWUSwSMH29lX29yaWVu
+dGF0aW9uX2FuZ2xlX3VzZXJfdmFsdWWUR8BGgAAAAAAAjAhvZV9zaGFwZZRLAIwUcGFyYWJvbG9p
+ZF9wYXJhbWV0ZXKURz/wAAAAAAAAjA1waG90b25fZW5lcmd5lEdAyTkAAAAAAIwRcGhvdG9uX3dh
+dmVsZW5ndGiURz/wAAAAAAAAjAxwbGFuZXNfYW5nbGWURwAAAAAAAAAAjBRyZWZsZWN0aW9uX2Fu
+Z2xlX2RlZ5RoCGgOQwgB3gIJin9GQJSGlFKUjBVyZWZsZWN0aW9uX2FuZ2xlX21yYWSUaAhoDkMI
+4chNHrCLiECUhpRSlIwTc2F2ZWRXaWRnZXRHZW9tZXRyeZSMA3NpcJSMDl91bnBpY2tsZV90eXBl
+lJOUjAxQeVF0NS5RdENvcmWUjApRQnl0ZUFycmF5lENCAdnQywADAAAAAAHEAAABAgAABu0AAAPk
+AAABxQAAASgAAAbsAAAD4wAAAAAAAAAAB4AAAAHFAAABKAAABuwAAAPjlIWUh5RSlIwVc291cmNl
+X3BsYW5lX2Rpc3RhbmNllEcAAAAAAAAAAIwQc3BoZXJpY2FsX3JhZGl1c5RHP/AAAAAAAACMEXN1
+cmZhY2VfY3VydmF0dXJllEsAjBhzdXJmYWNlX3NoYXBlX3BhcmFtZXRlcnOUSwGMEnN1cmZhY2Vf
+c2hhcGVfdHlwZZRLAIwJdGhpY2tuZXNzlEc/UGJN0vGp/IwddG9yb2lkYWxfbWlycm9yX3BvbGVf
+bG9jYXRpb26USwCMEnRvcnVzX21ham9yX3JhZGl1c5RHP/AAAAAAAACMEnRvcnVzX21pbm9yX3Jh
+ZGl1c5RHP/AAAAAAAACMDHVuaXRzX2luX3VzZZRLAIwcdXNlcl9kZWZpbmVkX2FzeW1tZXRyeV9h
+bmdsZZRHAAAAAAAAAACMGHVzZXJfZGVmaW5lZF9icmFnZ19hbmdsZZRHQCxyLQ5WBBmMFHVzZXJf
+ZGVmaW5lZF9jcnlzdGFslEsgjA51c2VyX2RlZmluZWRfaJRLCIwOdXNlcl9kZWZpbmVkX2uUSwCM
+DnVzZXJfZGVmaW5lZF9slEsAjAl2aWV3X3R5cGWUSwB1Lg==
+
+ gASV4wkAAAAAAAB9lCiMF2FuZ2xlX29mX21hamF4X2FuZF9wb2xllEc/8AAAAAAAAIwRYW5nbGVz
+X3Jlc3BlY3RfdG+USwCMDmFzeW1tZXRyaWNfY3V0lEsAjBdiZWxvd19vbnRvX2JyYWdnX3BsYW5l
+c5RK/////4wTY29uaWNfY29lZmZpY2llbnRfMJSMFW51bXB5LmNvcmUubXVsdGlhcnJheZSMBnNj
+YWxhcpSTlIwFbnVtcHmUjAVkdHlwZZSTlIwCZjiUiYiHlFKUKEsDjAE8lE5OTkr/////Sv////9L
+AHSUYkMIAAAAAAAAAACUhpRSlIwTY29uaWNfY29lZmZpY2llbnRfMZRoCGgOQwgAAAAAAAAAAJSG
+lFKUjBNjb25pY19jb2VmZmljaWVudF8ylGgIaA5DCAAAAAAAAAAAlIaUUpSME2NvbmljX2NvZWZm
+aWNpZW50XzOUaAhoDkMIAAAAAAAAAACUhpRSlIwTY29uaWNfY29lZmZpY2llbnRfNJRoCGgOQwgA
+AAAAAAAAAJSGlFKUjBNjb25pY19jb2VmZmljaWVudF81lGgIaA5DCAAAAAAAAAAAlIaUUpSME2Nv
+bmljX2NvZWZmaWNpZW50XzaUaAhoDkMIAAAAAAAAAACUhpRSlIwTY29uaWNfY29lZmZpY2llbnRf
+N5RoCGgOQwgAAAAAAAAAAJSGlFKUjBNjb25pY19jb2VmZmljaWVudF84lGgIaA5DCAAAAAAAAPC/
+lIaUUpSME2NvbmljX2NvZWZmaWNpZW50XzmUaAhoDkMIAAAAAAAAAACUhpRSlIwUY3J5c3RhbF9h
+dXRvX3NldHRpbmeUSwGMFGN5bGluZGVyX29yaWVudGF0aW9ulEsAjBdkaWZmcmFjdGlvbl9jYWxj
+dWxhdGlvbpRLAowLZGltX3hfbWludXOURz/wAAAAAAAAjApkaW1feF9wbHVzlEc/8AAAAAAAAIwL
+ZGltX3lfbWludXOURz/wAAAAAAAAjApkaW1feV9wbHVzlEc/8AAAAAAAAIwhZWxsaXBzZV9oeXBl
+cmJvbGFfc2VtaV9tYWpvcl9heGlzlEc/8AAAAAAAAIwhZWxsaXBzZV9oeXBlcmJvbGFfc2VtaV9t
+aW5vcl9heGlzlEc/8AAAAAAAAIwXZmlsZV9jcnlzdGFsX3BhcmFtZXRlcnOUjBdTaSg4MDApXzEy
+ODkwXzEyOTQwLmRhdJSMGGZpbGVfZGlmZnJhY3Rpb25fcHJvZmlsZZSMF2RpZmZyYWN0aW9uX3By
+b2ZpbGUuZGF0lIwcZm9jaWlfYW5kX2NvbnRpbnVhdGlvbl9wbGFuZZRLAIwOZm9jdXNfbG9jYXRp
+b26USwCMFGltYWdlX3BsYW5lX2Rpc3RhbmNllEc/dyvLX+VC5YwZaW1hZ2Vfc2lkZV9mb2NhbF9k
+aXN0YW5jZZRHAAAAAAAAAACME2luY2lkZW5jZV9hbmdsZV9kZWeUaAhoDkMIAd4CCYp/RkCUhpRS
+lIwUaW5jaWRlbmNlX2FuZ2xlX21yYWSUaAhoDkMI4chNHrCLiECUhpRSlIwhaW5jaWRlbmNlX2Fu
+Z2xlX3Jlc3BlY3RfdG9fbm9ybWFslEcAAAAAAAAAAIwmaW5jaWRlbmNlX2FuZ2xlX3Jlc3BlY3Rf
+dG9fbm9ybWFsX3R5cGWUSwCMEGlzX2F1dG9tYXRpY19ydW6UiIwLaXNfY3lsaW5kZXKUSwGMC2lz
+X2luZmluaXRllEsBjAhpc190aGlja5RLAYwZbWV0aG9kX2VmaWVsZHNfbWFuYWdlbWVudJRLAIwQ
+bW9kaWZpZWRfc3VyZmFjZZRLAIwTbXNfZGVmZWN0X2ZpbGVfbmFtZZSMCzxub25lPi5oZGY1lIwa
+b2JqZWN0X3NpZGVfZm9jYWxfZGlzdGFuY2WURwAAAAAAAAAAjAtvZV9tb3ZlbWVudJRLAIwUb2Vf
+bW92ZW1lbnRfb2Zmc2V0X3iURwAAAAAAAAAAjBRvZV9tb3ZlbWVudF9vZmZzZXRfeZRHAAAAAAAA
+AACMFG9lX21vdmVtZW50X29mZnNldF96lEcAAAAAAAAAAIwWb2VfbW92ZW1lbnRfcm90YXRpb25f
+eJRHAAAAAAAAAACMFm9lX21vdmVtZW50X3JvdGF0aW9uX3mURwAAAAAAAAAAjBZvZV9tb3ZlbWVu
+dF9yb3RhdGlvbl96lEcAAAAAAAAAAIwUb2Vfb3JpZW50YXRpb25fYW5nbGWUSwKMH29lX29yaWVu
+dGF0aW9uX2FuZ2xlX3VzZXJfdmFsdWWURwAAAAAAAAAAjAhvZV9zaGFwZZRLAIwUcGFyYWJvbG9p
+ZF9wYXJhbWV0ZXKURz/wAAAAAAAAjA1waG90b25fZW5lcmd5lEdAyTkAAAAAAIwRcGhvdG9uX3dh
+dmVsZW5ndGiURz/wAAAAAAAAjAxwbGFuZXNfYW5nbGWURwAAAAAAAAAAjBRyZWZsZWN0aW9uX2Fu
+Z2xlX2RlZ5RoCGgOQwgB3gIJin9GQJSGlFKUjBVyZWZsZWN0aW9uX2FuZ2xlX21yYWSUaAhoDkMI
+4chNHrCLiECUhpRSlIwTc2F2ZWRXaWRnZXRHZW9tZXRyeZSMA3NpcJSMDl91bnBpY2tsZV90eXBl
+lJOUjAxQeVF0NS5RdENvcmWUjApRQnl0ZUFycmF5lENCAdnQywADAAAAAAHnAAAAsgAABw4AAANt
+AAAB5wAAALIAAAcOAAADbQAAAAAAAAAAB4AAAAHnAAAAsgAABw4AAANtlIWUh5RSlIwVc291cmNl
+X3BsYW5lX2Rpc3RhbmNllEcAAAAAAAAAAIwQc3BoZXJpY2FsX3JhZGl1c5RHP/AAAAAAAACMEXN1
+cmZhY2VfY3VydmF0dXJllEsAjBhzdXJmYWNlX3NoYXBlX3BhcmFtZXRlcnOUSwGMEnN1cmZhY2Vf
+c2hhcGVfdHlwZZRLAIwJdGhpY2tuZXNzlEc/UGJN0vGp/IwddG9yb2lkYWxfbWlycm9yX3BvbGVf
+bG9jYXRpb26USwCMEnRvcnVzX21ham9yX3JhZGl1c5RHP/AAAAAAAACMEnRvcnVzX21pbm9yX3Jh
+ZGl1c5RHP/AAAAAAAACMDHVuaXRzX2luX3VzZZRLAIwcdXNlcl9kZWZpbmVkX2FzeW1tZXRyeV9h
+bmdsZZRHAAAAAAAAAACMGHVzZXJfZGVmaW5lZF9icmFnZ19hbmdsZZRHQCxyLQ5WBBmMFHVzZXJf
+ZGVmaW5lZF9jcnlzdGFslEsgjA51c2VyX2RlZmluZWRfaJRLCIwOdXNlcl9kZWZpbmVkX2uUSwCM
+DnVzZXJfZGVmaW5lZF9slEsAjAl2aWV3X3R5cGWUSwB1Lg==
+
+ gASV4wkAAAAAAAB9lCiMF2FuZ2xlX29mX21hamF4X2FuZF9wb2xllEc/8AAAAAAAAIwRYW5nbGVz
+X3Jlc3BlY3RfdG+USwCMDmFzeW1tZXRyaWNfY3V0lEsAjBdiZWxvd19vbnRvX2JyYWdnX3BsYW5l
+c5RK/////4wTY29uaWNfY29lZmZpY2llbnRfMJSMFW51bXB5LmNvcmUubXVsdGlhcnJheZSMBnNj
+YWxhcpSTlIwFbnVtcHmUjAVkdHlwZZSTlIwCZjiUiYiHlFKUKEsDjAE8lE5OTkr/////Sv////9L
+AHSUYkMIAAAAAAAAAACUhpRSlIwTY29uaWNfY29lZmZpY2llbnRfMZRoCGgOQwgAAAAAAAAAAJSG
+lFKUjBNjb25pY19jb2VmZmljaWVudF8ylGgIaA5DCAAAAAAAAAAAlIaUUpSME2NvbmljX2NvZWZm
+aWNpZW50XzOUaAhoDkMIAAAAAAAAAACUhpRSlIwTY29uaWNfY29lZmZpY2llbnRfNJRoCGgOQwgA
+AAAAAAAAAJSGlFKUjBNjb25pY19jb2VmZmljaWVudF81lGgIaA5DCAAAAAAAAAAAlIaUUpSME2Nv
+bmljX2NvZWZmaWNpZW50XzaUaAhoDkMIAAAAAAAAAACUhpRSlIwTY29uaWNfY29lZmZpY2llbnRf
+N5RoCGgOQwgAAAAAAAAAAJSGlFKUjBNjb25pY19jb2VmZmljaWVudF84lGgIaA5DCAAAAAAAAPC/
+lIaUUpSME2NvbmljX2NvZWZmaWNpZW50XzmUaAhoDkMIAAAAAAAAAACUhpRSlIwUY3J5c3RhbF9h
+dXRvX3NldHRpbmeUSwGMFGN5bGluZGVyX29yaWVudGF0aW9ulEsAjBdkaWZmcmFjdGlvbl9jYWxj
+dWxhdGlvbpRLAowLZGltX3hfbWludXOURz/wAAAAAAAAjApkaW1feF9wbHVzlEc/8AAAAAAAAIwL
+ZGltX3lfbWludXOURz/wAAAAAAAAjApkaW1feV9wbHVzlEc/8AAAAAAAAIwhZWxsaXBzZV9oeXBl
+cmJvbGFfc2VtaV9tYWpvcl9heGlzlEc/8AAAAAAAAIwhZWxsaXBzZV9oeXBlcmJvbGFfc2VtaV9t
+aW5vcl9heGlzlEc/8AAAAAAAAIwXZmlsZV9jcnlzdGFsX3BhcmFtZXRlcnOUjBdTaSg4MDApXzEy
+ODkwXzEyOTQwLmRhdJSMGGZpbGVfZGlmZnJhY3Rpb25fcHJvZmlsZZSMF2RpZmZyYWN0aW9uX3By
+b2ZpbGUuZGF0lIwcZm9jaWlfYW5kX2NvbnRpbnVhdGlvbl9wbGFuZZRLAIwOZm9jdXNfbG9jYXRp
+b26USwCMFGltYWdlX3BsYW5lX2Rpc3RhbmNllEc/dyvLX+VC5YwZaW1hZ2Vfc2lkZV9mb2NhbF9k
+aXN0YW5jZZRHAAAAAAAAAACME2luY2lkZW5jZV9hbmdsZV9kZWeUaAhoDkMIAd4CCYp/RkCUhpRS
+lIwUaW5jaWRlbmNlX2FuZ2xlX21yYWSUaAhoDkMI4chNHrCLiECUhpRSlIwhaW5jaWRlbmNlX2Fu
+Z2xlX3Jlc3BlY3RfdG9fbm9ybWFslEcAAAAAAAAAAIwmaW5jaWRlbmNlX2FuZ2xlX3Jlc3BlY3Rf
+dG9fbm9ybWFsX3R5cGWUSwCMEGlzX2F1dG9tYXRpY19ydW6UiIwLaXNfY3lsaW5kZXKUSwGMC2lz
+X2luZmluaXRllEsBjAhpc190aGlja5RLAYwZbWV0aG9kX2VmaWVsZHNfbWFuYWdlbWVudJRLAIwQ
+bW9kaWZpZWRfc3VyZmFjZZRLAIwTbXNfZGVmZWN0X2ZpbGVfbmFtZZSMCzxub25lPi5oZGY1lIwa
+b2JqZWN0X3NpZGVfZm9jYWxfZGlzdGFuY2WURwAAAAAAAAAAjAtvZV9tb3ZlbWVudJRLAIwUb2Vf
+bW92ZW1lbnRfb2Zmc2V0X3iURwAAAAAAAAAAjBRvZV9tb3ZlbWVudF9vZmZzZXRfeZRHAAAAAAAA
+AACMFG9lX21vdmVtZW50X29mZnNldF96lEcAAAAAAAAAAIwWb2VfbW92ZW1lbnRfcm90YXRpb25f
+eJRHAAAAAAAAAACMFm9lX21vdmVtZW50X3JvdGF0aW9uX3mURwAAAAAAAAAAjBZvZV9tb3ZlbWVu
+dF9yb3RhdGlvbl96lEcAAAAAAAAAAIwUb2Vfb3JpZW50YXRpb25fYW5nbGWUSwKMH29lX29yaWVu
+dGF0aW9uX2FuZ2xlX3VzZXJfdmFsdWWURwAAAAAAAAAAjAhvZV9zaGFwZZRLAIwUcGFyYWJvbG9p
+ZF9wYXJhbWV0ZXKURz/wAAAAAAAAjA1waG90b25fZW5lcmd5lEdAyTkAAAAAAIwRcGhvdG9uX3dh
+dmVsZW5ndGiURz/wAAAAAAAAjAxwbGFuZXNfYW5nbGWURwAAAAAAAAAAjBRyZWZsZWN0aW9uX2Fu
+Z2xlX2RlZ5RoCGgOQwgB3gIJin9GQJSGlFKUjBVyZWZsZWN0aW9uX2FuZ2xlX21yYWSUaAhoDkMI
+4chNHrCLiECUhpRSlIwTc2F2ZWRXaWRnZXRHZW9tZXRyeZSMA3NpcJSMDl91bnBpY2tsZV90eXBl
+lJOUjAxQeVF0NS5RdENvcmWUjApRQnl0ZUFycmF5lENCAdnQywADAAAAAAHnAAAAsgAABw4AAANt
+AAAB5wAAALIAAAcOAAADbQAAAAAAAAAAB4AAAAHnAAAAsgAABw4AAANtlIWUh5RSlIwVc291cmNl
+X3BsYW5lX2Rpc3RhbmNllEcAAAAAAAAAAIwQc3BoZXJpY2FsX3JhZGl1c5RHP/AAAAAAAACMEXN1
+cmZhY2VfY3VydmF0dXJllEsAjBhzdXJmYWNlX3NoYXBlX3BhcmFtZXRlcnOUSwGMEnN1cmZhY2Vf
+c2hhcGVfdHlwZZRLAIwJdGhpY2tuZXNzlEc/UGJN0vGp/IwddG9yb2lkYWxfbWlycm9yX3BvbGVf
+bG9jYXRpb26USwCMEnRvcnVzX21ham9yX3JhZGl1c5RHP/AAAAAAAACMEnRvcnVzX21pbm9yX3Jh
+ZGl1c5RHP/AAAAAAAACMDHVuaXRzX2luX3VzZZRLAIwcdXNlcl9kZWZpbmVkX2FzeW1tZXRyeV9h
+bmdsZZRHAAAAAAAAAACMGHVzZXJfZGVmaW5lZF9icmFnZ19hbmdsZZRHQCxyLQ5WBBmMFHVzZXJf
+ZGVmaW5lZF9jcnlzdGFslEsgjA51c2VyX2RlZmluZWRfaJRLCIwOdXNlcl9kZWZpbmVkX2uUSwCM
+DnVzZXJfZGVmaW5lZF9slEsAjAl2aWV3X3R5cGWUSwB1Lg==
+
+ gASV4wkAAAAAAAB9lCiMF2FuZ2xlX29mX21hamF4X2FuZF9wb2xllEc/8AAAAAAAAIwRYW5nbGVz
+X3Jlc3BlY3RfdG+USwCMDmFzeW1tZXRyaWNfY3V0lEsAjBdiZWxvd19vbnRvX2JyYWdnX3BsYW5l
+c5RK/////4wTY29uaWNfY29lZmZpY2llbnRfMJSMFW51bXB5LmNvcmUubXVsdGlhcnJheZSMBnNj
+YWxhcpSTlIwFbnVtcHmUjAVkdHlwZZSTlIwCZjiUiYiHlFKUKEsDjAE8lE5OTkr/////Sv////9L
+AHSUYkMIAAAAAAAAAACUhpRSlIwTY29uaWNfY29lZmZpY2llbnRfMZRoCGgOQwgAAAAAAAAAAJSG
+lFKUjBNjb25pY19jb2VmZmljaWVudF8ylGgIaA5DCAAAAAAAAAAAlIaUUpSME2NvbmljX2NvZWZm
+aWNpZW50XzOUaAhoDkMIAAAAAAAAAACUhpRSlIwTY29uaWNfY29lZmZpY2llbnRfNJRoCGgOQwgA
+AAAAAAAAAJSGlFKUjBNjb25pY19jb2VmZmljaWVudF81lGgIaA5DCAAAAAAAAAAAlIaUUpSME2Nv
+bmljX2NvZWZmaWNpZW50XzaUaAhoDkMIAAAAAAAAAACUhpRSlIwTY29uaWNfY29lZmZpY2llbnRf
+N5RoCGgOQwgAAAAAAAAAAJSGlFKUjBNjb25pY19jb2VmZmljaWVudF84lGgIaA5DCAAAAAAAAPC/
+lIaUUpSME2NvbmljX2NvZWZmaWNpZW50XzmUaAhoDkMIAAAAAAAAAACUhpRSlIwUY3J5c3RhbF9h
+dXRvX3NldHRpbmeUSwGMFGN5bGluZGVyX29yaWVudGF0aW9ulEsAjBdkaWZmcmFjdGlvbl9jYWxj
+dWxhdGlvbpRLAowLZGltX3hfbWludXOURz/wAAAAAAAAjApkaW1feF9wbHVzlEc/8AAAAAAAAIwL
+ZGltX3lfbWludXOURz/wAAAAAAAAjApkaW1feV9wbHVzlEc/8AAAAAAAAIwhZWxsaXBzZV9oeXBl
+cmJvbGFfc2VtaV9tYWpvcl9heGlzlEc/8AAAAAAAAIwhZWxsaXBzZV9oeXBlcmJvbGFfc2VtaV9t
+aW5vcl9heGlzlEc/8AAAAAAAAIwXZmlsZV9jcnlzdGFsX3BhcmFtZXRlcnOUjBdTaSg4MDApXzEy
+ODkwXzEyOTQwLmRhdJSMGGZpbGVfZGlmZnJhY3Rpb25fcHJvZmlsZZSMF2RpZmZyYWN0aW9uX3By
+b2ZpbGUuZGF0lIwcZm9jaWlfYW5kX2NvbnRpbnVhdGlvbl9wbGFuZZRLAIwOZm9jdXNfbG9jYXRp
+b26USwCMFGltYWdlX3BsYW5lX2Rpc3RhbmNllEdACAAAAAAAAIwZaW1hZ2Vfc2lkZV9mb2NhbF9k
+aXN0YW5jZZRHAAAAAAAAAACME2luY2lkZW5jZV9hbmdsZV9kZWeUaAhoDkMIAd4CCYp/RkCUhpRS
+lIwUaW5jaWRlbmNlX2FuZ2xlX21yYWSUaAhoDkMI4chNHrCLiECUhpRSlIwhaW5jaWRlbmNlX2Fu
+Z2xlX3Jlc3BlY3RfdG9fbm9ybWFslEcAAAAAAAAAAIwmaW5jaWRlbmNlX2FuZ2xlX3Jlc3BlY3Rf
+dG9fbm9ybWFsX3R5cGWUSwCMEGlzX2F1dG9tYXRpY19ydW6UiIwLaXNfY3lsaW5kZXKUSwGMC2lz
+X2luZmluaXRllEsBjAhpc190aGlja5RLAYwZbWV0aG9kX2VmaWVsZHNfbWFuYWdlbWVudJRLAIwQ
+bW9kaWZpZWRfc3VyZmFjZZRLAIwTbXNfZGVmZWN0X2ZpbGVfbmFtZZSMCzxub25lPi5oZGY1lIwa
+b2JqZWN0X3NpZGVfZm9jYWxfZGlzdGFuY2WURwAAAAAAAAAAjAtvZV9tb3ZlbWVudJRLAIwUb2Vf
+bW92ZW1lbnRfb2Zmc2V0X3iURwAAAAAAAAAAjBRvZV9tb3ZlbWVudF9vZmZzZXRfeZRHAAAAAAAA
+AACMFG9lX21vdmVtZW50X29mZnNldF96lEcAAAAAAAAAAIwWb2VfbW92ZW1lbnRfcm90YXRpb25f
+eJRHAAAAAAAAAACMFm9lX21vdmVtZW50X3JvdGF0aW9uX3mURwAAAAAAAAAAjBZvZV9tb3ZlbWVu
+dF9yb3RhdGlvbl96lEcAAAAAAAAAAIwUb2Vfb3JpZW50YXRpb25fYW5nbGWUSwKMH29lX29yaWVu
+dGF0aW9uX2FuZ2xlX3VzZXJfdmFsdWWURwAAAAAAAAAAjAhvZV9zaGFwZZRLAIwUcGFyYWJvbG9p
+ZF9wYXJhbWV0ZXKURz/wAAAAAAAAjA1waG90b25fZW5lcmd5lEdAyTkAAAAAAIwRcGhvdG9uX3dh
+dmVsZW5ndGiURz/wAAAAAAAAjAxwbGFuZXNfYW5nbGWURwAAAAAAAAAAjBRyZWZsZWN0aW9uX2Fu
+Z2xlX2RlZ5RoCGgOQwgB3gIJin9GQJSGlFKUjBVyZWZsZWN0aW9uX2FuZ2xlX21yYWSUaAhoDkMI
+4chNHrCLiECUhpRSlIwTc2F2ZWRXaWRnZXRHZW9tZXRyeZSMA3NpcJSMDl91bnBpY2tsZV90eXBl
+lJOUjAxQeVF0NS5RdENvcmWUjApRQnl0ZUFycmF5lENCAdnQywADAAAAAAHnAAAAsgAABw4AAANt
+AAAB5wAAALIAAAcOAAADbQAAAAAAAAAAB4AAAAHnAAAAsgAABw4AAANtlIWUh5RSlIwVc291cmNl
+X3BsYW5lX2Rpc3RhbmNllEcAAAAAAAAAAIwQc3BoZXJpY2FsX3JhZGl1c5RHP/AAAAAAAACMEXN1
+cmZhY2VfY3VydmF0dXJllEsAjBhzdXJmYWNlX3NoYXBlX3BhcmFtZXRlcnOUSwGMEnN1cmZhY2Vf
+c2hhcGVfdHlwZZRLAIwJdGhpY2tuZXNzlEc/UGJN0vGp/IwddG9yb2lkYWxfbWlycm9yX3BvbGVf
+bG9jYXRpb26USwCMEnRvcnVzX21ham9yX3JhZGl1c5RHP/AAAAAAAACMEnRvcnVzX21pbm9yX3Jh
+ZGl1c5RHP/AAAAAAAACMDHVuaXRzX2luX3VzZZRLAIwcdXNlcl9kZWZpbmVkX2FzeW1tZXRyeV9h
+bmdsZZRHAAAAAAAAAACMGHVzZXJfZGVmaW5lZF9icmFnZ19hbmdsZZRHQCxyLQ5WBBmMFHVzZXJf
+ZGVmaW5lZF9jcnlzdGFslEsgjA51c2VyX2RlZmluZWRfaJRLCIwOdXNlcl9kZWZpbmVkX2uUSwCM
+DnVzZXJfZGVmaW5lZF9slEsAjAl2aWV3X3R5cGWUSwB1Lg==
+
+ gASV4wkAAAAAAAB9lCiMF2FuZ2xlX29mX21hamF4X2FuZF9wb2xllEc/8AAAAAAAAIwRYW5nbGVz
+X3Jlc3BlY3RfdG+USwCMDmFzeW1tZXRyaWNfY3V0lEsAjBdiZWxvd19vbnRvX2JyYWdnX3BsYW5l
+c5RK/////4wTY29uaWNfY29lZmZpY2llbnRfMJSMFW51bXB5LmNvcmUubXVsdGlhcnJheZSMBnNj
+YWxhcpSTlIwFbnVtcHmUjAVkdHlwZZSTlIwCZjiUiYiHlFKUKEsDjAE8lE5OTkr/////Sv////9L
+AHSUYkMIAAAAAAAAAACUhpRSlIwTY29uaWNfY29lZmZpY2llbnRfMZRoCGgOQwgAAAAAAAAAAJSG
+lFKUjBNjb25pY19jb2VmZmljaWVudF8ylGgIaA5DCAAAAAAAAAAAlIaUUpSME2NvbmljX2NvZWZm
+aWNpZW50XzOUaAhoDkMIAAAAAAAAAACUhpRSlIwTY29uaWNfY29lZmZpY2llbnRfNJRoCGgOQwgA
+AAAAAAAAAJSGlFKUjBNjb25pY19jb2VmZmljaWVudF81lGgIaA5DCAAAAAAAAAAAlIaUUpSME2Nv
+bmljX2NvZWZmaWNpZW50XzaUaAhoDkMIAAAAAAAAAACUhpRSlIwTY29uaWNfY29lZmZpY2llbnRf
+N5RoCGgOQwgAAAAAAAAAAJSGlFKUjBNjb25pY19jb2VmZmljaWVudF84lGgIaA5DCAAAAAAAAPC/
+lIaUUpSME2NvbmljX2NvZWZmaWNpZW50XzmUaAhoDkMIAAAAAAAAAACUhpRSlIwUY3J5c3RhbF9h
+dXRvX3NldHRpbmeUSwGMFGN5bGluZGVyX29yaWVudGF0aW9ulEsAjBdkaWZmcmFjdGlvbl9jYWxj
+dWxhdGlvbpRLAowLZGltX3hfbWludXOURz/wAAAAAAAAjApkaW1feF9wbHVzlEc/8AAAAAAAAIwL
+ZGltX3lfbWludXOURz/wAAAAAAAAjApkaW1feV9wbHVzlEc/8AAAAAAAAIwhZWxsaXBzZV9oeXBl
+cmJvbGFfc2VtaV9tYWpvcl9heGlzlEc/8AAAAAAAAIwhZWxsaXBzZV9oeXBlcmJvbGFfc2VtaV9t
+aW5vcl9heGlzlEc/8AAAAAAAAIwXZmlsZV9jcnlzdGFsX3BhcmFtZXRlcnOUjBdTaSg4MDApXzEy
+ODkwXzEyOTQwLmRhdJSMGGZpbGVfZGlmZnJhY3Rpb25fcHJvZmlsZZSMF2RpZmZyYWN0aW9uX3By
+b2ZpbGUuZGF0lIwcZm9jaWlfYW5kX2NvbnRpbnVhdGlvbl9wbGFuZZRLAIwOZm9jdXNfbG9jYXRp
+b26USwCMFGltYWdlX3BsYW5lX2Rpc3RhbmNllEc/dyvLX+VC5YwZaW1hZ2Vfc2lkZV9mb2NhbF9k
+aXN0YW5jZZRHAAAAAAAAAACME2luY2lkZW5jZV9hbmdsZV9kZWeUaAhoDkMIAd4CCYp/RkCUhpRS
+lIwUaW5jaWRlbmNlX2FuZ2xlX21yYWSUaAhoDkMI4chNHrCLiECUhpRSlIwhaW5jaWRlbmNlX2Fu
+Z2xlX3Jlc3BlY3RfdG9fbm9ybWFslEcAAAAAAAAAAIwmaW5jaWRlbmNlX2FuZ2xlX3Jlc3BlY3Rf
+dG9fbm9ybWFsX3R5cGWUSwCMEGlzX2F1dG9tYXRpY19ydW6UiIwLaXNfY3lsaW5kZXKUSwGMC2lz
+X2luZmluaXRllEsBjAhpc190aGlja5RLAYwZbWV0aG9kX2VmaWVsZHNfbWFuYWdlbWVudJRLAIwQ
+bW9kaWZpZWRfc3VyZmFjZZRLAIwTbXNfZGVmZWN0X2ZpbGVfbmFtZZSMCzxub25lPi5oZGY1lIwa
+b2JqZWN0X3NpZGVfZm9jYWxfZGlzdGFuY2WURwAAAAAAAAAAjAtvZV9tb3ZlbWVudJRLAIwUb2Vf
+bW92ZW1lbnRfb2Zmc2V0X3iURwAAAAAAAAAAjBRvZV9tb3ZlbWVudF9vZmZzZXRfeZRHAAAAAAAA
+AACMFG9lX21vdmVtZW50X29mZnNldF96lEcAAAAAAAAAAIwWb2VfbW92ZW1lbnRfcm90YXRpb25f
+eJRHAAAAAAAAAACMFm9lX21vdmVtZW50X3JvdGF0aW9uX3mURwAAAAAAAAAAjBZvZV9tb3ZlbWVu
+dF9yb3RhdGlvbl96lEcAAAAAAAAAAIwUb2Vfb3JpZW50YXRpb25fYW5nbGWUSwGMH29lX29yaWVu
+dGF0aW9uX2FuZ2xlX3VzZXJfdmFsdWWURwAAAAAAAAAAjAhvZV9zaGFwZZRLAIwUcGFyYWJvbG9p
+ZF9wYXJhbWV0ZXKURz/wAAAAAAAAjA1waG90b25fZW5lcmd5lEdAyTkAAAAAAIwRcGhvdG9uX3dh
+dmVsZW5ndGiURz/wAAAAAAAAjAxwbGFuZXNfYW5nbGWURwAAAAAAAAAAjBRyZWZsZWN0aW9uX2Fu
+Z2xlX2RlZ5RoCGgOQwgB3gIJin9GQJSGlFKUjBVyZWZsZWN0aW9uX2FuZ2xlX21yYWSUaAhoDkMI
+4chNHrCLiECUhpRSlIwTc2F2ZWRXaWRnZXRHZW9tZXRyeZSMA3NpcJSMDl91bnBpY2tsZV90eXBl
+lJOUjAxQeVF0NS5RdENvcmWUjApRQnl0ZUFycmF5lENCAdnQywADAAAAAAI+AAAA9AAAB2UAAAOv
+AAACPgAAAPQAAAdlAAADrwAAAAAAAAAAB4AAAAI+AAAA9AAAB2UAAAOvlIWUh5RSlIwVc291cmNl
+X3BsYW5lX2Rpc3RhbmNllEcAAAAAAAAAAIwQc3BoZXJpY2FsX3JhZGl1c5RHP/AAAAAAAACMEXN1
+cmZhY2VfY3VydmF0dXJllEsAjBhzdXJmYWNlX3NoYXBlX3BhcmFtZXRlcnOUSwGMEnN1cmZhY2Vf
+c2hhcGVfdHlwZZRLAIwJdGhpY2tuZXNzlEc/UGJN0vGp/IwddG9yb2lkYWxfbWlycm9yX3BvbGVf
+bG9jYXRpb26USwCMEnRvcnVzX21ham9yX3JhZGl1c5RHP/AAAAAAAACMEnRvcnVzX21pbm9yX3Jh
+ZGl1c5RHP/AAAAAAAACMDHVuaXRzX2luX3VzZZRLAIwcdXNlcl9kZWZpbmVkX2FzeW1tZXRyeV9h
+bmdsZZRHAAAAAAAAAACMGHVzZXJfZGVmaW5lZF9icmFnZ19hbmdsZZRHQCxyLQ5WBBmMFHVzZXJf
+ZGVmaW5lZF9jcnlzdGFslEsgjA51c2VyX2RlZmluZWRfaJRLCIwOdXNlcl9kZWZpbmVkX2uUSwCM
+DnVzZXJfZGVmaW5lZF9slEsAjAl2aWV3X3R5cGWUSwB1Lg==
+
+ gASV4wkAAAAAAAB9lCiMF2FuZ2xlX29mX21hamF4X2FuZF9wb2xllEc/8AAAAAAAAIwRYW5nbGVz
+X3Jlc3BlY3RfdG+USwCMDmFzeW1tZXRyaWNfY3V0lEsAjBdiZWxvd19vbnRvX2JyYWdnX3BsYW5l
+c5RK/////4wTY29uaWNfY29lZmZpY2llbnRfMJSMFW51bXB5LmNvcmUubXVsdGlhcnJheZSMBnNj
+YWxhcpSTlIwFbnVtcHmUjAVkdHlwZZSTlIwCZjiUiYiHlFKUKEsDjAE8lE5OTkr/////Sv////9L
+AHSUYkMIAAAAAAAAAACUhpRSlIwTY29uaWNfY29lZmZpY2llbnRfMZRoCGgOQwgAAAAAAAAAAJSG
+lFKUjBNjb25pY19jb2VmZmljaWVudF8ylGgIaA5DCAAAAAAAAAAAlIaUUpSME2NvbmljX2NvZWZm
+aWNpZW50XzOUaAhoDkMIAAAAAAAAAACUhpRSlIwTY29uaWNfY29lZmZpY2llbnRfNJRoCGgOQwgA
+AAAAAAAAAJSGlFKUjBNjb25pY19jb2VmZmljaWVudF81lGgIaA5DCAAAAAAAAAAAlIaUUpSME2Nv
+bmljX2NvZWZmaWNpZW50XzaUaAhoDkMIAAAAAAAAAACUhpRSlIwTY29uaWNfY29lZmZpY2llbnRf
+N5RoCGgOQwgAAAAAAAAAAJSGlFKUjBNjb25pY19jb2VmZmljaWVudF84lGgIaA5DCAAAAAAAAPC/
+lIaUUpSME2NvbmljX2NvZWZmaWNpZW50XzmUaAhoDkMIAAAAAAAAAACUhpRSlIwUY3J5c3RhbF9h
+dXRvX3NldHRpbmeUSwGMFGN5bGluZGVyX29yaWVudGF0aW9ulEsAjBdkaWZmcmFjdGlvbl9jYWxj
+dWxhdGlvbpRLAowLZGltX3hfbWludXOURz/wAAAAAAAAjApkaW1feF9wbHVzlEc/8AAAAAAAAIwL
+ZGltX3lfbWludXOURz/wAAAAAAAAjApkaW1feV9wbHVzlEc/8AAAAAAAAIwhZWxsaXBzZV9oeXBl
+cmJvbGFfc2VtaV9tYWpvcl9heGlzlEc/8AAAAAAAAIwhZWxsaXBzZV9oeXBlcmJvbGFfc2VtaV9t
+aW5vcl9heGlzlEc/8AAAAAAAAIwXZmlsZV9jcnlzdGFsX3BhcmFtZXRlcnOUjBdTaSg4MDApXzEy
+ODkwXzEyOTQwLmRhdJSMGGZpbGVfZGlmZnJhY3Rpb25fcHJvZmlsZZSMF2RpZmZyYWN0aW9uX3By
+b2ZpbGUuZGF0lIwcZm9jaWlfYW5kX2NvbnRpbnVhdGlvbl9wbGFuZZRLAIwOZm9jdXNfbG9jYXRp
+b26USwCMFGltYWdlX3BsYW5lX2Rpc3RhbmNllEc/dyvLX+VC5YwZaW1hZ2Vfc2lkZV9mb2NhbF9k
+aXN0YW5jZZRHAAAAAAAAAACME2luY2lkZW5jZV9hbmdsZV9kZWeUaAhoDkMIAd4CCYp/RkCUhpRS
+lIwUaW5jaWRlbmNlX2FuZ2xlX21yYWSUaAhoDkMI4chNHrCLiECUhpRSlIwhaW5jaWRlbmNlX2Fu
+Z2xlX3Jlc3BlY3RfdG9fbm9ybWFslEcAAAAAAAAAAIwmaW5jaWRlbmNlX2FuZ2xlX3Jlc3BlY3Rf
+dG9fbm9ybWFsX3R5cGWUSwCMEGlzX2F1dG9tYXRpY19ydW6UiIwLaXNfY3lsaW5kZXKUSwGMC2lz
+X2luZmluaXRllEsBjAhpc190aGlja5RLAYwZbWV0aG9kX2VmaWVsZHNfbWFuYWdlbWVudJRLAIwQ
+bW9kaWZpZWRfc3VyZmFjZZRLAIwTbXNfZGVmZWN0X2ZpbGVfbmFtZZSMCzxub25lPi5oZGY1lIwa
+b2JqZWN0X3NpZGVfZm9jYWxfZGlzdGFuY2WURwAAAAAAAAAAjAtvZV9tb3ZlbWVudJRLAIwUb2Vf
+bW92ZW1lbnRfb2Zmc2V0X3iURwAAAAAAAAAAjBRvZV9tb3ZlbWVudF9vZmZzZXRfeZRHAAAAAAAA
+AACMFG9lX21vdmVtZW50X29mZnNldF96lEcAAAAAAAAAAIwWb2VfbW92ZW1lbnRfcm90YXRpb25f
+eJRHAAAAAAAAAACMFm9lX21vdmVtZW50X3JvdGF0aW9uX3mURwAAAAAAAAAAjBZvZV9tb3ZlbWVu
+dF9yb3RhdGlvbl96lEcAAAAAAAAAAIwUb2Vfb3JpZW50YXRpb25fYW5nbGWUSwKMH29lX29yaWVu
+dGF0aW9uX2FuZ2xlX3VzZXJfdmFsdWWURwAAAAAAAAAAjAhvZV9zaGFwZZRLAIwUcGFyYWJvbG9p
+ZF9wYXJhbWV0ZXKURz/wAAAAAAAAjA1waG90b25fZW5lcmd5lEdAyTkAAAAAAIwRcGhvdG9uX3dh
+dmVsZW5ndGiURz/wAAAAAAAAjAxwbGFuZXNfYW5nbGWURwAAAAAAAAAAjBRyZWZsZWN0aW9uX2Fu
+Z2xlX2RlZ5RoCGgOQwgB3gIJin9GQJSGlFKUjBVyZWZsZWN0aW9uX2FuZ2xlX21yYWSUaAhoDkMI
+4chNHrCLiECUhpRSlIwTc2F2ZWRXaWRnZXRHZW9tZXRyeZSMA3NpcJSMDl91bnBpY2tsZV90eXBl
+lJOUjAxQeVF0NS5RdENvcmWUjApRQnl0ZUFycmF5lENCAdnQywADAAAAAAHnAAAAsgAABw4AAANt
+AAAB5wAAALIAAAcOAAADbQAAAAAAAAAAB4AAAAHnAAAAsgAABw4AAANtlIWUh5RSlIwVc291cmNl
+X3BsYW5lX2Rpc3RhbmNllEcAAAAAAAAAAIwQc3BoZXJpY2FsX3JhZGl1c5RHP/AAAAAAAACMEXN1
+cmZhY2VfY3VydmF0dXJllEsAjBhzdXJmYWNlX3NoYXBlX3BhcmFtZXRlcnOUSwGMEnN1cmZhY2Vf
+c2hhcGVfdHlwZZRLAIwJdGhpY2tuZXNzlEc/UGJN0vGp/IwddG9yb2lkYWxfbWlycm9yX3BvbGVf
+bG9jYXRpb26USwCMEnRvcnVzX21ham9yX3JhZGl1c5RHP/AAAAAAAACMEnRvcnVzX21pbm9yX3Jh
+ZGl1c5RHP/AAAAAAAACMDHVuaXRzX2luX3VzZZRLAIwcdXNlcl9kZWZpbmVkX2FzeW1tZXRyeV9h
+bmdsZZRHAAAAAAAAAACMGHVzZXJfZGVmaW5lZF9icmFnZ19hbmdsZZRHQCxyLQ5WBBmMFHVzZXJf
+ZGVmaW5lZF9jcnlzdGFslEsgjA51c2VyX2RlZmluZWRfaJRLCIwOdXNlcl9kZWZpbmVkX2uUSwCM
+DnVzZXJfZGVmaW5lZF9slEsAjAl2aWV3X3R5cGWUSwB1Lg==
+
+ gASV4wkAAAAAAAB9lCiMF2FuZ2xlX29mX21hamF4X2FuZF9wb2xllEc/8AAAAAAAAIwRYW5nbGVz
+X3Jlc3BlY3RfdG+USwCMDmFzeW1tZXRyaWNfY3V0lEsAjBdiZWxvd19vbnRvX2JyYWdnX3BsYW5l
+c5RK/////4wTY29uaWNfY29lZmZpY2llbnRfMJSMFW51bXB5LmNvcmUubXVsdGlhcnJheZSMBnNj
+YWxhcpSTlIwFbnVtcHmUjAVkdHlwZZSTlIwCZjiUiYiHlFKUKEsDjAE8lE5OTkr/////Sv////9L
+AHSUYkMIAAAAAAAAAACUhpRSlIwTY29uaWNfY29lZmZpY2llbnRfMZRoCGgOQwgAAAAAAAAAAJSG
+lFKUjBNjb25pY19jb2VmZmljaWVudF8ylGgIaA5DCAAAAAAAAAAAlIaUUpSME2NvbmljX2NvZWZm
+aWNpZW50XzOUaAhoDkMIAAAAAAAAAACUhpRSlIwTY29uaWNfY29lZmZpY2llbnRfNJRoCGgOQwgA
+AAAAAAAAAJSGlFKUjBNjb25pY19jb2VmZmljaWVudF81lGgIaA5DCAAAAAAAAAAAlIaUUpSME2Nv
+bmljX2NvZWZmaWNpZW50XzaUaAhoDkMIAAAAAAAAAACUhpRSlIwTY29uaWNfY29lZmZpY2llbnRf
+N5RoCGgOQwgAAAAAAAAAAJSGlFKUjBNjb25pY19jb2VmZmljaWVudF84lGgIaA5DCAAAAAAAAPC/
+lIaUUpSME2NvbmljX2NvZWZmaWNpZW50XzmUaAhoDkMIAAAAAAAAAACUhpRSlIwUY3J5c3RhbF9h
+dXRvX3NldHRpbmeUSwGMFGN5bGluZGVyX29yaWVudGF0aW9ulEsAjBdkaWZmcmFjdGlvbl9jYWxj
+dWxhdGlvbpRLAowLZGltX3hfbWludXOURz/wAAAAAAAAjApkaW1feF9wbHVzlEc/8AAAAAAAAIwL
+ZGltX3lfbWludXOURz/wAAAAAAAAjApkaW1feV9wbHVzlEc/8AAAAAAAAIwhZWxsaXBzZV9oeXBl
+cmJvbGFfc2VtaV9tYWpvcl9heGlzlEc/8AAAAAAAAIwhZWxsaXBzZV9oeXBlcmJvbGFfc2VtaV9t
+aW5vcl9heGlzlEc/8AAAAAAAAIwXZmlsZV9jcnlzdGFsX3BhcmFtZXRlcnOUjBdTaSg4MDApXzEy
+ODkwXzEyOTQwLmRhdJSMGGZpbGVfZGlmZnJhY3Rpb25fcHJvZmlsZZSMF2RpZmZyYWN0aW9uX3By
+b2ZpbGUuZGF0lIwcZm9jaWlfYW5kX2NvbnRpbnVhdGlvbl9wbGFuZZRLAIwOZm9jdXNfbG9jYXRp
+b26USwCMFGltYWdlX3BsYW5lX2Rpc3RhbmNllEc/dyvLX+VC5YwZaW1hZ2Vfc2lkZV9mb2NhbF9k
+aXN0YW5jZZRHAAAAAAAAAACME2luY2lkZW5jZV9hbmdsZV9kZWeUaAhoDkMIAd4CCYp/RkCUhpRS
+lIwUaW5jaWRlbmNlX2FuZ2xlX21yYWSUaAhoDkMI4chNHrCLiECUhpRSlIwhaW5jaWRlbmNlX2Fu
+Z2xlX3Jlc3BlY3RfdG9fbm9ybWFslEcAAAAAAAAAAIwmaW5jaWRlbmNlX2FuZ2xlX3Jlc3BlY3Rf
+dG9fbm9ybWFsX3R5cGWUSwCMEGlzX2F1dG9tYXRpY19ydW6UiIwLaXNfY3lsaW5kZXKUSwGMC2lz
+X2luZmluaXRllEsBjAhpc190aGlja5RLAYwZbWV0aG9kX2VmaWVsZHNfbWFuYWdlbWVudJRLAIwQ
+bW9kaWZpZWRfc3VyZmFjZZRLAIwTbXNfZGVmZWN0X2ZpbGVfbmFtZZSMCzxub25lPi5oZGY1lIwa
+b2JqZWN0X3NpZGVfZm9jYWxfZGlzdGFuY2WURwAAAAAAAAAAjAtvZV9tb3ZlbWVudJRLAIwUb2Vf
+bW92ZW1lbnRfb2Zmc2V0X3iURwAAAAAAAAAAjBRvZV9tb3ZlbWVudF9vZmZzZXRfeZRHAAAAAAAA
+AACMFG9lX21vdmVtZW50X29mZnNldF96lEcAAAAAAAAAAIwWb2VfbW92ZW1lbnRfcm90YXRpb25f
+eJRHAAAAAAAAAACMFm9lX21vdmVtZW50X3JvdGF0aW9uX3mURwAAAAAAAAAAjBZvZV9tb3ZlbWVu
+dF9yb3RhdGlvbl96lEcAAAAAAAAAAIwUb2Vfb3JpZW50YXRpb25fYW5nbGWUSwKMH29lX29yaWVu
+dGF0aW9uX2FuZ2xlX3VzZXJfdmFsdWWURwAAAAAAAAAAjAhvZV9zaGFwZZRLAIwUcGFyYWJvbG9p
+ZF9wYXJhbWV0ZXKURz/wAAAAAAAAjA1waG90b25fZW5lcmd5lEdAyTkAAAAAAIwRcGhvdG9uX3dh
+dmVsZW5ndGiURz/wAAAAAAAAjAxwbGFuZXNfYW5nbGWURwAAAAAAAAAAjBRyZWZsZWN0aW9uX2Fu
+Z2xlX2RlZ5RoCGgOQwgB3gIJin9GQJSGlFKUjBVyZWZsZWN0aW9uX2FuZ2xlX21yYWSUaAhoDkMI
+4chNHrCLiECUhpRSlIwTc2F2ZWRXaWRnZXRHZW9tZXRyeZSMA3NpcJSMDl91bnBpY2tsZV90eXBl
+lJOUjAxQeVF0NS5RdENvcmWUjApRQnl0ZUFycmF5lENCAdnQywADAAAAAAHnAAAAsgAABw4AAANt
+AAAB5wAAALIAAAcOAAADbQAAAAAAAAAAB4AAAAHnAAAAsgAABw4AAANtlIWUh5RSlIwVc291cmNl
+X3BsYW5lX2Rpc3RhbmNllEcAAAAAAAAAAIwQc3BoZXJpY2FsX3JhZGl1c5RHP/AAAAAAAACMEXN1
+cmZhY2VfY3VydmF0dXJllEsAjBhzdXJmYWNlX3NoYXBlX3BhcmFtZXRlcnOUSwGMEnN1cmZhY2Vf
+c2hhcGVfdHlwZZRLAIwJdGhpY2tuZXNzlEc/UGJN0vGp/IwddG9yb2lkYWxfbWlycm9yX3BvbGVf
+bG9jYXRpb26USwCMEnRvcnVzX21ham9yX3JhZGl1c5RHP/AAAAAAAACMEnRvcnVzX21pbm9yX3Jh
+ZGl1c5RHP/AAAAAAAACMDHVuaXRzX2luX3VzZZRLAIwcdXNlcl9kZWZpbmVkX2FzeW1tZXRyeV9h
+bmdsZZRHAAAAAAAAAACMGHVzZXJfZGVmaW5lZF9icmFnZ19hbmdsZZRHQCxyLQ5WBBmMFHVzZXJf
+ZGVmaW5lZF9jcnlzdGFslEsgjA51c2VyX2RlZmluZWRfaJRLCIwOdXNlcl9kZWZpbmVkX2uUSwCM
+DnVzZXJfZGVmaW5lZF9slEsAjAl2aWV3X3R5cGWUSwB1Lg==
+
+ gASV4wkAAAAAAAB9lCiMF2FuZ2xlX29mX21hamF4X2FuZF9wb2xllEc/8AAAAAAAAIwRYW5nbGVz
+X3Jlc3BlY3RfdG+USwCMDmFzeW1tZXRyaWNfY3V0lEsAjBdiZWxvd19vbnRvX2JyYWdnX3BsYW5l
+c5RK/////4wTY29uaWNfY29lZmZpY2llbnRfMJSMFW51bXB5LmNvcmUubXVsdGlhcnJheZSMBnNj
+YWxhcpSTlIwFbnVtcHmUjAVkdHlwZZSTlIwCZjiUiYiHlFKUKEsDjAE8lE5OTkr/////Sv////9L
+AHSUYkMIAAAAAAAAAACUhpRSlIwTY29uaWNfY29lZmZpY2llbnRfMZRoCGgOQwgAAAAAAAAAAJSG
+lFKUjBNjb25pY19jb2VmZmljaWVudF8ylGgIaA5DCAAAAAAAAAAAlIaUUpSME2NvbmljX2NvZWZm
+aWNpZW50XzOUaAhoDkMIAAAAAAAAAACUhpRSlIwTY29uaWNfY29lZmZpY2llbnRfNJRoCGgOQwgA
+AAAAAAAAAJSGlFKUjBNjb25pY19jb2VmZmljaWVudF81lGgIaA5DCAAAAAAAAAAAlIaUUpSME2Nv
+bmljX2NvZWZmaWNpZW50XzaUaAhoDkMIAAAAAAAAAACUhpRSlIwTY29uaWNfY29lZmZpY2llbnRf
+N5RoCGgOQwgAAAAAAAAAAJSGlFKUjBNjb25pY19jb2VmZmljaWVudF84lGgIaA5DCAAAAAAAAPC/
+lIaUUpSME2NvbmljX2NvZWZmaWNpZW50XzmUaAhoDkMIAAAAAAAAAACUhpRSlIwUY3J5c3RhbF9h
+dXRvX3NldHRpbmeUSwGMFGN5bGluZGVyX29yaWVudGF0aW9ulEsAjBdkaWZmcmFjdGlvbl9jYWxj
+dWxhdGlvbpRLAowLZGltX3hfbWludXOURz/wAAAAAAAAjApkaW1feF9wbHVzlEc/8AAAAAAAAIwL
+ZGltX3lfbWludXOURz/wAAAAAAAAjApkaW1feV9wbHVzlEc/8AAAAAAAAIwhZWxsaXBzZV9oeXBl
+cmJvbGFfc2VtaV9tYWpvcl9heGlzlEc/8AAAAAAAAIwhZWxsaXBzZV9oeXBlcmJvbGFfc2VtaV9t
+aW5vcl9heGlzlEc/8AAAAAAAAIwXZmlsZV9jcnlzdGFsX3BhcmFtZXRlcnOUjBdTaSg4MDApXzEy
+ODkwXzEyOTQwLmRhdJSMGGZpbGVfZGlmZnJhY3Rpb25fcHJvZmlsZZSMF2RpZmZyYWN0aW9uX3By
+b2ZpbGUuZGF0lIwcZm9jaWlfYW5kX2NvbnRpbnVhdGlvbl9wbGFuZZRLAIwOZm9jdXNfbG9jYXRp
+b26USwCMFGltYWdlX3BsYW5lX2Rpc3RhbmNllEdACAAAAAAAAIwZaW1hZ2Vfc2lkZV9mb2NhbF9k
+aXN0YW5jZZRHAAAAAAAAAACME2luY2lkZW5jZV9hbmdsZV9kZWeUaAhoDkMIAd4CCYp/RkCUhpRS
+lIwUaW5jaWRlbmNlX2FuZ2xlX21yYWSUaAhoDkMI4chNHrCLiECUhpRSlIwhaW5jaWRlbmNlX2Fu
+Z2xlX3Jlc3BlY3RfdG9fbm9ybWFslEcAAAAAAAAAAIwmaW5jaWRlbmNlX2FuZ2xlX3Jlc3BlY3Rf
+dG9fbm9ybWFsX3R5cGWUSwCMEGlzX2F1dG9tYXRpY19ydW6UiIwLaXNfY3lsaW5kZXKUSwGMC2lz
+X2luZmluaXRllEsBjAhpc190aGlja5RLAYwZbWV0aG9kX2VmaWVsZHNfbWFuYWdlbWVudJRLAIwQ
+bW9kaWZpZWRfc3VyZmFjZZRLAIwTbXNfZGVmZWN0X2ZpbGVfbmFtZZSMCzxub25lPi5oZGY1lIwa
+b2JqZWN0X3NpZGVfZm9jYWxfZGlzdGFuY2WURwAAAAAAAAAAjAtvZV9tb3ZlbWVudJRLAIwUb2Vf
+bW92ZW1lbnRfb2Zmc2V0X3iURwAAAAAAAAAAjBRvZV9tb3ZlbWVudF9vZmZzZXRfeZRHAAAAAAAA
+AACMFG9lX21vdmVtZW50X29mZnNldF96lEcAAAAAAAAAAIwWb2VfbW92ZW1lbnRfcm90YXRpb25f
+eJRHAAAAAAAAAACMFm9lX21vdmVtZW50X3JvdGF0aW9uX3mURwAAAAAAAAAAjBZvZV9tb3ZlbWVu
+dF9yb3RhdGlvbl96lEcAAAAAAAAAAIwUb2Vfb3JpZW50YXRpb25fYW5nbGWUSwKMH29lX29yaWVu
+dGF0aW9uX2FuZ2xlX3VzZXJfdmFsdWWURwAAAAAAAAAAjAhvZV9zaGFwZZRLAIwUcGFyYWJvbG9p
+ZF9wYXJhbWV0ZXKURz/wAAAAAAAAjA1waG90b25fZW5lcmd5lEdAyTkAAAAAAIwRcGhvdG9uX3dh
+dmVsZW5ndGiURz/wAAAAAAAAjAxwbGFuZXNfYW5nbGWURwAAAAAAAAAAjBRyZWZsZWN0aW9uX2Fu
+Z2xlX2RlZ5RoCGgOQwgB3gIJin9GQJSGlFKUjBVyZWZsZWN0aW9uX2FuZ2xlX21yYWSUaAhoDkMI
+4chNHrCLiECUhpRSlIwTc2F2ZWRXaWRnZXRHZW9tZXRyeZSMA3NpcJSMDl91bnBpY2tsZV90eXBl
+lJOUjAxQeVF0NS5RdENvcmWUjApRQnl0ZUFycmF5lENCAdnQywADAAAAAAHmAAAAjAAABw8AAANu
+AAAB5wAAALIAAAcOAAADbQAAAAAAAAAAB4AAAAHnAAAAsgAABw4AAANtlIWUh5RSlIwVc291cmNl
+X3BsYW5lX2Rpc3RhbmNllEcAAAAAAAAAAIwQc3BoZXJpY2FsX3JhZGl1c5RHP/AAAAAAAACMEXN1
+cmZhY2VfY3VydmF0dXJllEsAjBhzdXJmYWNlX3NoYXBlX3BhcmFtZXRlcnOUSwGMEnN1cmZhY2Vf
+c2hhcGVfdHlwZZRLAIwJdGhpY2tuZXNzlEc/UGJN0vGp/IwddG9yb2lkYWxfbWlycm9yX3BvbGVf
+bG9jYXRpb26USwCMEnRvcnVzX21ham9yX3JhZGl1c5RHP/AAAAAAAACMEnRvcnVzX21pbm9yX3Jh
+ZGl1c5RHP/AAAAAAAACMDHVuaXRzX2luX3VzZZRLAIwcdXNlcl9kZWZpbmVkX2FzeW1tZXRyeV9h
+bmdsZZRHAAAAAAAAAACMGHVzZXJfZGVmaW5lZF9icmFnZ19hbmdsZZRHQCxyLQ5WBBmMFHVzZXJf
+ZGVmaW5lZF9jcnlzdGFslEsgjA51c2VyX2RlZmluZWRfaJRLCIwOdXNlcl9kZWZpbmVkX2uUSwCM
+DnVzZXJfZGVmaW5lZF9slEsAjAl2aWV3X3R5cGWUSwB1Lg==
+
+ gASVHQIAAAAAAAB9lCiMDGF1dG9fZXhlY3V0ZZSJjBJjdXJyZW50U2NyaXB0SW5kZXiUSwCMCWZv
+bnRfc2l6ZZRLBIwRbGlicmFyeUxpc3RTb3VyY2WUXZSMJG9hc3lzLndpZGdldHMudG9vbHMub3df
+cHl0aG9uX3NjcmlwdJSMBlNjcmlwdJSTlCmBlH2UKIwEbmFtZZSMDmdldFM0SW50ZW5zaXR5lIwG
+c2NyaXB0lIwwcHJpbnQoZid7aW5fb2JqZWN0XzEuYmVhbS5nZXRfaW50ZW5zaXR5KCk6LjZnfScp
+lIwFZmxhZ3OUSwCMCGZpbGVuYW1llE51YmGME3NhdmVkV2lkZ2V0R2VvbWV0cnmUjANzaXCUjA5f
+dW5waWNrbGVfdHlwZZSTlIwMUHlRdDUuUXRDb3JllIwKUUJ5dGVBcnJheZRDQgHZ0MsAAwAAAAAA
+0AAAAKkAAAatAAAD9gAAANAAAACpAAAGrQAAA/YAAAAAAAAAAAeAAAAA0AAAAKkAAAatAAAD9pSF
+lIeUUpSMDXNwbGl0dGVyU3RhdGWUjH9iJ1x4MDBceDAwXHgwMFx4ZmZceDAwXHgwMFx4MDBceDAx
+XHgwMFx4MDBceDAwXHgwMlx4MDBceDAwXHgwMVx4YzRceDAwXHgwMFx4MDBceGQ1XHgwMVx4ZmZc
+eGZmXHhmZlx4ZmZceDAxXHgwMFx4MDBceDAwXHgwMlx4MDAnlHUu
+
+ gASVSQMAAAAAAAB9lCiMEWFuZ2xlc19yZXNwZWN0X3RvlEsAjBdhdHRlbnVhdGlvbl9jb2VmZmlj
+aWVudJRHAAAAAAAAAACMEmNvbnZleF90b190aGVfYmVhbZRLAIwOY3lsaW5kZXJfYW5nbGWURwAA
+AAAAAAAAjAdkZW5zaXR5lEc/9752yLQ5WIwIZGlhbWV0ZXKUR0CjiAAAAAAAjBNoYXNfZmluaXRl
+X2RpYW1ldGVylEsAjBRpbWFnZV9wbGFuZV9kaXN0YW5jZZRHQI6NmZmZmZqME2luY2lkZW5jZV9h
+bmdsZV9kZWeUR0BWMzMzMzMzjBRpbmNpZGVuY2VfYW5nbGVfbXJhZJRHAAAAAAAAAACMDmludGVy
+dGhpY2tuZXNzlEdAPgAAAAAAAIwQaXNfYXV0b21hdGljX3J1bpSIjAtpc19jeWxpbmRlcpRLAIwI
+bWF0ZXJpYWyUjAJCZZSMBm5fbGVuc5RLA4wUb2Vfb3JpZW50YXRpb25fYW5nbGWUSwCMH29lX29y
+aWVudGF0aW9uX2FuZ2xlX3VzZXJfdmFsdWWURwAAAAAAAAAAjBBwaWxpbmdfdGhpY2tuZXNzlEdA
+AAAAAAAAAIwMcHJlcmVmbF9maWxllIwTU1U4XzEyODkwXzEyOTQwLmRhdJSMBnJhZGl1c5RHQJ0Q
+AAAAAACMFHJlZmxlY3Rpb25fYW5nbGVfZGVnlEdAVUAAAAAAAIwVcmVmbGVjdGlvbl9hbmdsZV9t
+cmFklEcAAAAAAAAAAIwQcmVmcmFjdGlvbl9pbmRleJRHP/AAAAAAAACME3JpX2NhbGN1bGF0aW9u
+X21vZGWUSwGME3NhdmVkV2lkZ2V0R2VvbWV0cnmUjANzaXCUjA5fdW5waWNrbGVfdHlwZZSTlIwM
+UHlRdDUuUXRDb3JllIwKUUJ5dGVBcnJheZRDQgHZ0MsAAwAAAAACNAAAAQ0AAAddAAAD7wAAAjUA
+AAEzAAAHXAAAA+4AAAAAAAAAAAeAAAACNQAAATMAAAdcAAAD7pSFlIeUUpSMFXNvdXJjZV9wbGFu
+ZV9kaXN0YW5jZZRHQGmAAAAAAACMDXN1cmZhY2Vfc2hhcGWUSwKMCXZpZXdfdHlwZZRLAHUu
+
+ gASVSQMAAAAAAAB9lCiMEWFuZ2xlc19yZXNwZWN0X3RvlEsAjBdhdHRlbnVhdGlvbl9jb2VmZmlj
+aWVudJRHAAAAAAAAAACMEmNvbnZleF90b190aGVfYmVhbZRLAIwOY3lsaW5kZXJfYW5nbGWURwAA
+AAAAAAAAjAdkZW5zaXR5lEc/9752yLQ5WIwIZGlhbWV0ZXKUR0CV4AAAAAAAjBNoYXNfZmluaXRl
+X2RpYW1ldGVylEsBjBRpbWFnZV9wbGFuZV9kaXN0YW5jZZRHQClD6lIY0YiME2luY2lkZW5jZV9h
+bmdsZV9kZWeUR0BWMzMzMzMzjBRpbmNpZGVuY2VfYW5nbGVfbXJhZJRHAAAAAAAAAACMDmludGVy
+dGhpY2tuZXNzlEdAPgAAAAAAAIwQaXNfYXV0b21hdGljX3J1bpSIjAtpc19jeWxpbmRlcpRLAIwI
+bWF0ZXJpYWyUjAJCZZSMBm5fbGVuc5RLDYwUb2Vfb3JpZW50YXRpb25fYW5nbGWUSwCMH29lX29y
+aWVudGF0aW9uX2FuZ2xlX3VzZXJfdmFsdWWURwAAAAAAAAAAjBBwaWxpbmdfdGhpY2tuZXNzlEdA
+AAAAAAAAAIwMcHJlcmVmbF9maWxllIwTU1U4XzEyODkwXzEyOTQwLmRhdJSMBnJhZGl1c5RHQH9A
+AAAAAACMFHJlZmxlY3Rpb25fYW5nbGVfZGVnlEdAVUAAAAAAAIwVcmVmbGVjdGlvbl9hbmdsZV9t
+cmFklEcAAAAAAAAAAIwQcmVmcmFjdGlvbl9pbmRleJRHP/AAAAAAAACME3JpX2NhbGN1bGF0aW9u
+X21vZGWUSwGME3NhdmVkV2lkZ2V0R2VvbWV0cnmUjANzaXCUjA5fdW5waWNrbGVfdHlwZZSTlIwM
+UHlRdDUuUXRDb3JllIwKUUJ5dGVBcnJheZRDQgHZ0MsAAwAAAAACHQAAARMAAAdEAAADzgAAAh0A
+AAETAAAHRAAAA84AAAAAAAAAAAeAAAACHQAAARMAAAdEAAADzpSFlIeUUpSMFXNvdXJjZV9wbGFu
+ZV9kaXN0YW5jZZRHAAAAAAAAAACMDXN1cmZhY2Vfc2hhcGWUSwKMCXZpZXdfdHlwZZRLAHUu
+
+ gASVSQMAAAAAAAB9lCiMEWFuZ2xlc19yZXNwZWN0X3RvlEsAjBdhdHRlbnVhdGlvbl9jb2VmZmlj
+aWVudJRHAAAAAAAAAACMEmNvbnZleF90b190aGVfYmVhbZRLAIwOY3lsaW5kZXJfYW5nbGWURwAA
+AAAAAAAAjAdkZW5zaXR5lEc/9752yLQ5WIwIZGlhbWV0ZXKUR0CV4AAAAAAAjBNoYXNfZmluaXRl
+X2RpYW1ldGVylEsBjBRpbWFnZV9wbGFuZV9kaXN0YW5jZZRHQAAAAAAAAACME2luY2lkZW5jZV9h
+bmdsZV9kZWeUR0BWMzMzMzMzjBRpbmNpZGVuY2VfYW5nbGVfbXJhZJRHAAAAAAAAAACMDmludGVy
+dGhpY2tuZXNzlEdAPgAAAAAAAIwQaXNfYXV0b21hdGljX3J1bpSIjAtpc19jeWxpbmRlcpRLAIwI
+bWF0ZXJpYWyUjAJCZZSMBm5fbGVuc5RLDYwUb2Vfb3JpZW50YXRpb25fYW5nbGWUSwCMH29lX29y
+aWVudGF0aW9uX2FuZ2xlX3VzZXJfdmFsdWWURwAAAAAAAAAAjBBwaWxpbmdfdGhpY2tuZXNzlEdA
+AAAAAAAAAIwMcHJlcmVmbF9maWxllIwTU1U4XzEyODkwXzEyOTQwLmRhdJSMBnJhZGl1c5RHQH9A
+AAAAAACMFHJlZmxlY3Rpb25fYW5nbGVfZGVnlEdAVUAAAAAAAIwVcmVmbGVjdGlvbl9hbmdsZV9t
+cmFklEcAAAAAAAAAAIwQcmVmcmFjdGlvbl9pbmRleJRHP/AAAAAAAACME3JpX2NhbGN1bGF0aW9u
+X21vZGWUSwGME3NhdmVkV2lkZ2V0R2VvbWV0cnmUjANzaXCUjA5fdW5waWNrbGVfdHlwZZSTlIwM
+UHlRdDUuUXRDb3JllIwKUUJ5dGVBcnJheZRDQgHZ0MsAAwAAAAACHQAAARMAAAdEAAADzgAAAh0A
+AAETAAAHRAAAA84AAAAAAAAAAAeAAAACHQAAARMAAAdEAAADzpSFlIeUUpSMFXNvdXJjZV9wbGFu
+ZV9kaXN0YW5jZZRHQClD6lIY0YiMDXN1cmZhY2Vfc2hhcGWUSwKMCXZpZXdfdHlwZZRLAHUu
+
+
+
diff --git a/SU8_12890_12940.dat b/SU8_12890_12940.dat
new file mode 100644
index 0000000..b1dee64
--- /dev/null
+++ b/SU8_12890_12940.dat
@@ -0,0 +1,204 @@
+ 6.53230489313e+08 6.55764354671e+08 2.53386535808e+04 6.18000000000e-01
+101
+3.053665e-06
+3.053428e-06
+3.053191e-06
+3.052953e-06
+3.052716e-06
+3.052479e-06
+3.052241e-06
+3.052004e-06
+3.051767e-06
+3.051530e-06
+3.051292e-06
+3.051055e-06
+3.050818e-06
+3.050581e-06
+3.050344e-06
+3.050107e-06
+3.049870e-06
+3.049633e-06
+3.049396e-06
+3.049159e-06
+3.048922e-06
+3.048685e-06
+3.048449e-06
+3.048212e-06
+3.047975e-06
+3.047738e-06
+3.047501e-06
+3.047265e-06
+3.047028e-06
+3.046791e-06
+3.046555e-06
+3.046318e-06
+3.046082e-06
+3.045845e-06
+3.045609e-06
+3.045372e-06
+3.045136e-06
+3.044899e-06
+3.044663e-06
+3.044426e-06
+3.044190e-06
+3.043954e-06
+3.043718e-06
+3.043481e-06
+3.043245e-06
+3.043009e-06
+3.042773e-06
+3.042536e-06
+3.042300e-06
+3.042064e-06
+3.041828e-06
+3.041592e-06
+3.041356e-06
+3.041120e-06
+3.040884e-06
+3.040648e-06
+3.040412e-06
+3.040176e-06
+3.039941e-06
+3.039705e-06
+3.039469e-06
+3.039233e-06
+3.038997e-06
+3.038762e-06
+3.038526e-06
+3.038290e-06
+3.038055e-06
+3.037819e-06
+3.037584e-06
+3.037348e-06
+3.037113e-06
+3.036877e-06
+3.036642e-06
+3.036406e-06
+3.036171e-06
+3.035935e-06
+3.035700e-06
+3.035465e-06
+3.035229e-06
+3.034994e-06
+3.034759e-06
+3.034524e-06
+3.034288e-06
+3.034053e-06
+3.033818e-06
+3.033583e-06
+3.033348e-06
+3.033113e-06
+3.032878e-06
+3.032643e-06
+3.032408e-06
+3.032173e-06
+3.031938e-06
+3.031703e-06
+3.031468e-06
+3.031233e-06
+3.030999e-06
+3.030764e-06
+3.030529e-06
+3.030294e-06
+3.030060e-06
+4.972172e-09
+4.971432e-09
+4.970693e-09
+4.969953e-09
+4.969214e-09
+4.968475e-09
+4.967736e-09
+4.966997e-09
+4.966258e-09
+4.965520e-09
+4.964781e-09
+4.964043e-09
+4.963305e-09
+4.962567e-09
+4.961829e-09
+4.961091e-09
+4.960354e-09
+4.959616e-09
+4.958879e-09
+4.958142e-09
+4.957405e-09
+4.956668e-09
+4.955931e-09
+4.955195e-09
+4.954458e-09
+4.953722e-09
+4.952986e-09
+4.952250e-09
+4.951514e-09
+4.950779e-09
+4.950043e-09
+4.949308e-09
+4.948572e-09
+4.947837e-09
+4.947102e-09
+4.946367e-09
+4.945633e-09
+4.944898e-09
+4.944164e-09
+4.943429e-09
+4.942695e-09
+4.941961e-09
+4.941227e-09
+4.940494e-09
+4.939760e-09
+4.939027e-09
+4.938293e-09
+4.937560e-09
+4.936827e-09
+4.936094e-09
+4.935361e-09
+4.934629e-09
+4.933896e-09
+4.933164e-09
+4.932432e-09
+4.931700e-09
+4.930968e-09
+4.930236e-09
+4.929505e-09
+4.928773e-09
+4.928042e-09
+4.927311e-09
+4.926580e-09
+4.925849e-09
+4.925118e-09
+4.924387e-09
+4.923657e-09
+4.922927e-09
+4.922196e-09
+4.921466e-09
+4.920736e-09
+4.920007e-09
+4.919277e-09
+4.918548e-09
+4.917818e-09
+4.917089e-09
+4.916360e-09
+4.915631e-09
+4.914902e-09
+4.914174e-09
+4.913445e-09
+4.912717e-09
+4.911989e-09
+4.911260e-09
+4.910533e-09
+4.909805e-09
+4.909077e-09
+4.908350e-09
+4.907622e-09
+4.906895e-09
+4.906168e-09
+4.905441e-09
+4.904714e-09
+4.903987e-09
+4.903261e-09
+4.902534e-09
+4.901808e-09
+4.901082e-09
+4.900356e-09
+4.899630e-09
+4.898905e-09
diff --git a/Si(800)_12890_12940.dat b/Si(800)_12890_12940.dat
new file mode 100644
index 0000000..a8d625e
--- /dev/null
+++ b/Si(800)_12890_12940.dat
@@ -0,0 +1,211 @@
+0 1.759399e+09 6.788375e-09
+14 14 1.000000e+00
+( 4.00000000000e+00, -1.95943487864e-15 )
+( 4.00000000000e+00, 1.95943487864e-15 )
+( 4.00000000000e+00, -3.91886975727e-15 )
+( 4.00000000000e+00, 3.91886975727e-15 )
+1.309004e+01 -1.683182e+01 6.433024e+00
+1.309004e+01 -1.683182e+01 6.433024e+00
+101
+ 1.28900000000e+04 1.36676072387e-01 1.33673242769e-01
+ 1.36676072387e-01 1.33673242769e-01
+ 1.28905000000e+04 1.36668041677e-01 1.33662824915e-01
+ 1.36668041677e-01 1.33662824915e-01
+ 1.28910000000e+04 1.36660011619e-01 1.33652408348e-01
+ 1.36660011619e-01 1.33652408348e-01
+ 1.28915000000e+04 1.36651982214e-01 1.33641993069e-01
+ 1.36651982214e-01 1.33641993069e-01
+ 1.28920000000e+04 1.36643953460e-01 1.33631579076e-01
+ 1.36643953460e-01 1.33631579076e-01
+ 1.28925000000e+04 1.36635925358e-01 1.33621166370e-01
+ 1.36635925358e-01 1.33621166370e-01
+ 1.28930000000e+04 1.36627897909e-01 1.33610754950e-01
+ 1.36627897909e-01 1.33610754950e-01
+ 1.28935000000e+04 1.36619871111e-01 1.33600344817e-01
+ 1.36619871111e-01 1.33600344817e-01
+ 1.28940000000e+04 1.36611844965e-01 1.33589935969e-01
+ 1.36611844965e-01 1.33589935969e-01
+ 1.28945000000e+04 1.36603819470e-01 1.33579528408e-01
+ 1.36603819470e-01 1.33579528408e-01
+ 1.28950000000e+04 1.36595794628e-01 1.33569122132e-01
+ 1.36595794628e-01 1.33569122132e-01
+ 1.28955000000e+04 1.36587770437e-01 1.33558717143e-01
+ 1.36587770437e-01 1.33558717143e-01
+ 1.28960000000e+04 1.36579746897e-01 1.33548313438e-01
+ 1.36579746897e-01 1.33548313438e-01
+ 1.28965000000e+04 1.36571724009e-01 1.33537911019e-01
+ 1.36571724009e-01 1.33537911019e-01
+ 1.28970000000e+04 1.36563701772e-01 1.33527509885e-01
+ 1.36563701772e-01 1.33527509885e-01
+ 1.28975000000e+04 1.36555680187e-01 1.33517110035e-01
+ 1.36555680187e-01 1.33517110035e-01
+ 1.28980000000e+04 1.36547659253e-01 1.33506711471e-01
+ 1.36547659253e-01 1.33506711471e-01
+ 1.28985000000e+04 1.36539638970e-01 1.33496314191e-01
+ 1.36539638970e-01 1.33496314191e-01
+ 1.28990000000e+04 1.36531619339e-01 1.33485918195e-01
+ 1.36531619339e-01 1.33485918195e-01
+ 1.28995000000e+04 1.36523600359e-01 1.33475523484e-01
+ 1.36523600359e-01 1.33475523484e-01
+ 1.29000000000e+04 1.36515582029e-01 1.33465130056e-01
+ 1.36515582029e-01 1.33465130056e-01
+ 1.29005000000e+04 1.36507564351e-01 1.33454737912e-01
+ 1.36507564351e-01 1.33454737912e-01
+ 1.29010000000e+04 1.36499547324e-01 1.33444347052e-01
+ 1.36499547324e-01 1.33444347052e-01
+ 1.29015000000e+04 1.36491530947e-01 1.33433957476e-01
+ 1.36491530947e-01 1.33433957476e-01
+ 1.29020000000e+04 1.36483515221e-01 1.33423569183e-01
+ 1.36483515221e-01 1.33423569183e-01
+ 1.29025000000e+04 1.36475500147e-01 1.33413182173e-01
+ 1.36475500147e-01 1.33413182173e-01
+ 1.29030000000e+04 1.36467485722e-01 1.33402796445e-01
+ 1.36467485722e-01 1.33402796445e-01
+ 1.29035000000e+04 1.36459471949e-01 1.33392412001e-01
+ 1.36459471949e-01 1.33392412001e-01
+ 1.29040000000e+04 1.36451458826e-01 1.33382028839e-01
+ 1.36451458826e-01 1.33382028839e-01
+ 1.29045000000e+04 1.36443446353e-01 1.33371646960e-01
+ 1.36443446353e-01 1.33371646960e-01
+ 1.29050000000e+04 1.36435434531e-01 1.33361266363e-01
+ 1.36435434531e-01 1.33361266363e-01
+ 1.29055000000e+04 1.36427423360e-01 1.33350887047e-01
+ 1.36427423360e-01 1.33350887047e-01
+ 1.29060000000e+04 1.36419412838e-01 1.33340509014e-01
+ 1.36419412838e-01 1.33340509014e-01
+ 1.29065000000e+04 1.36411402967e-01 1.33330132263e-01
+ 1.36411402967e-01 1.33330132263e-01
+ 1.29070000000e+04 1.36403393747e-01 1.33319756793e-01
+ 1.36403393747e-01 1.33319756793e-01
+ 1.29075000000e+04 1.36395385176e-01 1.33309382604e-01
+ 1.36395385176e-01 1.33309382604e-01
+ 1.29080000000e+04 1.36387377256e-01 1.33299009696e-01
+ 1.36387377256e-01 1.33299009696e-01
+ 1.29085000000e+04 1.36379369985e-01 1.33288638070e-01
+ 1.36379369985e-01 1.33288638070e-01
+ 1.29090000000e+04 1.36371363365e-01 1.33278267724e-01
+ 1.36371363365e-01 1.33278267724e-01
+ 1.29095000000e+04 1.36363357394e-01 1.33267898659e-01
+ 1.36363357394e-01 1.33267898659e-01
+ 1.29100000000e+04 1.36355352073e-01 1.33257530874e-01
+ 1.36355352073e-01 1.33257530874e-01
+ 1.29105000000e+04 1.36347347402e-01 1.33247164370e-01
+ 1.36347347402e-01 1.33247164370e-01
+ 1.29110000000e+04 1.36339343381e-01 1.33236799146e-01
+ 1.36339343381e-01 1.33236799146e-01
+ 1.29115000000e+04 1.36331340009e-01 1.33226435201e-01
+ 1.36331340009e-01 1.33226435201e-01
+ 1.29120000000e+04 1.36323337287e-01 1.33216072537e-01
+ 1.36323337287e-01 1.33216072537e-01
+ 1.29125000000e+04 1.36315335215e-01 1.33205711152e-01
+ 1.36315335215e-01 1.33205711152e-01
+ 1.29130000000e+04 1.36307333792e-01 1.33195351046e-01
+ 1.36307333792e-01 1.33195351046e-01
+ 1.29135000000e+04 1.36299333019e-01 1.33184992220e-01
+ 1.36299333019e-01 1.33184992220e-01
+ 1.29140000000e+04 1.36291332895e-01 1.33174634672e-01
+ 1.36291332895e-01 1.33174634672e-01
+ 1.29145000000e+04 1.36283333420e-01 1.33164278404e-01
+ 1.36283333420e-01 1.33164278404e-01
+ 1.29150000000e+04 1.36275334594e-01 1.33153923414e-01
+ 1.36275334594e-01 1.33153923414e-01
+ 1.29155000000e+04 1.36267336418e-01 1.33143569702e-01
+ 1.36267336418e-01 1.33143569702e-01
+ 1.29160000000e+04 1.36259338891e-01 1.33133217269e-01
+ 1.36259338891e-01 1.33133217269e-01
+ 1.29165000000e+04 1.36251342012e-01 1.33122866114e-01
+ 1.36251342012e-01 1.33122866114e-01
+ 1.29170000000e+04 1.36243345783e-01 1.33112516237e-01
+ 1.36243345783e-01 1.33112516237e-01
+ 1.29175000000e+04 1.36235350203e-01 1.33102167638e-01
+ 1.36235350203e-01 1.33102167638e-01
+ 1.29180000000e+04 1.36227355272e-01 1.33091820317e-01
+ 1.36227355272e-01 1.33091820317e-01
+ 1.29185000000e+04 1.36219360989e-01 1.33081474273e-01
+ 1.36219360989e-01 1.33081474273e-01
+ 1.29190000000e+04 1.36211367355e-01 1.33071129506e-01
+ 1.36211367355e-01 1.33071129506e-01
+ 1.29195000000e+04 1.36203374370e-01 1.33060786016e-01
+ 1.36203374370e-01 1.33060786016e-01
+ 1.29200000000e+04 1.36195382034e-01 1.33050443803e-01
+ 1.36195382034e-01 1.33050443803e-01
+ 1.29205000000e+04 1.36187390346e-01 1.33040102867e-01
+ 1.36187390346e-01 1.33040102867e-01
+ 1.29210000000e+04 1.36179399307e-01 1.33029763208e-01
+ 1.36179399307e-01 1.33029763208e-01
+ 1.29215000000e+04 1.36171408916e-01 1.33019424824e-01
+ 1.36171408916e-01 1.33019424824e-01
+ 1.29220000000e+04 1.36163419173e-01 1.33009087717e-01
+ 1.36163419173e-01 1.33009087717e-01
+ 1.29225000000e+04 1.36155430079e-01 1.32998751886e-01
+ 1.36155430079e-01 1.32998751886e-01
+ 1.29230000000e+04 1.36147441633e-01 1.32988417331e-01
+ 1.36147441633e-01 1.32988417331e-01
+ 1.29235000000e+04 1.36139453836e-01 1.32978084052e-01
+ 1.36139453836e-01 1.32978084052e-01
+ 1.29240000000e+04 1.36131466686e-01 1.32967752048e-01
+ 1.36131466686e-01 1.32967752048e-01
+ 1.29245000000e+04 1.36123480185e-01 1.32957421319e-01
+ 1.36123480185e-01 1.32957421319e-01
+ 1.29250000000e+04 1.36115494331e-01 1.32947091865e-01
+ 1.36115494331e-01 1.32947091865e-01
+ 1.29255000000e+04 1.36107509126e-01 1.32936763687e-01
+ 1.36107509126e-01 1.32936763687e-01
+ 1.29260000000e+04 1.36099524568e-01 1.32926436783e-01
+ 1.36099524568e-01 1.32926436783e-01
+ 1.29265000000e+04 1.36091540659e-01 1.32916111154e-01
+ 1.36091540659e-01 1.32916111154e-01
+ 1.29270000000e+04 1.36083557397e-01 1.32905786799e-01
+ 1.36083557397e-01 1.32905786799e-01
+ 1.29275000000e+04 1.36075574783e-01 1.32895463718e-01
+ 1.36075574783e-01 1.32895463718e-01
+ 1.29280000000e+04 1.36067592816e-01 1.32885141912e-01
+ 1.36067592816e-01 1.32885141912e-01
+ 1.29285000000e+04 1.36059611498e-01 1.32874821379e-01
+ 1.36059611498e-01 1.32874821379e-01
+ 1.29290000000e+04 1.36051630826e-01 1.32864502120e-01
+ 1.36051630826e-01 1.32864502120e-01
+ 1.29295000000e+04 1.36043650802e-01 1.32854184135e-01
+ 1.36043650802e-01 1.32854184135e-01
+ 1.29300000000e+04 1.36035671426e-01 1.32843867423e-01
+ 1.36035671426e-01 1.32843867423e-01
+ 1.29305000000e+04 1.36027692697e-01 1.32833551984e-01
+ 1.36027692697e-01 1.32833551984e-01
+ 1.29310000000e+04 1.36019714615e-01 1.32823237818e-01
+ 1.36019714615e-01 1.32823237818e-01
+ 1.29315000000e+04 1.36011737181e-01 1.32812924925e-01
+ 1.36011737181e-01 1.32812924925e-01
+ 1.29320000000e+04 1.36003760394e-01 1.32802613304e-01
+ 1.36003760394e-01 1.32802613304e-01
+ 1.29325000000e+04 1.35995784254e-01 1.32792302956e-01
+ 1.35995784254e-01 1.32792302956e-01
+ 1.29330000000e+04 1.35987808760e-01 1.32781993881e-01
+ 1.35987808760e-01 1.32781993881e-01
+ 1.29335000000e+04 1.35979833914e-01 1.32771686077e-01
+ 1.35979833914e-01 1.32771686077e-01
+ 1.29340000000e+04 1.35971859715e-01 1.32761379546e-01
+ 1.35971859715e-01 1.32761379546e-01
+ 1.29345000000e+04 1.35963886163e-01 1.32751074286e-01
+ 1.35963886163e-01 1.32751074286e-01
+ 1.29350000000e+04 1.35955913258e-01 1.32740770297e-01
+ 1.35955913258e-01 1.32740770297e-01
+ 1.29355000000e+04 1.35947940999e-01 1.32730467580e-01
+ 1.35947940999e-01 1.32730467580e-01
+ 1.29360000000e+04 1.35939969387e-01 1.32720166135e-01
+ 1.35939969387e-01 1.32720166135e-01
+ 1.29365000000e+04 1.35931998422e-01 1.32709865960e-01
+ 1.35931998422e-01 1.32709865960e-01
+ 1.29370000000e+04 1.35924028103e-01 1.32699567056e-01
+ 1.35924028103e-01 1.32699567056e-01
+ 1.29375000000e+04 1.35916058431e-01 1.32689269423e-01
+ 1.35916058431e-01 1.32689269423e-01
+ 1.29380000000e+04 1.35908089405e-01 1.32678973061e-01
+ 1.35908089405e-01 1.32678973061e-01
+ 1.29385000000e+04 1.35900121025e-01 1.32668677968e-01
+ 1.35900121025e-01 1.32668677968e-01
+ 1.29390000000e+04 1.35892153292e-01 1.32658384146e-01
+ 1.35892153292e-01 1.32658384146e-01
+ 1.29395000000e+04 1.35884186206e-01 1.32648091594e-01
+ 1.35884186206e-01 1.32648091594e-01
+ 1.29400000000e+04 1.35876219765e-01 1.32637800312e-01
+ 1.35876219765e-01 1.32637800312e-01
From 3eeb69d4e4cd4cff6f786b2013de8e4aeec5f10f Mon Sep 17 00:00:00 2001
From: Xiaojiang YU
Date: Wed, 25 Feb 2026 17:32:18 +0800
Subject: [PATCH 6/6] Update for phase shifter calculation
---
.../optical_elements/crystals/s4_crystal.py | 46 +++++++++++++------
.../crystals/s4_plane_crystal.py | 4 +-
2 files changed, 35 insertions(+), 15 deletions(-)
diff --git a/shadow4/beamline/optical_elements/crystals/s4_crystal.py b/shadow4/beamline/optical_elements/crystals/s4_crystal.py
index aacd946..0a6e3b4 100644
--- a/shadow4/beamline/optical_elements/crystals/s4_crystal.py
+++ b/shadow4/beamline/optical_elements/crystals/s4_crystal.py
@@ -15,7 +15,7 @@
from crystalpy.diffraction.DiffractionSetupShadowPreprocessorV1 import DiffractionSetupShadowPreprocessorV1
from crystalpy.diffraction.DiffractionSetupShadowPreprocessorV2 import DiffractionSetupShadowPreprocessorV2
-from crystalpy.diffraction.GeometryType import BraggDiffraction
+from crystalpy.diffraction.GeometryType import BraggDiffraction, BraggTransmission, LaueDiffraction, LaueTransmission
from crystalpy.util.Vector import Vector
from crystalpy.util.ComplexAmplitudePhoton import ComplexAmplitudePhoton
from crystalpy.diffraction.PerfectCrystalDiffraction import PerfectCrystalDiffraction
@@ -32,6 +32,7 @@
import scipy.constants as codata
class S4Crystal(Crystal):
+ dynamic_theory = 1 # 0 Zachariasen 1 Guigay
"""
Shadow4 Crystal Class
This is a base class for perfect crystal in reflection geometry (Bragg), using the diffracted beam.
@@ -95,7 +96,7 @@ def __init__(self,
boundary_shape=None,
surface_shape=None,
material=None,
- # diffraction_geometry=DiffractionGeometry.BRAGG,
+ diffraction_geometry=DiffractionGeometry.BRAGG,
miller_index_h=1,
miller_index_k=1,
miller_index_l=1,
@@ -125,7 +126,7 @@ def __init__(self,
surface_shape=surface_shape,
boundary_shape=boundary_shape,
material=material,
- diffraction_geometry=DiffractionGeometry.BRAGG,
+ diffraction_geometry=diffraction_geometry,
miller_index_h=miller_index_h,
miller_index_k=miller_index_k,
miller_index_l=miller_index_l,
@@ -303,10 +304,19 @@ def set_crystalpy_diffraction_setup(self):
"""
oe = self.get_optical_element()
coor = self.get_coordinates()
+ geo = oe.get_diffraction_geometry()
+ if geo == DiffractionGeometry.BRAGG:
+ geo_type = BraggDiffraction()
+ elif geo == DiffractionGeometry.LAUE:
+ geo_type = LaueDiffraction()
+ elif geo == DiffractionGeometry.BRAGG_T:
+ geo_type = BraggTransmission()
+ else:
+ geo_type = LaueTransmission()
if oe._material_constants_library_flag == 0:
if is_verbose(): print("\nCreating a diffraction setup (XRAYLIB) for material:", oe._material)
- diffraction_setup = DiffractionSetupXraylib(geometry_type=BraggDiffraction(), # todo: use oe._diffraction_geometry
+ diffraction_setup = DiffractionSetupXraylib(geometry_type=geo_type,
crystal_name=oe._material, # string
thickness=oe._thickness, # meters
miller_h=oe._miller_index_h, # int
@@ -316,7 +326,7 @@ def set_crystalpy_diffraction_setup(self):
azimuthal_angle=0.0)
elif oe._material_constants_library_flag == 1:
if is_verbose(): print("\nCreating a diffraction setup (DABAX) for material:", oe._material)
- diffraction_setup = DiffractionSetupDabax(geometry_type=BraggDiffraction(), # todo: use oe._diffraction_geometry
+ diffraction_setup = DiffractionSetupDabax(geometry_type=geo_type,
crystal_name=oe._material, # string
thickness=oe._thickness, # meters
miller_h=oe._miller_index_h, # int
@@ -327,7 +337,7 @@ def set_crystalpy_diffraction_setup(self):
dabax=oe._dabax)
elif oe._material_constants_library_flag == 2:
if is_verbose(): print("\nCreating a diffraction setup (shadow preprocessor file V1)...")
- diffraction_setup = DiffractionSetupShadowPreprocessorV1(geometry_type=BraggDiffraction(), # todo: use oe._diffraction_geometry
+ diffraction_setup = DiffractionSetupShadowPreprocessorV1(geometry_type=geo_type,
crystal_name=oe._material, # string
thickness=oe._thickness, # meters
miller_h=oe._miller_index_h, # int
@@ -338,7 +348,7 @@ def set_crystalpy_diffraction_setup(self):
preprocessor_file=oe._file_refl)
elif oe._material_constants_library_flag == 3:
if is_verbose(): print("\nCreating a diffraction setup (shadow preprocessor file V2)...")
- diffraction_setup = DiffractionSetupShadowPreprocessorV2(geometry_type=BraggDiffraction(), # todo: use oe._diffraction_geometry
+ diffraction_setup = DiffractionSetupShadowPreprocessorV2(geometry_type=geo_type,
crystal_name=oe._material, # string
thickness=oe._thickness, # meters
miller_h=oe._miller_index_h, # int
@@ -645,6 +655,7 @@ def _calculate_perfect_crystal_scattering(self, footprint1, normal):
surface_normal=surface_normal,
thickness=None,
d_spacing=None,
+ photon_in=photons_in,
)
# Calculate outgoing Photon.
@@ -652,7 +663,7 @@ def _calculate_perfect_crystal_scattering(self, footprint1, normal):
# NEW USING Jones matrix JR
outgoing_complex_amplitude_photon = perfect_crystal.calculatePhotonOut(photons_in,
apply_reflectivity=True,
- calculation_method=1,
+ calculation_method=soe.dynamic_theory,
is_thick=soe._is_thick,
use_transfer_matrix=0
)
@@ -706,13 +717,22 @@ def _calculate_jones_and_efield_directions(self, footprint, normal, vIn, vOut, r
#
e_S, e_P = footprint.get_efield_directions() # these are \hat{u}_{\sigma,\pi} in Eq. 3
- axis = vector_norm(vector_cross(vIn, vOut))
+ soe = self.get_optical_element()
+ if soe.get_diffraction_geometry() > 1: # 2:bragg_t, 3:laue_t
+ vOut = vIn
+ es_S = e_S
+ es_P = e_P
+ ee_S = e_S
+ ee_P = e_P
+ axis = e_S # Dummy assignment, not used
+ else:
+ axis = vector_norm(vector_cross(vIn, vOut))
- es_S = axis # \hat{u}_{\sigma,i} in Eq. 12
- es_P = vector_norm(vector_cross(es_S, vIn)) # \hat{u}_{\pi,i} in Eq. 12
+ es_S = axis # \hat{u}_{\sigma,i} in Eq. 12
+ es_P = vector_norm(vector_cross(es_S, vIn)) # \hat{u}_{\pi,i} in Eq. 12
- ee_S = axis # \hat{u}_{\sigma,f} in Eq. 13
- ee_P = vector_norm(vector_cross(ee_S, vOut)) # \hat{u}_{\pi,f} in Eq. 13
+ ee_S = axis # \hat{u}_{\sigma,f} in Eq. 13
+ ee_P = vector_norm(vector_cross(ee_S, vOut)) # \hat{u}_{\pi,f} in Eq. 13
if is_verbose():
print(">>>>> e_S, perp vIn: ", e_S[0], vector_dot(e_S, vIn)[0])
diff --git a/shadow4/beamline/optical_elements/crystals/s4_plane_crystal.py b/shadow4/beamline/optical_elements/crystals/s4_plane_crystal.py
index a3e28cc..93c583f 100644
--- a/shadow4/beamline/optical_elements/crystals/s4_plane_crystal.py
+++ b/shadow4/beamline/optical_elements/crystals/s4_plane_crystal.py
@@ -62,7 +62,7 @@ def __init__(self,
name="Plane crystal",
boundary_shape=None,
material=None,
- # diffraction_geometry=DiffractionGeometry.BRAGG, # ?? not supposed to be in syned...
+ diffraction_geometry=DiffractionGeometry.BRAGG, # ?? not supposed to be in syned...enabled by SSLS:YXJ
miller_index_h=1,
miller_index_k=1,
miller_index_l=1,
@@ -87,7 +87,7 @@ def __init__(self,
surface_shape=self.get_surface_shape_instance(),
boundary_shape=boundary_shape,
material=material,
- # diffraction_geometry=diffraction_geometry, # ?? not supposed to be in syned...
+ diffraction_geometry=diffraction_geometry, # ?? not supposed to be in syned...enabled by SSLS:YXJ
miller_index_h=miller_index_h,
miller_index_k=miller_index_k,
miller_index_l=miller_index_l,